diff options
author | markm <markm@FreeBSD.org> | 2013-08-30 11:38:34 +0000 |
---|---|---|
committer | markm <markm@FreeBSD.org> | 2013-08-30 11:38:34 +0000 |
commit | ff7909302f8ec4c467a0d7bb2c37c2700d394e7f (patch) | |
tree | f9372a133e937ecfa0e144aca5abd2a7fcd83233 | |
parent | 6eed6ab7e64307bf3e41ef63d154359d83a3ba04 (diff) | |
parent | 0030cdac07df412f040b7616431b47c1265e0e69 (diff) | |
download | FreeBSD-src-ff7909302f8ec4c467a0d7bb2c37c2700d394e7f.zip FreeBSD-src-ff7909302f8ec4c467a0d7bb2c37c2700d394e7f.tar.gz |
MFC
248 files changed, 18651 insertions, 4713 deletions
diff --git a/Makefile.inc1 b/Makefile.inc1 index ee9d14e..5185706 100644 --- a/Makefile.inc1 +++ b/Makefile.inc1 @@ -265,7 +265,7 @@ WMAKEENV= ${CROSSENV} \ PATH=${TMPPATH} # make hierarchy -HMAKE= PATH=${TMPPATH} ${MAKE} LOCAL_MTREE=${LOCAL_MTREE} +HMAKE= PATH=${TMPPATH} ${MAKE} LOCAL_MTREE=${LOCAL_MTREE:Q} .if defined(NO_ROOT) HMAKE+= PATH=${TMPPATH} METALOG=${METALOG} -DNO_ROOT .endif @@ -814,7 +814,7 @@ distributeworld installworld: installcheck installcheck_UGID cd ${.CURDIR}/etc; ${CROSSENV} PATH=${TMPPATH} ${MAKE} \ METALOG=${METALOG} ${IMAKE_INSTALL} ${IMAKE_MTREE} \ DISTBASE=/base DESTDIR=${DESTDIR}/${DISTDIR}/base \ - LOCAL_MTREE=${LOCAL_MTREE} distrib-dirs + LOCAL_MTREE=${LOCAL_MTREE:Q} distrib-dirs .endif ${_+_}cd ${.CURDIR}; ${IMAKE} re${.TARGET:S/world$//}; \ ${IMAKEENV} rm -rf ${INSTALLTMP} @@ -888,7 +888,7 @@ reinstall: @echo ">>> Making hierarchy" @echo "--------------------------------------------------------------" ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 \ - LOCAL_MTREE=${LOCAL_MTREE} hierarchy + LOCAL_MTREE=${LOCAL_MTREE:Q} hierarchy @echo @echo "--------------------------------------------------------------" @echo ">>> Installing everything" diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc index 070f634..7399a6e 100644 --- a/ObsoleteFiles.inc +++ b/ObsoleteFiles.inc @@ -38,6 +38,9 @@ # xargs -n1 | sort | uniq -d; # done +# 20130829: bsdpatch is patch unconditionally +OLD_FILES+=usr/bin/bsdpatch +OLD_FILES+=usr/share/man/man1/bsdpatch.1.gz # 20130822: bind 9.9.3-P2 import OLD_LIBS+=usr/lib/liblwres.so.80 # 20130814: vm_page_busy(9) @@ -31,6 +31,19 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 10.x IS SLOW: disable the most expensive debugging functionality run "ln -s 'abort:false,junk:false' /etc/malloc.conf".) +20130827: + Thomas Dickey (vendor author thereof) reports that dialog(1) since + 2011/10/18 has a bug in handling --hline. Testers and I noticed the + --hline is not ignored but displayed as a NULL string, regardless of + value. This will cause confusion in some bsdconfig dialogs where the + --hline is used to inform users which keybindings to use. This will + likewise affect any other persons relying on --hline. It also looks + rather strange seeing "[]" at the bottom of dialog(1) widgets when + passing --hline "anything". Thomas said he will have a look in a few + weeks. NOTE: The "[]" brackets appear with the left-edge where it + would normally appear given the width of text to display, but the + displayed text is not there (part of the bug). + 20130821: The PADLOCK_RNG and RDRAND_RNG kernel options are now devices. Thus "device padlock_rng" and "device rdrand_rng" should be diff --git a/bin/ps/keyword.c b/bin/ps/keyword.c index 5861129..21e6791 100644 --- a/bin/ps/keyword.c +++ b/bin/ps/keyword.c @@ -87,6 +87,7 @@ static VAR var[] = { {"etimes", "ELAPSED", NULL, USER, elapseds, 0, CHAR, NULL, 0}, {"euid", "", "uid", 0, NULL, 0, CHAR, NULL, 0}, {"f", "F", NULL, 0, kvar, KOFF(ki_flag), INT, "x", 0}, + {"fib", "FIB", NULL, 0, kvar, KOFF(ki_fibnum), INT, "d", 0}, {"flags", "", "f", 0, NULL, 0, CHAR, NULL, 0}, {"gid", "GID", NULL, 0, kvar, KOFF(ki_groups), UINT, UIDFMT, 0}, {"group", "GROUP", NULL, LJUST, egroupname, 0, CHAR, NULL, 0}, diff --git a/bin/ps/ps.1 b/bin/ps/ps.1 index 1a364f5..81a1f6d 100644 --- a/bin/ps/ps.1 +++ b/bin/ps/ps.1 @@ -512,6 +512,9 @@ elapsed running time, format minutes:seconds. .It Cm etimes elapsed running time, in decimal integer seconds +.It Cm fib +default FIB number, see +.Xr setfib 1 .It Cm flags the process flags, in hexadecimal (alias .Cm f ) diff --git a/bin/sh/parser.c b/bin/sh/parser.c index 795e3ee..b23f455 100644 --- a/bin/sh/parser.c +++ b/bin/sh/parser.c @@ -96,7 +96,7 @@ static struct heredoc *heredoclist; /* list of here documents to read */ static int doprompt; /* if set, prompt the user */ static int needprompt; /* true if interactive and at start of line */ static int lasttoken; /* last token read */ -int tokpushback; /* last token pushed back */ +static int tokpushback; /* last token pushed back */ static char *wordtext; /* text of last word returned by readtoken */ static int checkkwd; static struct nodelist *backquotelist; diff --git a/bin/sh/parser.h b/bin/sh/parser.h index b803f76..d500d2f 100644 --- a/bin/sh/parser.h +++ b/bin/sh/parser.h @@ -68,11 +68,9 @@ /* * NEOF is returned by parsecmd when it encounters an end of file. It - * must be distinct from NULL, so we use the address of a variable that - * happens to be handy. + * must be distinct from NULL. */ -extern int tokpushback; -#define NEOF ((union node *)&tokpushback) +#define NEOF ((union node *)-1) extern int whichprompt; /* 1 == PS1, 2 == PS2 */ extern const char *const parsekwd[]; diff --git a/cddl/contrib/opensolaris/tools/ctf/cvt/dwarf.c b/cddl/contrib/opensolaris/tools/ctf/cvt/dwarf.c index c7f785e..0738dd0 100644 --- a/cddl/contrib/opensolaris/tools/ctf/cvt/dwarf.c +++ b/cddl/contrib/opensolaris/tools/ctf/cvt/dwarf.c @@ -23,8 +23,6 @@ * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - /* * DWARF to tdata conversion * @@ -1796,6 +1794,59 @@ die_resolve(dwarf_t *dw) } while (dw->dw_nunres != 0); } +/* + * Any object containing a function or object symbol at any scope should also + * contain DWARF data. + */ +static boolean_t +should_have_dwarf(Elf *elf) +{ + Elf_Scn *scn = NULL; + Elf_Data *data = NULL; + GElf_Shdr shdr; + GElf_Sym sym; + uint32_t symdx = 0; + size_t nsyms = 0; + boolean_t found = B_FALSE; + + while ((scn = elf_nextscn(elf, scn)) != NULL) { + gelf_getshdr(scn, &shdr); + + if (shdr.sh_type == SHT_SYMTAB) { + found = B_TRUE; + break; + } + } + + if (!found) + terminate("cannot convert stripped objects\n"); + + data = elf_getdata(scn, NULL); + nsyms = shdr.sh_size / shdr.sh_entsize; + + for (symdx = 0; symdx < nsyms; symdx++) { + gelf_getsym(data, symdx, &sym); + + if ((GELF_ST_TYPE(sym.st_info) == STT_FUNC) || + (GELF_ST_TYPE(sym.st_info) == STT_TLS) || + (GELF_ST_TYPE(sym.st_info) == STT_OBJECT)) { + char *name; + + name = elf_strptr(elf, shdr.sh_link, sym.st_name); + + /* Studio emits these local symbols regardless */ + if ((strcmp(name, "Bbss.bss") != 0) && + (strcmp(name, "Ttbss.bss") != 0) && + (strcmp(name, "Ddata.data") != 0) && + (strcmp(name, "Ttdata.data") != 0) && + (strcmp(name, "Drodata.rodata") != 0)) + return (B_TRUE); + } + } + + return (B_FALSE); +} + /*ARGSUSED*/ int dw_read(tdata_t *td, Elf *elf, char *filename __unused) @@ -1820,8 +1871,12 @@ dw_read(tdata_t *td, Elf *elf, char *filename __unused) if ((rc = dwarf_elf_init(elf, DW_DLC_READ, &dw.dw_dw, &dw.dw_err)) == DW_DLV_NO_ENTRY) { - errno = ENOENT; - return (-1); + if (should_have_dwarf(elf)) { + errno = ENOENT; + return (-1); + } else { + return (0); + } } else if (rc != DW_DLV_OK) { if (dwarf_errno(&dw.dw_err) == DW_DLE_DEBUG_INFO_NULL) { /* @@ -1839,9 +1894,14 @@ dw_read(tdata_t *td, Elf *elf, char *filename __unused) &addrsz, &nxthdr, &dw.dw_err)) != DW_DLV_OK) terminate("rc = %d %s\n", rc, dwarf_errmsg(&dw.dw_err)); - if ((cu = die_sibling(&dw, NULL)) == NULL) + if ((cu = die_sibling(&dw, NULL)) == NULL || + (((child = die_child(&dw, cu)) == NULL) && + should_have_dwarf(elf))) { terminate("file does not contain dwarf type data " "(try compiling with -g)\n"); + } else if (child == NULL) { + return (0); + } dw.dw_maxoff = nxthdr - 1; diff --git a/cddl/lib/libzpool/Makefile b/cddl/lib/libzpool/Makefile index b159d3a..848325a 100644 --- a/cddl/lib/libzpool/Makefile +++ b/cddl/lib/libzpool/Makefile @@ -64,7 +64,9 @@ NO_PROFILE= CSTD= c99 -CFLAGS+= -DDEBUG=1 -#DEBUG_FLAGS+= -g +# Since there are many asserts in this library, it makes no sense to compile +# it without debugging. + +CFLAGS+= -g -DDEBUG=1 .include <bsd.lib.mk> diff --git a/cddl/usr.bin/ztest/Makefile b/cddl/usr.bin/ztest/Makefile index 965300e..370eacb5 100644 --- a/cddl/usr.bin/ztest/Makefile +++ b/cddl/usr.bin/ztest/Makefile @@ -25,7 +25,8 @@ LDADD= -lgeom -lm -lnvpair -lumem -lzpool -lpthread -lavl -lzfs_core -lzfs \ CSTD= c99 -CFLAGS+= -DDEBUG=1 -#DEBUG_FLAGS+= -g +# Since there are many asserts in this program, it makes no sense to compile +# it without debugging. +CFLAGS+= -g -DDEBUG=1 .include <bsd.prog.mk> diff --git a/cddl/usr.sbin/zdb/Makefile b/cddl/usr.sbin/zdb/Makefile index 8068385..fa9ab98 100644 --- a/cddl/usr.sbin/zdb/Makefile +++ b/cddl/usr.sbin/zdb/Makefile @@ -27,7 +27,8 @@ DPADD= ${LIBGEOM} ${LIBM} ${LIBNVPAIR} ${LIBPTHREAD} ${LIBUMEM} \ ${LIBUUTIL} ${LIBZFS_CORE} ${LIBZFS} ${LIBZPOOL} LDADD= -lgeom -lm -lnvpair -lpthread -lumem -luutil -lzfs_core -lzfs -lzpool -CFLAGS+= -DDEBUG=1 -#DEBUG_FLAGS+= -g +# Since there are many asserts in this program, it makes no sense to compile +# it without debugging. +CFLAGS+= -g -DDEBUG=1 .include <bsd.prog.mk> diff --git a/contrib/libexecinfo/backtrace.3 b/contrib/libexecinfo/backtrace.3 index b173dc3..fdd8cec 100644 --- a/contrib/libexecinfo/backtrace.3 +++ b/contrib/libexecinfo/backtrace.3 @@ -1,4 +1,4 @@ -.\" $NetBSD: backtrace.3,v 1.4 2012/06/10 00:24:36 christos Exp $ +.\" $NetBSD: backtrace.3,v 1.5 2013/08/22 17:08:43 christos Exp $ .\" $FreeBSD$ .\" .\" Copyright (c) 2012 The NetBSD Foundation, Inc. @@ -152,10 +152,4 @@ The Linux versions of the functions (there are no _fmt variants) use instead of .Ft size_t arguments. -.It -The -.Fn backtrace_symbols -functions currently rely on -.Xr procfs 5 -to locate the executable. .El diff --git a/contrib/libexecinfo/backtrace.c b/contrib/libexecinfo/backtrace.c index e51c666..756a982 100644 --- a/contrib/libexecinfo/backtrace.c +++ b/contrib/libexecinfo/backtrace.c @@ -1,4 +1,4 @@ -/* $NetBSD: backtrace.c,v 1.2 2012/07/09 03:11:59 christos Exp $ */ +/* $NetBSD: backtrace.c,v 1.3 2013/08/29 14:58:56 christos Exp $ */ /*- * Copyright (c) 2012 The NetBSD Foundation, Inc. @@ -29,7 +29,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ #include <sys/cdefs.h> -__RCSID("$NetBSD: backtrace.c,v 1.2 2012/07/09 03:11:59 christos Exp $"); +__RCSID("$NetBSD: backtrace.c,v 1.3 2013/08/29 14:58:56 christos Exp $"); #include <sys/param.h> #include <assert.h> @@ -51,9 +51,29 @@ __RCSID("$NetBSD: backtrace.c,v 1.2 2012/07/09 03:11:59 christos Exp $"); #ifdef __linux__ #define SELF "/proc/self/exe" #else +#include <sys/sysctl.h> #define SELF "/proc/curproc/file" #endif +static int +open_self(int flags) +{ + const char *pathname = SELF; +#ifdef KERN_PROC_PATHNAME + static const int name[] = { + CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1, + }; + char path[MAXPATHLEN]; + size_t len; + + len = sizeof(path); + if (sysctl(name, 4, path, &len, NULL, 0) != -1) + pathname = path; +#endif + return open(pathname, flags); +} + + static int __printflike(4, 5) rasprintf(char **buf, size_t *bufsiz, size_t offs, const char *fmt, ...) { @@ -163,7 +183,7 @@ backtrace_symbols_fmt(void *const *trace, size_t len, const char *fmt) symtab_t *st; int fd; - if ((fd = open(SELF, O_RDONLY)) != -1) + if ((fd = open_self(O_RDONLY)) != -1) st = symtab_create(fd, -1, STT_FUNC); else st = NULL; diff --git a/contrib/libexecinfo/symtab.c b/contrib/libexecinfo/symtab.c index 737662e..92d92dc 100644 --- a/contrib/libexecinfo/symtab.c +++ b/contrib/libexecinfo/symtab.c @@ -1,4 +1,4 @@ -/* $NetBSD: symtab.c,v 1.1 2012/05/26 22:02:29 christos Exp $ */ +/* $NetBSD: symtab.c,v 1.2 2013/08/29 15:01:57 christos Exp $ */ /*- * Copyright (c) 2012 The NetBSD Foundation, Inc. @@ -29,12 +29,12 @@ * POSSIBILITY OF SUCH DAMAGE. */ #include <sys/cdefs.h> -__RCSID("$NetBSD: symtab.c,v 1.1 2012/05/26 22:02:29 christos Exp $"); +__RCSID("$NetBSD: symtab.c,v 1.2 2013/08/29 15:01:57 christos Exp $"); #include <stdlib.h> #include <stdio.h> -#include <stdint.h> #include <string.h> +#include <stdint.h> #include <err.h> #include <dlfcn.h> diff --git a/contrib/pam_modules/pam_passwdqc/pam_passwdqc.c b/contrib/pam_modules/pam_passwdqc/pam_passwdqc.c index 7c39731..e12d0b4 100644 --- a/contrib/pam_modules/pam_passwdqc/pam_passwdqc.c +++ b/contrib/pam_modules/pam_passwdqc/pam_passwdqc.c @@ -2,9 +2,9 @@ * Copyright (c) 2000-2002 by Solar Designer. See LICENSE. */ -#define _XOPEN_SOURCE 500 +#define _XOPEN_SOURCE 600 #define _XOPEN_SOURCE_EXTENDED -#define _XOPEN_VERSION 500 +#define _XOPEN_VERSION 600 #include <stdio.h> #include <stdlib.h> #include <stdarg.h> @@ -132,17 +132,19 @@ static params_t defaults = { static int converse(pam_handle_t *pamh, int style, lo_const char *text, struct pam_response **resp) { - struct pam_conv *conv; + pam_item_t item; + lo_const struct pam_conv *conv; struct pam_message msg, *pmsg; int status; - status = pam_get_item(pamh, PAM_CONV, (pam_item_t *)&conv); + status = pam_get_item(pamh, PAM_CONV, &item); if (status != PAM_SUCCESS) return status; + conv = item; pmsg = &msg; msg.msg_style = style; - msg.msg = text; + msg.msg = (char *)text; *resp = NULL; return conv->conv(1, (lo_const struct pam_message **)&pmsg, resp, @@ -294,8 +296,11 @@ static int parse(params_t *params, pam_handle_t *pamh, } if (argc) { - say(pamh, PAM_ERROR_MSG, getuid() != 0 ? - MESSAGE_MISCONFIGURED : MESSAGE_INVALID_OPTION, *argv); + if (getuid() != 0) { + say(pamh, PAM_ERROR_MSG, MESSAGE_MISCONFIGURED); + } else { + say(pamh, PAM_ERROR_MSG, MESSAGE_INVALID_OPTION, *argv); + } return PAM_ABORT; } @@ -311,7 +316,9 @@ PAM_EXTERN int pam_sm_chauthtok(pam_handle_t *pamh, int flags, #ifdef HAVE_SHADOW struct spwd *spw; #endif - char *user, *oldpass, *newpass, *randompass; + pam_item_t item; + lo_const char *user, *oldpass, *curpass; + char *newpass, *randompass; const char *reason; int ask_oldauthtok; int randomonly, enforce, retries_left, retry_wanted; @@ -353,17 +360,19 @@ PAM_EXTERN int pam_sm_chauthtok(pam_handle_t *pamh, int flags, if (flags & PAM_PRELIM_CHECK) return status; - status = pam_get_item(pamh, PAM_USER, (pam_item_t *)&user); + status = pam_get_item(pamh, PAM_USER, &item); if (status != PAM_SUCCESS) return status; + user = item; - status = pam_get_item(pamh, PAM_OLDAUTHTOK, (pam_item_t *)&oldpass); + status = pam_get_item(pamh, PAM_OLDAUTHTOK, &item); if (status != PAM_SUCCESS) return status; + oldpass = item; if (params.flags & F_NON_UNIX) { pw = &fake_pw; - pw->pw_name = user; + pw->pw_name = (char *)user; pw->pw_gecos = ""; } else { pw = getpwnam(user); @@ -405,13 +414,13 @@ PAM_EXTERN int pam_sm_chauthtok(pam_handle_t *pamh, int flags, enforce = params.flags & F_ENFORCE_ROOT; if (params.flags & F_USE_AUTHTOK) { - status = pam_get_item(pamh, PAM_AUTHTOK, - (pam_item_t *)&newpass); + status = pam_get_item(pamh, PAM_AUTHTOK, &item); if (status != PAM_SUCCESS) return status; - if (!newpass || (check_max(¶ms, pamh, newpass) && enforce)) + curpass = item; + if (!curpass || (check_max(¶ms, pamh, curpass) && enforce)) return PAM_AUTHTOK_ERR; - reason = _passwdqc_check(¶ms.qc, newpass, oldpass, pw); + reason = _passwdqc_check(¶ms.qc, curpass, oldpass, pw); if (reason) { say(pamh, PAM_ERROR_MSG, MESSAGE_WEAKPASS, reason); if (enforce) @@ -487,7 +496,7 @@ retry: if (!newpass) { if (randompass) _pam_overwrite(randompass); - return PAM_AUTHTOK_ERR; + return status; } if (check_max(¶ms, pamh, newpass) && enforce) { diff --git a/etc/defaults/periodic.conf b/etc/defaults/periodic.conf index 4dc2478..5dd7fa9 100644 --- a/etc/defaults/periodic.conf +++ b/etc/defaults/periodic.conf @@ -128,7 +128,9 @@ daily_status_include_submit_mailq="YES" # Also submit queue # 450.status-security daily_status_security_enable="YES" # Security check -# See "Security options" below for more options +# See also "Security options" below for more options +daily_status_security_inline="NO" # Run inline ? +daily_status_security_output="root" # user or /file # 460.status-mail-rejects daily_status_mail_rejects_enable="YES" # Check mail rejects @@ -163,59 +165,78 @@ daily_local="/etc/daily.local" # Local scripts # Security options # These options are used by the security periodic(8) scripts spawned in -# 450.status-security above. -daily_status_security_inline="NO" # Run inline ? -daily_status_security_output="root" # user or /file -daily_status_security_logdir="/var/log" # Directory for logs -daily_status_security_diff_flags="-b -u" # flags for diff output +# daily and weekly 450.status-security. +security_status_logdir="/var/log" # Directory for logs +security_status_diff_flags="-b -u" # flags for diff output + +# Each of the security_status_*_enable options below can have one of the +# following values: +# - NO +# - daily: only run during the daily security status +# - weekly: only run during the weekly security status # 100.chksetuid -daily_status_security_chksetuid_enable="YES" +security_status_chksetuid_enable="YES" +security_status_chksetuid_period="daily" # 110.neggrpperm -daily_status_security_neggrpperm_enable="YES" +security_status_neggrpperm_enable="YES" +security_status_neggrpperm_period="daily" # 200.chkmounts -daily_status_security_chkmounts_enable="YES" -#daily_status_security_chkmounts_ignore="^amd:" # Don't check matching +security_status_chkmounts_enable="YES" +security_status_chkmounts_period="daily" +#security_status_chkmounts_ignore="^amd:" # Don't check matching # FS types -daily_status_security_noamd="NO" # Don't check amd mounts +security_status_noamd="NO" # Don't check amd mounts # 300.chkuid0 -daily_status_security_chkuid0_enable="YES" +security_status_chkuid0_enable="YES" +security_status_chkuid0_period="daily" # 400.passwdless -daily_status_security_passwdless_enable="YES" +security_status_passwdless_enable="YES" +security_status_passwdless_period="daily" # 410.logincheck -daily_status_security_logincheck_enable="YES" +security_status_logincheck_enable="YES" +security_status_logincheck_period="daily" # 460.chkportsum -daily_status_security_chkportsum_enable="NO" # Check ports w/ wrong checksum +security_status_chkportsum_enable="NO" # Check ports w/ wrong checksum +security_status_chkportsum_period="daily" # 500.ipfwdenied -daily_status_security_ipfwdenied_enable="YES" +security_status_ipfwdenied_enable="YES" +security_status_ipfwdenied_period="daily" # 510.ipfdenied -daily_status_security_ipfdenied_enable="YES" +security_status_ipfdenied_enable="YES" +security_status_ipfdenied_period="daily" # 520.pfdenied -daily_status_security_pfdenied_enable="YES" +security_status_pfdenied_enable="YES" +security_status_pfdenied_period="daily" # 550.ipfwlimit -daily_status_security_ipfwlimit_enable="YES" +security_status_ipfwlimit_enable="YES" +security_status_ipfwlimit_period="daily" # 610.ipf6denied -daily_status_security_ipf6denied_enable="YES" +security_status_ipf6denied_enable="YES" +security_status_ipf6denied_period="daily" # 700.kernelmsg -daily_status_security_kernelmsg_enable="YES" +security_status_kernelmsg_enable="YES" +security_status_kernelmsg_period="daily" # 800.loginfail -daily_status_security_loginfail_enable="YES" +security_status_loginfail_enable="YES" +security_status_loginfail_period="daily" # 900.tcpwrap -daily_status_security_tcpwrap_enable="YES" +security_status_tcpwrap_enable="YES" +security_status_tcpwrap_period="daily" # Weekly options @@ -248,6 +269,12 @@ weekly_status_pkg_enable="NO" # Find out-of-date pkgs pkg_version=pkg_version # Use this program pkg_version_index=/usr/ports/INDEX-10 # Use this index file +# 450.status-security +weekly_status_security_enable="YES" # Security check +# See also "Security options" above for more options +weekly_status_security_inline="NO" # Run inline ? +weekly_status_security_output="root" # user or /file + # 999.local weekly_local="/etc/weekly.local" # Local scripts @@ -267,6 +294,12 @@ monthly_show_badconfig="NO" # scripts returning 2 # 200.accounting monthly_accounting_enable="YES" # Login accounting +# 450.status-security +monthly_status_security_enable="YES" # Security check +# See also "Security options" above for more options +monthly_status_security_inline="NO" # Run inline ? +monthly_status_security_output="root" # user or /file + # 999.local monthly_local="/etc/monthly.local" # Local scripts @@ -276,6 +309,74 @@ monthly_local="/etc/monthly.local" # Local scripts if [ -z "${source_periodic_confs_defined}" ]; then source_periodic_confs_defined=yes + + # Compatibility with old daily variable names. + # They can be removed in stable/11. + security_daily_compat_var() { + local var=$1 dailyvar value + + dailyvar=daily_status_security${#status_security} + periodvar=${var%enable}period + eval value=\"\$$dailyvar\" + [ -z "$value" ] && return + echo "Warning: Variable \$$dailyvar is deprecated," \ + "use \$$var instead." >&2 + case "$value" in + [Yy][Ee][Ss]) + $var=YES + $periodvar=daily + ;; + *) + $var="$value" + ;; + esac + } + + check_yesno_period() { + local var="$1" periodvar value period + + eval value=\"\$$var\" + case "$value" in + [Yy][Ee][Ss]) ;; + *) return 1 ;; + esac + + periodvar=${var%enable}period + eval period=\"\$$periodvar\" + case "$PERIODIC" in + "security daily") + case "$period" in + [Dd][Aa][Ii][Ll][Yy]) return 0 ;; + *) return 1 ;; + esac + ;; + "security weekly") + case "$period" in + [Ww][Ee][Ee][Kk][Ll][Yy]) return 0 ;; + *) return 1 ;; + esac + ;; + "security monthly") + case "$period" in + [Mm][Oo][Nn][Tt][Hh][Ll][Yy]) return 0 ;; + *) return 1 ;; + esac + ;; + security) + # Run directly from crontab(5). + case "$period" in + [Nn][Oo]) return 1 ;; + *) return 0 ;; + esac + ;; + *) + echo "ASSERTION FAILED: Unexpected value for " \ + "\$PERIODIC: '$PERIODIC'" >&2 + exit 127 + ;; + esac + } + source_periodic_confs() { local i sourced_files diff --git a/etc/mtree/BSD.usr.dist b/etc/mtree/BSD.usr.dist index 339ae55..636a5d2 100644 --- a/etc/mtree/BSD.usr.dist +++ b/etc/mtree/BSD.usr.dist @@ -42,6 +42,62 @@ .. .. libexec + bsdconfig + 020.docsinstall + include + .. + .. + 030.packages + include + .. + .. + 040.password + include + .. + .. + 050.diskmgmt + include + .. + .. + 070.usermgmt + include + .. + .. + 080.console + include + .. + .. + 090.timezone + include + .. + .. + 110.mouse + include + .. + .. + 120.networking + include + .. + .. + 130.security + include + .. + .. + 140.startup + include + .. + .. + 150.ttys + include + .. + .. + dot + include + .. + .. + include + .. + .. bsdinstall .. lpr @@ -62,7 +118,25 @@ share atf .. + bsdconfig + media + .. + networking + .. + packages + .. + password + .. + startup + .. + timezone + .. + usermgmt + .. + .. calendar + de_AT.ISO_8859-15 + .. de_DE.ISO8859-1 .. fr_FR.ISO8859-1 @@ -71,8 +145,14 @@ .. hu_HU.ISO8859-2 .. + pt_BR.ISO8859-1 + .. + pt_BR.UTF-8 + .. ru_RU.KOI8-R .. + ru_RU.UTF-8 + .. uk_UA.KOI8-U .. .. @@ -221,6 +301,8 @@ .. bootforth .. + bsdconfig + .. csh .. cvsup diff --git a/etc/periodic/monthly/450.status-security b/etc/periodic/monthly/450.status-security new file mode 100755 index 0000000..027c896 --- /dev/null +++ b/etc/periodic/monthly/450.status-security @@ -0,0 +1,41 @@ +#!/bin/sh +# +# $FreeBSD$ +# + +# If there is a global system configuration file, suck it in. +# +if [ -r /etc/defaults/periodic.conf ] +then + . /etc/defaults/periodic.conf + source_periodic_confs +fi + +case "$monthly_status_security_enable" in + [Yy][Ee][Ss]) + echo "" + echo "Security check:" + + case "$monthly_status_security_inline" in + [Yy][Ee][Ss]) + monthly_status_security_output="";; + esac + + export security_output="${monthly_status_security_output}" + case "${monthly_status_security_output}" in + "") + rc=3;; + /*) + echo " (output logged separately)" + rc=0;; + *) + echo " (output mailed separately)" + rc=0;; + esac + + periodic security || rc=3;; + + *) rc=0;; +esac + +exit $rc diff --git a/etc/periodic/monthly/Makefile b/etc/periodic/monthly/Makefile index 77c1d66..d9e4969 100644 --- a/etc/periodic/monthly/Makefile +++ b/etc/periodic/monthly/Makefile @@ -2,7 +2,8 @@ .include <bsd.own.mk> -FILES= 999.local +FILES= 450.status-security \ + 999.local # NB: keep these sorted by MK_* knobs diff --git a/etc/periodic/security/100.chksetuid b/etc/periodic/security/100.chksetuid index 5b93b20..95920a6 100755 --- a/etc/periodic/security/100.chksetuid +++ b/etc/periodic/security/100.chksetuid @@ -37,10 +37,12 @@ fi . /etc/periodic/security/security.functions +security_daily_compat_var security_status_chksetuid_enable + rc=0 -case "$daily_status_security_chksetuid_enable" in - [Yy][Ee][Ss]) +if check_yesno_period security_status_chksetuid_enable +then echo "" echo 'Checking setuid files and devices:' MP=`mount -t ufs,zfs | awk '$0 !~ /no(suid|exec)/ { print $3 }'` @@ -49,10 +51,6 @@ case "$daily_status_security_chksetuid_enable" in \( -perm -u+s -or -perm -g+s \) -exec ls -liTd \{\} \+ | check_diff setuid - "${host} setuid diffs:" rc=$? - ;; - *) - rc=0 - ;; -esac +fi exit $rc diff --git a/etc/periodic/security/110.neggrpperm b/etc/periodic/security/110.neggrpperm index 68d1e7b..1d545ac 100755 --- a/etc/periodic/security/110.neggrpperm +++ b/etc/periodic/security/110.neggrpperm @@ -35,10 +35,12 @@ then source_periodic_confs fi +security_daily_compat_var security_status_neggrpperm_enable + rc=0 -case "$daily_status_security_neggrpperm_enable" in - [Yy][Ee][Ss]) +if check_yesno_period security_status_neggrpperm_enable +then echo "" echo 'Checking negative group permissions:' MP=`mount -t ufs,zfs | awk '$0 !~ /no(suid|exec)/ { print $3 }'` @@ -48,7 +50,6 @@ case "$daily_status_security_neggrpperm_enable" in \( ! -perm +040 -and -perm +004 \) \) \ -exec ls -liTd \{\} \+ | tee /dev/stderr | wc -l) [ $n -gt 0 ] && rc=1 || rc=0 - ;; -esac +fi exit $rc diff --git a/etc/periodic/security/200.chkmounts b/etc/periodic/security/200.chkmounts index 17b114e..7b14866 100755 --- a/etc/periodic/security/200.chkmounts +++ b/etc/periodic/security/200.chkmounts @@ -40,12 +40,16 @@ fi . /etc/periodic/security/security.functions -ignore="${daily_status_security_chkmounts_ignore}" +security_daily_compat_var security_status_chkmounts_enable +security_daily_compat_var security_status_chkmounts_ignore +security_daily_compat_var security_status_noamd + +ignore="${security_status_chkmounts_ignore}" rc=0 -case "$daily_status_security_chkmounts_enable" in - [Yy][Ee][Ss]) - case "$daily_status_security_noamd" in +if check_yesno_period security_status_chkmounts_enable +then + case "$security_status_noamd" in [Yy][Ee][Ss]) ignore="${ignore}|^amd:" esac @@ -55,8 +59,7 @@ case "$daily_status_security_chkmounts_enable" in fi mount -p | sort | ${cmd} | check_diff mount - "${host} changes in mounted filesystems:" - rc=$?;; - *) rc=0;; -esac + rc=$? +fi exit "$rc" diff --git a/etc/periodic/security/300.chkuid0 b/etc/periodic/security/300.chkuid0 index 32cc16c..73578e2 100755 --- a/etc/periodic/security/300.chkuid0 +++ b/etc/periodic/security/300.chkuid0 @@ -36,16 +36,19 @@ then source_periodic_confs fi -case "$daily_status_security_chkuid0_enable" in - [Yy][Ee][Ss]) +security_daily_compat_var security_status_chkuid0_enable + +rc=0 + +if check_yesno_period security_status_chkuid0_enable +then echo "" echo 'Checking for uids of 0:' n=$(awk -F: '/^#/ {next} $3==0 {print $1,$3}' /etc/master.passwd | tee /dev/stderr | sed -e '/^root 0$/d' -e '/^toor 0$/d' | wc -l) - [ $n -gt 0 ] && rc=1 || rc=0;; - *) rc=0;; -esac + [ $n -gt 0 ] && rc=1 || rc=0 +fi exit "$rc" diff --git a/etc/periodic/security/400.passwdless b/etc/periodic/security/400.passwdless index 42ece04..5e851ac 100755 --- a/etc/periodic/security/400.passwdless +++ b/etc/periodic/security/400.passwdless @@ -35,14 +35,17 @@ then source_periodic_confs fi -case "$daily_status_security_passwdless_enable" in - [Yy][Ee][Ss]) +security_daily_compat_var security_status_passwdless_enable + +rc=0 + +if check_yesno_period security_status_passwdless_enable +then echo "" echo 'Checking for passwordless accounts:' n=$(awk -F: 'NF > 1 && $1 !~ /^[#+-]/ && $2=="" {print $0}' /etc/master.passwd | tee /dev/stderr | wc -l) - [ $n -gt 0 ] && rc=1 || rc=0;; - *) rc=0;; -esac + [ $n -gt 0 ] && rc=1 || rc=0 +fi exit "$rc" diff --git a/etc/periodic/security/410.logincheck b/etc/periodic/security/410.logincheck index f6cf405..41e7f65 100755 --- a/etc/periodic/security/410.logincheck +++ b/etc/periodic/security/410.logincheck @@ -35,8 +35,12 @@ then source_periodic_confs fi -case "$daily_status_security_logincheck_enable" in - [Yy][Ee][Ss]) +security_daily_compat_var security_status_logincheck_enable + +rc=0 + +if check_yesno_period security_status_logincheck_enable +then echo "" echo 'Checking login.conf permissions:' if [ -G /etc/login.conf -a -O /etc/login.conf ]; then @@ -45,8 +49,7 @@ case "$daily_status_security_logincheck_enable" in echo "Bad ownership of /etc/login.conf" n=1 fi - [ $n -gt 0 ] && rc=1 || rc=0;; - *) rc=0;; -esac + [ $n -gt 0 ] && rc=1 || rc=0 +fi exit "$rc" diff --git a/etc/periodic/security/460.chkportsum b/etc/periodic/security/460.chkportsum index 3a39c84..18a12ec 100755 --- a/etc/periodic/security/460.chkportsum +++ b/etc/periodic/security/460.chkportsum @@ -35,13 +35,15 @@ fi . /etc/periodic/security/security.functions +security_daily_compat_var security_status_chkportsum_enable + rc=0 echo "" echo 'Checking for ports with mismatched checksums:' -case "${daily_status_security_chkportsum_enable}" in - [Yy][Ee][Ss]) +if check_yesno_period security_status_chkportsum_enable +then set -f pkg_info -ga 2>/dev/null | \ while IFS= read -r line; do @@ -59,10 +61,6 @@ case "${daily_status_security_chkportsum_enable}" in ;; esac done - ;; - *) - rc=0 - ;; -esac +fi exit $rc diff --git a/etc/periodic/security/500.ipfwdenied b/etc/periodic/security/500.ipfwdenied index 6a6fb8b4..f39ca0e 100755 --- a/etc/periodic/security/500.ipfwdenied +++ b/etc/periodic/security/500.ipfwdenied @@ -37,17 +37,18 @@ fi . /etc/periodic/security/security.functions +security_daily_compat_var security_status_ipfwdenied_enable + rc=0 -case "$daily_status_security_ipfwdenied_enable" in - [Yy][Ee][Ss]) +if check_yesno_period security_status_ipfwdenied_enable +then TMP=`mktemp -t security` if ipfw -a list 2>/dev/null | egrep "deny|reset|unreach" > ${TMP}; then check_diff new_only ipfw ${TMP} "${host} ipfw denied packets:" fi rc=$? - rm -f ${TMP};; - *) rc=0;; -esac + rm -f ${TMP} +fi exit $rc diff --git a/etc/periodic/security/510.ipfdenied b/etc/periodic/security/510.ipfdenied index 2058d2b..bed75e6 100755 --- a/etc/periodic/security/510.ipfdenied +++ b/etc/periodic/security/510.ipfdenied @@ -37,17 +37,18 @@ fi . /etc/periodic/security/security.functions +security_daily_compat_var security_status_ipfdenied_enable + rc=0 -case "$daily_status_security_ipfdenied_enable" in - [Yy][Ee][Ss]) +if check_yesno_period security_status_ipfdenied_enable +then TMP=`mktemp -t security` if ipfstat -nhio 2>/dev/null | grep block > ${TMP}; then check_diff new_only ipf ${TMP} "${host} ipf denied packets:" fi rc=$? - rm -f ${TMP};; - *) rc=0;; -esac + rm -f ${TMP} +fi exit $rc diff --git a/etc/periodic/security/520.pfdenied b/etc/periodic/security/520.pfdenied index 5e51393..7a32bf2 100755 --- a/etc/periodic/security/520.pfdenied +++ b/etc/periodic/security/520.pfdenied @@ -37,17 +37,18 @@ fi . /etc/periodic/security/security.functions +security_daily_compat_var security_status_pfdenied_enable + rc=0 -case "$daily_status_security_pfdenied_enable" in - [Yy][Ee][Ss]) +if check_yesno_period security_status_pfdenied_enable +then TMP=`mktemp -t security` if pfctl -sr -v 2>/dev/null | nawk '{if (/^block/) {buf=$0; getline; gsub(" +"," ",$0); print buf$0;} }' > ${TMP}; then check_diff new_only pf ${TMP} "${host} pf denied packets:" fi rc=$? - rm -f ${TMP};; - *) rc=0;; -esac + rm -f ${TMP} +fi exit $rc diff --git a/etc/periodic/security/550.ipfwlimit b/etc/periodic/security/550.ipfwlimit index daa0f86..86932c6 100755 --- a/etc/periodic/security/550.ipfwlimit +++ b/etc/periodic/security/550.ipfwlimit @@ -38,10 +38,12 @@ then source_periodic_confs fi +security_daily_compat_var security_status_ipfwlimit_enable + rc=0 -case "$daily_status_security_ipfwlimit_enable" in - [Yy][Ee][Ss]) +if check_yesno_period security_status_ipfwlimit_enable +then IPFW_VERBOSE=`sysctl -n net.inet.ip.fw.verbose 2> /dev/null` if [ $? -ne 0 ] || [ "$IPFW_VERBOSE" -eq 0 ]; then exit 0 @@ -61,8 +63,7 @@ case "$daily_status_security_ipfwlimit_enable" in echo 'ipfw log limit reached:' cat ${TMP} fi - rm -f ${TMP};; - *) rc=0;; -esac + rm -f ${TMP} +fi exit $rc diff --git a/etc/periodic/security/610.ipf6denied b/etc/periodic/security/610.ipf6denied index 6c64d92..7e02cfc 100755 --- a/etc/periodic/security/610.ipf6denied +++ b/etc/periodic/security/610.ipf6denied @@ -37,17 +37,18 @@ fi . /etc/periodic/security/security.functions +security_daily_compat_var security_status_ipf6denied_enable + rc=0 -case "$daily_status_security_ipf6denied_enable" in - [Yy][Ee][Ss]) +if check_yesno_period security_status_ipf6denied_enable +then TMP=`mktemp ${TMPDIR:-/tmp}/security.XXXXXXXXXX` if ipfstat -nhio6 2>/dev/null | grep block > ${TMP}; then check_diff new_only ipf6 ${TMP} "${host} ipf6 denied packets:" fi rc=$? - rm -f ${TMP};; - *) rc=0;; -esac + rm -f ${TMP} +fi exit $rc diff --git a/etc/periodic/security/700.kernelmsg b/etc/periodic/security/700.kernelmsg index fb5ed63..8bf6491 100755 --- a/etc/periodic/security/700.kernelmsg +++ b/etc/periodic/security/700.kernelmsg @@ -40,14 +40,15 @@ fi . /etc/periodic/security/security.functions +security_daily_compat_var security_status_kernelmsg_enable + rc=0 -case "$daily_status_security_kernelmsg_enable" in - [Yy][Ee][Ss]) +if check_yesno_period security_status_kernelmsg_enable +then dmesg 2>/dev/null | check_diff new_only dmesg - "${host} kernel log messages:" - rc=$?;; - *) rc=0;; -esac + rc=$? +fi exit $rc diff --git a/etc/periodic/security/800.loginfail b/etc/periodic/security/800.loginfail index 767b959..a0de96d 100755 --- a/etc/periodic/security/800.loginfail +++ b/etc/periodic/security/800.loginfail @@ -38,7 +38,10 @@ then source_periodic_confs fi -LOG="${daily_status_security_logdir}" +security_daily_compat_var security_status_logdir +security_daily_compat_var security_status_loginfail_enable + +LOG="${security_status_logdir}" yesterday=`date -v-1d "+%b %e "` @@ -55,14 +58,15 @@ catmsgs() { [ -f ${LOG}/auth.log ] && cat $LOG/auth.log } -case "$daily_status_security_loginfail_enable" in - [Yy][Ee][Ss]) +rc=0 + +if check_yesno_period security_status_loginfail_enable +then echo "" echo "${host} login failures:" n=$(catmsgs | egrep -ia "^$yesterday.*: .*(fail|invalid|bad|illegal)" | tee /dev/stderr | wc -l) - [ $n -gt 0 ] && rc=1 || rc=0;; - *) rc=0;; -esac + [ $n -gt 0 ] && rc=1 || rc=0 +fi exit $rc diff --git a/etc/periodic/security/900.tcpwrap b/etc/periodic/security/900.tcpwrap index 55f7709..10b02e9 100755 --- a/etc/periodic/security/900.tcpwrap +++ b/etc/periodic/security/900.tcpwrap @@ -38,7 +38,10 @@ then source_periodic_confs fi -LOG="${daily_status_security_logdir}" +security_daily_compat_var security_status_logdir +security_daily_compat_var security_status_tcpwrap_enable + +LOG="${security_status_logdir}" yesterday=`date -v-1d "+%b %e "` @@ -55,14 +58,15 @@ catmsgs() { [ -f ${LOG}/messages ] && cat $LOG/messages } -case "$daily_status_security_tcpwrap_enable" in - [Yy][Ee][Ss]) +rc=0 + +if check_yesno_period security_status_tcpwrap_enable +then echo "" echo "${host} refused connections:" n=$(catmsgs | grep -i "^$yesterday.*refused connect" | tee /dev/stderr | wc -l) - [ $n -gt 0 ] && rc=1 || rc=0;; - *) rc=0;; -esac + [ $n -gt 0 ] && rc=1 || rc=0 +fi exit $rc diff --git a/etc/periodic/security/security.functions b/etc/periodic/security/security.functions index f5b8dcd..bc2bcba 100644 --- a/etc/periodic/security/security.functions +++ b/etc/periodic/security/security.functions @@ -27,11 +27,19 @@ # $FreeBSD$ # +# This is a library file, so we only try to do something when sourced. +case "$0" in +*/security.functions) exit 0 ;; +esac + +security_daily_compat_var security_status_logdir +security_daily_compat_var security_status_diff_flags + # # Show differences in the output of an audit command # -LOG="${daily_status_security_logdir}" +LOG="${security_status_logdir}" rc=0 # Usage: COMMAND | check_diff [new_only] LABEL - MSG @@ -67,7 +75,7 @@ check_diff() { [ $rc -lt 1 ] && rc=1 echo "" echo "${msg}" - diff ${daily_status_security_diff_flags} ${LOG}/${label}.today \ + diff ${security_status_diff_flags} ${LOG}/${label}.today \ ${tmpf} | eval "${filter}" mv ${LOG}/${label}.today ${LOG}/${label}.yesterday || rc=3 mv ${tmpf} ${LOG}/${label}.today || rc=3 diff --git a/etc/periodic/weekly/450.status-security b/etc/periodic/weekly/450.status-security new file mode 100755 index 0000000..513fbda --- /dev/null +++ b/etc/periodic/weekly/450.status-security @@ -0,0 +1,41 @@ +#!/bin/sh +# +# $FreeBSD$ +# + +# If there is a global system configuration file, suck it in. +# +if [ -r /etc/defaults/periodic.conf ] +then + . /etc/defaults/periodic.conf + source_periodic_confs +fi + +case "$weekly_status_security_enable" in + [Yy][Ee][Ss]) + echo "" + echo "Security check:" + + case "$weekly_status_security_inline" in + [Yy][Ee][Ss]) + weekly_status_security_output="";; + esac + + export security_output="${weekly_status_security_output}" + case "${weekly_status_security_output}" in + "") + rc=3;; + /*) + echo " (output logged separately)" + rc=0;; + *) + echo " (output mailed separately)" + rc=0;; + esac + + periodic security || rc=3;; + + *) rc=0;; +esac + +exit $rc diff --git a/etc/periodic/weekly/Makefile b/etc/periodic/weekly/Makefile index 7f2eae2..057653d 100644 --- a/etc/periodic/weekly/Makefile +++ b/etc/periodic/weekly/Makefile @@ -3,6 +3,7 @@ .include <bsd.own.mk> FILES= 340.noid \ + 450.status-security \ 999.local # NB: keep these sorted by MK_* knobs diff --git a/etc/rc.d/savecore b/etc/rc.d/savecore index a39d5ba..2176be9 100755 --- a/etc/rc.d/savecore +++ b/etc/rc.d/savecore @@ -70,6 +70,7 @@ savecore_start() if checkyesno crashinfo_enable; then ${crashinfo_program} -d ${dumpdir} fi + sync else check_startmsgs && echo 'No core dumps found.' fi diff --git a/gnu/usr.bin/patch/Makefile b/gnu/usr.bin/patch/Makefile index 3f26cec..8d8cc7b 100644 --- a/gnu/usr.bin/patch/Makefile +++ b/gnu/usr.bin/patch/Makefile @@ -1,16 +1,10 @@ # $FreeBSD$ -.include <bsd.own.mk> - -.if ${MK_GNU_PATCH} == "yes" -PROG= patch -.else PROG= gnupatch CLEANFILES+= gnupatch.1 gnupatch.1: patch.1 cp ${.ALLSRC} ${.TARGET} -.endif SRCS= backupfile.c inp.c patch.c pch.c util.c version.c CFLAGS+=-DHAVE_CONFIG_H diff --git a/lib/libc/gen/wordexp.c b/lib/libc/gen/wordexp.c index c361980..377caff 100644 --- a/lib/libc/gen/wordexp.c +++ b/lib/libc/gen/wordexp.c @@ -121,7 +121,7 @@ we_askshell(const char *words, wordexp_t *we, int flags) serrno = errno; - if (pipe(pdes) < 0) + if (pipe2(pdes, O_CLOEXEC) < 0) return (WRDE_NOSPACE); /* XXX */ (void)sigemptyset(&newsigblock); (void)sigaddset(&newsigblock, SIGCHLD); @@ -140,10 +140,10 @@ we_askshell(const char *words, wordexp_t *we, int flags) * builtin on `words'. */ (void)_sigprocmask(SIG_SETMASK, &oldsigblock, NULL); - _close(pdes[0]); - if (_dup2(pdes[1], STDOUT_FILENO) < 0) + if ((pdes[1] != STDOUT_FILENO ? + _dup2(pdes[1], STDOUT_FILENO) : + _fcntl(pdes[1], F_SETFD, 0)) < 0) _exit(1); - _close(pdes[1]); execl(_PATH_BSHELL, "sh", flags & WRDE_UNDEF ? "-u" : "+u", "-c", "eval \"$1\";eval \"wordexp $2\"", "", flags & WRDE_SHOWERR ? "" : "exec 2>/dev/null", words, diff --git a/lib/libc/sys/pdfork.2 b/lib/libc/sys/pdfork.2 index ad33566..26d0eb0 100644 --- a/lib/libc/sys/pdfork.2 +++ b/lib/libc/sys/pdfork.2 @@ -1,10 +1,14 @@ .\" -.\" Copyright (c) 2009-2010, 2012 Robert N. M. Watson +.\" Copyright (c) 2009-2010, 2012-2013 Robert N. M. Watson .\" All rights reserved. .\" .\" This software was developed at the University of Cambridge Computer .\" Laboratory with support from a grant from Google, Inc. .\" +.\" This software was developed by SRI International and the University of +.\" Cambridge Computer Laboratory under DARPA/AFRL contract (FA8750-10-C-0237) +.\" ("CTSRD"), as part of the DARPA CRASH research programme. +.\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: @@ -28,7 +32,7 @@ .\" .\" $FreeBSD$ .\" -.Dd February 25, 2012 +.Dd August 28, 2013 .Dt PDFORK 2 .Os .Sh NAME @@ -71,7 +75,9 @@ Instead of the default terminate-on-close behaviour, allow the process to live until it is explicitly killed with .Xr kill 2 . .Pp -This option is not permitted in Capsicum capability mode (see +This option is not permitted in +.Xr capsicum 4 +capability mode (see .Xr cap_enter 2 ) . .El .Pp @@ -119,6 +125,12 @@ is set; if the process is still alive and this is the last reference to the process descriptor, the process will be terminated with the signal .Dv SIGKILL . +.Pp +.Nm +and associated functions depend on +.Cd "options PROCDESC" +described in +.Xr procdesc 4 . .Sh RETURN VALUES .Fn pdfork returns a PID, 0 or -1, as @@ -156,7 +168,9 @@ for .Xr fstat 2 , .Xr kill 2 , .Xr poll 2 , -.Xr wait4 2 +.Xr wait4 2 , +.Xr capsicum 4 , +.Xr procdesc 4 .Sh HISTORY The .Fn pdfork , diff --git a/lib/libpam/modules/pam_passwdqc/Makefile b/lib/libpam/modules/pam_passwdqc/Makefile index 905afe1..c9cc30e 100644 --- a/lib/libpam/modules/pam_passwdqc/Makefile +++ b/lib/libpam/modules/pam_passwdqc/Makefile @@ -7,7 +7,7 @@ LIB= pam_passwdqc SRCS= pam_passwdqc.c passwdqc_check.c passwdqc_random.c wordset_4k.c MAN= pam_passwdqc.8 -WARNS?= 0 +WARNS?= 2 CFLAGS+= -I${SRCDIR} DPADD= ${LIBCRYPT} diff --git a/lib/libutil/expand_number.c b/lib/libutil/expand_number.c index 401e2d9..24bcc39 100644 --- a/lib/libutil/expand_number.c +++ b/lib/libutil/expand_number.c @@ -35,42 +35,24 @@ __FBSDID("$FreeBSD$"); #include <libutil.h> #include <stdint.h> -/* - * Convert an expression of the following forms to a uint64_t. - * 1) A positive decimal number. - * 2) A positive decimal number followed by a 'b' or 'B' (mult by 1). - * 3) A positive decimal number followed by a 'k' or 'K' (mult by 1 << 10). - * 4) A positive decimal number followed by a 'm' or 'M' (mult by 1 << 20). - * 5) A positive decimal number followed by a 'g' or 'G' (mult by 1 << 30). - * 6) A positive decimal number followed by a 't' or 'T' (mult by 1 << 40). - * 7) A positive decimal number followed by a 'p' or 'P' (mult by 1 << 50). - * 8) A positive decimal number followed by a 'e' or 'E' (mult by 1 << 60). - */ int expand_number(const char *buf, uint64_t *num) { + char *endptr; + uintmax_t umaxval; uint64_t number; - int saved_errno; unsigned shift; - char *endptr; + int serrno; - saved_errno = errno; + serrno = errno; errno = 0; - - number = strtoumax(buf, &endptr, 0); - - if (number == UINTMAX_MAX && errno == ERANGE) { - return (-1); - } - - if (errno == 0) - errno = saved_errno; - - if (endptr == buf) { - /* No valid digits. */ - errno = EINVAL; + umaxval = strtoumax(buf, &endptr, 0); + if (umaxval > UINT64_MAX) + errno = ERANGE; + if (errno != 0) return (-1); - } + errno = serrno; + number = umaxval; switch (tolower((unsigned char)*endptr)) { case 'e': @@ -106,7 +88,6 @@ expand_number(const char *buf, uint64_t *num) errno = ERANGE; return (-1); } - *num = number << shift; return (0); } diff --git a/lib/libutil/login_auth.c b/lib/libutil/login_auth.c index ce9a2e4..1fc7e73 100644 --- a/lib/libutil/login_auth.c +++ b/lib/libutil/login_auth.c @@ -98,7 +98,7 @@ auth_cat(const char *file) int fd, count; char buf[BUFSIZ]; - if ((fd = open(file, O_RDONLY)) < 0) + if ((fd = open(file, O_RDONLY | O_CLOEXEC)) < 0) return 0; while ((count = read(fd, buf, sizeof(buf))) > 0) (void)write(fileno(stdout), buf, count); diff --git a/lib/libutil/login_cap.c b/lib/libutil/login_cap.c index 8fee760..8915d0a 100644 --- a/lib/libutil/login_cap.c +++ b/lib/libutil/login_cap.c @@ -239,7 +239,7 @@ login_getclassbyname(char const *name, const struct passwd *pwd) break; /* Don't retry default on 'me' */ if (i == 0) r = -1; - else if ((r = open(login_dbarray[0], O_RDONLY)) >= 0) + else if ((r = open(login_dbarray[0], O_RDONLY | O_CLOEXEC)) >= 0) close(r); /* * If there's at least one login class database, diff --git a/lib/libutil/pidfile.c b/lib/libutil/pidfile.c index 7949e9e..3a5e512 100644 --- a/lib/libutil/pidfile.c +++ b/lib/libutil/pidfile.c @@ -73,7 +73,7 @@ pidfile_read(const char *path, pid_t *pidptr) char buf[16], *endptr; int error, fd, i; - fd = open(path, O_RDONLY); + fd = open(path, O_RDONLY | O_CLOEXEC); if (fd == -1) return (errno); diff --git a/lib/libutil/quotafile.c b/lib/libutil/quotafile.c index 03e3de4..6b5a44d 100644 --- a/lib/libutil/quotafile.c +++ b/lib/libutil/quotafile.c @@ -137,7 +137,7 @@ quota_open(struct fstab *fs, int quotatype, int openflags) goto error; } qf->accmode = openflags & O_ACCMODE; - if ((qf->fd = open(qf->qfname, qf->accmode)) < 0 && + if ((qf->fd = open(qf->qfname, qf->accmode|O_CLOEXEC)) < 0 && (openflags & O_CREAT) != O_CREAT) goto error; /* File open worked, so process it */ @@ -168,7 +168,8 @@ quota_open(struct fstab *fs, int quotatype, int openflags) /* not reached */ } /* open failed, but O_CREAT was specified, so create a new file */ - if ((qf->fd = open(qf->qfname, O_RDWR|O_CREAT|O_TRUNC, 0)) < 0) + if ((qf->fd = open(qf->qfname, O_RDWR|O_CREAT|O_TRUNC|O_CLOEXEC, 0)) < + 0) goto error; qf->wordsize = 64; memset(&dqh, 0, sizeof(dqh)); @@ -534,7 +535,8 @@ quota_convert(struct quotafile *qf, int wordsize) free(newqf); return (-1); } - if ((newqf->fd = open(qf->qfname, O_RDWR|O_CREAT|O_TRUNC, 0)) < 0) { + if ((newqf->fd = open(qf->qfname, O_RDWR|O_CREAT|O_TRUNC|O_CLOEXEC, + 0)) < 0) { serrno = errno; goto error; } diff --git a/lib/libutil/uucplock.c b/lib/libutil/uucplock.c index afbfaa4..424ac26 100644 --- a/lib/libutil/uucplock.c +++ b/lib/libutil/uucplock.c @@ -76,7 +76,8 @@ uu_lock(const char *tty_name) pid); (void)snprintf(lckname, sizeof(lckname), _PATH_UUCPLOCK LOCKFMT, tty_name); - if ((tmpfd = creat(lcktmpname, 0664)) < 0) + if ((tmpfd = open(lcktmpname, O_CREAT | O_TRUNC | O_WRONLY | O_CLOEXEC, + 0664)) < 0) GORET(0, UU_LOCK_CREAT_ERR); for (i = 0; i < MAXTRIES; i++) { @@ -88,7 +89,7 @@ uu_lock(const char *tty_name) * check to see if the process holding the lock * still exists */ - if ((fd = open(lckname, O_RDONLY)) < 0) + if ((fd = open(lckname, O_RDONLY | O_CLOEXEC)) < 0) GORET(1, UU_LOCK_OPEN_ERR); if ((pid_old = get_pid (fd, &err)) == -1) @@ -132,7 +133,7 @@ uu_lock_txfr(const char *tty_name, pid_t pid) snprintf(lckname, sizeof(lckname), _PATH_UUCPLOCK LOCKFMT, tty_name); - if ((fd = open(lckname, O_RDWR)) < 0) + if ((fd = open(lckname, O_RDWR | O_CLOEXEC)) < 0) return UU_LOCK_OWNER_ERR; if (get_pid(fd, &err) != getpid()) err = UU_LOCK_OWNER_ERR; diff --git a/lib/msun/src/s_erf.c b/lib/msun/src/s_erf.c index 0886e5e..854767b 100644 --- a/lib/msun/src/s_erf.c +++ b/lib/msun/src/s_erf.c @@ -201,7 +201,7 @@ erf(double x) if(ix < 0x3feb0000) { /* |x|<0.84375 */ if(ix < 0x3e300000) { /* |x|<2**-28 */ if (ix < 0x00800000) - return 0.125*(8.0*x+efx8*x); /*avoid underflow */ + return (8*x+efx8*x)/8; /* avoid spurious underflow */ return x + efx*x; } z = x*x; diff --git a/lib/msun/src/s_erff.c b/lib/msun/src/s_erff.c index a44e135..b97ca1d 100644 --- a/lib/msun/src/s_erff.c +++ b/lib/msun/src/s_erff.c @@ -24,75 +24,59 @@ tiny = 1e-30, half= 5.0000000000e-01, /* 0x3F000000 */ one = 1.0000000000e+00, /* 0x3F800000 */ two = 2.0000000000e+00, /* 0x40000000 */ - /* c = (subfloat)0.84506291151 */ -erx = 8.4506291151e-01, /* 0x3f58560b */ /* - * Coefficients for approximation to erf on [0,0.84375] + * Coefficients for approximation to erf on [0,0.84375] */ efx = 1.2837916613e-01, /* 0x3e0375d4 */ efx8= 1.0270333290e+00, /* 0x3f8375d4 */ -pp0 = 1.2837916613e-01, /* 0x3e0375d4 */ -pp1 = -3.2504209876e-01, /* 0xbea66beb */ -pp2 = -2.8481749818e-02, /* 0xbce9528f */ -pp3 = -5.7702702470e-03, /* 0xbbbd1489 */ -pp4 = -2.3763017452e-05, /* 0xb7c756b1 */ -qq1 = 3.9791721106e-01, /* 0x3ecbbbce */ -qq2 = 6.5022252500e-02, /* 0x3d852a63 */ -qq3 = 5.0813062117e-03, /* 0x3ba68116 */ -qq4 = 1.3249473704e-04, /* 0x390aee49 */ -qq5 = -3.9602282413e-06, /* 0xb684e21a */ /* - * Coefficients for approximation to erf in [0.84375,1.25] + * Domain [0, 0.84375], range ~[-5.4446e-10,5.5197e-10]: + * |(erf(x) - x)/x - p(x)/q(x)| < 2**-31. */ -pa0 = -2.3621185683e-03, /* 0xbb1acdc6 */ -pa1 = 4.1485610604e-01, /* 0x3ed46805 */ -pa2 = -3.7220788002e-01, /* 0xbebe9208 */ -pa3 = 3.1834661961e-01, /* 0x3ea2fe54 */ -pa4 = -1.1089469492e-01, /* 0xbde31cc2 */ -pa5 = 3.5478305072e-02, /* 0x3d1151b3 */ -pa6 = -2.1663755178e-03, /* 0xbb0df9c0 */ -qa1 = 1.0642088205e-01, /* 0x3dd9f331 */ -qa2 = 5.4039794207e-01, /* 0x3f0a5785 */ -qa3 = 7.1828655899e-02, /* 0x3d931ae7 */ -qa4 = 1.2617121637e-01, /* 0x3e013307 */ -qa5 = 1.3637083583e-02, /* 0x3c5f6e13 */ -qa6 = 1.1984500103e-02, /* 0x3c445aa3 */ +pp0 = 1.28379166e-01F, /* 0x1.06eba8p-3 */ +pp1 = -3.36030394e-01F, /* -0x1.58185ap-2 */ +pp2 = -1.86260219e-03F, /* -0x1.e8451ep-10 */ +qq1 = 3.12324286e-01F, /* 0x1.3fd1f0p-2 */ +qq2 = 2.16070302e-02F, /* 0x1.620274p-6 */ +qq3 = -1.98859419e-03F, /* -0x1.04a626p-9 */ /* - * Coefficients for approximation to erfc in [1.25,1/0.35] + * Domain [0.84375, 1.25], range ~[-1.953e-11,1.940e-11]: + * |(erf(x) - erx) - p(x)/q(x)| < 2**-36. */ -ra0 = -9.8649440333e-03, /* 0xbc21a093 */ -ra1 = -6.9385856390e-01, /* 0xbf31a0b7 */ -ra2 = -1.0558626175e+01, /* 0xc128f022 */ -ra3 = -6.2375331879e+01, /* 0xc2798057 */ -ra4 = -1.6239666748e+02, /* 0xc322658c */ -ra5 = -1.8460508728e+02, /* 0xc3389ae7 */ -ra6 = -8.1287437439e+01, /* 0xc2a2932b */ -ra7 = -9.8143291473e+00, /* 0xc11d077e */ -sa1 = 1.9651271820e+01, /* 0x419d35ce */ -sa2 = 1.3765776062e+02, /* 0x4309a863 */ -sa3 = 4.3456588745e+02, /* 0x43d9486f */ -sa4 = 6.4538726807e+02, /* 0x442158c9 */ -sa5 = 4.2900814819e+02, /* 0x43d6810b */ -sa6 = 1.0863500214e+02, /* 0x42d9451f */ -sa7 = 6.5702495575e+00, /* 0x40d23f7c */ -sa8 = -6.0424413532e-02, /* 0xbd777f97 */ +erx = 8.42697144e-01F, /* 0x1.af7600p-1. erf(1) rounded to 16 bits. */ +pa0 = 3.64939137e-06F, /* 0x1.e9d022p-19 */ +pa1 = 4.15109694e-01F, /* 0x1.a91284p-2 */ +pa2 = -1.65179938e-01F, /* -0x1.5249dcp-3 */ +pa3 = 1.10914491e-01F, /* 0x1.c64e46p-4 */ +qa1 = 6.02074385e-01F, /* 0x1.344318p-1 */ +qa2 = 5.35934687e-01F, /* 0x1.126608p-1 */ +qa3 = 1.68576106e-01F, /* 0x1.593e6ep-3 */ +qa4 = 5.62181212e-02F, /* 0x1.cc89f2p-5 */ /* - * Coefficients for approximation to erfc in [1/.35,28] + * Domain [1.25,1/0.35], range ~[-7.043e-10,7.457e-10]: + * |log(x*erfc(x)) + x**2 + 0.5625 - r(x)/s(x)| < 2**-30 */ -rb0 = -9.8649431020e-03, /* 0xbc21a092 */ -rb1 = -7.9928326607e-01, /* 0xbf4c9dd4 */ -rb2 = -1.7757955551e+01, /* 0xc18e104b */ -rb3 = -1.6063638306e+02, /* 0xc320a2ea */ -rb4 = -6.3756646729e+02, /* 0xc41f6441 */ -rb5 = -1.0250950928e+03, /* 0xc480230b */ -rb6 = -4.8351919556e+02, /* 0xc3f1c275 */ -sb1 = 3.0338060379e+01, /* 0x41f2b459 */ -sb2 = 3.2579251099e+02, /* 0x43a2e571 */ -sb3 = 1.5367296143e+03, /* 0x44c01759 */ -sb4 = 3.1998581543e+03, /* 0x4547fdbb */ -sb5 = 2.5530502930e+03, /* 0x451f90ce */ -sb6 = 4.7452853394e+02, /* 0x43ed43a7 */ -sb7 = -2.2440952301e+01; /* 0xc1b38712 */ +ra0 = -9.87132732e-03F, /* -0x1.4376b2p-7 */ +ra1 = -5.53605914e-01F, /* -0x1.1b723cp-1 */ +ra2 = -2.17589188e+00F, /* -0x1.1683a0p+1 */ +ra3 = -1.43268085e+00F, /* -0x1.6ec42cp+0 */ +sa1 = 5.45995426e+00F, /* 0x1.5d6fe4p+2 */ +sa2 = 6.69798088e+00F, /* 0x1.acabb8p+2 */ +sa3 = 1.43113089e+00F, /* 0x1.6e5e98p+0 */ +sa4 = -5.77397496e-02F, /* -0x1.d90108p-5 */ +/* + * Domain [1/0.35, 11], range ~[-2.264e-13,2.336e-13]: + * |log(x*erfc(x)) + x**2 + 0.5625 - r(x)/s(x)| < 2**-42 + */ +rb0 = -9.86494310e-03F, /* -0x1.434124p-7 */ +rb1 = -6.25171244e-01F, /* -0x1.401672p-1 */ +rb2 = -6.16498327e+00F, /* -0x1.8a8f16p+2 */ +rb3 = -1.66696873e+01F, /* -0x1.0ab70ap+4 */ +rb4 = -9.53764343e+00F, /* -0x1.313460p+3 */ +sb1 = 1.26884899e+01F, /* 0x1.96081cp+3 */ +sb2 = 4.51839523e+01F, /* 0x1.6978bcp+5 */ +sb3 = 4.72810211e+01F, /* 0x1.7a3f88p+5 */ +sb4 = 8.93033314e+00F; /* 0x1.1dc54ap+3 */ float erff(float x) @@ -107,43 +91,37 @@ erff(float x) } if(ix < 0x3f580000) { /* |x|<0.84375 */ - if(ix < 0x31800000) { /* |x|<2**-28 */ - if (ix < 0x04000000) - /*avoid underflow */ - return (float)0.125*((float)8.0*x+efx8*x); + if(ix < 0x38800000) { /* |x|<2**-14 */ + if (ix < 0x04000000) /* |x|<0x1p-119 */ + return (8*x+efx8*x)/8; /* avoid spurious underflow */ return x + efx*x; } z = x*x; - r = pp0+z*(pp1+z*(pp2+z*(pp3+z*pp4))); - s = one+z*(qq1+z*(qq2+z*(qq3+z*(qq4+z*qq5)))); + r = pp0+z*(pp1+z*pp2); + s = one+z*(qq1+z*(qq2+z*qq3)); y = r/s; return x + x*y; } if(ix < 0x3fa00000) { /* 0.84375 <= |x| < 1.25 */ s = fabsf(x)-one; - P = pa0+s*(pa1+s*(pa2+s*(pa3+s*(pa4+s*(pa5+s*pa6))))); - Q = one+s*(qa1+s*(qa2+s*(qa3+s*(qa4+s*(qa5+s*qa6))))); + P = pa0+s*(pa1+s*(pa2+s*pa3)); + Q = one+s*(qa1+s*(qa2+s*(qa3+s*qa4))); if(hx>=0) return erx + P/Q; else return -erx - P/Q; } - if (ix >= 0x40c00000) { /* inf>|x|>=6 */ + if (ix >= 0x40800000) { /* inf>|x|>=4 */ if(hx>=0) return one-tiny; else return tiny-one; } x = fabsf(x); s = one/(x*x); if(ix< 0x4036DB6E) { /* |x| < 1/0.35 */ - R=ra0+s*(ra1+s*(ra2+s*(ra3+s*(ra4+s*( - ra5+s*(ra6+s*ra7)))))); - S=one+s*(sa1+s*(sa2+s*(sa3+s*(sa4+s*( - sa5+s*(sa6+s*(sa7+s*sa8))))))); + R=ra0+s*(ra1+s*(ra2+s*ra3)); + S=one+s*(sa1+s*(sa2+s*(sa3+s*sa4))); } else { /* |x| >= 1/0.35 */ - R=rb0+s*(rb1+s*(rb2+s*(rb3+s*(rb4+s*( - rb5+s*rb6))))); - S=one+s*(sb1+s*(sb2+s*(sb3+s*(sb4+s*( - sb5+s*(sb6+s*sb7)))))); + R=rb0+s*(rb1+s*(rb2+s*(rb3+s*rb4))); + S=one+s*(sb1+s*(sb2+s*(sb3+s*sb4))); } - GET_FLOAT_WORD(ix,x); - SET_FLOAT_WORD(z,ix&0xfffff000); - r = __ieee754_expf(-z*z-(float)0.5625)*__ieee754_expf((z-x)*(z+x)+R/S); + SET_FLOAT_WORD(z,hx&0xffffe000); + r = expf(-z*z-0.5625F)*expf((z-x)*(z+x)+R/S); if(hx>=0) return one-r/x; else return r/x-one; } @@ -160,11 +138,11 @@ erfcf(float x) } if(ix < 0x3f580000) { /* |x|<0.84375 */ - if(ix < 0x23800000) /* |x|<2**-56 */ + if(ix < 0x33800000) /* |x|<2**-24 */ return one-x; z = x*x; - r = pp0+z*(pp1+z*(pp2+z*(pp3+z*pp4))); - s = one+z*(qq1+z*(qq2+z*(qq3+z*(qq4+z*qq5)))); + r = pp0+z*(pp1+z*pp2); + s = one+z*(qq1+z*(qq2+z*qq3)); y = r/s; if(hx < 0x3e800000) { /* x<1/4 */ return one-(x+x*y); @@ -176,33 +154,27 @@ erfcf(float x) } if(ix < 0x3fa00000) { /* 0.84375 <= |x| < 1.25 */ s = fabsf(x)-one; - P = pa0+s*(pa1+s*(pa2+s*(pa3+s*(pa4+s*(pa5+s*pa6))))); - Q = one+s*(qa1+s*(qa2+s*(qa3+s*(qa4+s*(qa5+s*qa6))))); + P = pa0+s*(pa1+s*(pa2+s*pa3)); + Q = one+s*(qa1+s*(qa2+s*(qa3+s*qa4))); if(hx>=0) { z = one-erx; return z - P/Q; } else { z = erx+P/Q; return one+z; } } - if (ix < 0x41e00000) { /* |x|<28 */ + if (ix < 0x41300000) { /* |x|<11 */ x = fabsf(x); s = one/(x*x); if(ix< 0x4036DB6D) { /* |x| < 1/.35 ~ 2.857143*/ - R=ra0+s*(ra1+s*(ra2+s*(ra3+s*(ra4+s*( - ra5+s*(ra6+s*ra7)))))); - S=one+s*(sa1+s*(sa2+s*(sa3+s*(sa4+s*( - sa5+s*(sa6+s*(sa7+s*sa8))))))); + R=ra0+s*(ra1+s*(ra2+s*ra3)); + S=one+s*(sa1+s*(sa2+s*(sa3+s*sa4))); } else { /* |x| >= 1/.35 ~ 2.857143 */ - if(hx<0&&ix>=0x40c00000) return two-tiny;/* x < -6 */ - R=rb0+s*(rb1+s*(rb2+s*(rb3+s*(rb4+s*( - rb5+s*rb6))))); - S=one+s*(sb1+s*(sb2+s*(sb3+s*(sb4+s*( - sb5+s*(sb6+s*sb7)))))); + if(hx<0&&ix>=0x40a00000) return two-tiny;/* x < -5 */ + R=rb0+s*(rb1+s*(rb2+s*(rb3+s*rb4))); + S=one+s*(sb1+s*(sb2+s*(sb3+s*sb4))); } - GET_FLOAT_WORD(ix,x); - SET_FLOAT_WORD(z,ix&0xfffff000); - r = __ieee754_expf(-z*z-(float)0.5625)* - __ieee754_expf((z-x)*(z+x)+R/S); + SET_FLOAT_WORD(z,hx&0xffffe000); + r = expf(-z*z-0.5625F)*expf((z-x)*(z+x)+R/S); if(hx>0) return r/x; else return two-r/x; } else { if(hx>0) return tiny*tiny; else return two-tiny; diff --git a/release/scripts/mm-mtree.sh b/release/scripts/mm-mtree.sh index d132a34..644f309 100755 --- a/release/scripts/mm-mtree.sh +++ b/release/scripts/mm-mtree.sh @@ -81,6 +81,11 @@ if [ ! -f ${SOURCEDIR}/Makefile.inc1 -a \ fi # Setup make to use system files from SOURCEDIR +objp=${MAKEOBJDIRPREFIX} +[ -z "${objp}" ] && objp=/usr/obj +legacydir=${objp}${SOURCEDIR}/tmp/legacy +legacypath=${legacydir}/usr/sbin:${legacydir}/usr/bin:${legacydir}/bin +MM_MAKE_ARGS="${MM_MAKE_ARGS} PATH=${legacypath}:${PATH}" MM_MAKE="make ${ARCHSTRING} ${MM_MAKE_ARGS} -m ${SOURCEDIR}/share/mk" delete_temproot () { diff --git a/sbin/camcontrol/camcontrol.c b/sbin/camcontrol/camcontrol.c index 35826c5..76b3939 100644 --- a/sbin/camcontrol/camcontrol.c +++ b/sbin/camcontrol/camcontrol.c @@ -4488,13 +4488,13 @@ cts_print(struct cam_device *device, struct ccb_trans_settings *cts) &cts->xport_specific.fc; if (fc->valid & CTS_FC_VALID_WWNN) - fprintf(stdout, "%sWWNN: 0x%llx", pathstr, + fprintf(stdout, "%sWWNN: 0x%llx\n", pathstr, (long long) fc->wwnn); if (fc->valid & CTS_FC_VALID_WWPN) - fprintf(stdout, "%sWWPN: 0x%llx", pathstr, + fprintf(stdout, "%sWWPN: 0x%llx\n", pathstr, (long long) fc->wwpn); if (fc->valid & CTS_FC_VALID_PORT) - fprintf(stdout, "%sPortID: 0x%x", pathstr, fc->port); + fprintf(stdout, "%sPortID: 0x%x\n", pathstr, fc->port); if (fc->valid & CTS_FC_VALID_SPEED) fprintf(stdout, "%stransfer speed: %d.%03dMB/s\n", pathstr, fc->bitrate / 1000, fc->bitrate % 1000); diff --git a/sbin/etherswitchcfg/etherswitchcfg.8 b/sbin/etherswitchcfg/etherswitchcfg.8 index a4ffb0b..a8b8d1a 100644 --- a/sbin/etherswitchcfg/etherswitchcfg.8 +++ b/sbin/etherswitchcfg/etherswitchcfg.8 @@ -69,7 +69,7 @@ is usually the port number, and is the register number. Both can be provided as decimal, octal or hexadecimal numbers in any of the formats understood by -.Xr strtol 4 . +.Xr strtol 3 . To set the register value, use the form instance.register=value. .Ss port The port command selects one of the ports of the switch. diff --git a/share/man/man4/Makefile b/share/man/man4/Makefile index 3a7da85..e51ad39 100644 --- a/share/man/man4/Makefile +++ b/share/man/man4/Makefile @@ -367,6 +367,7 @@ MAN= aac.4 \ ppbus.4 \ ppc.4 \ ppi.4 \ + procdesc.4 \ psm.4 \ pst.4 \ pt.4 \ diff --git a/share/man/man4/capsicum.4 b/share/man/man4/capsicum.4 index 39619f9..8f38dc4 100644 --- a/share/man/man4/capsicum.4 +++ b/share/man/man4/capsicum.4 @@ -1,5 +1,5 @@ .\" -.\" Copyright (c) 2011 Robert N. M. Watson +.\" Copyright (c) 2011, 2013 Robert N. M. Watson .\" Copyright (c) 2011 Jonathan Anderson .\" All rights reserved. .\" @@ -26,7 +26,7 @@ .\" .\" $FreeBSD$ .\" -.Dd September 20, 2011 +.Dd August 21, 2013 .Dt CAPSICUM 4 .Os .Sh NAME @@ -78,10 +78,13 @@ objects using capabilities rather than global namespaces: .Bl -tag -width indent .It process descriptors File descriptors representing processes, allowing parent processes to manage -child processes without requiring access to the PID namespace. +child processes without requiring access to the PID namespace; described in +greater detail in +.Xr procdesc 4 . .It anonymous shared memory An extension to the POSIX shared memory API to support anonymous swap objects -associated with file descriptors. +associated with file descriptors; described in greater detail in +.Xr shm_open 2 . .El .Sh SEE ALSO .Xr cap_enter 2 , @@ -96,7 +99,8 @@ associated with file descriptors. .Xr pdwait4 2 , .Xr read 2 , .Xr shm_open 2 , -.Xr write 2 +.Xr write 2 , +.Xr procdesc 4 , .Sh HISTORY .Nm first appeared in diff --git a/share/man/man4/cd.4 b/share/man/man4/cd.4 index 5c67b0c..f3a6fc2 100644 --- a/share/man/man4/cd.4 +++ b/share/man/man4/cd.4 @@ -113,69 +113,6 @@ read from the scsi inquiry commands, and should be the same as the information printed at boot. This structure is defined in the header file .In sys/disklabel.h . -.It Dv CDIOCCAPABILITY -.Pq Li "struct ioc_capability" -Retrieve information from the drive on what features it supports. -The information is returned in the following structure: -.Bd -literal -offset indent -struct ioc_capability { - u_long play_function; -#define CDDOPLAYTRK 0x00000001 - /* Can play tracks/index */ -#define CDDOPLAYMSF 0x00000002 - /* Can play msf to msf */ -#define CDDOPLAYBLOCKS 0x00000004 - /* Can play range of blocks */ -#define CDDOPAUSE 0x00000100 - /* Output can be paused */ -#define CDDORESUME 0x00000200 - /* Output can be resumed */ -#define CDDORESET 0x00000400 - /* Drive can be completely reset */ -#define CDDOSTART 0x00000800 - /* Audio can be started */ -#define CDDOSTOP 0x00001000 - /* Audio can be stopped */ -#define CDDOPITCH 0x00002000 - /* Audio pitch can be changed */ - - u_long routing_function; -#define CDREADVOLUME 0x00000001 - /* Volume settings can be read */ -#define CDSETVOLUME 0x00000002 - /* Volume settings can be set */ -#define CDSETMONO 0x00000100 - /* Output can be set to mono */ -#define CDSETSTEREO 0x00000200 - /* Output can be set to stereo (def) */ -#define CDSETLEFT 0x00000400 - /* Output can be set to left only */ -#define CDSETRIGHT 0x00000800 - /* Output can be set to right only */ -#define CDSETMUTE 0x00001000 - /* Output can be muted */ -#define CDSETPATCH 0x00008000 - /* Direct routing control allowed */ - - u_long special_function; -#define CDDOEJECT 0x00000001 - /* The tray can be opened */ -#define CDDOCLOSE 0x00000002 - /* The tray can be closed */ -#define CDDOLOCK 0x00000004 - /* The tray can be locked */ -#define CDREADHEADER 0x00000100 - /* Can read Table of Contents */ -#define CDREADENTRIES 0x00000200 - /* Can read TOC Entries */ -#define CDREADSUBQ 0x00000200 - /* Can read Subchannel info */ -#define CDREADRW 0x00000400 - /* Can read subcodes R-W */ -#define CDHASDEBUG 0x00004000 - /* The tray has dynamic debugging */ -}; -.Ed .It Dv CDIOCPLAYTRACKS .Pq Li "struct ioc_play_track" Start audio playback given a track address and length. @@ -320,24 +257,6 @@ Eject the .It Dv CDIOCCLOSE Tell the drive to close its door and load the media. Not all drives support this feature. -.It Dv CDIOCPITCH -.Pq Li "struct ioc_pitch" -For drives that support it, this command instructs the drive to play -the audio at a faster or slower rate than normal. -Values of -.Li speed -between -32767 and -1 result in slower playback; a zero value -indicates normal speed; and values from 1 to 32767 give faster -playback. -Drives with less than 16 bits of resolution will silently -ignore less-significant bits. -The structure is defined thusly: -.Bd -literal -offset indent -struct ioc_pitch -{ - short speed; -}; -.Ed .El .Sh NOTES When a diff --git a/share/man/man4/procdesc.4 b/share/man/man4/procdesc.4 new file mode 100644 index 0000000..f7477da --- /dev/null +++ b/share/man/man4/procdesc.4 @@ -0,0 +1,93 @@ +.\" +.\" Copyright (c) 2013 Robert N. M. Watson +.\" All rights reserved. +.\" +.\" This software was developed by SRI International and the University of +.\" Cambridge Computer Laboratory under DARPA/AFRL contract (FA8750-10-C-0237) +.\" ("CTSRD"), as part of the DARPA CRASH research programme. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" $FreeBSD$ +.\" +.Dd August 21, 2013 +.Dt PROCDESC 4 +.Os +.Sh NAME +.Nm procdesc +.Nd process descriptor facility +.Sh SYNOPSIS +.Cd "options PROCDESC" +.Sh DESCRIPTION +.Nm +is a file-descriptor-oriented interface to process signalling and control, +which supplements historic +.Ux +.Xr fork 2 , +.Xr kill 2 , +and +.Xr wait4 2 +primitives with +new system calls such as +.Xr pdfork 2 , +.Xr pdkill 2 , +and +.Xr pdwait4 2 . +.Nm +is designed for use with +.Xr capsicum 4 , +replacing process identifiers with capability-oriented references. +However, it can also be used independently of +.Xr capsicum 4 , +displacing PIDs, which may otherwise suffer from race conditions. +Given a process descriptor, it is possible to query its conventional PID using +.Xr pdgetpid 2 . +.Sh SEE ALSO +.Xr fork 2 , +.Xr kill 2 , +.Xr wait4 2 , +.Xr pdfork 2 , +.Xr pdgetpid 2 , +.Xr pdkill 2 , +.Xr pdwait4 , +.Xr capsicum 4 +.Sh HISTORY +.Nm +first appeared in +.Fx 9.0 , +and was developed at the University of Cambridge. +.Sh AUTHORS +.Nm +was developed by +.An -nosplit +.An "Robert Watson" Aq rwatson@FreeBSD.org +and +.An "Jonathan Anderson" Aq jonathan@FreeBSD.org +at the University of Cambridge, and +.An "Ben Laurie" Aq benl@FreeBSD.org +and +.An "Kris Kennaway" Aq kris@FreeBSD.org +at Google, Inc. +.Sh BUGS +.Nm +is considered experimental in +.Fx . diff --git a/share/man/man4/sysmouse.4 b/share/man/man4/sysmouse.4 index e3972fe..0fee7f3 100644 --- a/share/man/man4/sysmouse.4 +++ b/share/man/man4/sysmouse.4 @@ -1,5 +1,4 @@ -.\" Copyright (c) 1997 -.\" John-Mark Gurney. All rights reserved. +.\" Copyright 1997 John-Mark Gurney. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions diff --git a/share/man/man4/vmx.4 b/share/man/man4/vmx.4 index 0e7b7f8..b33f1ed 100644 --- a/share/man/man4/vmx.4 +++ b/share/man/man4/vmx.4 @@ -81,6 +81,25 @@ VMware Fusion 2.0 and newer .Pp For more information on configuring this device, see .Xr ifconfig 8 . +.Sh LOADER TUNABLES +Tunables can be set at the +.Xr loader 8 +prompt before booting the kernel or stored in +.Xr loader.conf 5 . +.Bl -tag -width indent +.It Va hw.vmx.txndesc +.It Va hw.vmx. Ns Ar X Ns Va .txndesc +.Pp +Number of transmit descriptors allocated by the driver. +The default value is 512. +The value must be a multiple of 32, and the maximum is 4096. +.It Va hw.vmx.rxndesc +.It Va hw.vmx. Ns Ar X Ns Va .rxndesc +.Pp +Number of receive descriptors per ring allocated by the driver. +The default value is 256. +The value must be a multiple of 32, and the maximum is 2048. +There are two rings so the actual usage is doubled. .Sh EXAMPLES The following entry must be added to the VMware configuration file to provide the @@ -104,7 +123,7 @@ The .Nm driver was ported from .Ox -by +and significantly rewritten by .An Bryan Venteicher Aq bryanv@freebsd.org . The .Ox diff --git a/share/man/man5/periodic.conf.5 b/share/man/man5/periodic.conf.5 index 4543532..b7f42e8 100644 --- a/share/man/man5/periodic.conf.5 +++ b/share/man/man5/periodic.conf.5 @@ -482,26 +482,42 @@ This variable behaves in the same way as the .Va *_output variables above, namely it can be set either to one or more email addresses or to an absolute file name. -.It Va daily_status_security_diff_flags +.It Va security_status_diff_flags .Pq Vt str Set to the arguments to pass to the .Xr diff 1 utility when generating differences. The default is .Fl b u . -.It Va daily_status_security_chksetuid_enable +.It Va security_status_chksetuid_enable .Pq Vt bool Set to .Dq Li YES to compare the modes and modification times of setuid executables with the previous day's values. -.It Va daily_status_security_chkportsum_enable +.It Va security_status_chksetuid_period +.Pq Vt str +Set to either +.Dq Li daily , +.Dq Li weekly , +.Dq Li monthly +or +.Dq Li NO . +.It Va security_status_chkportsum_enable .Pq Vt bool Set to .Dq Li YES to verify checksums of all installed packages against the known checksums in .Pa /var/db/pkg . -.It Va daily_status_security_neggrpperm_enable +.It Va security_status_chkportsum_period +.Pq Vt str +Set to either +.Dq Li daily , +.Dq Li weekly , +.Dq Li monthly +or +.Dq Li NO . +.It Va security_status_neggrpperm_enable .Pq Vt bool Set to .Dq Li YES @@ -509,35 +525,67 @@ to check for files where the group of a file has less permissions than the world at large. When users are in more than 14 supplemental groups these negative permissions may not be enforced via NFS shares. -.It Va daily_status_security_chkmounts_enable +.It Va security_status_neggrpperm_period +.Pq Vt str +Set to either +.Dq Li daily , +.Dq Li weekly , +.Dq Li monthly +or +.Dq Li NO . +.It Va security_status_chkmounts_enable .Pq Vt bool Set to .Dq Li YES to check for changes mounted file systems to the previous day's values. -.It Va daily_status_security_noamd +.It Va security_status_chkmounts_period +.Pq Vt str +Set to either +.Dq Li daily , +.Dq Li weekly , +.Dq Li monthly +or +.Dq Li NO . +.It Va security_status_noamd .Pq Vt bool Set to .Dq Li YES if you want to ignore .Xr amd 8 mounts when comparing against yesterday's file system mounts in the -.Va daily_status_security_chkmounts_enable +.Va security_status_chkmounts_enable check. -.It Va daily_status_security_chkuid0_enable +.It Va security_status_chkuid0_enable .Pq Vt bool Set to .Dq Li YES to check .Pa /etc/master.passwd for accounts with UID 0. -.It Va daily_status_security_passwdless_enable +.It Va security_status_chkuid0_period +.Pq Vt str +Set to either +.Dq Li daily , +.Dq Li weekly , +.Dq Li monthly +or +.Dq Li NO . +.It Va security_status_passwdless_enable .Pq Vt bool Set to .Dq Li YES to check .Pa /etc/master.passwd for accounts with empty passwords. -.It Va daily_status_security_logincheck_enable +.It Va security_status_passwdless_period +.Pq Vt str +Set to either +.Dq Li daily , +.Dq Li weekly , +.Dq Li monthly +or +.Dq Li NO . +.It Va security_status_logincheck_enable .Pq Vt bool Set to .Dq Li YES @@ -546,49 +594,105 @@ to check ownership, see .Xr login.conf 5 for more information. -.It Va daily_status_security_ipfwdenied_enable +.It Va security_status_logincheck_period +.Pq Vt str +Set to either +.Dq Li daily , +.Dq Li weekly , +.Dq Li monthly +or +.Dq Li NO . +.It Va security_status_ipfwdenied_enable .Pq Vt bool Set to .Dq Li YES to show log entries for packets denied by .Xr ipfw 8 since yesterday's check. -.It Va daily_status_security_ipfdenied_enable +.It Va security_status_ipfwdenied_period +.Pq Vt str +Set to either +.Dq Li daily , +.Dq Li weekly , +.Dq Li monthly +or +.Dq Li NO . +.It Va security_status_ipfdenied_enable .Pq Vt bool Set to .Dq Li YES to show log entries for packets denied by .Xr ipf 8 since yesterday's check. -.It Va daily_status_security_pfdenied_enable +.It Va security_status_ipfdenied_period +.Pq Vt str +Set to either +.Dq Li daily , +.Dq Li weekly , +.Dq Li monthly +or +.Dq Li NO . +.It Va security_status_pfdenied_enable .Pq Vt bool Set to .Dq Li YES to show log entries for packets denied by .Xr pf 4 since yesterday's check. -.It Va daily_status_security_ipfwlimit_enable +.It Va security_status_pfdenied_period +.Pq Vt str +Set to either +.Dq Li daily , +.Dq Li weekly , +.Dq Li monthly +or +.Dq Li NO . +.It Va security_status_ipfwlimit_enable .Pq Vt bool Set to .Dq Li YES to display .Xr ipfw 8 rules that have reached their verbosity limit. -.It Va daily_status_security_kernelmsg_enable +.It Va security_status_ipfwlimit_period +.Pq Vt str +Set to either +.Dq Li daily , +.Dq Li weekly , +.Dq Li monthly +or +.Dq Li NO . +.It Va security_status_kernelmsg_enable .Pq Vt bool Set to .Dq Li YES to show new .Xr dmesg 8 entries since yesterday's check. -.It Va daily_status_security_loginfail_enable +.It Va security_status_kernelmsg_period +.Pq Vt str +Set to either +.Dq Li daily , +.Dq Li weekly , +.Dq Li monthly +or +.Dq Li NO . +.It Va security_status_loginfail_enable .Pq Vt bool Set to .Dq Li YES to display failed logins from .Pa /var/log/messages in the previous day. -.It Va daily_status_security_tcpwrap_enable +.It Va security_status_loginfail_period +.Pq Vt str +Set to either +.Dq Li daily , +.Dq Li weekly , +.Dq Li monthly +or +.Dq Li NO . +.It Va security_status_tcpwrap_enable .Pq Vt bool Set to .Dq Li YES @@ -597,6 +701,14 @@ to display connections denied by tcpwrappers (see from .Pa /var/log/messages during the previous day. +.It Va security_status_tcpwrap_period +.Pq Vt str +Set to either +.Dq Li daily , +.Dq Li weekly , +.Dq Li monthly +or +.Dq Li NO . .It Va daily_status_mail_rejects_enable .Pq Vt bool Set to @@ -709,6 +821,18 @@ An orphaned file is one with an invalid owner or group. A list of directories under which orphaned files are searched for. This would usually be set to .Pa / . +.It Va weekly_status_security_enable +.Pq Vt bool +Weekly counterpart of +.Va daily_status_securiy_enable . +.It Va weekly_status_security_inline +.Pq Vt bool +Weekly counterpart of +.Va daily_status_securiy_inline . +.It Va weekly_status_security_output +.Pq Vt str +Weekly counterpart of +.Va daily_status_securiy_output . .It Va weekly_status_pkg_enable .Pq Vt bool Set to @@ -776,6 +900,18 @@ Set to if you want to do login accounting using the .Xr ac 8 command. +.It Va monthly_status_security_enable +.Pq Vt bool +Monthly counterpart of +.Va daily_status_securiy_enable . +.It Va monthly_status_security_inline +.Pq Vt bool +Monthly counterpart of +.Va daily_status_securiy_inline . +.It Va monthly_status_security_output +.Pq Vt str +Monthly counterpart of +.Va daily_status_securiy_output . .It Va monthly_local .Pq Vt str Set to a list of extra scripts that should be run after all other diff --git a/share/man/man5/src.conf.5 b/share/man/man5/src.conf.5 index 56ab227..4e89864 100644 --- a/share/man/man5/src.conf.5 +++ b/share/man/man5/src.conf.5 @@ -1,7 +1,7 @@ .\" DO NOT EDIT-- this file is automatically generated. .\" from FreeBSD: head/tools/build/options/makeman 253304 2013-07-12 23:08:44Z bapt .\" $FreeBSD$ -.Dd August 26, 2013 +.Dd August 29, 2013 .Dt SRC.CONF 5 .Os .Sh NAME @@ -235,9 +235,6 @@ This option will be removed in due time. .It Va WITHOUT_BOOT .\" from FreeBSD: head/tools/build/options/WITHOUT_BOOT 156932 2006-03-21 07:50:50Z ru Set to not build the boot blocks and loader. -.It Va WITH_BSDCONFIG -.\" from FreeBSD: head/tools/build/options/WITH_BSDCONFIG 238448 2012-07-14 10:17:47Z zeising -Set to install bsdconfig(8), a BSD-licensed configuration/management utility. .It Va WITHOUT_BSD_CPIO .\" from FreeBSD: head/tools/build/options/WITHOUT_BSD_CPIO 179813 2008-06-16 05:48:15Z dougb Set to not build the BSD licensed version of cpio based on @@ -503,9 +500,6 @@ When set, it also enforces the following options: .It .Va WITHOUT_GNU_SUPPORT .El -.It Va WITH_GNU_PATCH -.\" from FreeBSD: head/tools/build/options/WITH_GNU_PATCH 253689 2013-07-26 21:25:18Z pfg -Install GNU-licensed patch as 'patch' instead of BSD patch. .It Va WITHOUT_GNU_SUPPORT .\" from FreeBSD: head/tools/build/options/WITHOUT_GNU_SUPPORT 156932 2006-03-21 07:50:50Z ru Set to build some programs without optional GNU support. diff --git a/share/mk/bsd.own.mk b/share/mk/bsd.own.mk index c553d61..da758d5 100644 --- a/share/mk/bsd.own.mk +++ b/share/mk/bsd.own.mk @@ -369,12 +369,10 @@ __DEFAULT_NO_OPTIONS = \ BIND_LIBS \ BIND_SIGCHASE \ BIND_XML \ - BSDCONFIG \ BSD_GREP \ CLANG_EXTRAS \ CTF \ DEBUG_FILES \ - GNU_PATCH \ GPL_DTC \ HESIOD \ LIBICONV_COMPAT \ diff --git a/share/mk/sys.mk b/share/mk/sys.mk index cdab3d6..eb9f2ca 100644 --- a/share/mk/sys.mk +++ b/share/mk/sys.mk @@ -332,12 +332,6 @@ SHELL= ${__MAKE_SHELL} .SHELL: path=${__MAKE_SHELL} .endif -# Tell bmake to expand -V VAR by default -.MAKE.EXPAND_VARIABLES= yes - -# Tell bmake the makefile preference -.MAKE.MAKEFILE_PREFERENCE= BSDmakefile makefile Makefile - .if !defined(.PARSEDIR) # We are not bmake, which is more aggressive about searching .PATH # It is sometime necessary to curb its enthusiasm with .NOPATH @@ -351,4 +345,24 @@ SHELL= ${__MAKE_SHELL} .endif +.if defined(.PARSEDIR) +# Tell bmake to expand -V VAR by default +.MAKE.EXPAND_VARIABLES= yes + +# Tell bmake the makefile preference +.MAKE.MAKEFILE_PREFERENCE= BSDmakefile makefile Makefile + +# By default bmake does *not* use set -e +# when running target scripts, this is a problem for many makefiles here. +# So define a shell that will do what FreeBSD expects. +.ifndef WITHOUT_SHELL_ERRCTL +.SHELL: name=sh \ + quiet="set -" echo="set -v" filter="set -" \ + hasErrCtl=yes check="set -e" ignore="set +e" \ + echoFlag=v errFlag=e \ + path=${__MAKE_SHELL:U/bin/sh} +.endif + +.endif + .include <bsd.cpu.mk> diff --git a/sys/amd64/amd64/apic_vector.S b/sys/amd64/amd64/apic_vector.S index 6465247..e868cf5 100644 --- a/sys/amd64/amd64/apic_vector.S +++ b/sys/amd64/amd64/apic_vector.S @@ -43,6 +43,12 @@ #include "assym.s" +#ifdef SMP +#define LK lock ; +#else +#define LK +#endif + /* * I/O Interrupt Entry Point. Rather than having one entry point for * each interrupt source, we use one entry point for each 32-bit word @@ -128,11 +134,59 @@ IDTVEC(errorint) MEXITCOUNT jmp doreti +#ifdef XENHVM +/* + * Xen event channel upcall interrupt handler. + * Only used when the hypervisor supports direct vector callbacks. + */ + .text + SUPERALIGN_TEXT +IDTVEC(xen_intr_upcall) + PUSH_FRAME + FAKE_MCOUNT(TF_RIP(%rsp)) + movq %rsp, %rdi + call xen_intr_handle_upcall + MEXITCOUNT + jmp doreti +#endif + #ifdef SMP /* * Global address space TLB shootdown. */ .text + +#define NAKE_INTR_CS 24 + + SUPERALIGN_TEXT +global_invltlb: + movl %cr4,%eax + andl $~0x80,%eax + movl %eax,%cr4 + orl $0x80,%eax + movl %eax,%cr4 +invltlb_ret_clear_pm_save: + movq smp_tlb_pmap,%rdx + testq %rdx,%rdx + jz invltlb_ret + testb $SEL_RPL_MASK,NAKE_INTR_CS(%rsp) + jz 1f + swapgs +1: + movl PCPU(CPUID),%eax + jz 2f + swapgs +2: + LK btcl %eax,PM_SAVE(%rdx) + SUPERALIGN_TEXT +invltlb_ret: + movq lapic, %rax + movl $0, LA_EOI(%rax) /* End Of Interrupt to APIC */ + LK incl smp_tlb_wait + popq %rdx + popq %rax + jmp doreti_iret + SUPERALIGN_TEXT IDTVEC(invltlb) #if defined(COUNT_XINVLTLB_HITS) || defined(COUNT_IPIS) @@ -149,18 +203,44 @@ IDTVEC(invltlb) #endif pushq %rax + pushq %rdx - movq %cr3, %rax /* invalidate the TLB */ - movq %rax, %cr3 - - movq lapic, %rax - movl $0, LA_EOI(%rax) /* End Of Interrupt to APIC */ - - lock - incl smp_tlb_wait - - popq %rax - jmp doreti_iret + movq %cr3,%rax + cmpl $0,pmap_pcid_enabled + je 2f + + movq $smp_tlb_invpcid,%rdx + cmpl $0,(%rdx) + je global_invltlb + cmpl $-1,(%rdx) + je global_invltlb + + /* + * Non-zero smp_tlb_invpcid, only invalidate TLB for entries with + * current PCID. + */ + cmpl $0,invpcid_works + je 1f + /* Use invpcid if available. */ + movl $1,%eax /* INVPCID_CTX */ + /* invpcid (%rdx),%rax */ + .byte 0x66,0x0f,0x38,0x82,0x02 + jmp invltlb_ret_clear_pm_save +1: + /* Otherwise reload %cr3 twice. */ + movq pcid_cr3,%rdx + cmpq %rax,%rdx + je 2f + movq %rdx,%cr3 /* Invalidate, bit 63 is zero. */ + btsq $63,%rax + + /* + * Invalidate the TLB if PCID is not enabled. + * Restore the old address space. + */ +2: + movq %rax,%cr3 + jmp invltlb_ret_clear_pm_save /* * Single page TLB shootdown @@ -182,18 +262,54 @@ IDTVEC(invlpg) #endif pushq %rax - - movq smp_tlb_addr1, %rax - invlpg (%rax) /* invalidate single page */ - - movq lapic, %rax - movl $0, LA_EOI(%rax) /* End Of Interrupt to APIC */ - - lock - incl smp_tlb_wait - - popq %rax - jmp doreti_iret + pushq %rdx + movq $smp_tlb_invpcid,%rdx + cmpl $0,pmap_pcid_enabled + je 3f + cmpl $0,invpcid_works + jne 2f + + /* kernel pmap - use invlpg to invalidate global mapping */ + cmpl $0,(%rdx) + je 3f + cmpl $-1,(%rdx) + je global_invltlb + + /* + * PCID supported, but INVPCID is not. + * Temporarily switch to the target address space and do INVLPG. + */ + pushq %rcx + movq %cr3,%rcx + movq pcid_cr3,%rax + cmp %rcx,%rax + je 1f + btsq $63,%rax + movq %rax,%cr3 +1: movq 8(%rdx),%rax + invlpg (%rax) + btsq $63,%rcx + movq %rcx,%cr3 + popq %rcx + jmp invltlb_ret + + /* + * Invalidate the TLB entry using INVPCID_ADDR. + */ +2: + xorl %eax,%eax +/* invpcid (%rdx),%rax */ + .byte 0x66,0x0f,0x38,0x82,0x02 + jmp invltlb_ret + + /* + * PCID is not supported or kernel pmap. + * Invalidate single page using INVLPG. + */ +3: + movq 8(%rdx),%rax + invlpg (%rax) + jmp invltlb_ret /* * Page range TLB shootdown. @@ -216,23 +332,76 @@ IDTVEC(invlrng) pushq %rax pushq %rdx - - movq smp_tlb_addr1, %rdx - movq smp_tlb_addr2, %rax + movq $smp_tlb_invpcid,%rdx + cmpl $0,pmap_pcid_enabled + jne invlrng_single_page + cmpl $0,invpcid_works + jne invlrng_invpcid + + /* kernel pmap - use invlpg to invalidate global mapping */ + cmpl $0,(%rdx) + je invlrng_single_page + cmpl $-1,(%rdx) + je global_invltlb + + pushq %rcx + movq %cr3,%rcx + movq pcid_cr3,%rax + cmpq %rcx,%rax + je 1f + btsq $63,%rax + movq %rax,%cr3 +1: + movq 8(%rdx),%rdx + movq smp_tlb_addr2,%rax +2: + invlpg (%rdx) + addq $PAGE_SIZE,%rdx + cmpq %rax,%rdx + jb 2b + btsq $63,%rcx + movq %rcx,%cr3 + popq %rcx + jmp invltlb_ret + +invlrng_invpcid: + testb $SEL_RPL_MASK,NAKE_INTR_CS(%rsp) + jz 1f + swapgs +1: + pushq %rcx + movq (%rdx),%rcx + movq %rcx,PCPU(INVPCID_DESCR) + movq 8(%rdx),%rax + movq %rax,PCPU(INVPCID_DESCR)+8 + movq smp_tlb_addr2,%rcx + xorl %eax,%eax + movq $PC_INVPCID_DESCR,%rdx + gs + subq 8(%rdx),%rcx + shrq $PAGE_SHIFT,%rcx +2: + gs +// invpcid (%rdx),%rax + .byte 0x66,0x0f,0x38,0x82,0x02 + gs + addq $PAGE_SIZE,8(%rdx) + dec %rcx + jne 2b + popq %rcx + testb $SEL_RPL_MASK,NAKE_INTR_CS(%rsp) + jz invltlb_ret + swapgs + jmp invltlb_ret + +invlrng_single_page: + movq 8(%rdx),%rdx + movq smp_tlb_addr2,%rax 1: invlpg (%rdx) /* invalidate single page */ - addq $PAGE_SIZE, %rdx - cmpq %rax, %rdx + addq $PAGE_SIZE,%rdx + cmpq %rax,%rdx jb 1b - - movq lapic, %rax - movl $0, LA_EOI(%rax) /* End Of Interrupt to APIC */ - - lock - incl smp_tlb_wait - - popq %rdx - popq %rax - jmp doreti_iret + jmp invltlb_ret /* * Invalidate cache. @@ -249,17 +418,9 @@ IDTVEC(invlcache) #endif pushq %rax - + pushq %rdx wbinvd - - movq lapic, %rax - movl $0, LA_EOI(%rax) /* End Of Interrupt to APIC */ - - lock - incl smp_tlb_wait - - popq %rax - jmp doreti_iret + jmp invltlb_ret /* * Handler for IPIs sent via the per-cpu IPI bitmap. diff --git a/sys/amd64/amd64/cpu_switch.S b/sys/amd64/amd64/cpu_switch.S index ed1ccb5..ac30990 100644 --- a/sys/amd64/amd64/cpu_switch.S +++ b/sys/amd64/amd64/cpu_switch.S @@ -77,8 +77,7 @@ ENTRY(cpu_throw) LK btrl %eax,PM_ACTIVE(%rdx) /* clear old */ 1: movq TD_PCB(%rsi),%r8 /* newtd->td_pcb */ - movq PCB_CR3(%r8),%rdx - movq %rdx,%cr3 /* new address space */ + movq PCB_CR3(%r8),%rcx /* new address space */ jmp swact END(cpu_throw) @@ -145,20 +144,41 @@ ctx_switch_xsave: SETLK %rdx, TD_LOCK(%rdi) /* Release the old thread */ jmp sw1 swinact: - movq %rcx,%cr3 /* new address space */ - movl PCPU(CPUID), %eax + movl PCPU(CPUID),%eax /* Release bit from old pmap->pm_active */ - movq PCPU(CURPMAP),%rcx - LK btrl %eax,PM_ACTIVE(%rcx) /* clear old */ - SETLK %rdx, TD_LOCK(%rdi) /* Release the old thread */ + movq PCPU(CURPMAP),%r12 + LK btrl %eax,PM_ACTIVE(%r12) /* clear old */ + SETLK %rdx,TD_LOCK(%rdi) /* Release the old thread */ swact: /* Set bit in new pmap->pm_active */ movq TD_PROC(%rsi),%rdx /* newproc */ movq P_VMSPACE(%rdx), %rdx addq $VM_PMAP,%rdx + cmpl $-1,PM_PCID(%rdx) + je 1f + LK btsl %eax,PM_SAVE(%rdx) + jnc 1f + btsq $63,%rcx /* CR3_PCID_SAVE */ + incq PCPU(PM_SAVE_CNT) +1: + movq %rcx,%cr3 /* new address space */ LK btsl %eax,PM_ACTIVE(%rdx) /* set new */ movq %rdx,PCPU(CURPMAP) + /* + * We might lose the race and other CPU might have changed + * the pmap after we set our bit in pmap->pm_save. Recheck. + * Reload %cr3 with CR3_PCID_SAVE bit cleared if pmap was + * modified, causing TLB flush for this pcid. + */ + btrq $63,%rcx + jnc 1f + LK btsl %eax,PM_SAVE(%rdx) + jc 1f + decq PCPU(PM_SAVE_CNT) + movq %rcx,%cr3 +1: + sw1: #if defined(SCHED_ULE) && defined(SMP) /* Wait for the new thread to become unblocked */ diff --git a/sys/amd64/amd64/genassym.c b/sys/amd64/amd64/genassym.c index 3043bb5..62017e7 100644 --- a/sys/amd64/amd64/genassym.c +++ b/sys/amd64/amd64/genassym.c @@ -76,6 +76,8 @@ __FBSDID("$FreeBSD$"); ASSYM(P_VMSPACE, offsetof(struct proc, p_vmspace)); ASSYM(VM_PMAP, offsetof(struct vmspace, vm_pmap)); ASSYM(PM_ACTIVE, offsetof(struct pmap, pm_active)); +ASSYM(PM_SAVE, offsetof(struct pmap, pm_save)); +ASSYM(PM_PCID, offsetof(struct pmap, pm_pcid)); ASSYM(P_MD, offsetof(struct proc, p_md)); ASSYM(MD_LDT, offsetof(struct mdproc, md_ldt)); @@ -225,6 +227,8 @@ ASSYM(PC_GS32P, offsetof(struct pcpu, pc_gs32p)); ASSYM(PC_LDT, offsetof(struct pcpu, pc_ldt)); ASSYM(PC_COMMONTSSP, offsetof(struct pcpu, pc_commontssp)); ASSYM(PC_TSS, offsetof(struct pcpu, pc_tss)); +ASSYM(PC_PM_SAVE_CNT, offsetof(struct pcpu, pc_pm_save_cnt)); +ASSYM(PC_INVPCID_DESCR, offsetof(struct pcpu, pc_invpcid_descr)); ASSYM(LA_VER, offsetof(struct LAPIC, version)); ASSYM(LA_TPR, offsetof(struct LAPIC, tpr)); diff --git a/sys/amd64/amd64/machdep.c b/sys/amd64/amd64/machdep.c index 7a39ef8..f3969d3 100644 --- a/sys/amd64/amd64/machdep.c +++ b/sys/amd64/amd64/machdep.c @@ -1204,6 +1204,9 @@ extern inthand_t #ifdef KDTRACE_HOOKS IDTVEC(dtrace_ret), #endif +#ifdef XENHVM + IDTVEC(xen_intr_upcall), +#endif IDTVEC(fast_syscall), IDTVEC(fast_syscall32); #ifdef DDB @@ -1787,6 +1790,9 @@ hammer_time(u_int64_t modulep, u_int64_t physfree) #ifdef KDTRACE_HOOKS setidt(IDT_DTRACE_RET, &IDTVEC(dtrace_ret), SDT_SYSIGT, SEL_UPL, 0); #endif +#ifdef XENHVM + setidt(IDT_EVTCHN, &IDTVEC(xen_intr_upcall), SDT_SYSIGT, SEL_UPL, 0); +#endif r_idt.rd_limit = sizeof(idt0) - 1; r_idt.rd_base = (long) idt; @@ -1903,21 +1909,13 @@ hammer_time(u_int64_t modulep, u_int64_t physfree) /* setup proc 0's pcb */ thread0.td_pcb->pcb_flags = 0; - thread0.td_pcb->pcb_cr3 = KPML4phys; + thread0.td_pcb->pcb_cr3 = KPML4phys; /* PCID 0 is reserved for kernel */ thread0.td_frame = &proc0_tf; env = getenv("kernelname"); if (env != NULL) strlcpy(kernelname, env, sizeof(kernelname)); -#ifdef XENHVM - if (inw(0x10) == 0x49d2) { - if (bootverbose) - printf("Xen detected: disabling emulated block and network devices\n"); - outw(0x10, 3); - } -#endif - cpu_probe_amdc1e(); #ifdef FDT diff --git a/sys/amd64/amd64/mp_machdep.c b/sys/amd64/amd64/mp_machdep.c index 79aeb9c..530aa61 100644 --- a/sys/amd64/amd64/mp_machdep.c +++ b/sys/amd64/amd64/mp_machdep.c @@ -70,6 +70,10 @@ __FBSDID("$FreeBSD$"); #include <machine/specialreg.h> #include <machine/tss.h> +#ifdef XENHVM +#include <xen/hvm.h> +#endif + #define WARMBOOT_TARGET 0 #define WARMBOOT_OFF (KERNBASE + 0x0467) #define WARMBOOT_SEG (KERNBASE + 0x0469) @@ -103,9 +107,11 @@ struct pcb stoppcbs[MAXCPU]; struct pcb **susppcbs; /* Variables needed for SMP tlb shootdown. */ -vm_offset_t smp_tlb_addr1; vm_offset_t smp_tlb_addr2; +struct invpcid_descr smp_tlb_invpcid; volatile int smp_tlb_wait; +uint64_t pcid_cr3; +pmap_t smp_tlb_pmap; #ifdef COUNT_IPIS /* Interrupt counts. */ @@ -599,6 +605,8 @@ cpu_mp_announce(void) } } +extern int pmap_pcid_enabled; + /* * AP CPU's call this to initialize themselves. */ @@ -711,6 +719,11 @@ init_secondary(void) /* set up FPU state on the AP */ fpuinit(); +#ifdef XENHVM + /* register vcpu_info area */ + xen_hvm_init_cpu(); +#endif + /* A quick check from sanity claus */ cpuid = PCPU_GET(cpuid); if (PCPU_GET(apic_id) != lapic_id()) { @@ -759,6 +772,8 @@ init_secondary(void) */ load_cr4(rcr4() | CR4_PGE); + if (pmap_pcid_enabled) + load_cr4(rcr4() | CR4_PCIDE); load_ds(_udatasel); load_es(_udatasel); load_fs(_ufssel); @@ -1110,7 +1125,8 @@ ipi_send_cpu(int cpu, u_int ipi) * Flush the TLB on all other CPU's */ static void -smp_tlb_shootdown(u_int vector, vm_offset_t addr1, vm_offset_t addr2) +smp_tlb_shootdown(u_int vector, pmap_t pmap, vm_offset_t addr1, + vm_offset_t addr2) { u_int ncpu; @@ -1120,8 +1136,16 @@ smp_tlb_shootdown(u_int vector, vm_offset_t addr1, vm_offset_t addr2) if (!(read_rflags() & PSL_I)) panic("%s: interrupts disabled", __func__); mtx_lock_spin(&smp_ipi_mtx); - smp_tlb_addr1 = addr1; + smp_tlb_invpcid.addr = addr1; + if (pmap == NULL) { + smp_tlb_invpcid.pcid = 0; + } else { + smp_tlb_invpcid.pcid = pmap->pm_pcid; + pcid_cr3 = DMAP_TO_PHYS((vm_offset_t)pmap->pm_pml4) | + (pmap->pm_pcid == -1 ? 0 : pmap->pm_pcid); + } smp_tlb_addr2 = addr2; + smp_tlb_pmap = pmap; atomic_store_rel_int(&smp_tlb_wait, 0); ipi_all_but_self(vector); while (smp_tlb_wait < ncpu) @@ -1130,7 +1154,8 @@ smp_tlb_shootdown(u_int vector, vm_offset_t addr1, vm_offset_t addr2) } static void -smp_targeted_tlb_shootdown(cpuset_t mask, u_int vector, vm_offset_t addr1, vm_offset_t addr2) +smp_targeted_tlb_shootdown(cpuset_t mask, u_int vector, pmap_t pmap, + vm_offset_t addr1, vm_offset_t addr2) { int cpu, ncpu, othercpus; @@ -1146,8 +1171,16 @@ smp_targeted_tlb_shootdown(cpuset_t mask, u_int vector, vm_offset_t addr1, vm_of if (!(read_rflags() & PSL_I)) panic("%s: interrupts disabled", __func__); mtx_lock_spin(&smp_ipi_mtx); - smp_tlb_addr1 = addr1; + smp_tlb_invpcid.addr = addr1; + if (pmap == NULL) { + smp_tlb_invpcid.pcid = 0; + } else { + smp_tlb_invpcid.pcid = pmap->pm_pcid; + pcid_cr3 = DMAP_TO_PHYS((vm_offset_t)pmap->pm_pml4) | + (pmap->pm_pcid == -1 ? 0 : pmap->pm_pcid); + } smp_tlb_addr2 = addr2; + smp_tlb_pmap = pmap; atomic_store_rel_int(&smp_tlb_wait, 0); if (CPU_ISFULLSET(&mask)) { ncpu = othercpus; @@ -1173,15 +1206,15 @@ smp_cache_flush(void) { if (smp_started) - smp_tlb_shootdown(IPI_INVLCACHE, 0, 0); + smp_tlb_shootdown(IPI_INVLCACHE, NULL, 0, 0); } void -smp_invltlb(void) +smp_invltlb(pmap_t pmap) { if (smp_started) { - smp_tlb_shootdown(IPI_INVLTLB, 0, 0); + smp_tlb_shootdown(IPI_INVLTLB, pmap, 0, 0); #ifdef COUNT_XINVLTLB_HITS ipi_global++; #endif @@ -1189,11 +1222,11 @@ smp_invltlb(void) } void -smp_invlpg(vm_offset_t addr) +smp_invlpg(pmap_t pmap, vm_offset_t addr) { if (smp_started) { - smp_tlb_shootdown(IPI_INVLPG, addr, 0); + smp_tlb_shootdown(IPI_INVLPG, pmap, addr, 0); #ifdef COUNT_XINVLTLB_HITS ipi_page++; #endif @@ -1201,11 +1234,11 @@ smp_invlpg(vm_offset_t addr) } void -smp_invlpg_range(vm_offset_t addr1, vm_offset_t addr2) +smp_invlpg_range(pmap_t pmap, vm_offset_t addr1, vm_offset_t addr2) { if (smp_started) { - smp_tlb_shootdown(IPI_INVLRNG, addr1, addr2); + smp_tlb_shootdown(IPI_INVLRNG, pmap, addr1, addr2); #ifdef COUNT_XINVLTLB_HITS ipi_range++; ipi_range_size += (addr2 - addr1) / PAGE_SIZE; @@ -1214,11 +1247,11 @@ smp_invlpg_range(vm_offset_t addr1, vm_offset_t addr2) } void -smp_masked_invltlb(cpuset_t mask) +smp_masked_invltlb(cpuset_t mask, pmap_t pmap) { if (smp_started) { - smp_targeted_tlb_shootdown(mask, IPI_INVLTLB, 0, 0); + smp_targeted_tlb_shootdown(mask, IPI_INVLTLB, NULL, 0, 0); #ifdef COUNT_XINVLTLB_HITS ipi_masked_global++; #endif @@ -1226,11 +1259,11 @@ smp_masked_invltlb(cpuset_t mask) } void -smp_masked_invlpg(cpuset_t mask, vm_offset_t addr) +smp_masked_invlpg(cpuset_t mask, pmap_t pmap, vm_offset_t addr) { if (smp_started) { - smp_targeted_tlb_shootdown(mask, IPI_INVLPG, addr, 0); + smp_targeted_tlb_shootdown(mask, IPI_INVLPG, pmap, addr, 0); #ifdef COUNT_XINVLTLB_HITS ipi_masked_page++; #endif @@ -1238,11 +1271,13 @@ smp_masked_invlpg(cpuset_t mask, vm_offset_t addr) } void -smp_masked_invlpg_range(cpuset_t mask, vm_offset_t addr1, vm_offset_t addr2) +smp_masked_invlpg_range(cpuset_t mask, pmap_t pmap, vm_offset_t addr1, + vm_offset_t addr2) { if (smp_started) { - smp_targeted_tlb_shootdown(mask, IPI_INVLRNG, addr1, addr2); + smp_targeted_tlb_shootdown(mask, IPI_INVLRNG, pmap, addr1, + addr2); #ifdef COUNT_XINVLTLB_HITS ipi_masked_range++; ipi_masked_range_size += (addr2 - addr1) / PAGE_SIZE; diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c index 7fb1277..bca40f0 100644 --- a/sys/amd64/amd64/pmap.c +++ b/sys/amd64/amd64/pmap.c @@ -116,11 +116,8 @@ __FBSDID("$FreeBSD$"); #include <sys/vmmeter.h> #include <sys/sched.h> #include <sys/sysctl.h> -#ifdef SMP +#include <sys/_unrhdr.h> #include <sys/smp.h> -#else -#include <sys/cpuset.h> -#endif #include <vm/vm.h> #include <vm/vm_param.h> @@ -250,6 +247,53 @@ static struct md_page *pv_table; pt_entry_t *CMAP1 = 0; caddr_t CADDR1 = 0; +static struct unrhdr pcid_unr; +static struct mtx pcid_mtx; +int pmap_pcid_enabled = 1; +SYSCTL_INT(_vm_pmap, OID_AUTO, pcid_enabled, CTLFLAG_RDTUN, &pmap_pcid_enabled, + 0, "Is TLB Context ID enabled ?"); +int invpcid_works = 0; + +/* + * Perform the guaranteed invalidation of all TLB entries. This + * includes the global entries, and entries in all PCIDs, not only the + * current context. The function works both on non-PCID CPUs and CPUs + * with the PCID turned off or on. See IA-32 SDM Vol. 3a 4.10.4.1 + * Operations that Invalidate TLBs and Paging-Structure Caches. + */ +static __inline void +invltlb_globpcid(void) +{ + uint64_t cr4; + + cr4 = rcr4(); + load_cr4(cr4 & ~CR4_PGE); + /* + * Although preemption at this point could be detrimental to + * performance, it would not lead to an error. PG_G is simply + * ignored if CR4.PGE is clear. Moreover, in case this block + * is re-entered, the load_cr4() either above or below will + * modify CR4.PGE flushing the TLB. + */ + load_cr4(cr4 | CR4_PGE); +} + +static int +pmap_pcid_save_cnt_proc(SYSCTL_HANDLER_ARGS) +{ + int i; + uint64_t res; + + res = 0; + CPU_FOREACH(i) { + res += cpuid_to_pcpu[i]->pc_pm_save_cnt; + } + return (sysctl_handle_64(oidp, &res, 0, req)); +} +SYSCTL_PROC(_vm_pmap, OID_AUTO, pcid_save_cnt, CTLTYPE_U64 | CTLFLAG_RW | + CTLFLAG_MPSAFE, NULL, 0, pmap_pcid_save_cnt_proc, "QU", + "Count of saved TLB context on switch"); + /* * Crashdump maps. */ @@ -685,6 +729,7 @@ pmap_bootstrap(vm_paddr_t *firstaddr) PMAP_LOCK_INIT(kernel_pmap); kernel_pmap->pm_pml4 = (pdp_entry_t *)PHYS_TO_DMAP(KPML4phys); CPU_FILL(&kernel_pmap->pm_active); /* don't allow deactivation */ + CPU_ZERO(&kernel_pmap->pm_save); TAILQ_INIT(&kernel_pmap->pm_pvchunk); /* @@ -716,6 +761,21 @@ pmap_bootstrap(vm_paddr_t *firstaddr) /* Initialize the PAT MSR. */ pmap_init_pat(); + +#ifdef SMP + /* Initialize TLB Context Id. */ + TUNABLE_INT_FETCH("vm.pmap.pcid_enabled", &pmap_pcid_enabled); + if ((cpu_feature2 & CPUID2_PCID) != 0 && pmap_pcid_enabled) { + load_cr4(rcr4() | CR4_PCIDE); + mtx_init(&pcid_mtx, "pcid", NULL, MTX_DEF); + init_unrhdr(&pcid_unr, 1, (1 << 12) - 1, &pcid_mtx); + /* Check for INVPCID support */ + invpcid_works = (cpu_stdext_feature & CPUID_STDEXT_INVPCID) + != 0; + kernel_pmap->pm_pcid = 0; + } else +#endif + pmap_pcid_enabled = 0; } /* @@ -952,7 +1012,6 @@ pmap_cache_bits(int mode, boolean_t is_pde) static void pmap_update_pde_invalidate(vm_offset_t va, pd_entry_t newpde) { - u_long cr4; if ((newpde & PG_PS) == 0) /* Demotion: flush a specific 2MB page mapping. */ @@ -968,19 +1027,34 @@ pmap_update_pde_invalidate(vm_offset_t va, pd_entry_t newpde) * Promotion: flush every 4KB page mapping from the TLB, * including any global (PG_G) mappings. */ - cr4 = rcr4(); - load_cr4(cr4 & ~CR4_PGE); - /* - * Although preemption at this point could be detrimental to - * performance, it would not lead to an error. PG_G is simply - * ignored if CR4.PGE is clear. Moreover, in case this block - * is re-entered, the load_cr4() either above or below will - * modify CR4.PGE flushing the TLB. - */ - load_cr4(cr4 | CR4_PGE); + invltlb_globpcid(); } } #ifdef SMP + +static void +pmap_invalidate_page_pcid(pmap_t pmap, vm_offset_t va) +{ + struct invpcid_descr d; + uint64_t cr3; + + if (invpcid_works) { + d.pcid = pmap->pm_pcid; + d.pad = 0; + d.addr = va; + invpcid(&d, INVPCID_ADDR); + return; + } + + cr3 = rcr3(); + critical_enter(); + load_cr3(DMAP_TO_PHYS((vm_offset_t)pmap->pm_pml4) | pmap->pm_pcid | + CR3_PCID_SAVE); + invlpg(va); + load_cr3(cr3 | CR3_PCID_SAVE); + critical_exit(); +} + /* * For SMP, these functions have to use the IPI mechanism for coherence. * @@ -1008,21 +1082,68 @@ pmap_invalidate_page(pmap_t pmap, vm_offset_t va) sched_pin(); if (pmap == kernel_pmap || !CPU_CMP(&pmap->pm_active, &all_cpus)) { - invlpg(va); - smp_invlpg(va); + if (!pmap_pcid_enabled) { + invlpg(va); + } else { + if (pmap->pm_pcid != -1 && pmap->pm_pcid != 0) { + if (pmap == PCPU_GET(curpmap)) + invlpg(va); + else + pmap_invalidate_page_pcid(pmap, va); + } else { + invltlb_globpcid(); + } + } + smp_invlpg(pmap, va); } else { cpuid = PCPU_GET(cpuid); other_cpus = all_cpus; CPU_CLR(cpuid, &other_cpus); if (CPU_ISSET(cpuid, &pmap->pm_active)) invlpg(va); - CPU_AND(&other_cpus, &pmap->pm_active); + else if (pmap_pcid_enabled) { + if (pmap->pm_pcid != -1 && pmap->pm_pcid != 0) + pmap_invalidate_page_pcid(pmap, va); + else + invltlb_globpcid(); + } + if (pmap_pcid_enabled) + CPU_AND(&other_cpus, &pmap->pm_save); + else + CPU_AND(&other_cpus, &pmap->pm_active); if (!CPU_EMPTY(&other_cpus)) - smp_masked_invlpg(other_cpus, va); + smp_masked_invlpg(other_cpus, pmap, va); } sched_unpin(); } +static void +pmap_invalidate_range_pcid(pmap_t pmap, vm_offset_t sva, vm_offset_t eva) +{ + struct invpcid_descr d; + uint64_t cr3; + vm_offset_t addr; + + if (invpcid_works) { + d.pcid = pmap->pm_pcid; + d.pad = 0; + for (addr = sva; addr < eva; addr += PAGE_SIZE) { + d.addr = addr; + invpcid(&d, INVPCID_ADDR); + } + return; + } + + cr3 = rcr3(); + critical_enter(); + load_cr3(DMAP_TO_PHYS((vm_offset_t)pmap->pm_pml4) | pmap->pm_pcid | + CR3_PCID_SAVE); + for (addr = sva; addr < eva; addr += PAGE_SIZE) + invlpg(addr); + load_cr3(cr3 | CR3_PCID_SAVE); + critical_exit(); +} + void pmap_invalidate_range(pmap_t pmap, vm_offset_t sva, vm_offset_t eva) { @@ -1032,19 +1153,43 @@ pmap_invalidate_range(pmap_t pmap, vm_offset_t sva, vm_offset_t eva) sched_pin(); if (pmap == kernel_pmap || !CPU_CMP(&pmap->pm_active, &all_cpus)) { - for (addr = sva; addr < eva; addr += PAGE_SIZE) - invlpg(addr); - smp_invlpg_range(sva, eva); + if (!pmap_pcid_enabled) { + for (addr = sva; addr < eva; addr += PAGE_SIZE) + invlpg(addr); + } else { + if (pmap->pm_pcid != -1 && pmap->pm_pcid != 0) { + if (pmap == PCPU_GET(curpmap)) { + for (addr = sva; addr < eva; + addr += PAGE_SIZE) + invlpg(addr); + } else { + pmap_invalidate_range_pcid(pmap, + sva, eva); + } + } else { + invltlb_globpcid(); + } + } + smp_invlpg_range(pmap, sva, eva); } else { cpuid = PCPU_GET(cpuid); other_cpus = all_cpus; CPU_CLR(cpuid, &other_cpus); - if (CPU_ISSET(cpuid, &pmap->pm_active)) + if (CPU_ISSET(cpuid, &pmap->pm_active)) { for (addr = sva; addr < eva; addr += PAGE_SIZE) invlpg(addr); - CPU_AND(&other_cpus, &pmap->pm_active); + } else if (pmap_pcid_enabled) { + if (pmap->pm_pcid != -1 && pmap->pm_pcid != 0) + pmap_invalidate_range_pcid(pmap, sva, eva); + else + invltlb_globpcid(); + } + if (pmap_pcid_enabled) + CPU_AND(&other_cpus, &pmap->pm_save); + else + CPU_AND(&other_cpus, &pmap->pm_active); if (!CPU_EMPTY(&other_cpus)) - smp_masked_invlpg_range(other_cpus, sva, eva); + smp_masked_invlpg_range(other_cpus, pmap, sva, eva); } sched_unpin(); } @@ -1053,21 +1198,63 @@ void pmap_invalidate_all(pmap_t pmap) { cpuset_t other_cpus; + struct invpcid_descr d; + uint64_t cr3; u_int cpuid; sched_pin(); - if (pmap == kernel_pmap || !CPU_CMP(&pmap->pm_active, &all_cpus)) { - invltlb(); - smp_invltlb(); + cpuid = PCPU_GET(cpuid); + if (pmap == kernel_pmap || + (pmap_pcid_enabled && !CPU_CMP(&pmap->pm_save, &all_cpus)) || + !CPU_CMP(&pmap->pm_active, &all_cpus)) { + if (invpcid_works) { + bzero(&d, sizeof(d)); + invpcid(&d, INVPCID_CTXGLOB); + } else { + invltlb_globpcid(); + } + CPU_CLR_ATOMIC(cpuid, &pmap->pm_save); + smp_invltlb(pmap); } else { - cpuid = PCPU_GET(cpuid); other_cpus = all_cpus; CPU_CLR(cpuid, &other_cpus); - if (CPU_ISSET(cpuid, &pmap->pm_active)) + + /* + * This logic is duplicated in the Xinvltlb shootdown + * IPI handler. + */ + if (pmap_pcid_enabled) { + if (pmap->pm_pcid != -1 && pmap->pm_pcid != 0) { + if (invpcid_works) { + d.pcid = pmap->pm_pcid; + d.pad = 0; + d.addr = 0; + invpcid(&d, INVPCID_CTX); + } else { + cr3 = rcr3(); + critical_enter(); + + /* + * Bit 63 is clear, pcid TLB + * entries are invalidated. + */ + load_cr3(DMAP_TO_PHYS((vm_offset_t) + pmap->pm_pml4) | pmap->pm_pcid); + load_cr3(cr3 | CR3_PCID_SAVE); + critical_exit(); + } + } else { + invltlb_globpcid(); + } + } else if (CPU_ISSET(cpuid, &pmap->pm_active)) invltlb(); - CPU_AND(&other_cpus, &pmap->pm_active); + CPU_CLR_ATOMIC(cpuid, &pmap->pm_save); + if (pmap_pcid_enabled) + CPU_AND(&other_cpus, &pmap->pm_save); + else + CPU_AND(&other_cpus, &pmap->pm_active); if (!CPU_EMPTY(&other_cpus)) - smp_masked_invltlb(other_cpus); + smp_masked_invltlb(other_cpus, pmap); } sched_unpin(); } @@ -1129,8 +1316,10 @@ pmap_update_pde(pmap_t pmap, vm_offset_t va, pd_entry_t *pde, pd_entry_t newpde) CPU_CLR(cpuid, &other_cpus); if (pmap == kernel_pmap) active = all_cpus; - else + else { active = pmap->pm_active; + CPU_AND_ATOMIC(&pmap->pm_save, &active); + } if (CPU_OVERLAP(&active, &other_cpus)) { act.store = cpuid; act.invalidate = active; @@ -1193,6 +1382,8 @@ pmap_update_pde(pmap_t pmap, vm_offset_t va, pd_entry_t *pde, pd_entry_t newpde) pde_store(pde, newpde); if (pmap == kernel_pmap || !CPU_EMPTY(&pmap->pm_active)) pmap_update_pde_invalidate(va, newpde); + else + CPU_ZERO(&pmap->pm_save); } #endif /* !SMP */ @@ -1675,6 +1866,8 @@ pmap_pinit0(pmap_t pmap) PCPU_SET(curpmap, pmap); TAILQ_INIT(&pmap->pm_pvchunk); bzero(&pmap->pm_stats, sizeof pmap->pm_stats); + pmap->pm_pcid = pmap_pcid_enabled ? 0 : -1; + CPU_ZERO(&pmap->pm_save); } /* @@ -1716,6 +1909,8 @@ pmap_pinit(pmap_t pmap) CPU_ZERO(&pmap->pm_active); TAILQ_INIT(&pmap->pm_pvchunk); bzero(&pmap->pm_stats, sizeof pmap->pm_stats); + pmap->pm_pcid = pmap_pcid_enabled ? alloc_unr(&pcid_unr) : -1; + CPU_ZERO(&pmap->pm_save); return (1); } @@ -1957,6 +2152,14 @@ pmap_release(pmap_t pmap) KASSERT(vm_radix_is_empty(&pmap->pm_root), ("pmap_release: pmap has reserved page table page(s)")); + if (pmap_pcid_enabled) { + /* + * Invalidate any left TLB entries, to allow the reuse + * of the pcid. + */ + pmap_invalidate_all(pmap); + } + m = PHYS_TO_VM_PAGE(pmap->pm_pml4[PML4PML4I] & PG_FRAME); for (i = 0; i < NKPML4E; i++) /* KVA */ @@ -1968,6 +2171,8 @@ pmap_release(pmap_t pmap) m->wire_count--; atomic_subtract_int(&cnt.v_wire_count, 1); vm_page_free_zero(m); + if (pmap->pm_pcid != -1) + free_unr(&pcid_unr, pmap->pm_pcid); } static int @@ -4967,6 +5172,128 @@ out: } /* + * Apply the given advice to the specified range of addresses within the + * given pmap. Depending on the advice, clear the referenced and/or + * modified flags in each mapping and set the mapped page's dirty field. + */ +void +pmap_advise(pmap_t pmap, vm_offset_t sva, vm_offset_t eva, int advice) +{ + struct rwlock *lock; + pml4_entry_t *pml4e; + pdp_entry_t *pdpe; + pd_entry_t oldpde, *pde; + pt_entry_t *pte; + vm_offset_t va_next; + vm_page_t m; + boolean_t anychanged, pv_lists_locked; + + if (advice != MADV_DONTNEED && advice != MADV_FREE) + return; + pv_lists_locked = FALSE; +resume: + anychanged = FALSE; + PMAP_LOCK(pmap); + for (; sva < eva; sva = va_next) { + pml4e = pmap_pml4e(pmap, sva); + if ((*pml4e & PG_V) == 0) { + va_next = (sva + NBPML4) & ~PML4MASK; + if (va_next < sva) + va_next = eva; + continue; + } + pdpe = pmap_pml4e_to_pdpe(pml4e, sva); + if ((*pdpe & PG_V) == 0) { + va_next = (sva + NBPDP) & ~PDPMASK; + if (va_next < sva) + va_next = eva; + continue; + } + va_next = (sva + NBPDR) & ~PDRMASK; + if (va_next < sva) + va_next = eva; + pde = pmap_pdpe_to_pde(pdpe, sva); + oldpde = *pde; + if ((oldpde & PG_V) == 0) + continue; + else if ((oldpde & PG_PS) != 0) { + if ((oldpde & PG_MANAGED) == 0) + continue; + if (!pv_lists_locked) { + pv_lists_locked = TRUE; + if (!rw_try_rlock(&pvh_global_lock)) { + if (anychanged) + pmap_invalidate_all(pmap); + PMAP_UNLOCK(pmap); + rw_rlock(&pvh_global_lock); + goto resume; + } + } + lock = NULL; + if (!pmap_demote_pde_locked(pmap, pde, sva, &lock)) { + if (lock != NULL) + rw_wunlock(lock); + + /* + * The large page mapping was destroyed. + */ + continue; + } + + /* + * Unless the page mappings are wired, remove the + * mapping to a single page so that a subsequent + * access may repromote. Since the underlying page + * table page is fully populated, this removal never + * frees a page table page. + */ + if ((oldpde & PG_W) == 0) { + pte = pmap_pde_to_pte(pde, sva); + KASSERT((*pte & PG_V) != 0, + ("pmap_advise: invalid PTE")); + pmap_remove_pte(pmap, pte, sva, *pde, NULL, + &lock); + anychanged = TRUE; + } + if (lock != NULL) + rw_wunlock(lock); + } + if (va_next > eva) + va_next = eva; + for (pte = pmap_pde_to_pte(pde, sva); sva != va_next; pte++, + sva += PAGE_SIZE) { + if ((*pte & (PG_MANAGED | PG_V)) != (PG_MANAGED | + PG_V)) + continue; + else if ((*pte & (PG_M | PG_RW)) == (PG_M | PG_RW)) { + if (advice == MADV_DONTNEED) { + /* + * Future calls to pmap_is_modified() + * can be avoided by making the page + * dirty now. + */ + m = PHYS_TO_VM_PAGE(*pte & PG_FRAME); + vm_page_dirty(m); + } + atomic_clear_long(pte, PG_M | PG_A); + } else if ((*pte & PG_A) != 0) + atomic_clear_long(pte, PG_A); + else + continue; + if ((*pte & PG_G) != 0) + pmap_invalidate_page(pmap, sva); + else + anychanged = TRUE; + } + } + if (anychanged) + pmap_invalidate_all(pmap); + if (pv_lists_locked) + rw_runlock(&pvh_global_lock); + PMAP_UNLOCK(pmap); +} + +/* * Clear the modify bits on the specified physical page. */ void @@ -5612,15 +5939,20 @@ pmap_activate(struct thread *td) critical_enter(); pmap = vmspace_pmap(td->td_proc->p_vmspace); oldpmap = PCPU_GET(curpmap); + CPU_ZERO(&pmap->pm_save); cpuid = PCPU_GET(cpuid); #ifdef SMP CPU_CLR_ATOMIC(cpuid, &oldpmap->pm_active); CPU_SET_ATOMIC(cpuid, &pmap->pm_active); + CPU_SET_ATOMIC(cpuid, &pmap->pm_save); #else CPU_CLR(cpuid, &oldpmap->pm_active); CPU_SET(cpuid, &pmap->pm_active); + CPU_SET(cpuid, &pmap->pm_save); #endif cr3 = DMAP_TO_PHYS((vm_offset_t)pmap->pm_pml4); + if (pmap->pm_pcid != -1) + cr3 |= pmap->pm_pcid; td->td_pcb->pcb_cr3 = cr3; load_cr3(cr3); PCPU_SET(curpmap, pmap); diff --git a/sys/amd64/amd64/vm_machdep.c b/sys/amd64/amd64/vm_machdep.c index ed0e7e9..3764f72 100644 --- a/sys/amd64/amd64/vm_machdep.c +++ b/sys/amd64/amd64/vm_machdep.c @@ -221,6 +221,8 @@ cpu_fork(td1, p2, td2, flags) */ pmap2 = vmspace_pmap(p2->p_vmspace); pcb2->pcb_cr3 = DMAP_TO_PHYS((vm_offset_t)pmap2->pm_pml4); + if (pmap2->pm_pcid != -1) + pcb2->pcb_cr3 |= pmap2->pm_pcid; pcb2->pcb_r12 = (register_t)fork_return; /* fork_trampoline argument */ pcb2->pcb_rbp = 0; pcb2->pcb_rsp = (register_t)td2->td_frame - sizeof(void *); diff --git a/sys/amd64/include/apicvar.h b/sys/amd64/include/apicvar.h index ae2f5b9..9cd4c95 100644 --- a/sys/amd64/include/apicvar.h +++ b/sys/amd64/include/apicvar.h @@ -227,6 +227,7 @@ int lapic_set_lvt_triggermode(u_int apic_id, u_int lvt, enum intr_trigger trigger); void lapic_set_tpr(u_int vector); void lapic_setup(int boot); +void xen_intr_handle_upcall(struct trapframe *frame); #endif /* !LOCORE */ #endif /* _MACHINE_APICVAR_H_ */ diff --git a/sys/amd64/include/cpufunc.h b/sys/amd64/include/cpufunc.h index 881fcd2..3d381c6 100644 --- a/sys/amd64/include/cpufunc.h +++ b/sys/amd64/include/cpufunc.h @@ -472,6 +472,26 @@ invlpg(u_long addr) __asm __volatile("invlpg %0" : : "m" (*(char *)addr) : "memory"); } +#define INVPCID_ADDR 0 +#define INVPCID_CTX 1 +#define INVPCID_CTXGLOB 2 +#define INVPCID_ALLCTX 3 + +struct invpcid_descr { + uint64_t pcid:12 __packed; + uint64_t pad:52 __packed; + uint64_t addr; +} __packed; + +static __inline void +invpcid(struct invpcid_descr *d, int type) +{ + + /* invpcid (%rdx),%rax */ + __asm __volatile(".byte 0x66,0x0f,0x38,0x82,0x02" + : : "d" (d), "a" ((u_long)type) : "memory"); +} + static __inline u_short rfs(void) { diff --git a/sys/amd64/include/intr_machdep.h b/sys/amd64/include/intr_machdep.h index 8671605..c8b454d 100644 --- a/sys/amd64/include/intr_machdep.h +++ b/sys/amd64/include/intr_machdep.h @@ -44,12 +44,24 @@ * allocate IDT vectors. * * The first 255 IRQs (0 - 254) are reserved for ISA IRQs and PCI intline IRQs. - * IRQ values beyond 256 are used by MSI. We leave 255 unused to avoid - * confusion since 255 is used in PCI to indicate an invalid IRQ. + * IRQ values from 256 to 767 are used by MSI. When running under the Xen + * Hypervisor, IRQ values from 768 to 4863 are available for binding to + * event channel events. We leave 255 unused to avoid confusion since 255 is + * used in PCI to indicate an invalid IRQ. */ #define NUM_MSI_INTS 512 #define FIRST_MSI_INT 256 -#define NUM_IO_INTS (FIRST_MSI_INT + NUM_MSI_INTS) +#ifdef XENHVM +#include <xen/xen-os.h> +#define NUM_EVTCHN_INTS NR_EVENT_CHANNELS +#define FIRST_EVTCHN_INT \ + (FIRST_MSI_INT + NUM_MSI_INTS) +#define LAST_EVTCHN_INT \ + (FIRST_EVTCHN_INT + NUM_EVTCHN_INTS - 1) +#else +#define NUM_EVTCHN_INTS 0 +#endif +#define NUM_IO_INTS (FIRST_MSI_INT + NUM_MSI_INTS + NUM_EVTCHN_INTS) /* * Default base address for MSI messages on x86 platforms. diff --git a/sys/amd64/include/pcpu.h b/sys/amd64/include/pcpu.h index ba4c618..0e11975 100644 --- a/sys/amd64/include/pcpu.h +++ b/sys/amd64/include/pcpu.h @@ -42,15 +42,6 @@ #endif #endif -#ifdef XENHVM -#define PCPU_XEN_FIELDS \ - ; \ - unsigned int pc_last_processed_l1i; \ - unsigned int pc_last_processed_l2i -#else -#define PCPU_XEN_FIELDS -#endif - /* * The SMP parts are setup in pmap.c and locore.s for the BSP, and * mp_machdep.c sets up the data for the AP's to "see" when they awake. @@ -76,8 +67,9 @@ struct system_segment_descriptor *pc_ldt; \ /* Pointer to the CPU TSS descriptor */ \ struct system_segment_descriptor *pc_tss; \ - u_int pc_cmci_mask /* MCx banks for CMCI */ \ - PCPU_XEN_FIELDS; \ + uint64_t pc_pm_save_cnt; \ + char pc_invpcid_descr[16]; \ + u_int pc_cmci_mask; /* MCx banks for CMCI */ \ uint64_t pc_dbreg[16]; /* ddb debugging regs */ \ int pc_dbreg_cmd; /* ddb debugging reg cmd */ \ char __pad[161] /* be divisor of PAGE_SIZE \ diff --git a/sys/amd64/include/pmap.h b/sys/amd64/include/pmap.h index aacb9ba..fa42389 100644 --- a/sys/amd64/include/pmap.h +++ b/sys/amd64/include/pmap.h @@ -240,6 +240,8 @@ struct pmap { pml4_entry_t *pm_pml4; /* KVA of level 4 page table */ TAILQ_HEAD(,pv_chunk) pm_pvchunk; /* list of mappings in pmap */ cpuset_t pm_active; /* active on cpus */ + cpuset_t pm_save; /* Context valid on cpus mask */ + int pm_pcid; /* context id */ /* spare u_int here due to padding */ struct pmap_statistics pm_stats; /* pmap statistics */ struct vm_radix pm_root; /* spare page table pages */ diff --git a/sys/amd64/include/smp.h b/sys/amd64/include/smp.h index 16d87ea..d6cd476 100644 --- a/sys/amd64/include/smp.h +++ b/sys/amd64/include/smp.h @@ -54,6 +54,8 @@ inthand_t IDTVEC(cpususpend), /* CPU suspends & waits to be resumed */ IDTVEC(rendezvous); /* handle CPU rendezvous */ +struct pmap; + /* functions in mp_machdep.c */ void cpu_add(u_int apic_id, char boot_cpu); void cpustop_handler(void); @@ -67,13 +69,14 @@ int ipi_nmi_handler(void); void ipi_selected(cpuset_t cpus, u_int ipi); u_int mp_bootaddress(u_int); void smp_cache_flush(void); -void smp_invlpg(vm_offset_t addr); -void smp_masked_invlpg(cpuset_t mask, vm_offset_t addr); -void smp_invlpg_range(vm_offset_t startva, vm_offset_t endva); -void smp_masked_invlpg_range(cpuset_t mask, vm_offset_t startva, +void smp_invlpg(struct pmap *pmap, vm_offset_t addr); +void smp_masked_invlpg(cpuset_t mask, struct pmap *pmap, vm_offset_t addr); +void smp_invlpg_range(struct pmap *pmap, vm_offset_t startva, vm_offset_t endva); -void smp_invltlb(void); -void smp_masked_invltlb(cpuset_t mask); +void smp_masked_invlpg_range(cpuset_t mask, struct pmap *pmap, + vm_offset_t startva, vm_offset_t endva); +void smp_invltlb(struct pmap *pmap); +void smp_masked_invltlb(cpuset_t mask, struct pmap *pmap); #endif /* !LOCORE */ #endif /* SMP */ diff --git a/sys/amd64/include/xen/hypercall.h b/sys/amd64/include/xen/hypercall.h index 50fa376..a1b2a5c 100644 --- a/sys/amd64/include/xen/hypercall.h +++ b/sys/amd64/include/xen/hypercall.h @@ -1,7 +1,7 @@ /****************************************************************************** * hypercall.h * - * Linux-specific hypervisor handling. + * FreeBSD-specific hypervisor handling. * * Copyright (c) 2002-2004, K A Fraser * @@ -32,6 +32,8 @@ * 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. + * + * $FreeBSD$ */ #ifndef __MACHINE_XEN_HYPERCALL_H__ @@ -270,7 +272,7 @@ HYPERVISOR_event_channel_op( int rc = _hypercall2(int, event_channel_op, cmd, arg); #if CONFIG_XEN_COMPAT <= 0x030002 - if (unlikely(rc == -ENOXENSYS)) { + if (__predict_false(rc == -ENOXENSYS)) { struct evtchn_op op; op.cmd = cmd; memcpy(&op.u, arg, sizeof(op.u)); @@ -303,7 +305,7 @@ HYPERVISOR_physdev_op( int rc = _hypercall2(int, physdev_op, cmd, arg); #if CONFIG_XEN_COMPAT <= 0x030002 - if (unlikely(rc == -ENOXENSYS)) { + if (__predict_false(rc == -ENOXENSYS)) { struct physdev_op op; op.cmd = cmd; memcpy(&op.u, arg, sizeof(op.u)); diff --git a/sys/amd64/include/xen/xen-os.h b/sys/amd64/include/xen/xen-os.h index 8974323..ee498b9 100644 --- a/sys/amd64/include/xen/xen-os.h +++ b/sys/amd64/include/xen/xen-os.h @@ -1,40 +1,42 @@ /****************************************************************************** - * os.h + * amd64/xen/xen-os.h * - * random collection of macros and definition + * Random collection of macros and definition + * + * Copyright (c) 2003, 2004 Keir Fraser (on behalf of the Xen team) + * All rights reserved. + * + * 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. * * $FreeBSD$ */ -#ifndef _XEN_OS_H_ -#define _XEN_OS_H_ +#ifndef _MACHINE_XEN_XEN_OS_H_ +#define _MACHINE_XEN_XEN_OS_H_ #ifdef PAE #define CONFIG_X86_PAE #endif -#ifdef LOCORE -#define __ASSEMBLY__ -#endif - -#if !defined(__XEN_INTERFACE_VERSION__) -#define __XEN_INTERFACE_VERSION__ 0x00030208 -#endif - -#define GRANT_REF_INVALID 0xffffffff - -#include <xen/interface/xen.h> - /* Everything below this point is not included by assembler (.S) files. */ #ifndef __ASSEMBLY__ -/* Force a proper event-channel callback from Xen. */ -void force_evtchn_callback(void); - -extern int gdtset; - -extern shared_info_t *HYPERVISOR_shared_info; - /* REP NOP (PAUSE) is a good thing to insert into busy-wait loops. */ static inline void rep_nop(void) { @@ -42,161 +44,12 @@ static inline void rep_nop(void) } #define cpu_relax() rep_nop() -/* crude memory allocator for memory allocation early in - * boot - */ -void *bootmem_alloc(unsigned int size); -void bootmem_free(void *ptr, unsigned int size); - -void printk(const char *fmt, ...); - -/* some function prototypes */ -void trap_init(void); - -#define likely(x) __builtin_expect((x),1) -#define unlikely(x) __builtin_expect((x),0) - -#ifndef XENHVM - -/* - * STI/CLI equivalents. These basically set and clear the virtual - * event_enable flag in the shared_info structure. Note that when - * the enable bit is set, there may be pending events to be handled. - * We may therefore call into do_hypervisor_callback() directly. - */ - -#define __cli() \ -do { \ - vcpu_info_t *_vcpu; \ - _vcpu = &HYPERVISOR_shared_info->vcpu_info[PCPU_GET(cpuid)]; \ - _vcpu->evtchn_upcall_mask = 1; \ - barrier(); \ -} while (0) - -#define __sti() \ -do { \ - vcpu_info_t *_vcpu; \ - barrier(); \ - _vcpu = &HYPERVISOR_shared_info->vcpu_info[PCPU_GET(cpuid)]; \ - _vcpu->evtchn_upcall_mask = 0; \ - barrier(); /* unmask then check (avoid races) */ \ - if ( unlikely(_vcpu->evtchn_upcall_pending) ) \ - force_evtchn_callback(); \ -} while (0) - -#define __restore_flags(x) \ -do { \ - vcpu_info_t *_vcpu; \ - barrier(); \ - _vcpu = &HYPERVISOR_shared_info->vcpu_info[PCPU_GET(cpuid)]; \ - if ((_vcpu->evtchn_upcall_mask = (x)) == 0) { \ - barrier(); /* unmask then check (avoid races) */ \ - if ( unlikely(_vcpu->evtchn_upcall_pending) ) \ - force_evtchn_callback(); \ - } \ -} while (0) - -/* - * Add critical_{enter, exit}? - * - */ -#define __save_and_cli(x) \ -do { \ - vcpu_info_t *_vcpu; \ - _vcpu = &HYPERVISOR_shared_info->vcpu_info[PCPU_GET(cpuid)]; \ - (x) = _vcpu->evtchn_upcall_mask; \ - _vcpu->evtchn_upcall_mask = 1; \ - barrier(); \ -} while (0) - - -#define cli() __cli() -#define sti() __sti() -#define save_flags(x) __save_flags(x) -#define restore_flags(x) __restore_flags(x) -#define save_and_cli(x) __save_and_cli(x) - -#define local_irq_save(x) __save_and_cli(x) -#define local_irq_restore(x) __restore_flags(x) -#define local_irq_disable() __cli() -#define local_irq_enable() __sti() - -#define mtx_lock_irqsave(lock, x) {local_irq_save((x)); mtx_lock_spin((lock));} -#define mtx_unlock_irqrestore(lock, x) {mtx_unlock_spin((lock)); local_irq_restore((x)); } -#define spin_lock_irqsave mtx_lock_irqsave -#define spin_unlock_irqrestore mtx_unlock_irqrestore - -#else -#endif - -#ifndef xen_mb -#define xen_mb() mb() -#endif -#ifndef xen_rmb -#define xen_rmb() rmb() -#endif -#ifndef xen_wmb -#define xen_wmb() wmb() -#endif -#ifdef SMP -#define smp_mb() mb() -#define smp_rmb() rmb() -#define smp_wmb() wmb() -#define smp_read_barrier_depends() read_barrier_depends() -#define set_mb(var, value) do { xchg(&var, value); } while (0) -#else -#define smp_mb() barrier() -#define smp_rmb() barrier() -#define smp_wmb() barrier() -#define smp_read_barrier_depends() do { } while(0) -#define set_mb(var, value) do { var = value; barrier(); } while (0) -#endif - - /* This is a barrier for the compiler only, NOT the processor! */ #define barrier() __asm__ __volatile__("": : :"memory") #define LOCK_PREFIX "" #define LOCK "" #define ADDR (*(volatile long *) addr) -/* - * Make sure gcc doesn't try to be clever and move things around - * on us. We need to use _exactly_ the address the user gave us, - * not some alias that contains the same information. - */ -typedef struct { volatile int counter; } atomic_t; - - - -#define xen_xchg(ptr,v) \ - ((__typeof__(*(ptr)))__xchg((unsigned long)(v),(ptr),sizeof(*(ptr)))) -struct __xchg_dummy { unsigned long a[100]; }; -#define __xg(x) ((volatile struct __xchg_dummy *)(x)) -static __inline unsigned long __xchg(unsigned long x, volatile void * ptr, - int size) -{ - switch (size) { - case 1: - __asm__ __volatile__("xchgb %b0,%1" - :"=q" (x) - :"m" (*__xg(ptr)), "0" (x) - :"memory"); - break; - case 2: - __asm__ __volatile__("xchgw %w0,%1" - :"=r" (x) - :"m" (*__xg(ptr)), "0" (x) - :"memory"); - break; - case 4: - __asm__ __volatile__("xchgl %0,%1" - :"=r" (x) - :"m" (*__xg(ptr)), "0" (x) - :"memory"); - break; - } - return x; -} /** * test_and_clear_bit - Clear a bit and return its old value @@ -238,7 +91,6 @@ static __inline int variable_test_bit(int nr, volatile void * addr) constant_test_bit((nr),(addr)) : \ variable_test_bit((nr),(addr))) - /** * set_bit - Atomically set a bit in memory * @nr: the bit to set @@ -275,25 +127,6 @@ static __inline__ void clear_bit(int nr, volatile void * addr) :"Ir" (nr)); } -/** - * atomic_inc - increment atomic variable - * @v: pointer of type atomic_t - * - * Atomically increments @v by 1. Note that the guaranteed - * useful range of an atomic_t is only 24 bits. - */ -static __inline__ void atomic_inc(atomic_t *v) -{ - __asm__ __volatile__( - LOCK "incl %0" - :"=m" (v->counter) - :"m" (v->counter)); -} - - -#define rdtscll(val) \ - __asm__ __volatile__("rdtsc" : "=A" (val)) - #endif /* !__ASSEMBLY__ */ -#endif /* _OS_H_ */ +#endif /* _MACHINE_XEN_XEN_OS_H_ */ diff --git a/sys/amd64/vmm/vmm_instruction_emul.c b/sys/amd64/vmm/vmm_instruction_emul.c index f90443e..4af22d4 100644 --- a/sys/amd64/vmm/vmm_instruction_emul.c +++ b/sys/amd64/vmm/vmm_instruction_emul.c @@ -77,6 +77,10 @@ static const struct vie_op one_byte_opcodes[256] = { .op_byte = 0x89, .op_type = VIE_OP_TYPE_MOV, }, + [0x8A] = { + .op_byte = 0x8A, + .op_type = VIE_OP_TYPE_MOV, + }, [0x8B] = { .op_byte = 0x8B, .op_type = VIE_OP_TYPE_MOV, @@ -268,13 +272,18 @@ emulate_mov(void *vm, int vcpuid, uint64_t gpa, struct vie *vie, error = memwrite(vm, vcpuid, gpa, val, size, arg); } break; + case 0x8A: case 0x8B: /* * MOV from mem (ModRM:r/m) to reg (ModRM:reg) + * 8A/r: mov r/m8, r8 + * REX + 8A/r: mov r/m8, r8 * 8B/r: mov r32, r/m32 * REX.W 8B/r: mov r64, r/m64 */ - if (vie->rex_w) + if (vie->op.op_byte == 0x8A) + size = 1; + else if (vie->rex_w) size = 8; error = memread(vm, vcpuid, gpa, &val, size, arg); if (error == 0) { @@ -688,7 +697,6 @@ decode_modrm(struct vie *vie) vie->base_register = VM_REG_GUEST_RIP; else vie->base_register = VM_REG_LAST; - } break; } diff --git a/sys/arm/arm/pmap-v6.c b/sys/arm/arm/pmap-v6.c index 08763b8..b9447d3 100644 --- a/sys/arm/arm/pmap-v6.c +++ b/sys/arm/arm/pmap-v6.c @@ -4767,6 +4767,14 @@ pmap_is_modified(vm_page_t m) } /* + * This function is advisory. + */ +void +pmap_advise(pmap_t pmap, vm_offset_t sva, vm_offset_t eva, int advice) +{ +} + +/* * Clear the modify bits on the specified physical page. */ void diff --git a/sys/arm/arm/pmap.c b/sys/arm/arm/pmap.c index f232b07..bc7912d 100644 --- a/sys/arm/arm/pmap.c +++ b/sys/arm/arm/pmap.c @@ -4516,6 +4516,14 @@ pmap_page_wired_mappings(vm_page_t m) } /* + * This function is advisory. + */ +void +pmap_advise(pmap_t pmap, vm_offset_t sva, vm_offset_t eva, int advice) +{ +} + +/* * pmap_ts_referenced: * * Return the count of reference bits for a page, clearing all of them. diff --git a/sys/boot/forth/beastie.4th b/sys/boot/forth/beastie.4th index 3c8f29d..240730c 100644 --- a/sys/boot/forth/beastie.4th +++ b/sys/boot/forth/beastie.4th @@ -205,21 +205,9 @@ variable logoY s" loader_logo" getenv dup -1 = if logoX @ logoY @ loader_color? if - s" tribute-logo" - sfind if - execute - else - drop - orb-logo - then + orb-logo else - s" tributebw-logo" - sfind if - execute - else - drop - orbbw-logo - then + orbbw-logo then drop exit then @@ -249,7 +237,7 @@ variable logoY s" tribute-logo" sfind if execute else - orb-logo + drop orb-logo then 2drop exit then @@ -258,7 +246,7 @@ variable logoY s" tributebw-logo" sfind if execute else - orbbw-logo + drop orbbw-logo then 2drop exit then diff --git a/sys/boot/forth/version.4th b/sys/boot/forth/version.4th index 358b6b1..6e0255b 100644 --- a/sys/boot/forth/version.4th +++ b/sys/boot/forth/version.4th @@ -1,4 +1,4 @@ -\ Copyright (c) 2006-2011 Devin Teske <dteske@FreeBSD.org> +\ Copyright (c) 2006-2013 Devin Teske <dteske@FreeBSD.org> \ All rights reserved. \ \ Redistribution and use in source and binary forms, with or without @@ -29,6 +29,9 @@ marker task-version.4th variable versionX variable versionY +\ Default $loader_version value if not overridden or using tribute screen +: str_loader_version ( -- C-ADDR/U|-1 ) -1 ; + \ Initialize text placement to defaults 80 versionX ! \ NOTE: this is the ending column (text is right-justified) 24 versionY ! @@ -43,9 +46,33 @@ variable versionY ?number drop versionY ! -1 then drop - \ Exit if a version was not set + \ Default version if none was set s" loader_version" getenv dup -1 = if - drop exit + drop + \ Default version if no logo is requested + s" loader_logo" getenv dup -1 = if + drop str_loader_version + else + 2dup s" tribute" compare-insensitive 0= if + 2drop + s" tribute-logo" sfind if + drop exit \ see beastie tribute-text + else + drop str_loader_version + then + else 2dup s" tributebw" compare-insensitive 0= if + 2drop + s" tributebw-logo" sfind if + drop exit \ see beastie tribute-text + else + drop str_loader_version + then + else + 2drop str_loader_version + then then + then + then dup -1 = if + drop exit \ default version (above) is disabled then \ Right justify the text diff --git a/sys/boot/forth/version.4th.8 b/sys/boot/forth/version.4th.8 index efa6aa6..fe8b618 100644 --- a/sys/boot/forth/version.4th.8 +++ b/sys/boot/forth/version.4th.8 @@ -91,7 +91,7 @@ causes the version to be printed without color .Pq default is ANSI Cyan . .El .Sh FILES -.Bl -tag -width /boot/loader.4th -compact +.Bl -tag -width /boot/version.4th -compact .It Pa /boot/loader The .Xr loader 8 . diff --git a/sys/cam/scsi/scsi_all.c b/sys/cam/scsi/scsi_all.c index 324dc9a..6530266 100644 --- a/sys/cam/scsi/scsi_all.c +++ b/sys/cam/scsi/scsi_all.c @@ -1118,7 +1118,7 @@ static struct asc_table_entry asc_table[] = { { SST(0x04, 0x10, SS_RDEF, /* XXX TBD */ "Logical unit not ready, auxiliary memory not accessible") }, /* DT WRO AEB VF */ - { SST(0x04, 0x11, SS_RDEF, /* XXX TBD */ + { SST(0x04, 0x11, SS_TUR | SSQ_MANY | SSQ_DECREMENT_COUNT | EBUSY, "Logical unit not ready, notify (enable spinup) required") }, /* M V */ { SST(0x04, 0x12, SS_RDEF, /* XXX TBD */ diff --git a/sys/cam/scsi/scsi_ch.c b/sys/cam/scsi/scsi_ch.c index 2aad04c..fdfb97f 100644 --- a/sys/cam/scsi/scsi_ch.c +++ b/sys/cam/scsi/scsi_ch.c @@ -99,10 +99,10 @@ __FBSDID("$FreeBSD$"); */ static const u_int32_t CH_TIMEOUT_MODE_SENSE = 6000; -static const u_int32_t CH_TIMEOUT_MOVE_MEDIUM = 100000; -static const u_int32_t CH_TIMEOUT_EXCHANGE_MEDIUM = 100000; -static const u_int32_t CH_TIMEOUT_POSITION_TO_ELEMENT = 100000; -static const u_int32_t CH_TIMEOUT_READ_ELEMENT_STATUS = 60000; +static const u_int32_t CH_TIMEOUT_MOVE_MEDIUM = 15 * 60 * 1000; +static const u_int32_t CH_TIMEOUT_EXCHANGE_MEDIUM = 15 * 60 * 1000; +static const u_int32_t CH_TIMEOUT_POSITION_TO_ELEMENT = 15 * 60 * 1000; +static const u_int32_t CH_TIMEOUT_READ_ELEMENT_STATUS = 5 * 60 * 1000; static const u_int32_t CH_TIMEOUT_SEND_VOLTAG = 10000; static const u_int32_t CH_TIMEOUT_INITIALIZE_ELEMENT_STATUS = 500000; diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c index a23dd0d..2716c25 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c @@ -6250,8 +6250,11 @@ zfs_freebsd_rename(ap) ASSERT(ap->a_fcnp->cn_flags & (SAVENAME|SAVESTART)); ASSERT(ap->a_tcnp->cn_flags & (SAVENAME|SAVESTART)); - error = zfs_rename(fdvp, ap->a_fcnp->cn_nameptr, tdvp, - ap->a_tcnp->cn_nameptr, ap->a_fcnp->cn_cred, NULL, 0); + if (fdvp->v_mount == tdvp->v_mount) + error = zfs_rename(fdvp, ap->a_fcnp->cn_nameptr, tdvp, + ap->a_tcnp->cn_nameptr, ap->a_fcnp->cn_cred, NULL, 0); + else + error = EXDEV; if (tdvp == tvp) VN_RELE(tdvp); @@ -6308,10 +6311,15 @@ zfs_freebsd_link(ap) } */ *ap; { struct componentname *cnp = ap->a_cnp; + vnode_t *vp = ap->a_vp; + vnode_t *tdvp = ap->a_tdvp; + + if (tdvp->v_mount != vp->v_mount) + return (EXDEV); ASSERT(cnp->cn_flags & SAVENAME); - return (zfs_link(ap->a_tdvp, ap->a_vp, cnp->cn_nameptr, cnp->cn_cred, NULL, 0)); + return (zfs_link(tdvp, vp, cnp->cn_nameptr, cnp->cn_cred, NULL, 0)); } static int diff --git a/sys/compat/freebsd32/freebsd32.h b/sys/compat/freebsd32/freebsd32.h index 9b04965..aa08432 100644 --- a/sys/compat/freebsd32/freebsd32.h +++ b/sys/compat/freebsd32/freebsd32.h @@ -342,6 +342,7 @@ struct kinfo_proc32 { char ki_loginclass[LOGINCLASSLEN+1]; char ki_sparestrings[50]; int ki_spareints[KI_NSPARE_INT]; + int ki_fibnum; u_int ki_cr_flags; int ki_jid; int ki_numthreads; diff --git a/sys/conf/Makefile.amd64 b/sys/conf/Makefile.amd64 index 7b1c164..97f4d3c 100644 --- a/sys/conf/Makefile.amd64 +++ b/sys/conf/Makefile.amd64 @@ -41,8 +41,6 @@ MKMODULESENV+= MACHINE=amd64 # XXX: clang integrated-as doesn't grok .codeNN directives yet ASM_CFLAGS.acpi_wakecode.S= ${CLANG_NO_IAS} -ASM_CFLAGS.ia32_sigtramp.S= ${CLANG_NO_IAS} -ASM_CFLAGS.linux32_locore.s= ${CLANG_NO_IAS} ASM_CFLAGS.mpboot.S= ${CLANG_NO_IAS} ASM_CFLAGS+= ${ASM_CFLAGS.${.IMPSRC:T}} diff --git a/sys/conf/files b/sys/conf/files index 1d48b0c..b7b1108 100644 --- a/sys/conf/files +++ b/sys/conf/files @@ -2499,7 +2499,7 @@ dev/xen/control/control.c optional xen | xenhvm dev/xen/netback/netback.c optional xen | xenhvm dev/xen/netfront/netfront.c optional xen | xenhvm dev/xen/xenpci/xenpci.c optional xenpci -dev/xen/xenpci/evtchn.c optional xenpci +dev/xen/timer/timer.c optional xen | xenhvm dev/xl/if_xl.c optional xl pci dev/xl/xlphy.c optional xl pci fs/deadfs/dead_vnops.c standard @@ -3815,7 +3815,6 @@ vm/vm_zeroidle.c standard vm/vnode_pager.c standard xen/gnttab.c optional xen | xenhvm xen/features.c optional xen | xenhvm -xen/evtchn/evtchn.c optional xen xen/evtchn/evtchn_dev.c optional xen | xenhvm xen/xenbus/xenbus_if.m optional xen | xenhvm xen/xenbus/xenbus.c optional xen | xenhvm diff --git a/sys/conf/files.amd64 b/sys/conf/files.amd64 index 1d5fa76..6d35d1f 100644 --- a/sys/conf/files.amd64 +++ b/sys/conf/files.amd64 @@ -531,3 +531,5 @@ x86/x86/mptable_pci.c optional mptable pci x86/x86/msi.c optional pci x86/x86/nexus.c standard x86/x86/tsc.c standard +x86/xen/hvm.c optional xenhvm +x86/xen/xen_intr.c optional xen | xenhvm diff --git a/sys/conf/files.i386 b/sys/conf/files.i386 index 4f8f8ed..2ac0b61 100644 --- a/sys/conf/files.i386 +++ b/sys/conf/files.i386 @@ -483,8 +483,6 @@ i386/ibcs2/ibcs2_xenix.c optional ibcs2 i386/ibcs2/ibcs2_xenix_sysent.c optional ibcs2 i386/ibcs2/imgact_coff.c optional ibcs2 i386/xen/clock.c optional xen -i386/xen/xen_clock_util.c optional xen -i386/xen/xen_rtc.c optional xen i386/isa/elink.c optional ep | ie i386/isa/npx.c optional npx i386/isa/pmtimer.c optional pmtimer @@ -568,3 +566,5 @@ x86/x86/mptable_pci.c optional apic native pci x86/x86/msi.c optional apic pci x86/x86/nexus.c standard x86/x86/tsc.c standard +x86/xen/hvm.c optional xenhvm +x86/xen/xen_intr.c optional xen | xenhvm diff --git a/sys/contrib/dev/iwn/iwlwifi-2000-18.168.6.1.fw.uu b/sys/contrib/dev/iwn/iwlwifi-2000-18.168.6.1.fw.uu new file mode 100644 index 0000000..d21522e --- /dev/null +++ b/sys/contrib/dev/iwn/iwlwifi-2000-18.168.6.1.fw.uu @@ -0,0 +1,12250 @@ +Copyright (c) 2006-2012, Intel Corporation. +All rights reserved. + +Redistribution. Redistribution and use in binary form, without +modification, are permitted provided that the following conditions are +met: + +* Redistributions must reproduce the above copyright notice and the + following disclaimer in the documentation and/or other materials + provided with the distribution. +* Neither the name of Intel Corporation nor the names of its suppliers + may be used to endorse or promote products derived from this software + without specific prior written permission. +* No reverse engineering, decompilation, or disassembly of this software + is permitted. + +Limited patent license. Intel Corporation grants a world-wide, +royalty-free, non-exclusive license under patents it now or hereafter +owns or controls to make, have made, use, import, offer to sell and +sell ("Utilize") this software, but solely to the extent that any +such patent is necessary to Utilize the software alone, or in +combination with an operating system licensed under an approved Open +Source license as listed by the Open Source Initiative at +http://opensource.org/licenses. The patent license shall not apply to +any other combinations which include this software. No hardware per +se is licensed hereunder. + +DISCLAIMER. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND +CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, +BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR +TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. +begin-base64 644 iwlwifi-2000-18.168.6.1.fw +AAAAAElXTAoyMDAwIGZ3IHYxOC4xNjguNi4xIGJ1aWxkIDAKAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAQaoEgAAAAABAAAAAAAAAAEAAAAIgwIAICCADwAAQABpIAAAaSBAAGkg +AABpIEAAICCADwAA6ABpIAAAaSBAAGkgAABpIEAAICCADwEANAxpIAAAaSBAAGkgAABKIAAASiEA +AEoiAABKIwAASiQAAEolAABKJgAASicAAEogABBKIQAQSiIAEEojABBKJAAQSiUAEEomABBKJwAQ +SiAAIEohACBKIgAgSiMAIEokACBKJQAgSiYAIEonACBKIAAwSiEAMAokgD+BAABAQSycMEAsnDBC +JBw0CiKAP4AAIH8KIwA3sgzAB0omAHBpIEAASiYAcEomAHBKJgBwSiYAcAAWAHCAAMwqQHggIECH +AAAAAAAAAAAAAPwciLb8HEi2/BwItvwcyLX8HIi1/BxItfwcCLX8HMi0/ByItPwcSLT8HAi0/BzI +s/wciLP8HEiz4H7geATcON018OB4BNw03TPw4HgE3DDdMfDgeATcLN0v8OB4BNwo3S3w4HgE3CTd +K/DgeATcIN0p8OB4BNwc3Sfw4HgE3BjdJfDgeATcFN0j8OB4BNwQ3SHw4HgE3AzdH/DgeATcCN0c +8OB4BNwE3RnwNBQaMDAUGTAsFBgwKBQXMCQUFjAgFBUwHBQUMBgUEzAUFBIwEBQRMAwUEDACxwHG +sCRNM7AkHzPgfuB44HjgeOB44HjgeAokgPAFIEQA4CDBB0Qk/oBBKsQAhAACAC8kAvFCIQEBQiAD +AeggogQEEQQCBBEFAgQRBgIEEQcCBBsIAQQbSAEEG4gBBBvIASwAJQBEIj6BPAAiAEQi/IBAIcEA +4CDBB0AjwwCoIIABARGEAgEbCgEgIMAHBBEEAgQRBQIEGwgB1Afh/wQbSAFEIvyABBEEAskH7/8E +GwgBQiFBAEIgQwCoIIABARGEAgEbCgEgIMAHz3GgAKwvGIGauBihTQdgEwXY4HjPcaAArC8YgbO4 +urgYoTkHYBNk2AoiQIAA2e4AAQAvJgDwSiZAAE4ABgBPACAAiiX/D+B4CiJAgADZzgABAGwAJAAv +JgDwXAAFACsINQhKJkAACHEA2AIhvoDgIMUHQnkB4AIhvoDgIMUHQnnrB+//AeAvLQEAQCVFAAIm +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 +IAAA2gHYjrjPcQAA//+ODyAAANrPcAAAC9IA2X4PIAAA2s9wAAAN0gHZcg8gAADaz3AAABLSANli +DyAAANrPcAAAE9IA2VYPIAAA2s9wAAAU0gDZRg8gAADaANjRwOB+8cAyD0/8o8GLcQHdcg7gDKly +z3CAAFxwAIBBwATYCghgACzZDtgCCGAAANkhxrXY9g8gAMlxiiCEBu4PIADJcYogRgDiDyAAyXEA +wIDgzCCigMwg4oDMIGKBzCCigcwgIoLMIGKCzCDigsohQgMD9APZgeDMIKKAzCDigMwgooHMIOKB +zCAigswgooLMIOKCA/SCuS95hODMIGKBzCCigcwg4oHMICKCzCBigswgooLMIOKCA/SDuS95bg8g +AA/YANjdBm/8o8DxwOHFocGLca4N4AwB2s91gADspQAUBDDPcIAASBdAJQEfEtrqDSAAANsAFAQw +z3CAAEQXqXEB2tYNIAAC289wgABsFyRtHNreDSAAAMMA2I0Gb/yhwOB48cD2DW/8A9qjwbpwUg3g +DItxAcHPcIAA9BcA3/QgTgACwc9wgAAMGIDm9CBUAM9wgAA8COCg4aDMJqKQzCZikcwmopHKJcIT +AvQA3YHmzCbikMwm4pHMJiKSA/QB3YTmzCZikswmopLMJuKSAvQC3YYNz/+qcM9yrd7vvrYN4AHJ +cWIO7/+qcIPgdvIAwIDgzCCigVD0gObMJmKQzCYikUr0AsCA4Ej0z3CAAEgZtXhacOCgz3CAAFAZ +tXh6cOCgz3CAAGgZtXgacOCgz3CAAHAZtXg6cOCgz3CAAFgZtXjgoM9wgABgGbV44KCqcMlxz3Ot +3u++Pg3gAalyXgrv/6pwg+A48gDBABIAIIbhAdnAeQO5tXnHcYAAuLYAoQATACAEoQAQACAbeAih +ABEAIBt4DKGqcKlxyXIKJIAPrd7vvvIM4AGKc1YPr/+qcIPgEvIAwM9xgAA8CECBBL4GuNhgFSAA +BcdwgAD0tiGBQrAjsADY0QRv/KPA4HjxwKTBi3HeC+AMBNoAwAHBBLg1eM9xgACsFxBhbg0gAALB +AMABwQS4NXjPcYAAzBcQYVoNIAADwQDYpMDRwOB+8cChweoPIAKLcgDAocDRwOB+4HihweHF4ca4 +cM9wgADIvxAQBgDPcIAAmDoFgJhxgOChwYYk9w9z8s9wgACcagCA0HAN9M9wgACkagCAsHAH9M9w +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 +7/8A34DgHPJ3HtiTeB7Yk4Ae2JOBHtiTB4WGHhiQEJWHHhiQB4WKHhiQEJWLHhiQBYWIHhiQDJWJ +HhiQBYWEHhiQDJWFHhiQwdhQHhiQaQdP+OB44cUIccO4z3KAAECq9CIDAMm7cHHKJCJ0yiAiAOgg +IgL0Ig0Ayb2xcQLyAeDgf8HF8cDhxQh1z3GgAMQnGREAhgHagOAREQCGwHqA4gCl0SDhhwDYNvTP +cIAAzM8MgM9xoADIH2TgHqEQ2A6hAdgVGRiAIg/gCwvYUSEAxsogIgAb9FEgQMcT8s9xoADUCxaB +OIEk4DBwS/f6DuALA9hRIwDABfRRIIDEA/IY2ALwANiA4Mog4gTPcaAAkCM+gSClsQZP+PHANg5P ++M92gACgLBUmARBAgWmCuIpBK8AAwLgXuMdwAACAHOS7zyAiBuC7Tt/PIKIAyieCHwAATgGG5c8n +YRLluxb0z3WAAOgvGBUEEb6WkHUP9KGGxBUNFlElQJEI9KCGxBUNFlElQJED8oG4USMAgs8gogUb +ovyiQIHPcDoESnAdoqCBB9j2D2AACrgEIIAPBwAAADC4h+BWAA0AMyYAcIAAcG5AJ4FyFHkAeYog +BAAepRjwiiAQAB6lFPAA2Iu4HqUQ8ADYjLgepQzwANiNuB6lCPAD2Ay4HqUE8ADYjrgepYIgAQG1 +BW/4HqUKIcAP63KM2I24vtuLu0okAADFBa/5CiUAAfHAz3GAANBJF6HgeOB44HjgeOB44HjgeOB4 +4HjgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB44HjRwOB+4HghgADaUyF+gAvyANqZulEhQIDK +IoIPAACDAMAqYgbPcaAAtEdMGYCAZpBIIwMDR5AQuwQjgw8PAAAAyLpFe0iQDLoEIoIPAAAA8GV6 +UBmAgECAg+Iq9GKAz3KfALj/faJFgFwZgIBGgGAZgIBHgHwZgIBIgGQZgIBJgGgZgIBKgIAZgIBL +gGwZgIBMgHAZgIBNgIQZgIBOgHQZgIBPgHgZgIBQgIgZgIBAgIjiE/RFgJwZgIBGgKAZgIBHgLwZ +gIBIgKQZgIBJgKgZgIAKgMAZAIDPcAAAVVXgfuB48cASDE/4CHYBgM91gADgKgClAobPd58AuP8B +pQDYAqXPcND+AADCDm//BKUA2B2nAIaH4M92oAC0Rxf0jgoAAM9wAz8CP5seGJDPcAk/Cz+cHhiQ +ANiXuEweAJBvIEMAkx4YkAXwbyBDAEweAJASDg/+AIX/uBfyz3CgAMg7HYCA4BHyz3CAAFQeH4CA +4A3yHacEhQHgs7i1uLi4FqcEpQPwANgdp89wAABVVc0DT/gikEghQQFAKQIDI5BigMu5j7lFec9y +nwC4/32iz3KgAOxGJ6IjgDWiJIA2ogWAF6LPcAAAVVXgfvHAJgtv+ADbpsHPcYAA4CpgoWGhYqHP +dqAAtEcsFgGQCiSADwAAVVVKJAB4aHGoIEACz3KAAFQeNXpgogHhANmYuZUeWJBKJIBxz3KAAOAq +CBIFAAsQkAAA3Tl12HWpcqlzGXWoIEEEv2Dkj7/nACBKAwbyFSRBM2ChAeNKJwAADydHAwsgwKEJ +8hUkQTMggUojABAPI0sQA/BKIwAQKogLIcCBBSHJEgnyFSRBMyCBSicAAA8nRwAD8EonAACA5wUi +wgEP9BUkQTMggQwQBQA/3wokgA8AAK3eDyBIEAQawhOJ5wf0FSRBMyCBANoPIkIAiOcI9BUkQTMg +gUomAAAPJkYAAeXPdYAA4CoIHUARgOPKJIEPAACt3jfyJYhkiAYiggHFuhC5BSODDwAAAD9leQUh +gQ8APwAAmx5YkGeIJogIu2V5aIgQu2V5aYgYu2V5nB5YkAYhARLFuZ+5mR5YkADZlR6YkJm5TB5A +kCSAWB5AkAqQlB4YkG8gQwCTHhiQFgwP/ohwAQJv+KbA4HjhxeHGz3KgAMBGz3OgAOBGSiQAcgDd +qCAAAxYgTgMhhgHlBBpQACKGBBtQADGAz3KgALRHmBpYgDKAsxpYgBOAtBoYgM9wAABVVcHG4H/B +xfHAtMEF2BW4QcDPcB8A//9CwADZQ8FEwUXBRsFHwT/YSMBJwUrBS8FMwU3BTsFPwVDBUcHPcAAA +//9SwFPAdg/v/4twtMDRwOB+4HjhxeHGJIjPcoAA0H6miMK5LmIA2Q8hgQOA5c9zgACgrkCDBfQm +ekCjF/BFeSCjJYgVI40DI6UmiEWIWWEmpSCAjCEQgET3iiEQACCgI7khowCAKrgCowDZz3CgAPA2 +LKAjgyWgJoMmoCSDJ6AngyigJYMpoCiDKqAhgyugIoMtoCCDJKDBxuB/wcXgePHASghP+Ah3mnG6 +ctpzCiIAIQojQCEKIYAhz3AAAMgbmgpgAAogwCH6cM9wAADMG4oKQAAbcM9wAAAEHH4KQADPdqAA +yB87cAHYE6YG2M91gAAESwCl4aUIHQAVDB1AFRAdgBUUHYAUGB3AFBwdQBQOwCAdABTPcYAAACsJ +pQSBAIAKpQiBAIALpQyBAIAMpaAWABANpaQWABAOpagWABAPpc9wQ3WoEhClEgpgACjYEaUKCmAA +ANgSpVMnwHUTpQHIVB0AFxalEhYAllAdABcXpRMWAJbPcaAAyBwYpRQWAJZTIQIzGaUVFgCWELoa +pSQWAJYbpRYWAJYcpc9wgADQSReAHaXPcIAABEt4GIAKz3CAAARLfBjACs9wgACASwQYAAvPcIAA +BEuEGEALKIGIGEAAz3GAAAAAJIGMGEAALyHHBQi5JXovIQcGRXmQGEAAvgtgACXZMQcP+PHAFg8P ++M9zgACYS0ODAN3PdqAALCDQhvJq9H9/Z8WnBKcB4owiCIAmp0OjhfcCg6OjAeACo0kHD/jgeM9x +gAAAKwiBANpAoAyBAdlAoM9woACwHzSg4H7xwMIOL/iKIEwNog/v/4ohmAQLyADeBCCAD////wML +GhgwTg4gAMlwz3WAAOAGEYWA4PQMIgDKIGIA9QYv+NCl8cDhxY4JIAAIdYwg/48I9IogBwpWD+// +qXEA2NkGD/jxwGIOL/hq2KLBi3EB2ioMoABIc4DgEPQKIcAP63LPcAAA0hSKI8UEiiSBCsEGb/lK +JQAAQCSBMUTYAdr6C6AASHOA4A/0CiHAD+tyz3AAANMUiiPFBYokAQGVBm/5SiUAALIMr/gGFAAx +gOBI8oHBa9gB2sILoABIc4DgD/QKIcAP63LPcAAA1BSKI4UHiiTBCl0Gb/lKJQAABBQAMUAkgTAB +2pILoABIc4DgD/QEFAUxCiHAD+tyz3AAANQUiiNFCC0Gb/mKJMEKAhQAMc92gAAkbBt4QSjFAEwl +gIwAHkAR1PYKIcAP63LPcAAA1RSKI4UJ+QVv+YokwQod2M92gAAkbACmuHAAFAAxz3WAAFTzQC2C +AKlxHgugAAHbgOAP9AAUBDEAFgUQCiHAD+tyz3AAANYUuQVv+YojBQxAhoDiANjR9hYlARBgiYYj +/w0ju4HjBvRhiYDjBPJiu2GpAeBQcLH2ANhlBS/4osDgePHA3gwP+KfBOnB6cRpyWnOLcM9xgACo +b5oNL/ga2s9xgAAkbCCBANiA4bhxxAAuAIol/x/PcYAAICMAEYQAiib/H8l1AvDpdkwhgKMB2s9x +gABU8xZ5YInCIowARCOPAP1/8XI99OGJRCMCBCS6RCMGAkEuxgAMIIChRCMBASK5L/RMJECADvSA +4cwiIYAH8oHhzCJhgADaAvQB2k96BfCA4gHawHqB4hv0TCIApgHawiKKAFBxhiP9Dye7BfKA4swg +YaAN9DJ3zCMhgAvygOcD8oDjBfIydwP28XaF9sl3BPAB2QnwCHUB4LBwWgfF/wDZiiD/D4DhBPSA +5cogSgOMIP+PyiCBD/////8V8jIkgjSB4s9xgABU8wf0YnEWeQIRwAAJ8ILiFnkF9AYRwAAD8AcR +wAABBC/4p8DxwNoMz/902JYM7/+KIUsK3g4P/x4LwAcGDA//CiHAD+tyPdiKIwsOSiQAABUEb/kK +JQAB8cDPcIAAoCwCgMIQAAZRIECAVA3CBtHA4H7gePHAWgsP+BpwKHU6cs9wgAAwtSIM7/lE2c9y +oADUC36CACWBHwAAAEDPcIAAtAdieWCgzbnPcIAAzM8vogyAz3KgAMgfZOAeohDYDqIB2BUaGIBN +cIYg/APQ4Mwggo8AAIAAEvKMIAOEE/IKIcAP63IKJIAKz3AAADIRiiMaDXUDb/m4cwpwRgrv+ipy +BPCKDe/5CnCA4Bzyz3GfALj/z3Og/pQGdqEWoc9zgABQzz+DANqc4LO5P6PPcYAAtKlLqc9xgADo +pkyxyiCBAO0CD/jxwJYKD/jPcKAAxCdSEAGGQRAAhoYg448A3Qby67nRIaKBS/LPcIAAoCwDgAmA +z3aAADC1USBAgRfy9g9ABIDgCfQUjoHgyiAhAcALIf/KIWEAz3CAAOy1AIBRIICABfLWDGAAEJa0 +rs9wgADstaCgTXCGIPwDjCACgBv0z3GAAEgjAIEB4AChz3CAAKAsA4AYiITgGA7B/oogRw3iCu// +iiHLA0IIgARCD4/6BfCMIAOE7A3B+U0CD/jgePHA1gkP+ADeAt3Pd4AAOLJAJwAbhC4IGTAgQA5R +IACA8A6i/sogggNhvYDlAeYy9w4IIAAA2AkCD/jgeIDg8cAQ2AryNgvP+iIMoAGKIAQA0cDgfu4J +z/rWC6ABiiAEAEoKwAmC4Ab0ZgrgCQDY8vHw8eB48cBmCQ/4z3aAADgIAN0L8BDYuHgLIQCAJA+i +/sogQgMB5YPlIIa294DhyiAhAAANIQPKIQEAnQEP+OB48cDhxc91gADgBhCFgOAh9OoJwAmC4AgK +4QnKICEAAdgQpXIJ7/oR2EIKYAAQ2IDgEaUJ8l4J7/oQ2EYLoAGKIAQAz3AAAHD6Jgpv/4DZUQEP ++OB48cDWCA/4z3aAAOAGz3WAAIAzA4bwJQAQQHiA4PvzJQEP+OB48cDPcYAAoDMAgddwAIAAAAX0 +vgrP+9HA4H4AgddwAEAAAA70z3CAAAArJIAggW4J7/+KIEwMFgrP++/x7fHgeAHaz3GAABwzQ6kY +oShwZNl12h7bkQKgBxi74HjxwM9xgADgBgOh7gnv+hHY1gqgAYogCADRwOB+8cA6CC/4AdqhwYHg +z3GAABgzQKEt9M91gAAotBqFjCDDjwryANqEKAgJACGBf4AAaLJAqc92gADgBgyGgOAH8ooP7/8L +hgDYDKb/2BqlAg7gCItwgOAN8t4KgAQAwc9wgAAUMyCgmg4gCQDYEfA2CO/6EdjCCoAEFgqgAYog +CACKCMAJguCoCOEJyiAhABkAL/ihwPHAz3AAACBORglAC89xgACcMwChz3EAALgLz3CAAAgzIKDP +cAAAiBMmCUALz3GAAAwzAKHPcA8AQEIWCUALz3GAABAzAKEF2AYJYAsLuM9xgACgNwCh0cDgfuB4 +4cXhxkEtAFTBuIPgCfczJgBwgABMbkAngXIUeQB5ANgX8M9xgABQz5gRgABAKAIGhiD9D1IgwAFF +uEV4z3KgAIgkEKIfgbO4H6FK8AHYENvPcaAAyBxpoc9zgABQz5gTjQAA2s92gAC4e8aGQC0BFoYl +/R9SJc0RxXlFvaV5z3WgAIgkMKU/gwLdRCg+DQAhgH+AAIjhlbk/o89xoADwF72hpICKEwMBpqGj +gBTjpqGigFMjw4CmoaGApqHAICEIwCAiDGCAc6FsaGCDc6H4EAOCc6H8EACAE6FKocHG4H/BxeB4 +8cDhxaHBCHXPcNS6/spAwATwHg9gCwHYz3GfALj/uqEE2Buhi3AeoQDanbrPcKAA0BtRoM9wAG0A +EBmhBPD6CK//MNhRIUDH+/OKIJsFAg+v/6lxiiCbBfYOr/8AwQDA13DUuv7K1/NxBu/3ocDgeADb +z3KfALj/GqJ7oj6iz3AAbAQAGaLgfvHA3g3v95hwKHYaCCAASHUGIIEDiHBSCCAApXktBs/3z3GA +ALw3YImA489ynwC4/wXyz3HQuv7KPqIaooDjDvLPcKAAOC4FgAQggA/AAAAA13DAAAAA9vNq2Bi4 +GaIcguB+4Hjhxc9ygAC8N6CKgOXPcp8AuP8G8s9z0Lr+yn6iGqI7ooDlDvLPcKAAOC4FgAQggA/A +AAAA13DAAAAA9vNp2Bi4GaLgf8HF4HjxwCYNz/cacQQgjg/wAAAABCCADwEAAPBBKBEDz3WgAMAv +FSVNFFMVAJbPcKAAhC00vvAggAP6DiAHyXAKJACAz3eg/pAEEPLpcc9wnwC4/zagFm6WIAIAx3CA +AIDZbgkgABDZVSfBFM9wnwC4/zagQCkAIQAgjg+AACDgyXBOCSAABNlMIACgN/IWFQKWKhUBlgCG +oYYHfWOGAoZneAUlDZAveRz0ViIACCJ4D3jA4Fb3xbphucW5MHIS8kQiAAgkuPAmABBTIg8BANsP +I8MDAeLFujByZHgFffL1BSR+gwvyCiHAD+tyWNiMuIojTwjNBC/5uHWRBM/34HjxwCoMz/cEIIEP +8AAAAAQggA8BAADwQSgQA891oP6kA6lwz3afALj/FqbPd6AAwC96FwCWFRcAlkEpEQWiFwCWvg7v +9wHYFScAFFMQAYYWEAGGKhAAhqoO7/cB2BUnTxSYFwCWkBcAlnEXAJZAJQAbFqZAKcAhx3CAAIDZ +UgggACDZViVAEhamQCmAIZYgAgDHcIAAgNk6CCAAENlVJUAZFqbPcYAAIOBAKAAhOGAiCCAABNlW +JYAWFqbPcIAAYOEOCCAACtnFA8/34Hjhxc91oP6cAgDaz3OfALj/tqOA4cokTXDgeOggbQPwIIEA +NqPgeOB44HjgeOB44HgB4uB/wcXgePHALgvP9wh3z3Kg/mwDz3CfALj/VqCA4QDd0fcodloN7/8V +J0AT4HjgeOB44HjgeOB4Yb6A5gHlM/ddA8/34HjxwO4Kz/cId89yoP40A89wnwC4/1aggOEA3dH3 +KHYaDe//8CdAE+B44HjgeOB44HjgeGG+gOYB5TP3HQPP9+B44cXPdaD+1AIA2s9znwC4/7ajgOHK +JE1w4HjoIG0D8CCBACCB4HjgeOB44HjgeOB4AeLgf8HF4HjxwHYK7/eKIAoG63VWC6//iiFED4og +CgZKC6//qXHPdoAATCYAhlEgQIAa9M91gAD0KgCFUiCAAAClCfDPcKAAqCANgOTgHAEFAHYM7/9U +2AAVBBCGIP8OkHDy9YogCgYCC6//iiFFA893gACcNJgXAJZRIICAPvLOC8/+z3WAAKAsyRUAFqW4 +yR0YEJMXAJaluJMfGJDXFQAWpbjXHRgQDoWluA6lAIXIEAAGhiB/jsogIgDKIQIAfAhi+MoiogEB +hcgQAAaGIH+OyiBiAMohIgBkCGL4yiKiAQCFz3GAAFTNxBAABiW4wLgmC+/7CqGKIAoGbgqv/4oh +RQniDI/9f9gKuM9xoADQGxOhf9gQoQDYlbgQoc9xAADQIEIKIAAG2M9xoADwNgSBRiDAAQShlNjS +C+//GNmKIAoGJgqv/yCGAIZRIECAmA8iAcogIgCKIAoGDgqv/4ohBgCBAc/3CiHAD+ty29gEuIoj +BQKZAS/5SiUAAOB48cACCe/3iiBKBuIJr/+KIYYCDgzgCQHYz3ClAAgMAN3PdoAA7DKioASGUSCA +gPAIAvnPcQAAEAeuCSAABtgLyAUggA8BAAD8CxoYMASGUSCAgBHyz3CAAGxFAICA4Av0Qg0v/4og +xgiB4AX0Mg7ABQzwANmeuc9woAD8RCGg4HihoHoIoAcA2M4Kz/uSDwAB6gygCAHY1giv+gHY0QDP +9/HAXgjP94DgiHUA3wnygeAL9AHez3CAACQjwKgF8M9wgAAkI+CogOEJ8oHhC/QB2c9wgAAhIyCo +BfDPcIAAISPgqIDiCfKB4gv0AdnPcIAAIyMgqAXwz3CAACMj4KjPdqAAyB/PcIAAJCMYHtiTAIiA +4IohEAAS8s9wgADdKwCIgOAM8s9wAwBADUUeGBAwpgLYGB4YkAPwMabPcIAAISMAiIDgHPLPcIAA +3isAiIDgFvLPcAIABoMgHhiQz3CAACgAIR4YkM9wgAD8BSIeGJAYFgCWRSAAAxgeGJDPcIAAIyMA +iIDgCPIYFgCWhSABBBgeGJCB4wf0GBYAloi4GB4YkBgWAJaAuBgeGJCA5RnyANiUuM91gABYCACl +cdgGuMoJ7//82SCFz3AAAEwcvgnv/5+5GBYAloW4GB4YkIkHj/fgeIDh8cCYcAXyTCQAiI/2z3CA +AIQGABAFAAohwA/rcs9wAADaDoUH7/h5289wgADENxUgAAEgoNHA4H7geADZSiSAcc9zgADAoyhy +qCDAAfAjgAAB4gV54H8vKEEA4cUA2kokgHHPdYAAwKNIc6gggAHwJcEQAeMlegDZnrkZeQQhgABC +IACAyiBiAOB/wcXgePHAiiDJA3IPb/+KIcwHz3GgAMgfpBECAM9wgABEQQCANYHPc4AABKeWIEEP +EHIA2soibwABg9W5geAB2ALyAIOB4Ab013EAAIgThPcA2APwAdiB4swgYoCcDmH6yiDhAdHA4H4C +4TB5QWlQcMT2IngQeAPwAtjPcaAAyB8eoRDYDqEB2BUZGIDgfuB48cDhxVDdANrPc6AAyB+vo16j +AiBCAF6jAdoVG5iAQNpOowQgvs8AAgAQsA/B/0kGj/fgeADZz3CAAOy1IaDPcIAAUM8ckGK4SCBA +ABB5z3KgAMgfH4IQeAghAQAweQLYFRoYgD+i4H4C4TB5QWlQcMT2IngQeAPwAtjPcaAAyB8foYog +GAgOoQLYFRkYgOB+ANnPcIAA7LUgoCGg4H8ioOHF4caA4M9xgAB460WBJfLPcaAAyB9AEQ4Gz3OA +AFDPQCiNAkITAAF8k9B+2GC7Y2K7CCMDAAJ7CSLCAALYFRkYgM9wgACgLF+hA4AigM9wgADstSKg +wcbgf8HF4H7geOB/ANjhxPwcyL78HEi+4cDhweHC4cP8HAix/BxIsfwciLH8HMix/BwIsvwcSLL8 +HIiy/BzIsuHF4cbhx/wcCLT8HEi0/ByItPwcyLT8HAi/aiSAEOHEaiTAEOHE8cDPdaAAyB8ZFRKW +e9iCDW//iiEEA892nwC4//2GCiHAJ0DZn7k9ps9xoP4cADamUybANAUggA+w/gAAFqbPcAAARBym +Dq//CiDAL3pwGRUAllEgAIIQ8lgegBchFQCWIhUAls9xgABQCACBFqYBgRam/aYH2HYOr/8KuFMg +QQcH2K4Or/8KuM9woADUCxiAQiAACEggAADPdYAA4Ee8HRgQz3CAAFgIAIALIMCEyiYiE8ogYgBm +9EwigKBB9G/YKg6v/wa4z3AAANAbHg6P/89wAADUGxYOj//PcAAA2BsKDo//B9gGDq//CrjPcAAA +BBz6DY//z3AAAAgc7g2P/89wAAAMHOYNj//PcAAAEBzaDY//z3AAAEQc0g2P/1EjgKUN8rwVABaA +4An0QStOJcC+A75c5gHYJPA03iHwjCIEoBzyTCIAohTyCvZMIkCgDvJMIgChFPSG3hPwTCIApAry +jCIBoAz0TN4L8GbeCfA83gfwRt4F8FTeA/CE3gDYgeB4CYEFkxUDFslwCnEqcgokgASdA+/4CiXA +BPHABguv9wHaosHPdoAAfDkIjs91gAD8OEQoPgtAJQAVJ3A2CiAIi3EIjoHH6XFEKD4LQCUAFidw +HgogCAHaCI5EKD4LACVBHkAhAA0U4QoKIAgB2giORCg+CwAlQR5AIQAOGOHyCSAIAdoIjkAlAR1E +KD4Li3Ancd4JIAgB2giOOOVEKD4L6XAAJUEeygkgCAHa3QKv96LA4H7geOB/AdjPcoAA4AYigiWJ +gOES8s9xgAAotHqBz3GAAGSyhCsICTAhQQ5RIUCABPQI2AuiAdgJogDYBKIF2AOi4H7xwOHFgOMI +dShwBvLPcYAAAJoF8M9xgAAAglt60gqv97R5gQKv9wHYz3CAANoGAJCA4AfyANnPcKQAHEAyoOB+ +z3CAANoGAJCA4AfyA9nPcKQAHEAyoOB+8cDGCY/3MHK6ACUAWnAiegHiKHdAKoAgz3GAABDjGnI7 +ZxZ4GmNSiowiw48AIxEAQ/LPdoAAgDhghgDd8LsPJY0QDvLPcqAASC5LgtO6CyWAkAbyAGFRIECC +J/KuD8/+gOAW9M9wgADoLyyQz3CAAKAsHpAQcRP0AIYEIL6PAAA4EA30KgzP/oDgCfLPcaAAOC4H +gaV4B6EM8EYWABaleEYeGBAG8EUWABaleEUeGBD/2RIZQiBCIEIggOJWB+3/IW9hAY/34HjPcQEA +xwPPcKAA7CcmoOB+8cD2CI/3GnA6C6//JNiYcFEgAIDKIcEPyiLBB8oggQ8AAFEmyiOBDwAAKQFc +AeH4yiUBBM9xoACsL0wgAKAYgUj0+rgG8s9wgABQOACAQHj02ADZzgqv/wHaNNgA2ZG5wgqv/wDa +MNiKIQYAtgqv/wDaNNgA2QPaqgqv/xS6xgqv/zDYwriB4AP0ANgH8ATdP9hWCW//qXGpcM9yAQDG +A89xoADsJ0ahz3OgALQPPIOA4SXyARIENnATBQAKIcAP63LPcAAAUibBAO/4iiNFBpq4GKHyCCAL +iiAPCs9wgABQOACAQHjiCCALAdiyDO/+iiAFA4DgBfQE2GEAj/dE2c9woADIHCmgvgggCwHYFgnA +Ab3x8cDiD0/3osEodgokgIAA3891oAAsIEAVEBAAHMQzFPJMJECAQfJMJICAkvIKIcAP63LPcAAA +VCaKI0QFOQDv+AolAAQyaAQhgQ8AAPz/Jgqv/yzYEIUCIAAEjCAPigr3zgmv/yzYUSAAgAh39PMI +8CCGgLkgpl4Ib/8/2LIJr/802PW4DfIghoG5IKZGCG//P9g02ADZANp2Ca//lbowvwIcxDOI8A95 +ELkFIYIPAACC/c9xoADsJ0ahBCCADwAAAB9IuIa4ELgFIIAPAABC/QahEIUCIAAEjCAPigz3i3FC +Dm/4iiAPDQAUADFRIACA8fMI8CCGgLkgptoPL/8/2IHBIg5v+IogTwwEFAAxUSCAgAjyIIaBuSCm +ug8v/z/Yi3WKII8P/g1v+KlxIMAIuAIcBDCKIM8P6g1v+KlxIMECFAAxJXgCHAQwNvDPcQMAQv7P +d6AA7Ccmp89xBAAC/ianhrgQeBC4BSCADwAAQv0GpxCFAiAABIwgD4oM94txog1v+IogTw8AFAAx +USAAgfHzCPAghoC5IKY6Dy//P9jPcAYAAv8Gp0AkgTB2DW/4iiDPDkDYHg8v/wIUATECFAAxhQZv +96LAz3GAAKAsAIECoQOhz3CgADguiiH/Dyegz3CAAIA40QYv+YohCADgePHApgvv/uHFgOBa8s91 +gACAOAAVBBAA2VEkAILKIcEPyiLBB8oggQ8AAMkbyiOBDwAARwVQBqH4yiUhAIQVABBXHVgQWB1Y +EAHghB0AEM9wgACQBiCgVhUAFgHgVh0YEM9wgAAwtS2IgOHJ9kyIUHHF9vYdQhD4HYAQEg3gASTg +AIXtuBD0jbh2CGAHAKWA4Ar0C8gFIIAPAAAA1AsaGDCeCY/3AIXuuAryrrgeCy/5AKWF4IQNIfnK +ICECsQVP9/HA4cUIdYogFA0aDi//qXEA2M9xpwCISYHlyiDhAA6hjQVP9/HAFg1P9891gACQOqCN +AN6A5cCjGvSB4MwhIYAW8qDiRPbAowDYCvDA4gbYBfZCIgAIQ7gC4ACjUHkQuRB9iiCUDb4NL/+l +eTkFT/e4cEDcACEAg/HADgAkAJhxjCACgIv2CiHAD+tyz3AAAMkUNQWv+IojyA/PcIAABHL0IAAB +z3GAAARzBCh+AS9w9SEBAUIoAwTBu1K4BCl+AS9xQikCBMG6UrmB48AgaQCB4sAhaQCIID4AiSDB +D4ghPgCJIcEPgODWICsIgOHWISsIvgkAANHA4H7gePHAKgxP96HBOnEA34DgyiHBD8oiwQfKIIEP +AADKFMojgQ8AANMCyiTBAKAEofjKJcEDz3GAAJQ6QLHPcYAAljrgsUwhAKDKJc4TaAAuAMomzhMa +d1p3BfDJdxp1anBAIFMAi3EB2q4J7/8A2wAUDTEvI8gkqXYpvci+v+XZJSkUTCIAoMogwgPKIYID +yiICBPgNIgDKI0IDyXDeDu//qXFCIVEgTCEAoLAH7f9AIlIgyXBmCSAAqXHJA2/3ocDgePHAagtP +93pwz3CAAJA6AIiA4BpxbPTPcYAAqAeliQSJHWVydcohzA/KIswHyiCMDwAAyxTKI4wPAAA4A8ok +zATIA6z4yiVMAwDdAN4o8ADZz3CAAJE6IKhKcIrZ5g7v/ypyz3CAAJE6AIhTJcEQGLnDuBy4BXnP +eBC4BXmKIFQN5gsv/+V5LyGIBBC5iiBUDdYLL/8FIUEEAebPfgAggS+AAKgHJokBaRB2OgAKAEAr +giBUerV61HrPc4AAeLZXY4DnEm3q80AnkhAvIogk1HiA4c9ygABstjQiEQC59QHZuPEB5a99g+Vi +B8v/1QJP9/HAigpP989zgACWOkCTUyJNgCHyguUk9M91gACoBwmtKK0ihc92gACUOgCWKd0Svc93 +gACROhUlDBAgpOCPgOcG8lYgDwjwf/V9IKUB4AC2BvDPdYAAqAcLrSqtAeKVAm/3QLPxwCIKT/cI +dhpxz3WAAJY64JUL8Mx/zgtv90ApQHFFuEIN7/8KcSCVjCEQgLT2WQJP9+B48cDiCU/3CHbPcIAA +kDoAiHpxgOChwRpyhvTPcYAAqAeliQSJHWVydcohzA/KIswHyiCMDwAAzBTKI4wPAACFA8okzAQ8 +Aqz4yiVMAwDfAN0g8AEUgDABHhIQBhGBIIDhARSAMAP0AR4SECDAAxSCMAEUgTAYuBS6BXoCFIAw +ELgFeooglA1aCi//RXkB5a99z3GAAKgHACEABAaIAeAQdXoAKgAAIREEQCuAIBR49Xi0eM9xgAB4 +tjQhEgBTJ8AQGLiveRC5BXmKIJQNEgov/wUhgQRMIgCgANkY8otxSnAC2uoOr/8A24DgtfUKIcAP +63LPcAAAzRSKI44GCiSABIEBr/hKJYAAAR5SEAYRgCCA4L71AR5SELrxAefvf4PnLgfL/xUBb/eh +wOB4ANuA4GCpYKrG9o7gBPZgqeB/YKqi4If2wOAF9gHYAKkR8OTghvaMIAKDyiCsAMn2jCBChIn2 +jCBCiQf2A9gAqQHY4H8AquB+8cByCE/3o8FKIQAgi3EqcEogACEKckIOr/8qc4DgD/QKIcAP63JT +2Aa4iiMFAQokQATdAK/4CiUABCDCgOKK9gDAQSgBAlMhxABMJMCAyfYB2c9wgACQOm8CIAAgqM9x +gACoB0CpAhkCAUEoDgNTJsUQAxlCAUwlwIDKIskHyiCJDwAAwhTKI4kPAABYAYAAqfjKIckPQSgC +BFMixgAEGYIBQSgCBVMixQAFGUIBTCZAgMwl7IDKIckPyiLJB8ogiQ8AAMMUyiOJDwAAXgFAAKn4 +yiSJAUEoAgZTIsQABhkCAUEoBQcHGUIBTCRAgMwlbIDKIskHyiCJDwAAxBTKI4kPAABkAQgAqfjK +IckPBBSFMIwlAYS+ACwAARlCAQohwA/rcs9wAADFFIojRQrhB2/4mHPPdYAAeLYA3wPwAefvf0Eo +AQLDuTB3dAAKAADeEvBAKYEgNHkKFIAwFSFBAQHmz34UeblhABkEBIAgAiMvIAgkAMBBKAEGw7kB +4TB2vgfK/4LBCnAC2s4Mr/8A2wsUhDAvKAEBTiCFBy8lRwFMJcCArgfL/wohwA/rcs9wAADGFFkH +b/iKI0YCQCFRIC8hRyRBKAEEw7kycW4Hyf8F8EwmAIBgB8n/QSgBBcO5gOEKdbIALABKIAAgSiIA +IAXwQCJSIC8ihyRBKAEDw7lScYIADABKIQAgFfACvtR+ChSAMBUmThFAIVEgLyFHJBR+ACaAH4AA +eLagsIAlAhOwfQDAQSgBBwHhMnG2B8z/MLjDuAAgDgSCwalwAtoKDK//ANsLFIQwLygBAU4ghQcv +JUcBTCXAgKQH6//PfgohwA/rcs9wAADHFJUGb/iKI4YIQCBQIC8gByRBKAEFw7kScVwHyf/T2Qi5 +ANgD3s9ygABstgDbsmh0fV1lILUB4297guNWIQEIMHm39mG+gOYB4A94MPcJBi/3o8DxwJIND/ei +wUDAQcJAKBQFQCkXBQDdQCoTBUArEgUB3kolgCGpdwTwCnXKdwDAFbgTeBQgwAU6Dy/3B9kCIFAD +AiBAIyoPL/cO2cx+CiFALgQpPnAvcKx+ACENdR1lAcAVuBN4FCCABAYPL/cH2QIg1gMCJsAj+g4v +9w7ZBCh+BC9x7H4AIcB0GWFCLQAVYgjv/1S5QiVVIEwlAKAB5owH7f/PfjUFL/eiwOB48cDqDA/3 +CHa6cc9wgABQzwCQANlKI0AgSiJAIIYg/ACMIAKAwiPCJEoggCDPcIAAtKkrqJpxz3CgANAPJRAP +hiUQDYZivhAQEYaxdkAkVCCS96J+EnbKIC4gng5v9+lwTCMAoJhwANgT8oXnCfKL5wXyCPBKJgAg +M/AB2ALwAtjPcYAALCMkgQshAIAD8gDaAvAB2gAgQCOaC6/4KnEKJgCgH/JMJACCEvLPcIAAlCsW +IAABQIAGiBB3IPSA4h7yqXBgeqpxCiIAoAvyInXPcKAA0A8QGFiDTCAAoK31z3Gg/ogFz3KfALj/ +TCYAoMwiIqAS8gDYE/AKIcAP63LPcAAAMRGKIxcLSiQAAIkEb/gKJQABKHAWohPYOOE2ohC+BSYB +FTaiEQQP9+B48cDhxc9wgAAUOwgQBABMJACAyiHBD8oiwQfKIIEPAABpGcojgQ8AANABQARh+Mol +AQHPcqUACAwIEgUAANlMJQCAzCUihMohwg/KIsIHyiCCDwAAfRnKI4IPAADXAQwEYvjKJCIAQNgC +os9wgADIv2CACvD0IE0Az3CmAACANXgB4aCg0uGEKwIKACRADrT3pBADAc9xpACgP32hphAAAR6h +CBpAAa0DD/fgePHAgiQDNotwz3GAAMxu5gsv99jaSiTAdgDZqCBAAxYkQDBhgECQK9gSuAHhVXhg +oDB5gCQDNtHA4H7gePHAEg8gAEfYANrPcasAoP9ZoQfYGqFYodHA4H7gfuB44H7gePHAz3GAABQ7 +OIGA4XQOAgDRwOB+8cDPcYAAFDs9gYDhEAhCANHA4H5pB8AJZQfACWEHwAkA2c9wgADIvyGgjQGg +AiKg8cDhxc91gADIvyoMoAKpcLhwAIWA4BPySiSAc89zgAB4OADZqCCAAkCDRCm+AzIiQg6wch7y +AeEQ8ADZSiSAec9ygACUeKgggAJEKb4DMiJDDrBzDvIB4QohwA/rcs9wAACGGYojRAGxAm/4SiQA +AJECL/cocOB4z3CAAMi/QICA4iOAC/LPcIAAeDgAgEQpvgMN4DIgQA4I8M9wgACheEQpvgMyIEAO +4H7geM9wAAABP89xqgDwQwWhz3AAAD49BqHPcgAAPT1HoYogzA8IoQnYjLgJoc9wAAAWHAqhz3AA +AB8fC6HPcAAAHBYMoZHYBLgNoc9wAAADPw6hT6HPcAAAPT4QoYogxA8RoeB+4HjxwHYJD/eCCuAC +AN2ODSAAB9g+Du//GnDPdqQAuD2sFgAWz3elANjLOdmiuKweGBCsp89wFQArK/YeWBOaHhgQiiDE +AJ8eGBAa2PMeGBD0HhgQZNjIHhgQqtjJHhgQadjMHhgQwNjNHhgQz3ClAAgMPqAuD8//JgogAApw +GNiVHhgQz3GAALgqoaHI2AKhAKEDoc9xAgAAGc9wgADIJNQYQACU2AunQdnPcKUAzH8toM9wpAAM +gKKgIQEP9/HAGggAAEIPz/9GDgAAkglP+tHA4H7gePHAmggP989wgAB0zEAgEgYIcc9wgACsBiCg +AN7EqATfRC4+FwohQC4AIYB/gAB0zEYJ7/gc2YQuChIAIY1/gADkv6lwMgnv+IohCgKELgIXACGA +f4AABMoacB4J7/ic2QAhkSQAGUAjYb+A56EdGBSwB+3/AeaBAA/34HjxwBoID/cId1pxOnIacwoj +ACGKJhsYyXD+CO/+6XFELz4XACGNf4AAdMzJcOoI7/4hjclw4gjv/iCNyXDaCO/+Io3JcNII7/4j +jfCtAdgRrQEdghQAHUIUAh0CFAMdwhQSHQIUEx3CFGYJIADpcAUAD/fgePHArg/v9kQoPgcacDpx +z3GAAHTML3AaYVGKgeIbYQ/yCiHAD+tyz3AAALIoXtuKJMMPFQBv+AolAARMIMCgCfLPcoAArAYE +GgIEOGAAogGLIItSiw4MIABzi6oIgAEKcIYNIAAqcakHz/bgePHA4cUIdUIPoAYA2DIKD/tE2c9w +oADIHCmg/gkv9xzYz3CgAKwvGID6uAr0iiARAwYI7/5L2SILoAKpcP/Zz3CrAKD/OaA4oB4PIAGp +cHUHz/bgePHA4cUCDO//CHXWCCADqXBdB8/2z3GgAMgcCKGlAS/3BtjgePHA0g7P9qLBooFgkM92 +gABIB7h7o4FkfWCGpXumgQGQuHingWCmpHihhkAhDwSA4qV4AaYc8gGBAhzEMDC7BBzEMAAcBDAg +gYt1YHmpcAGHIYYCHEQwMLkEHEQwIIcAHAQwYHmpcADYAKYBps0G7/aiwOB48cBeDu/2nNkIds91 +gAAEyoQoAgcvdxoPr/gAJUAe6g6gAfhlBgkgAMlwnQbP9uB48cAyDu/2AdqEKAIHACGNf4AABMrP +cIAArAYAgCh2IIgAhpkdghBMhTC4geIPeEb0EHED2pkdghBA9ATYmR0CEBCFgOAM9AXYmR0CEAiG +EqUDhhGlHIYUpReGE6WpcG4LoAHJcRCFAeCQ4FAAJQAQpQbYmR0CEKlwXg2gAclxqXB+DqAByXGp +cN4MoAHJcalwyg6gAclxqXDWDqABqXGYFYAQgeAK9AfYmR0CEHIIIAACbQDYmB0CEOUFz/bxwOHF +CHWEKAIHACGAf4AABMrPcoAA0EZIklEiQIAO8iCBheGK9wDZLaAuoO4NoAEvoPYIIACpcLEFz/aE +KAIHACGAf4AABMrPcYAA0EYokVEhQIAD8gHZLKAA2eB/MKDxwBYNz/YIdSoJIAAF2ECVIZUIukV5 +z3KkALg9mxpYACKVz3OkALRFyhpYACOVyxpYACSVxBpYACWVxhpYACaVxxpYACeVwhpYACiVwxpY +ACmVxRpYACqVoxpYAM9xgACgLCOBKIFRIQCAAN4L8kyVK5VbekV5UxtYgC2VVBtYgAXwUxuYg1Qb +mIMulVYbWIAvlVgbWIAwlVUbWIAxlVcbWIAylVobWIAzlVwbWIA0lVkbWIA1lVsbWIB6Dc//xQTP +9uB48cCEKAIHz3GAANBGKJFTIUGAz3KAAAbKL3AF8iIP7/9YYNHA4H7gePHA4cXPcIAAcDgggAHd +YHmpcOe4J7hSIAAAyiUiEMohQgPKIeEBwLgTeMK4z3KnABRIC6Isos9wqgDgB7OgYQTP9uB48cDh +xc9xoADIHKiBCKGiDu/2BthFBO/2qXDgePHAygvP9gh2z3WAAMi/AKUhpVitKgnv/3mtngnv/wOl +BKUG8HYOb/6KIIkMz3CgAHhFAIAEIIAPcAAAAEEoPoUA3fL1fgugBqlwz3GrAKD/uaEH2BqhuKHS +D4ACgOYB2MB4DOCiD6/5AdnNA8/24HjxwEoLz/YId891gADIvxiNSHYQchpxOnMI9IDmBPQZjTJw +BPQA2APwAdgvIgcg6XBODKACyXEghTB3ANgG9CGFEnHMIiGgA/IB2C8mB/AarSryiiBbCO4Lr/7p +cYogWwjiC6/+CnGKIFsI2guv/slxiiBbCM4Lr/4qcelwCnHJchIP7/8qcyoIQAMBhc9xgADYBgCx +AIUBsRiNBKluDyADKnAJ8IDnAdjAeAzg6g6v+QHZ9QLP9uB48cAIcwDZAtqEKwoCACGAf4AA5L+E +KQQPBOBqDKAGJ3BhuoDiAeEy99HA4H7xwM9wgACY7zoLr/iKIQkMz3CAAMAvLguv+BTZz3CAAOQy +Iguv+BTZ0cDgfvHAMgrP9qLBOnAacQDdWg7v/wfYmnAC2alwWnB6cQDbNGgCcSh1FCEAIGhywoUE +EA8F2H/DhQHixH+D4uV7IOW29wGBAhzEMDC7ABwEMCCBBBzEMGB5i3BCI0EggOG+B+3/QCJAIAIL +7/+KcBkC7/aiwOB48cDGCc/2OnBacc93gAAoRwyPz3aAAMi/pYaGIP8BQ7gOJQ2Qz3CAAGA4IIDK +JWIQYHkE2IDgI/IajoDgzCUhkB3yANgQ3RpwArgVeMdwgACYOiCAgOEH8iKAgOEU8mB5KnBhvYDl +QCBAIC/3ANgargyPhiD/AUO4BabCCy/3SnChAc/2CiHAD+tyz3AAAGUZN9sKJAAEzQEv+Lhz8cDh +xQh1IJAClUGVELgFeinYErgVIEEAQKEglfAgQQAwcg7y/gmv/oog0QMClSGVELgFee4Jr/6KINED +cQHP9vHA4cXPdYAA5MwghYDhHfLSCa/+iiBKDACFgOAH8s9xgAAQzQChCIUIoQDYAKUEpTIJr/kJ +2C4Jr/kD2M9wgACcZ8IKQAjPcIAAvD2SCeAAA4CKIAoDjgmv/oohDwIA2c9wgAB8QQkB7/YvqKkE +T/nxwOHFiiDJA2oJr/6KIQ4HNgpgAwDdz3CAAGRndgpACM9wgACAZ24KQAjPcIAAnGdiCkAIiiDK +AToJr/6KIc4Iz3CAALw9oqCqCK/5A9jPcIAAREGjoKkA7/ahoPHA4cXPcaAArC8cgb2BBH3PcIAA +3CsAiIHgCfTPcMDfAQAcoSjZGLkb8IogyQPqCK/+iiFPCYogiQPeCK/+qXH8vQryiiCKBc4Ir/6K +IQ8LdgtAA/a9JAyC+QDZm7nPcKAA0BsxoD0Az/bgePHAIggAAN4JQADRwOB+4HjPcIAAvD0AgIHg +Adjgf8B48cCiD4/2z3CAAFTNx4DAvoHmAd7PcYAAKEMAgcB+4bgs9IG4AKHPdaAAwC8Thfq4BPIT +hbq4E6UC2BGlz3CAAGA4IIBgeQDYiOAM9B4IYAoK2Azwz3CgAKggDYDk4JD3EIVRIACA+PNCCO// +yXAVFQCWgLgVHRiQlQeP9lwVBBBAFQUQCiHAD+tyiiBMCaEH7/eKI4YN4HjxwPoOj/YIdc92oADA +LxqGObhSIAAAUyARABSGUSDAgAf0Lgnv/iTY8rgA3wLyAd9RFgCWgOAL9KMWAJYEIIAPAAAAD4wg +EIAD9ADYAvAB2BpwBCGSTwAEAADPcAAACBzuCM/+P7hSIAMABCCATwIAAADXcAIAAAAB2sB6DHCG +ID0AgOAB2cB5USCAwQjyz3CAAOQHAICB4ADYA/QB2AHe5b3KIYEjTCEAoCjy5r3KJ2EQgOci8uO9 +yiJhIEwiAKAc8uS9yiNhAIDjGPLivcogYSBMIACgEvLhvcoiYQCA4gzy4L3KIWEAgOEI8lElwJHK +IGEAgOAE9ADYA/AB2FkGr/YPePHABg6P9qfBCHbPcIAATHAggAGARcFGwIogygHSDm/+LWjPcIAA +vD0CgETGDNkVJAIwz3CgACwgsIDPcAEA0ENAwAHYQcBCwBDYQ8BFggDYCHOYcLhwACWHHwAAAH3+ +DW/82HANBq/2p8DgePHA2gvP/c9yoADALwDZiBpAABOCi7gTos9wgAAcIgGQELhFIAAPwBoAAM9w +gADQQIYJb/kgoNHA4H7gePHAXg2v9gDZm7nPcKAA0BsxoK4I4AAA3oDgJ/LPcIAAVB4xgIDhz3WA +AOAqDPLPcJ8AuP89oCSFAeGzubW5uLkkpTagz3CAAOQHIIDPcIAA/EDwIEAAQHgAhfG4BfLPcJ8A +uP/doGUFj/bgePHA6gyv9lTZGnDPdoAAVM2nhsC9geUB3cB9wg1v/oogyQOKIEkHtg1v/gpxz3CA +AKAsAIDEEAAGUSBAgRvyz3CAABwiAZDPcYAA6AfggTzgGWdk4RJxj/cKIcAP63IfZ4ogzAha2wok +AAQVBe/3VSdFFgeGg+AA3w70z3CAABwiIZDPcIAA6AcAgDzhOGBk4AIgECDPcIAALCQAiFEggIAH +8s9xoADAHQCBoLgAoQvIBCCAD/7//wMLGhgwC8iHuAsaGDDiDK//qXDPcZ8AuP9dgc9wgACIBkCg +/aEc2Rfwz3CgAMg7NoBWgIYh/wiGIv8IRXlWgIYi/whFec9yoACoIE2C5OJQAAUAgOHq9U4PgADP +dqAAwC9RFgCWgOAG9Ax0hCTCnyXyF4b5uCH0z3CAAEwmAIBRIECAG/QKIcAP63IKJAAIURYFloog +TAgxBO/3f9s4EAQAWBAFAAohwA/rcs9wAACZIRUE7/cv24HlKfSKIMkDZgxv/ofZEIZRIACAGvTP +dYAAaDgghWB5AdiF4Af0IIVgeQLYguAM8kAWBBAKIcAP63KKIIwIjdvRA+/3uHOKIBABEaYQhlEg +AID99RSGq7gUps9wgABMJgCAguAS2MAoIgbKICEAzyBhBhmmz3GgAMgfGBEAhqG4GBkYgIogEAAR +oQnYCLgPoROGqbgTps9wgABUzQeAg+DMIOKBB/RAKIAgn7iIHgAQvg8ACM9wgAAoQyUDr/bgoOB4 +geHxwAT0Tg0AAATwCg0AANHA4H7xwBIOoADhxUYMb/ka2M9wgADUQACQz3KAADzNUiABAMC5AeHh +uCCqANkL9M91gABEQWqFgeMF8muFgeMC9AHZI6pBKIECwLk0qim4wLjPcYAAvD3NAq/2AKHgePHA +Sgqv9oogiQrPdqAAwC+3hvqGiBYQECILb/7o2YogiQoaC2/+qXGKIIkKDgtv/ulxiiCJCgYLb/4K +cTCG/gpv/oogiQozhvIKb/6KIIkKB9jPd6AAyB8ZHxiQAdgIcQhyCHOOCe/+mHAuDK/+VNhRIACB +CfTPcIAAiAYggM9wnwC4/z2ggBYNECK9Qg0gCKlwiiCJCqYKb/6pcc9xgABUSRKBuGASoQDYiB4A +EAnYCLgOp/kBj/bxwJoJr/YA2c91nwC4/12Fz3aAAIgGQKY9pRzZFfDPc6AAyDs2g0QhAgc2g4Yh +/wglejaDhiH/CEV5z3KgAKggTYLk4on3gOHr9UoKz/+A4BD0ANgt8DgTBABYEwUACiHAD+tyz3AA +AJkhvQHv9y/bAIYdpUIMoAgA2IogCQUGCm/+iiFMBs9xgADkByCBiiBMBl4IoAAD2uYJoAAD2I4I +z/sI2F4NIACKIf8PAdhZAY/24HjxwM9wgADkBwCAg+AH9EoMD/wWCc///ghAANHA4H7gePHAugiv +9pbZGnCmCW/+iiAKAwDdCiGAL4AAdEEF3892gADUQLV+A4ZMIECgFSFMIwCkCfSKIAoDdglv/pzZ +AdgDpmG/gOcB5a99K/cB2c9wgABEQcUAr/ZEGEIAz3CAAOTMAdkkqCWoz3GAANRAAJGGIBgAqLgA +sdrYA6nPcAAAUMMBoc9wAQCghikAoAACofHA4cXPdYAAfEEOjYHgocE99IogCgMKCW/+ydkvjYTh +iiAKA1T2+ghv/s3ZD42A4An0iiAKA+oIb/7R2TYP7/8B2A+NAeAPeA+tIfDSCG/+2tkA2A2tDq06 +CCAAD61yD8//ANjOCe//jLjPcK0LvrpAwItwBNl92j3b8gkgBhe7iiAKA5oIb/7x2SEAr/ahwPHA +4cWKIAoDhghv/q/Zz3KAAERBRBKAAIHgQCIDDBP0SiRAcQDZqCAAA/AjTQDPcIAA4EA1eAHhoKAv +eQDYRBoCANkHT/bgeADaz3GAAHxBT6kB2A2pTqlMqVCpUalSqVOpVKmKIAoDJQBv/ofZ4HjxwDIP +b/YB2s9xgACgLGOBeIuE4xr0AIHPcYAAvD3EEAAGJbhSIAAAIYHAuAHagOHPcYAAeOsmgcB6gOHM +ICGAzCIigIDyhfBRIACAB/LPcIAAPM0AiIHgA/SYcgPwSiQAAM9woAAsIHCAz3aAAERBRYamhgIj +gIAA2soibwACI0+DAN3KJW8Q13AAQAAAyfeA4gfyAiOAD04AASAFptd3AEAAAMj3gOUG8gIjgA9O +AAEgBqYBhoDgFvLPd4AA1EAAhuGHH2fxcMb38XPK9xBzhvcI8BBzhPfxc8T3ANgD8AHYAaYggcQR +AwZBK0EBUSEAgMomYRAG8imGg+FvJgsQz3GAALw9IYHPd4AAeOvmh4DhAdnAeYDgAdjAeIYnfx6G +59EjYoEA2wL0AduA5cwiIoDMIyKAzCAigMwhIoDMJiKQBPQA2AbwTCQAgPzzAdhJBk/28cCKINAH +xg4v/oohRgByCQADz3CAAOwyBIBRIICABAqC/QnZCLnPcKAAsB80oNHA4H7gePHA4cUIdYogyQOO +Di/+iiHFBYogiQOCDi/+qXHPcYAAvD0BgaZ4AaEA2c9wgABUzTCgJYDtBW/2MaDgePHAcg1P9qHB +CHaKIIkHTg4v/slxz3GAAOQHiiCJBz4OL/4ggc91gAC8PQGFz3GAAFTNBX4QgYDgwaUG9AHYEKEF +gRGhdggv/YtwAMHPcAEAFDUwcAvyz3ABANBDEHEH8s9wAQDEWhBxBPTuCy/8AdgA3s9wgABEQcGg +Yg0v+QfYWg0v+QjYqg7AAs9wgABkZ+oOwAfPcIAAgGfiDsAHz3CAAKAsAIDEEAAGUSBAgQvyiiBK +AqYNL/4cecIPIADJcATwlg1gAAOFFQVv9qHA4HjxwKIMb/a4cGYN7/8ocIDgANnKIEEAKPLPdp8A +uP8dhs91gACIBgClPaYc2RXwz3CgAMg7NoBWgIYh/wiGIv8IRXlWgIYi/whFec9yoACoIE2C5OKK +94Dh6/VCDa//qHAghT2mqQRP9jgQBABYEAUACiHAD+tyz3AAAJkhsQSv9y/b4HjxwM9wgAAMtQiA +USDAgTP0z3GAANRAQoEhgc9wgAAoQUCgz3CAAERBJ6CKIMkD2gwv/oohxQ+KIMkEzgwv/oohRgDP +cYAA5AcggYogRgAmC2AAAtquDGAAAtiKIMkDqgwv/oohxgD+DKAGAtjWDM/4B/DPcIAAvD2KDGAA +A4DRwOB+4HjxwJILT/YIdSh2iiBJB3YML/6KIQYHg+Ud9M9wgAAcIgGQz3KAAOgHIII84BlhAYJk +4ThgEHYP9wohwA/rcoogjQGKI8YHSiQAAN0Dr/cKJQABiiBZBS4ML/6KIUYIz3CAAFTNz3egACwg +QBcQEFoOYACnoFoIQAjPcIAAACskgCCBAgwv/oogSQfPdaAArC88hfILL/6KIEkHiiBJB+YLL/7J +cY4Kr/sB2AIOr//JcAHYTgugAApxHIX5uAj0GIWIuBilng1v9qDYCPDPcYAAKEMAgYK4AKGKIEkH +pgsv/oohxwBmCM//ngxAANCHSgqv+wHYcg4AAIogSQeGCy/+iiFHBl4L4Aky2M9wAIIBABylag7v ++AImABQA2OIKoADJcYogGQVeCy/+iiGHCskCT/bgePHA4cXPcYAAPM0AEYQATCQAgKXBDvYDEYUA +TCVAgAryCiHAD+tyiiANAckCr/fx20wkgIAl9AOJgOAj9ADYAKmKIMkICgsv/vjZiiAJBgILL/75 +2c9xgADkByCB+dgH3VoJYACpcuYKYACpcM9wgAC8PW4Jr/+joGIJj/9y8M9xgADkzASJgeAM9AWJ +geAK9M9wAAD//zIN7/8A2YDgYvLPcYAAoCwAgcQQAAZRIECBBfIDgRiIhOAY9IogyQiSCi/+iiGE +BIogyQSGCi/+iiHEBM9xgADkByCBiiDEBN4IYAAC2gLYPPDqDUAAjCAQhXAABQDPcIAAvD0AgIHg +BvT6Cs/4gOAu8gDZz3CgACwgsIDPcAEAFDVAwAHYQcBCwEPBRMEG2QhyANuYc7hzACWHHwAAAH2G +CS/82HOKIIkEDgov/oohBArPcYAA5AcggYogBApmCGAAAdoB2O4JQAB5AW/2pcDgeOB+4HjxwPYI +T/bPd6AALCDQh89wgABEQQiApcECJgIQz3CAADzNz3OAAHjrZYMjgAUrfgA3cgHZQIjCIU4AgeIA +3QXyA4iB4Bn0z3CAALw9o6CKIMkDkgkv/s7ZiiBJBIYJL/7P2c9xgADkByCBz9jiDyAAANoA2FPw +z3KAAKAsAILEEAAGUSBAgU3ygeFL9AOCGIiD4Ef0z3CAALw9AYCA4EH0z3CAALQqAJCB4AHYwHgM +uNdwAAAAEDXyiiDJAyYJL/7V2fCHz3ABANBDQMAB2EHAQsUR2EPAANiMuETAqXAM2QHaqXOYdbh1 +ACeHHwAAAH1eCC/82HXPcIAAREHIoIogSQbiCC/+2NnPcYAA5AcggdjYPg8gAAjaCNjGCEAAQQBv +9qXA8cDhxQDZm7nPcKAA0BsxoIogSgGqCC/+iiEIDc9wgADsMgSAUSCAgIogSgEM9IohSA6OCA/+ +z3CAALw9fghgAAOAUvB6CC/+iiGID+4MD/+KIEoBaggv/oohiQDPdYAAoCxNhT6VUyIAAJ4PYAQB +24ogSgFKCC/+iiFJAwCFxBAABlEgQIEN8gOFGIiE4Anyz3CAAFTNB4BRIMCABvKKIEoBiiFJBcfx +iiBKARIIL/6KIckGiiDJBAYIL/6KIUkHz3GAAOQHIIGKIEkHXg4gAALa6g8gAALYiiBKAeIP7/2K +IYkHZQcP9vHA6g4P9s9yoAAsIDCCz3CAAAArBIDPdoAAREEAgKCGAiFDA9dzAACgDwDfy/fPc4AA +eOulg9W4QS2DEGJ9sXCE9wGGgOAN9GOGgePhpg30iiAKAoIP7/2KIQoJP/AyCC/5B9g78M91gADk +zACFgOAZ8gWFgOAX8jCCAnnXcQAAUMMB2MIgDgCA4CnyLg6P/wSF5aXjpqC4BKVmCO/4ANgd8IDj +BfIGhgJ5gOHX9lMggMEEphP0iiDJBB4P7/2KIUsCz3GAAOQHIIGKIEsCdg0gAALa/g4gAALYeQYP +9uB48cAODi/2iiD/D6HBIg0gAEDAgeA89M9wgACgLACAxBAABlEgQIER8s9wgAC0KgCQz3WAAOQH +geAB2MB4DLjXcAAAABAU8oogSQSuDu/9iiFFB89xgADkByCBiiBFBwYNIAAA2o4OIAAA2FLwiiCJ +BYYO7/2KIUUIIIWKIEUI5gwgAAXabg4gAAXYQvDPdYAA0EAAhYHgAN4J9IogygpaDu/9iiFFCsCl +MvDPccDfAQDPcKAArC88oM9wAID//7II7/8B2YDgJPLKDmAGi3AKJQCQHvKKIMkDHg7v/YohxgCK +IAkFEg7v/YohxgHPcYAA5AcggYogxgFqDCAAA9r2DSAAA9ipcHIJ7/8AwW0FL/ahwOB48cC4cM9w +gADkBwAQBADPcYAAAD1ALIAAFHgVIEABAGGK4Ar0CiHAD+tyiiDNAFkFb/eg26oNAADRwOB+4H7g +ePHA4cXPcIAAoCwDgBiIhOAN9AohwA/rcoogTQGKI4QNSiQAACEFb/e4c/4IQAAIdc9wAAC/3+YP +r/8A2YHgBfSMJRCVHPeKIAoLWg3v/YohBQFOC+/7AdiKIEkERg3v/YohRQLPcYAA5AcggYogRQKe +CyAAANoqDSAAANixBA/24H7gePHANgwP9oYJAAiKIEoBEg3v/Yohhw3PdYAATCYAhYLgz3agAKwv +FvIYhvq4CvIahlIgAABRIACABPIchvy4CvKKIEoB2gzv/YohCAAqDE//HIZRIACAHfLPcIAAZGcA +gEIgAIDKIGIAgOAT9M9ygADUQAmChOBN989xgACgLCCBxBEBBlEhQIED8gHgCaI8ho4M7/2KIAkL +Jg8P93oNT/2B4AzyAIWC4Ajyz3CAAOQHAICD4KwLwf/pAw/28cB6Cw/2z3CAALw9AICB4BTyz3WA +AOQHIIWA4cwh4oHMISKCCPKKINEAAN6iCiAAyXLApYYOj/utAw/2CiQAgPHADPIKIcAP63KKIE0C +iiOODbUDb/e4c5oKT/8mDu//AtjPcAEA0ENKC+/7AdnRwOB+4HjxwAYLL/YG2GYLz/jPcIAAQCNK +JAAAABgAAc9wgACgLAOAGIiE4Av0CiHAD+tyiiDMDerbXQNv97hzz3CAAABkzgyAB89woAAsINCA +z3WAAERBIIUCJkAQ13AAACBOBvZGDO/4B9jApc9wgAB46waAUSAAgDAM4vjKICICzgtgBgDY8QIP +9uB48cB6Ci/2iiDJA14L7/2KIcQD1grv+AjYz3aAAOQHAIaH4MwgIoJV8s91gABEQSGFgOEH8s9x +oAAsIDCBIKXPcYAAeOsmgVEhAIBD8oTgzCBigSX0z3GAALw9AoGA4Aj0AIGB4DXyA4WA4DPyiiBK +AvYK7/2KIcQJiiDKAeoK7/2KIQQKANnPcIAA5MwpoCqgANjqC2//jLgb8IDgzCCigRf0A4WA4ADf +DPLPcKAALCAQgAKliiDJA64K7/2KIcQMiiDJA6IK7/2KIYQN46UghofhzCEigmLyz3WAAERBAYWA +4AX0A4WA4Cnyz3CAALQqAJCB4AHYwHgMuNdwAAAAEB30iiBKAmIK7/2KIYUAegzv/wHYz3CAALw9 +AICB4D70A4WB4GgLofjKIGEAA4WA4FwLofjKIKEAMPCA4Q30z3GAAOTMCoEJoQDYCqHPcKAALCAQ +gAahz3CAALQqAJCB4AHYwHgMuNdwAAAAEBb0z3CAALw9AYCA4BD0iiDJBOoJ7/2KIYUGIIaKIIUG +RgggAALa0gkgAALYSQEP9s9ygABEQQGCgOAA2QT0A4KA4APyAdlTIIDBBKIB2sIigQAA2IDhzCIh +gAPyAdjgfw944HjhxeHGz3WAAMw9wBUDFr/jR/fSa9R+vmYApiGmQqYBa8W4wB0YEMHG4H/BxfHA +4cWKIAoDYgnv/Y3Zz3WAAHxBDY2B4Cj0iiAKA04J7/2Q2c9wgADUQACQ6bjRIKKCDvSKIAoDMgnv +/ZXZANgOrQ2tmgiv/w+tEPCKIAoDGgnv/Z3ZAdgOrQ+NQiAAgF4Pb//KIGIAjQAP9vHAEggP9mYN +T//Pc4AA1EAAk89ygAA8zUEogQDAuSGqz3GAALQqIJGB4QHZwHkMuddxAAAAEA30ooPPcYAAKEGg +oaGDz3GAAERBp6E28M9xgAC8PaCBgeUS9M92gADkzCSOgeEF9CWOgeEB2QLyANmA4cohgg8AABAn +A/Qig4Hlz3aAAChBIKYS9M91gADkzCSNgeEF9CWNgeEB2QLyANmA4cohgg8AABAnA/Qhg891gABE +QSelqXHPdaAALCDQheWBAibNE/+9AvTFoeaBAibNE/+9AvTGoSiDgOEF9M9xgAB46yiRI6IluMC4 +ag6v+APZiQfP9eB48cDhxc9xgADkBwARBAC4cM9ygACUQUAsgAAWeBUgQAEAYoXgCfQKIcAP63KK +II0AeQcv93bbguAAGUABZPKE4CP0z3WAAOTMIIWA4Vzyug+v/YogSgwAhYDgCPLPcYAAEM0AoQiF +CKEA2AClBKUaD6/4CdgSD6/4A9jPcIAAnGemCIAHQPCB4BD0jg6gBQDYC8gEIIAP/v//AwsaGDAL +yIe4CxoYMDDwz3CAAOwyBIBRIICAD/LPcIAAbEUAgIDgCfT+Cm/9kNiB4AX07gsABA3wANqeugDZ +z3CgAPxEQaDgeCGgMg6gBShwz3CAAKAsA4AYiITgBvR6C8/8gOAE9BoJgAKNBs/18cASDs/1z3ag +AMAvOobPcoAAKEMAguC4TPSAuACiz3CAAFTNB4AB3cC4geDAffy5BfIQhlEgAIAD9ADfAvAB34Dl +738w8oogiQq2Dq/9iiHFBTCGqg6v/YogiQoQhlEggIIP9EAWBBBMFgUQCiHAD+tyiiBMCS0GL/eK +I4UGgecM9IogEAERplYOYAkK2DCGbg6v/YogiQqKIBAAEqZCDmAJBdjPcIAAWDgggGB5qXDJBc/1 +8cCKIMkDRg6v/YohBgXPcYAAvD1AgYHiEvTPc4AA5MwEi4HgBfQFi4HgAdgC8gDYgODKIIIPAAAQ +Jwb0z3CAANRAAoCB4s9zgAAoQQCjE/TPcoAA5MwEioHgBvQFioHgAdgD8gDYgODKIIIPAAAQJwX0 +z3CAANRAAYDPcoAAREEHosYN7/8DgdHA4H7xwM9wAAAIHBIP7/2hwf+4DfLPcKAALCAQgATZfNo9 +20DAi3DmDmAFF7uhwNHA4H7gfuB44H8B2OB+4HjxwOHFz3EDAEANz3CgAKggLaDPcaAAwC8UgfC4 +FIEM8gQggA8IAAAA13AIAAAAAdjAeAfwhiB/D4LgAdjAeIDgX/QVEQCGoLgVGRiAEfDPcKAAqCAN +gOTgz3WgAKwvj/cchfm4R/QMdIQkwp9D9CYNL/9a2IDg7fND8IogiQMGDa/9iiHJCc9xoADUCzuB +9gyv/YogiQMsceoMr/2KIIkDOYXiDK/9iiCJAzYO7/0k2Ahx0gyv/YogiQMmDu/9iiAJAwhxvgyv +/YogiQPrdRIO7/0k2Lhwz3CgANQLbBAEAIogjQoKIcAPqXI9BC/3iiOJC89xoADMKxKBgLgSoREE +z/XgePHAWgggAOHFHgggAAh15gggAAhzcHXKI0UDEHPtA+/1yiDFAPHA4cWhwQDdQMXGDm/8i3CC +4Iog/w8M8s9wgABQaQOAIIAAwCJ4gODKIEwDuQPv9aHA4HjxwKHBANhAwM9wgAA8zSGIgeGLcBH0 +z3GgACwgMIHPcoAAREFIgkJ513FOAAAgxfeqDk/8A/CGDk/8guAG9Iog/w+hwNHA4H7PcIAAcGkD +gCCAAMAieIDgyiAsAPPx4Hjhxc9xgAAAKySBIIHPc4AAcGlDg9W5oIJGg4og/w+A4gXyAoKieEgg +AAAJIEAAarhIIAAA4H/Bxc9xgABwaQuBQIAOgYDgyiCBD/////8K8gKAQnhIIAAAmSAGAEggAADg +fuB48cBaCs/1ocEacM9woAAsIEAQFADPd4AAUM8/hwDeRCAVI891gABEQUEpgAHacYYm/i9MJQCi +SiNAIMIjwiRTIBEAQShBI8C5FiVSFAQaQCCKINkFDguv/YohygJMJQCizCEhoAn0AYWA4AXy9gzP ++wPwYgzP+89wgACgLAOAGIiB4Ab0z3GAABDjFvCaDw/9gOA98s9wgADoLwiIh+A39JgXgBDPcYAA +EOMCuBZ4AGHtuC3ymBeAEFEgAKNAIdUDArgWeDhgHfIggIi5IKCWCq/9iiCJA5gXgRAB2hJpFnii +cECoz3CAAKAsAYDAEAAGESBAgMwhooOoD0IJB/BuCKAJz6iA4PQPQgnPd4AA5AcAh4fgX/IEEgAg +geDKIIEPAABcBjwKof3KIUEETCMAoFHyTCYAoEfyAIeA4CAdABUO9IogyQMeCq/9iiELA89xgADk +zAqBAeAKoSHwRhWAEIHgG/TPcO3+vrpAwItwBNl92j3bOgtgBRe7iiAKA+YJr/2KIQsIRh2CE0Ud +ghNKCW//Rx2CE8YIT/gHhSaFgnACIEIA/7oD9AalTBWAEIHgEfRMHYITiiCKBKoJr/0A2QnwiiAZ +Bp4Jr/2KIQsPAB0AFdUA7/WhwPHAngjP9Qh1z3CgACwg8ICH5QDejPYKIcAP63KKIA0CiiMJA5h2 +CQEv97hzhuEi8voMj//PcIAAREHooM9wgADkBwCAgODMIOKBEPLPcIAAvD0BgIDgCvSKIAoLLgmv +/YohiQXWDw/4z3CAANRAyaDPcYAAtCqKIFkHEgmv/SCRz3GAALw9z3CAAChBIIHwIEADgeH4YAb0 +z3GAANRAyaHPc4AAREElgwIgQgD/ugP0BaNVAM/14HjxwOHFCHUE2c9woADIHCigogrv9RbYz3Gg +AMAvE4GA5c8g4gLQIOECE6GA5TzaBvTPcIAAHCJAkM9wgAAcIgGQELhFeMAZAAAVAM/1z3KgACwg +UIIies9xgADoBxV5AIEQcsz3z3CAAKAsAIDEEAAGUSBAgQLyQKHgfuB48cBuD4/1AN7PcKAAtA+8 +gFYPYAXJcM9ygADcowSSz3GgAOwnELiFIIQABqEFkhC4hSCNAAahB4LPc6cAFEgHowiCEKMDgs9z +pAC4PZsbGAAEgqYbGAAFgpIbGAAGgqMbGADPcKQA7P/GoIogigAGofYOYAWveM9wgADsMgSAUSCA +gEQPogfKIGIAUQeP9eB48cDeDo/1z3CAAGg4IIDPcAAAnNMQcaHBQPTPdYAA+CoAhQHggeAApQDe +CvQB2c9woADIHDGgcg8gCShwi3HaDa/2ANgAFAAxCHKGIvwPRrpEIAMMRLtEIAEDguJCucG4E/SC +4wT0gOEP9AjwgOEG8oHhzCAhgAn0z3EBAEJpz3CgAOwnJqAAhUIgQIAApQb0z3CgAMgc0aCxBq/1 +ocDgeADYz3GAABwzA6nPcIAA4AZHgAKAQqkc4FZ4RIhJqQWI4H8KqfHAxgsP/YDgM/LPcIAA6C8s +kM9wgACgLB6QEHEp8s9wgAB8OWiISohEKz4LACGAf4AADDlVeAaIz3GAAIA4geAX9ACBirhSDC/9 +AKGA4IwP4gbKICIAz3KAALRoBoIDgCCAx3EAAAAoLghgB0hw0cDgfuB48cCiDY/1z3GnABRIAN2o +oQeBz3aAANyjB6YQgc9ypwA0RAimp6HPcPMP//wQoaDYtqGauPUaGADPcaQAuD2bEQAGz3eAAPgq +A6amEQAGBKaSEQAGBaajEQAGBqb/2JsZWAOmGRgAkhkYAKMZGADPcaQA7P/PcAAA//+noQahAIcB +4IHgAKcK9AHZz3CgAMgcMaDeDSAJKHAE2EYMr/ZAJgESDdg6DK/2QCaBEs9wKAACAc9xoADsJwah +iiCNAAahAIdCIECAAKcF9M9woADIHLGgOQWP9eB48cDKDI/1USDAgQ0SDzbPc4AAAM4DEg02z3GA +ABDP9HsRixAThAAS8gHgCHIyFYUQZ5ECGQIBz3ZBAIMAZrHPc4AAUEoDqRHwQCRCADEVhRBCqcAT +AwEDqc92IQCCAGaxz3OAAFRKsHLH98ShAIMB4ACjBIFU8M9zgAAgzutjAePBhWSpUSYAkQDacI06 +8i8lCADvf0knxBDya89wgAAQ4/Z/4GD2uNKNB/LPcIAAUOV2eAGIAvBIcAAkjw+AAFDldn/kjwgm +zhMIJgAQoHBJIM4DFmvVeM92gADQ5gBmz3aAAFDmdn5hhs92gACgLMSG2IbFewQjgw8AAAAIZngD +8AOFAqGYFYAQaIkQcwXyRKlg2Bi4A/AA2J24BKEVBI/18cDhxQPIpBAAAFEgAIDPcIAAoCwEgATy +G5AD8BqQxg6AB4DgOvTPcKAAFAQD2SOgINgMGhwwz3GAANhIFoEB4BahA8gA2pgQAQCkEAMAlBhA +AJ4QAQGsu5IYRAC+EAEBrbuAEA0BpBjAAJAYRAB+EAEBgBiEAD1lsBABAaJ5MHmwGEQAghABAX4Y +hACGI+WPshhEAOwKwvyJA4/18cAOC6/1CHMQiTMRjQAB2kCrDRIPNs92gAAozu5mz3KAAFjOSNzB +qw0SDzYCIg4D9CbOE8GzDRIONvAiggNBo0GBUSIAgRDy0onPcoAAUOUWetyrQIqGIn8MXHoEukV+ +3KsE8IDaXKsEuAV9vasckc9ygACgzg+zDcjwIgAABLMHyAWjVBEAAQyzAJENs6ARggBIowbIBCCA +DwIAQQDXcAIAAAAD9Ii6SKMGyIYgvo8D8om6SKOcEQABz3OAAExqJrjAuEAoAgMPgcC4DbhFeKUC +r/UAo+B44cXPcAAA8DDPc4AALAcBo89wgAAMtQCjz3GAAAjsz3KAABxqAIKggaCgAIIc3aCoBGkB +olUhQAQDohjYAqJVIcAFBaIBgQSiaHADoQKBjbgCoeB/wcXgePHA1gmv9RzaGnDPcIAA+gcAiM92 +gAA0agohgC+AAEjUhCgfACCGACFELs91gABM0UChACVBHgAlQh4ogUAiAwcAJUAeTyFPA+iiAohR +IECAYaYF8oO5jbkoos9wgACYCAKjGNgCps9wgAAYCACADB4AEc9xgAAACJoJr/kggQDZz3KgACwg +UIKA4GGGSqPE9lhgCqPPcIAA+gcAEIcAhC8fACd1Qo1RIkCAL3BY9EwgAKAL9M9xgACE1Bthz3CA +AAwIYKBK8M9ygAAMCECCQYpEKL4ox3CAAGjRF+BAIoQAMiBCDi8kBwHPcIAAEAgC4k96gOIAEIUA +QAAsAAIlgwCELx8AL3AAIU8OACeGH4AAaNFEKL4oQCaPBTInTx47Y8dzgABA1AjjG2MB4S95UHHg +qwIlgwCm9oQvHwAAIUAuG2PPcIAADAhgoA6VAiAAAQ61DpVYYA61ZaYH8M9xgABg1DhgBaYOlc0A +r/UEpuB48cBaCI/1CHUAiIzgz3aAAHw6aBaBkMj0gOEH8gONaRaCkBByx/KA4RwNAvkB2GgeApAh +jYLhyiAhAMwh4oN79GseApAjjYDgaR5CkCSNah5CkM32BW3JcYIhQgOODuAFDdpzFoCQbB4CkGsW +gJCC4A30QCWAFMlxgiFBD24O4AUN2oMWgJBtHgKQaxaAkIDgIgEuAEokACDPcIAAJGkGgAOAQCwQ +IaCAACCSL4AA7DmKIFUMpghv/QMSgSCKIFUMACCPL4AAgDiSCG/9XBcBFoogVQyGCG/9XRcBFoog +VQx6CG/9XhcBFooglQxuCG/9qXFeFxMWcnVUAA4AAiXQFF0XERYKcAYJr/UqcQUpPiBcFwIWAiBB +LlBxwCBmAAMSgSCMIcOPEfQFKT4gACHPdAjwnOEC2IbzANhoHgKQO/CifwDYGPCMIMOPxPdqd/rx +MHBQ9wUpPiAAIc90on8CeS95ACSAL4AA6DkgqADYBPAB2ADfgOAQ9Iog1QzeDy/96XFw3AImABNE +LD4nJ3BiCSAHuWdrFoCQQCRUIJJw/AbN/wnwgOEH8gDYngsv+WgeApD9Bk/14HjxwBIIIAAC2PoJ +AADRwOB+8cCiDm/1SiQAcgh3z3CAAKAsFSDQAwAQDSAA3slw2qWoIEANz3GAAPh19CECAM9xgAD4 +tRR5QLHPcYAACHj0IQIAz3GAACi2FHlAsc9xgAAIdvQhAgDPcYAACLYUeUCxz3GAABh49CECAM9x +gABQthR5QLHPcYAA8Hf0IQIAz3GAABi2FHkB4ECxCIXluAXyBNk0pQLw1KXkuAfyCdlGHUQQLtoF +8BTZRh1EEDLaW7VZjVEgAIBZYTB5Rh1EEBrhOrUK8grYVB0EEAbYVh0EEAfYCPAQ2FQdBBBWHYQT +BdgPpb4OoAPpcDyNKHBEHUIQhiADAOa5WB0CEMoiQQAM8lAhwwFvekQdwhBQIMMBb3hYHcIQ5bkI +8khzhiMDAG96RB3CEOS5BfKluFgdAhBRIcCABfKkukQdghCC5xXycgiv+OlwABAAILkQAAZRIECA +8djAKCIByiCBDwAAkwDAKCEBhB0AEBjYjbgTpQiFUSDAgM9wgACgLAXythCAAIm4A/CdEIAAEqXP +cKAArC8ZgM9xgADsMjC4wLgiD6AIBaEIhQQgvo8ABgAAC/I2uMC4G3gB4FodBBAC2BqlA/BaHYQT +ANgXpRilqg7v/OlwKIUB2khzQSkABTW5UiAAAFIhAQDAuMC5Zgyv/ZhyGQVP9fHAtgxv9QfYz3Wg +AMgfSB0YkM9wgACgLCOAz3asANQBGoFMHRiQguAC2MogIgDQHgCQiiAEAA+lRhEAAc93oACkMLAd +ABBGEQABtB0AEB/YCLgOpQiBUSAAgADYi7gI8hCljg4P+AGHhLgH8BGl1g4P+AGHpLgBp89wgACE +agCA4LgK8oYg/w4iuBS4z3GAAAAGC6GmCC/4Ad+uCEAB/g2AA4IOgAPPcAAAVVVaHRiQz3CmACgA +WR3Yk++gz3CAAKAsA4BaEAEBz3CmAOgHJqAqCI/8z3CAAKAsA4AGC2AFDZAA2IweGJAH2I0eGJAA +2IseGJDPcIAAYDgggGB5BNiA4BPyz3GAAEwkGoE7gSR48bgL8oog2AmKDC/96XHiC6AAAtgE8O4L +YAcB2M9yoADEJw8SAIZEIAMCz3CAAKAsI4AbgQ8aGIAPEgCGo7gPGhiADxIAhgV7DxrYgHyBz3Cg +ADAQZKDPcIAAUM8QeI8aGIDPcIAAoKrPc4AAoLoQeBC7ZXiQGhiAiiAEAJIaGIAdgUAaAIDPcIAA +4CtTGhiADxIAhp+4DxoYgADYEBoAgB6BHBoYgGkDT/XgeOB+4HjxwM9wgADAoxgQBAAKIcAP63LP +cAAA5Q7e220Dr/ZKJQAA4HjxwOHFz3WAAMCjatiyCy/9JoUlhSalqgsv/WvYLQNP9YDg8cA02Af0 +8gxP/VAgQQQF8OoMT/1PIEEEJg1v/TTY0cDgfoDg8cD02Aj0zgxP/VAgAQD02AfwwgxP/Qhx9NiA +uf4MT/3RwOB+4HjxwGYKT/XPcoAAGEZiks91gAAUcECFpMFAwkKV2BEEAM91gABQcQQchDBAhULC +QpUMHIQwtIBcgbFy2HKD9wIiRgNTgLeBUHXCJYYQz3KAANBGBhIFAcgRDgD/2gi6RH4ovgAchDPM +EQ4ARH4ovgIchDPQEQ4ASiTAcMR6KLoEHIQw7BECAAgchDDwEQIA9BEBAAochDAMHEQwANpIdqgg +AAQD2REhgIMJ8hQkgTPgkQgiwgMkkQkjQwAB5gAlgREFKYEPAwAAIC9xBS0+ATdxRfeMEAEAAeEC +8ADZsICMGEAAVSDOBVMlwRAUJkEQQLFcEAIBSiQAdADfqCBAAvQmwRMwcsoiSwAB51UgwQeQGIQA +wr0UIU0DYLV8EAMBSiQAcgDaqCDAAfQhjQAII0MDAeIG43B7khjEAJUBb/WkwPHAJglv9Zhwb38D +v6Rvz3CAABhGtmCib7VgieMG5/BgBvTqkYwnApjKIGsAgeIK9HR5QZEdZbFyj/YCekGxCvCC4gv0 +dHlBkVhgEHaF9gGxAdmYHEIAOQFP9eB48cDKCE/1dIBcgdgRDQBwcsIixgD3gTOAMHfCJ0YQAtvP +cYAA0Eb0IcQABhEFAQDZLqD6YgUqgg8DAAAgL3EFLH4DN3GMEA4AwvduoAUtfgM3cU33kBABAZQQ +AgEC4VBxg/bk5sP3AdkuoMkAT/XgeOHF4cZ0gFyB2BEOAAIixABTgDeBPBAHAIwQCAACIYUAz3GA +ANBGAtr0IYoABhEJAc91gAAYRkKVYZUKEQYBkhABAaOVCCNDAAAlAQEFKYEPAwAAIAokQA4FKr4T +DCRAjtb3KpCMIQKI0vYC2S+gkBABAX5llBhEACGQMHZsAAoAonkhsAHZmBhCADDwBSm+EwwkQI5W +90wngIAU8pAQAQGUEA4BAuEwdgT2jCABmcr3wZAB2d1lsXIvoJj2obDl8UwngIAM9KGQACbBADB1 +yPYCJY0RobAB2ZgYQgCQEAEBlBhEAADZL6AJIsIAIZAwcoX2QbAB2ZgYQgDBxuB/wcUiaADaQLBK +JMB1z3CAABhGqCCAAhYggwBgkxQhjAAB4k96YLTgfuB48cAyDw/1coDIgdgRAgBwdsImxhBxgCOB +cHHCIcYAAN/Pc4AA0Eb0I8QDAd3ZYQUpgQ8DAAAgL3EFLL4AN3H0I0MD7aDE9wLZLaAH8AUrvgA3 +cUP3raBFBw/14HhIgVKgQ4FRoFyBVKA3geB/M6DgePHAxg4v9QLbCHUodgHYALGpcI4N7/9NhU2F +qXDJcYIN7/8D202FqXDJcXYN7/8F202FqXDJcWoN7/8G206FqXDJcV4N7/8J206FqXDJcVIN7/8E +290GD/XxwOHFiiAKC04P7/xz2c91gADkzIogCgs+D+/8IIXPcaAALCAwgSWlz3GAAAy1KIFRIcCB +ANgL8iSNgeEE9CWNgeED8gHYgOAK8gCFgeDMICKAJPKKIMoMfNkc8Iogyg32Du/8gtkghYDhGPIE +jYHgBfQFjYHgAdgC8gDYgOAF8moOj/cK8IHhCPKKIMoMjdnGDs/8AtgApUkGD/XxwNIND/XPdoAA ++CoAhgHggeAApgDdCvQB2c9woADIHDGgeg6gCChwz3CAAIAHIJCGuRC5BSGCDwAAwhLPcaAA7CdG +oQGQELgFIIAPAAACEwahAIZCIECAAKYG9M9woADIHLGg2QUP9fHAag0P9c9wgACYOhmAAN2B4Moh +wg/KIsIHyiCCDwAAqBPKI4IPAACQAcokQgPIBWL2yiVCA892gAD4KgCGAeCB4ACmCfQB2c9woADI +HDGg4g2gCChwz3CAAIAHI5AEkMK5wrgDuCV4ELiFII0Az3GgAOwnBqEAhkIgQIAApgb0z3CgAMgc +saBNBQ/18cDeDA/1z3aAAPgqAIYB4IHgAKYA3Qr0AdnPcKAAyBwxoIYNoAgocM9ygADYOwCKz3Gg +AOwnELgFIIAPAADCaQahAYoQuAUggA8AAAJqBqEAhkIgQIAApgX0z3CgAMgcsaDpBA/14HjxwG4M +D/UKIACgz3WAADRsABUEECvyTCQAgM9wpAC4PQDaGvSbEAMGz3GAADhsYKGmEAMGz3GAADxsYKGS +EAMGz3GAACxsYKGjEAMGz3GAADBsYKGbGJgA/9mmGFgAkhhYAKMYWAAB2DTwTCQAgMohwQ/KIsEH +yiCBDwAAfhnKI4EPAAD8AnwEYfbKJQEEz3CAADhsIIDPcKQAuD2bGFgAz3GAADxsIIGmGFgAz3GA +ACxsIIGSGFgAz3GAADBsIIGjGFgAz3CAAOwyBIAiuMC4ngvABP0DL/UAHQAU8cCOCy/1ANjPdYAA +YDgghUB5jOAU9M92gABoOCCGYHkC2IDgDPQghmB5A9iA4Aj0rg0v/VDYUSCAgQTyANgD8AHYLyEH +IM9wgAAERM93gAB4OBoN7/gAp89xgABMShSBAeAUoc9xgAD4KgCBAeCB4AChCfQB2M9xoADIHBGh +5guACM9xgAAUOwSBgeAV9CaBz3agAOwnYHkA2M9wgADIvxiIgOAX9M9wAQAGAQamz3ASAAYEFvAK +IcAP63LPcAAAhxmKI8UJSiQAAF0Db/YKJQABz3ABAAcBBqbPcBIABwQGps9wgADIvyCAgOEDgCzy +4IdEKL4DxtiSuAamIIUnd2B5ANiM4DjyIIVgeQDYkOAy8iCFYHkA2JHgLvIghWB5ANiS4Cjyz3A5 +AAIzBqbPcDkAgkwGps9wOQACZgamx9iVuBnwRCi+AwAhj3+AAJR4x9iSuAamz3AAAAIzBqbPcAAA +gkwGps9wAAACZgamxtiVuAam/g0P/s9wgADIvxiIz3GAAMi/qgvgBCCBTCEAoBXyz3AAAAJuBqbP +cMEAQm4Gps9wAwDCbgamz3A2AEKXBqbPcAIAQmsGps9wEACHcgamBY8QuAUggA8AAEJwBqYEjxC4 +BSCADwAAgnAGpgOPELgFIIAPAADCcAamAo8QuAUggA8AAAJxBqYJjxC4BSCADwAAQnEGpgiPELgF +IIAPAACCcQamB48QuAUggA8AAMJxBqYGjxC4BSCADwAAAnIGpgGPELgFIIAPAABCcgamC48QuAUg +gA8AAIJzBqYKjxC4BSCADwAAwnMGpiCFYHkA2IzgEPIghWB5ANiQ4AzyIIVgeQDYkeAG8iCFYHkA +2JLgCfQMjxC4BSCADwAAwn8Gps9wAQBGagamz3egAMgfpBcQEEwhAKAJ8s9wUADGcwamz3AgAMdz +HPAghWB5ANiM4BnyIIVgeQDYkOAT8iCFYHkA2JHgD/IghWB5ANiS4Anyz3CAAAZ0BqbPcIAAB3QG +ps9wgADGcwamz3BAAEJ0BqbPcIAAx3MGps9wAgBGagamz3AQAMZqBqbPcIAAyL9YiM9xgADIvwCI +JImA4gHawHrPc4AAyL8OCCAIeYsk2BjZQgmgCDPageAW8s9wgABMSlAQBADPcIAAyL8MEAUACiHA +D+tyz3AAAIoZuQBv9oojBwdMIQCgBfLPcAYAQmsGps9wEADHagamz3AQAIZyBqZMIQCgBvLPcAIA +RmoGph4OAAgiDQAIJNgB2dYIoAgz2oHgFfLPcIAATEpQEAQAz3CAAMi/DBAFAAohwA/rcs9wAACq +KFEAb/aKI8cMpBcAEM9xgABMSgIgAAQToc9wAgBHagamIIVgeQDYjOAV8iCFYHkA2JDgD/IghWB5 +ANiR4AvyIIVgeQDYkuAF8s9wZQDCbgamz3CAAPgqAIDPcYAA+CpCIECAAKEF9ADYUR8YkK0Hz/Tg +ePHAPg/P9M9wgACYOhSAgOCL8l4LL/4H2Hpwz3CAAChHDIiGIP8BQ7hhuIbg9AANAM92gADIvySG +z3KAAPi9MyYAcIAAUG5AIhELBLk0eUAiEApAIhIGQCIPCEAiDQQ6YkAnAXIUeQB5z3GAAEA8SHBV +8M9xgABgPARqUfDPcYAAgDxAIgACS/BAIgADz3GAAEA87g/v/QDaBIbPcYAAYDwEuBR4uGA78EAi +AAfPcYAAQDzOD+/9ANoEhs9xgACAPAS4FHj4YCvwQCIABc9xgABgPK4P7/0A2gSGz3GAAIA8BLgU +eEJwG/BAIgAJz3GAAEA8jg/v/QDaBIbPcYAAYDwEuBR4AnB6D+/9ANoEhs9xgACAPAS4FHgicGYP +7/0B2k4P7/1qcHEGz/TgePHAz3CAAJg6D4CA4BDyz3CAAMi/BIDPcYAASL8CuBR4OGDPcYAAoDy2 +Cw/+0cDgfvHA9g3v9ETaz3CAAFB4z3GAAKzNWgxgBQDeAt0WCCAAyXBhvYDlAeY69zkGz/TgePHA +vg3v9ADaz3GAAKAsFXlggQS4ACCQD4AA2HS5G5gAAIEEEA8gz3aAAFB4vhjYA6CBQoaKIAcPYYYd +ZfAdgBDsHcAQIIFGhs91gACszWWGOGD4GIAAFibBE/QYwAAWJcATBOAE4SIO7/QI2gwQACAWfhZ9 +BG0kbg4O7/QI2qUFz/TgePHAOg3v9BLZqcEIduIK4AeLcEokAHEA2qgggAIWJIAwKIiB4cP2Ybko +qAHiAsIBw891gACgLNV9AIWKIQcP9G7Hd4AA2HQ4YOwYwADwGIAAAIUGwgXDOGD4GIAAg8H0GMAA +BBcQEM9wgACszRYgAAQE4JIN7/QI2uOHz3CAAKzNh8H2eATgfg3v9AjaAMAghbkZGAAghbkRAAZR +IACACfK+GdgDIIW/EQAGgLgH8L4ZGAQghb8RAAaguNoKb/y/GRgAgOAF9EoKT/yA4APyANgC8AHY +EHbcCWEIyiCBAwCFuRABBlEhQIDx2cApIgHKIYEPAACTAMApIQFGCy/6hBhAAJ0E7/SpwPHAOgzP +9M92gAAgbIDhz3WAADgIEvIghoDhDfQApb4Nr/cO2KYOb/6KIBAAAdgApg7wIIUleAvwagyv9w7Y +Ug5v/oogEAAA2ACmAKVZBM/08cDaC8/0z3GAAEQ4AIGguAChyg3v+gHYz3CAAMC0ABAEAEwkwIDK +Ic0PyiLNB8ogjQ8AAIEMyiONDwAA2gA4BC32yiXtAEwkAIDIAC4AAN0UbQAggQ+AAMC0B5HmkcSR +ELgFfwWRQ5EQuAV+ApEQukV4GnASCe/26XFacM9wgADEfvAgQQNELT4XCiFALgAhgH+AADxmIKAC +C2/6CnAIcQAhgC+AADBmvg1ABoogzA4iDK/86dmKIAwIGgyv/EpxiiAMCA4Mr/zJcdF3g/eA5hj0 +z3CAALh+8CBBA0QtPhcvdgAhgH+AAORmIKCuCm/6SnAIcQAmgB+AANhmag1ABs9wgADAtACAAeUQ +dUQHxf8lA8/04H7gePHA0grv9AHYz3aAAGg4IIZAeSCGCHVgeQDYguAU8oPgIvIghut1YHkA2Lhw +z3AAALwZCiHAD6lyiiPLASEDL/aKJIMPguUK9M9xgAB0H89wgAAUOyKgDPCB5Qr0z3GAAMQg9/HP +cYAABB3z8dECz/TgfuB48cBaCu/0AdgA3s93gABoOCCHz3WAAPDNYHnApYHgF/KC4C7yg+AT8iCH +63ZgeQHYuHDPcAAAuRkKIcAPyXKKIxAJqQIv9ookgw8AhZi4mbgApQDYjrgBpQPYwa3CrQ64AqXP +doAAbDhAhgbYYHoC2UCGB9hgegLZAo0X8ACFmLgApQDYwa3CrY64AaUCpc92gABsOECGBthgegLZ +QIYH2GB6AdkBjR0C7/QAreB+4HjgfuB48cDPcIAA8GkAgIXgfAAFAM9woACsLxqAUiAAAFEgAIA0 +9M9xgADcowuBAeALoc9wgABUOACAQHhqCEAAz3CAAFA4AIBAeNYMwADGDo/9ng3P+wbwJgxv/Iog +iQzPcKAAeEUAgAQggA9wAAAAQSg+hfL1z3CAAKAsI4BIgTSRUyIAAFoJIAMB24oJr/cS2NHA4H7g +ePHA4cW0wYogmAn2Ca/8WtkF8NYLb/yKIIkMz3WgALRHcRUAlgQggA9wAAAAQSg+hfH1iiD/D28d +GJBrHRiQtgov+ItwkgoP/IDgD/JvFQSWaxUFlgohwA/rcs9wAACxE0EBL/Y025oNz/dSCIAEHQHv +9LTAQIgB2AChaLoCulV6x3KAAJg6Y4JjoWGCYaFigmKhZIJkoeB/AKLgePHAdgjP9M93gAD0aQaH +A4DPdYAA3KMggEmFACKADy0AwMYCeYDhggAsAKHBz3aAAPgqAIYB4IHgAKYK9AHZz3CgAMgcMaD+ +CGAIKHCLcWYPr/VC2ACGQiBAgACmBvQA2c9woADIHDGgABQEMQQkvo8AABf/yiHCD8oiwgfKIIIP +AACmE8ojIgx8ACL2yiUiAACFgrjeDiAAAKUmCCAAAdgAhaK4AKUphcdxLQDAxkoKYAbpcCkA7/Sh +wOB48cCSD6/0ANnPcoAAVHAAgrzBWMAEikokAHJ5wM9wgACgLAOACIDAuEDAYxSAMM9ygABMJEHA +OcBCwGIUgDBDwBqCW4IEejG6wLqoIIACANsAJEAwaBjCAAHhL3nPcIAA3KPPdYAA2AYglQKQMHAx +9M9zgAAoRw6Lz3aAANyjhiD/ASgWjhBDuAIggIPPi3CLyiBiAIYm/xH7bs92gADcoykWjhCGI/8B +DibOk8omYhDbfsV422vPc4AA3KMqE4MADiODg8ojYgACu2V4AvAH2IDgRcAG9IogmAzTBSAAYNnP +cKAAtEdHEACGgOAG9IogmAy7BSAAaNmA4qoFAQDPcIAA3KMAEAQAUSRAgMohwQ/KIsEHyiCBDwAA +qhPKI4EPAAB2ACQH4fXKJSEAeg9v/IogGAfPcYAAKEcOic9ygADco4Yg/wFDuCgaAgAPiYYg/wFD +uCkaAgAQic9xgADco4Yg/wFDuCoZAgAglc9wgADcoyKwANmeuc9woAC0R1MYWIDgeADZUxhYgJII +D//PdoAA+CoAhgHggeAApgj0z3GgAMgcAdgRod4OAAg4wM93oADsJxC4BSCBDwAAQi0mpwUggQ8A +AIJGBSCADwAAQmAmpwanz3AIAIcQBqcAhkIgQIAApgb0z3GgAMgcANgRoQDAz3GAALi2FnlkgUCB +z3APAAD8CrsEe8m6ZXrPc6cAFEhNo0WBIYEKukR4ybkleA6jiguP/UbAAMCA4AryiiH/D89woAC0 +R28YWIBrGFiAANkD2ETBUsBIwQjAz3GAAPijOGAMiEfACMA4YEvAB8CI4LQACgAIwQXAESBAgK4D +AQAHwAAkATBoEYEAgeGeAyEAg3AB2WgYQgAHwc9woAC0R2AYWIDPcIAAoCwDgBC5m7kyIIAPAADY +Ap+5gOAB2MB4D7gleM9xoAC0R18ZGIAF8M4PL/yKIIkMz3CgALRHcRAAhgQggA9wAAAAQSg+hfH1 +AtkA2DpwB8ARIECEIAMhAFHBz3CnABRIXBhABEwhAKAk8kwhQKAT9IohxDaKIIQ4IPAcFAQwCiHA +D+tyz3AAAKsTpNslBe/1SiUAAAohwA/rcs9wAACuKNfbSiQAAAkF7/UKJUAEiiGCPYogQj8BwQLA +InhJwAfAfg4v+ypxGnAHwNoML/sqcUrACMILwBC6LIiKIFgILg1v/EV5iiBYByYNb/wqcQCGAeCB +4EoiACAApgj0z3GgAMgcAdgRoeYMAAhAKEAhEHgQuIG4h7iMuAanIIZCIUGAB/TPcqAAyBwA2BGi +SiQAIYp1QCGAMRB4TMBAIIAxEHhNwEApQCFOwAoggCQB4YHhYb0gpgn0z3GgAMgcAdgRoY4MAAgD +wDVtACVWFi8miCUleBB4ELiFIIoABqdALoAhgbiXuAAlExYGpy8jyCRAK4AhgbiXuAanDMAGuIG4 +BqcNwAa4gbgGpwCGQiBAgACmB/TPcaAAyBwA2BGhk8CUwZXClsM+CKAFVSTENTfAgOAK9AAhgS+A +AJxKEIkB4A94EKkAwIDgC/L+DM/7geAH9ADYd8AEwIC4D3hEwADAz3KAALi2A7gVIEAEGWIaYgyC +KIETwk/ADsC2eAAglQ+AABSkFMDwHYAg9B0AIAnAiCJ8AC8nACAEL74gtg5v+i9wDiCBDwAAAAFQ +wRTAiCB8AAQo/gUvcJoOb/oPwQ4ggQ8AAAABEMAJIYIPAAD/AQkggw8AAP8BSCMDAEgiAgA3wFQd +2CCB4FUdmCAO9ArAGBQEMAS4QCyBAThgtXjHcIAA9LZisEOwAIYB4IHgAKYI9M9xoADIHAHYEaEy +CwAICsEGwEAugiGBugS5Brg4YLV4x3CAAPS2IpA8eRC5JXpGpyKQwLm4eQUhgQQvIkggQ5BAK4Eh +gblcehC6RXkmpwOQwLi4eAUgAAQvIAggAIZCIEGACPTPcqAAyBxKJAAARBoAAUIkVCBMJACgIgbN +/4HgAKYI9M9xoADIHAHYEaGuCgAIDMBAKgEkBriBuCV4BqcNwEAoASQGuIG4JXgGpwCGQiBAgACm +BvTPcaAAyBwA2BGhEcFhuYDh1gTt/0AhQCASwGG4gOAIwSYE7f8B4QCGAeCB4ACmCPTPcaAAyBwB +2BGhSgoACM9wCACGEAanAIZCIECAAKYG9M9xoADIHADYEaH2Cc/+BfAuDC/8iiCJDM9woAC0R3EQ +AIYEIIAPcAAAAEEoPoXx9SYOj/fPcIAA3KMEwQyAOGDPcYAA3KMMoQ2BAeANoQfwiiCYDIohBQP+ +CU/8JQGv9LzAANnPcIAA+KMsqC2o4H8uqOB+4HiAuM9xoADsJwah4H7PcIAAByHPcaAA7CcGoc9w +gABHOgahz3CAAMdTBqHPcIAAxyQGoc9wgAAHPgahz3CAAIdXBqFJ2c9wpwCISTCg4H7geAHZz3Cg +AMgcMKBL2c9wpAAcQCSg4H7geM9xAQBcZs9wgABYOOB/IKDPcYAA3KMAgYC44H8AoeB48cC4cFMg +gQDPcIAANH4oYIHgyiHCD8oiwgfKIIIPAACVGcokgg8AAP4A0ADi9coj4ggB2NHA4H4J2eB/IKDg +ePHAKgiv9ADYz3WAAGg4IIVAeYLgIIUU8oPgdPLrdmB5Adi4cM9wAAC6GQohwA/JcoojzweFAO/1 +iiSDD2B5AdiB4CCFBvJgeQHYg+AghUH0YHkC2IDgDPIghWB5AtiB4CCFEvRgeQPYgOAO9IIJAAAg +hWB5CNgQec9wgADcD3oPT/UV8CCFYHkC2IHgIIUH8mB5AtiC4CCFC/RgeQjYEHnPcIAA1AxSD0/1 +B9iI8Ot2YHkC2Lhwz3AAALsZCiHAD8lyiiNOBfUHr/WKJIMPYHkB2ILgdvQghWB5AtiA4CCFCNgI +9EB5EHnPcIAAoAoH8EB5EHnPcIAAuAv+Dk/1X/BgeQLYgOAS9CCF63dgeQHYuHBn2Aa4CiHAD+ly +iiOODJkHr/WKJIMPz3CAAGA4IIBgeQDYjOAghSb0YHkI2ILgIIUH8mB5CNiA4CCFEfRgeQLYgeAg +hQ30YHkI2BB5z3WAACwUkg5v9alwqXAl8GB5CNgQec91gADoEn4Ob/WpcKlwG/BgeQLYgeAghQjY +DPRAec91gABYFhB5Xg5v9alwqXAL8EB5z3WAABQVEHlKDm/1qXCpcM4OT/UB2FIOAARGCo/9pglA +ANIIAADFBk/0CHFYiQGAgOICoQn0WYmA4sIgogDAIKEAAqHgfvHA4cXPcIAAYDgggKHBYHkE2IHg +RvTOCu/7iiDMDoHgQPTPdYAA+CoAhQHggeAApQn0AdnPcKAAyBwxoM4O4AcocEokwHDgeKggQALP +cQEAQmnPcKAA7CcmoItxHg1v9YogRgkAhUIgQIAApQb0ANnPcKAAyBwxoAAUBTFMJUCAyiHCD8oi +wgfKIIIPAACsKMojgg8AAEcDNAai9cokIgAVBm/0ocDgeOB+4HjxwI4NT/TPdoAA+CoAhgHggeAA +pgj0AdjPcaAAyBwRoT4OwAfPdYAAaDgghWB5ANiC4Gv0x9iUuM91oADsJwalz3cAAIIrz3ADAIIr +BqXPcAMAwkQGpc9wAwACLAalz3ADAEJFBqXPcQAAwnTPcAMAwnQGpc9wAwCCbwalz3ADAIJsBqXG +2JC4BqUmpdIN4AcK2M9wAACCbAalxg3gBwrYz3AAAAIsBqW2DeAHCtjPcAAAQkUGpaoN4AcK2M9w +AACCbwalmg3gBwrY5qWSDeAHCtjPcAAAwkQGpYYN4AcK2M9wEwDGAAaldg3gBzLYAIZCIECAAKYH +9M9xoADIHADYEaHxBE/0IIVgeQDYg+A09MfYlLjPdaAA7CcGpc93AACCbM9wAwCCbAalz3ADAMJ0 +BqXPcAMAQpYGpcbYkLgGpR4N4AcK2OalFg3gBwrYz3AAAMJ0BqUKDeAHCtjPcAUAQpYGpfoM4AeK +IAcNz3AAAEKWtPEghet3YHkA2CCFGnBgeQHYuHDPcAAAuhkKIcAP6XJy240Er/UKJAAE8cD2C0/0 +z3KgAKwvNYJRIQCAAN8G8gHbz3GgAOwnZqGA4Aj0z3CAAFQ4AIBAeErwFYJRIACAyiHBD8oiwQfK +IIEPAAB/GcojgQ8AAKoAyiTBADQEofXKJcEAz3ATAMcAz3WgAOwnBqXPcBAABmkGpcfYlbgGpc92 +gAD4KgCGAeCB4ACmCfQB2c9woADIHDGgMgzgByhwz3AAAEItBqXPcAAAgkYGpc9wAABCYAalAIZC +IECAAKYG9M9woADIHPGgnQNP9PHANgtP9M9wgABgOCCAocFgeQTYgOAz8s92gAD4KgCGAN0B4IHg +ABxEMwCmCfQB2c9woADIHDGgxgvgByhwi3EuCm/1ANgAhkIgQIAApgb0z3CgAMgcsaAAFAExz3WA +AGw4hiH/DECFQrlgegLYABQBMUCFA9hgesG5KQNv9KHA8cCuCm/0A9jPdoAAYDgghs91gADQRGB5 +osGA4AbyIIZgeQTYgOAG9GkDIABIFQQQA9gacM93pwAUSM92oADsJ5IOb/0F2A6lz3CAAPgqAIAB +4IHgz3GAAPgqAKEJ9AHZz3CgAMgcMaAWC+AHKHAD2H4Jb/WpcQTYdglv9SJtBdhuCW/1JG0L2GYJ +b/UmbQ/YXglv9UAlARI22FYJb/VAJYESN9hKCW/1QCUBEzjYQglv9UAlgRMIhwSlDYcFpQ6HBqXP +cKcAmEccgAelF4cIpRaHCaXPcKsAoP8YgAulz3CrAKD/GYAMpc9wqwCg/xqADaXPcAUAxgMGpsbY +kLgGps9wLAACAQamz3BaAEIBBqaKIIsABqbPcEAAhw0Gps9w0QDCDQamz3DAAAcOBqbPcIAA+Cog +gIHhBvTPcqAAyBwA2BGiAdgIpwDYDacOp89wpwCYR89yUAD/AFygAdgXpwDYFqf82s9wqwCg/1ig +c9pZoBqAz3KrAKD/gbgaooHhz3CAAPgqIKAI9M9xoADIHAHYEaHqCcAHz3BAAIYNBqbPcBAAAg4G +potwsg4gBYHBNoUAwCJ4BCiADwAAdAkVhTeFAnmqCm/0L3ABwk/gz3GAAIilFKVXoRihz3BAAIcN +BqbPcBEABg4Gps9wgAD4KgCAz3GAAPgqQiBAgAChB/TPcaAAyBwA2BGhi3BODiAFgcE2hQDAInhK +C+/6EqUyhVWFLHg3hS8gQA5CeTlhQgpv9DV54LgceMAgYgCCIMQCz3GAAIilEqUTpRahz3CAAPgq +AIABwgHgVaGB4M9xgAD4KgChCPTPcaAAyBwB2BGhDgnABwGVELiFIIQABqYClRC4hSCFAAamA5UQ +uIUgiwAGpgSVELiFII8ABqYFlRC4BSCADwAAgg0GpgaVELgFIIAPAADCDQamB5UQuAUggA8AAAIO +BqbPcIAA+CoAgM9xgAD4KkIgQIAAoQf0z3GgAMgcANgRoQSFK4UIpwWFDacGhQ6nCIUXpwmFFqfP +cKsAoP84oCyFOaAthTqgxghv/Q6FMoWMIYKARPaMIT+BDfZeCOAHCthyD8AEQiBAIIDgAgXN/wXw +aggv/Iog0QUyhYwhgoBE9owhP4EG9lIIL/yKIBELSBUEEIwkgoBE9owkP4EN9gohwA/rcs9wAAC0 +GYojRQzNB2/1uHPPcIAAIiMAiIDgBvLPcIAAMEUAEAQAiHCBBy/0osDPcIAA0ETgfxSA4HjPcQEA +NITPcgEANHqRBm/5ANjgeOB+4HjxwM9wgABUOACAQHjPcIAAUDgAgEB40cDgfuB4ANnPcIAAmAfg +fyCg8cDKDg/0z3CAAGA4IIChwWB5BNiB4AHd5/RaC6/7iiBQDIHg4fTPdoAA+CoAhgDfABzEMwHg +geACHMQzAKYJ9M9woADIHLGgUg+gB6lwi3G6DS/1ANgAFAExz3WAAGw4QIUA2IYh/A9geka5ABQA +MUCFRCABDAHYYHpEuQHYjg0v9UAkgTBAhQjYYHoCFAExz3CAAGA4IIBgeQDYjOAM8s9wgABgOCCA +YHkA2JDgABQFMSj0ABQFMahwhiD8D4wgA4AO8gohwA/rcs9wAAC9GYojEQOJBm/1iiSDDwIUBTGo +dIQkA5w+8gohwA/rcs9wAAC2GYoj0QNlBm/1SiRAAKhwhiD8D4wgAoDKIcIPyiCCDwAAtRnKI4IP +AABXBMoiwgfa9QIUBTFMJQCAzCVigMwlooAW8qhwhiA9D4wgAoDKIcIPyiLCB8oggg8AALYZyiOC +DwAAXQQEBmL1yiRiAALYqgwv9UAkgTAAFAUxqHCGIPwPjCACgA3yjCADgCfyCiHAD+tyz3AAALYo +iiOSAKLxAhQAMUCFUyBQAATYYHoKcQAUADGGIP8DRLiC4Mwg4qAR8gohwA/rcgIUBTHPcAAAtxmK +I5EMhvFAhQTYYHoH2QCGQiBAgACmFvTPcKAAyBzxoBDwz3WAAGw4QIUB2GB6CHFAhQTYYHoD2UCF +BdhgegPZKQUv9KHA4HjxwMYMD/TPdYAA+CoAhQHggeAApQDeCvQB2c9woADIHDGgbg2gByhwz3CA +AAYhz3GgAOwnBqHPcIAARjoGoc9wgADGUwahz3CAAMYkBqHPcIAABj4Goc9wgACGVwahAIVCIECA +AKUG9M9woADIHNGgz3CnAIhJ0KC5BA/0CNnPcIAA8M3gfyOg8cA+DA/0z3aAAPgqAIYB4IHgAKYA +3Qr0AdnPcKAAyBwxoOYMoAcocM9wAADCLM9xoADsJwahz3AAAAJGBqHPcAAAwl8GoQCGQiBAgACm +BvTPcKAAyByxoFEED/TxwEoM7/YW2H4OwATPcYAAoCwAgcQQAAZRIECBB/QBgcQQAAZRIECBBPLK +Cm/3E9jPcIAASDgggGB5C9jRwOB+8cBCCK/7iiCIBYDgDfJeDq/8ANjPcIAAYDgggGB5BNiA4OgP +wv7RwOB+4HjPcIAAoCwDgAiAz3GAAPDNUSAAgAPyAYkC8AKJ4H8AqYDg8cC4cQ70CiHAD+tyz3AA +AKcZiiPEC8kDb/WKJIMPz3GAAPDNIIFMJQCABCGBDwAHAABBKQMGANnKJE1x4HjoIG0D8CBFAAQl +gg8BAADALrplelBzBfQB4dHA4H4KIcAP63LPcAAAqBmKIwQOdQNv9UokQADgePHA4cUA3c9wgACg +BqYIIACgoM9wpwAUSKigOQMP9OB48cChwbhwANhAwFMlgACB4BHyguAg8oTgJfIKIcAP63LPcAAA +qxmKI4oKIQNv9Yokgw/PcIAAaDgggGB5AdiE4AHZwHnPcAAAItI0eM9xgAAT8g/wz3AAACPSz3GA +ABbyB/DPcAAAJNLPcYAAGfIp2hK68CIAAA4ggg8AAQAAQMKLcLYIoAQD2qHA0cDgfuB48cAmCg/0 +A8iUEAAAz3aAAPgqBCCQDwEAAMAAhkEokCMB4IHgAKYA3Qn0AdnPcKAAyBwxoMIKoAcocM9xJAAH +Ac9woADsJyagiiGFACagUyCBIIHhE/KC4SXyhOEz8gohwA/rcs9wAACIGYojBgOKJIMPSQJv9Qol +AATPcYAAoCwjgSiBUSEAgMohgg+AAMcgyiGBD4AAhyQmoM9xBABHSyTwz3GAAKAsI4EogVEhAIDK +IYIPgAAHOsohgQ+AAMc9EPDPcYAAoCwjgSiBUSEAgMohgg+AAIdTyiGBD4AAR1cmoM9xBADHMSag +AIZCIECAAKYG9M9woADIHLGgjQEP9PHAz3GAAKAsI4EvKAEAKIHAuQAhgw8AACLSTiCBBynYErjw +IMAAz3OAAMi/eIvPcoAAE/KA46HBQMAH9AIggA8AAADAQMCLcDR5WWFaD2AEA9qhwNHA4H7xwNYI +L/S4cM9wLAAGAc9zoADsJwajz3KrAKD/GoJTJYEAgeEA3RLyguEz8oThTfIKIcAP63LPcAAAgRmK +I4UDIQFv9Yokgw/PcYAAoCwjgSiBz3UCAMICUSEAgMohgg+AAMYgyiGBD4AAhiQmo6ajz3EEAEZL +JqPPcUgAQgEmowHbz3GnABRId6GBuD7wz3GAAKAsI4Eogc92AgCCAlEhAIDKIYIPgAAGOsohgQ+A +AMY9JqPGo89xBADGMSajz3FKAEIBHPDPcYAAoCwjgSiBz3YCAIICUSEAgMohgg+AAIZTyiGBD4AA +Rlcmo8ajz3EEAMYxJqPPcUwAQgEmo89xpwAUSLehgLgaojkAD/TgePHAvg/P8wPIlBAAAAHez3Wn +ABRIyKUEIJAPAQAAwNYO7/9BKIAj/9ibuM93pwCYRxyniiASDXoI7/tBKIEjz3GAAKAGAIGA4Moh +wg/KIsIHyiCCDwAArBnKI4IPAADlAMokIgDsByL1yiUCAQDYFqXap7EH7/PAofHARg/P889wpgCc +PxmAUSAAgF/yz3WAAKwGAIVGgKASAAYvKAEATiCBB0Ep0ABMIICgCfdIcIAgCgAyIAAEgOAP9Aoh +wA/rcs9wAACtGYojSwKKJIMPhQcv9QolAATPdoAACPJAJsASsg+v9QnZANhyDm//DyAABIDgANgP +IAAEBPQSDM//BPCaDc//A8i5EIAAG3iAuAquAIUmgJYhQQMAIQAEGIiMIMOPAnEE8mG4D3gYqYog +Ug0A2X4Pr/sPIQEEAIUmgKARAAafGRgApgvP/9kGz/PgeM9xKioVFc9wgAAQauB/IKDxwFoOz/M6 +cBt9z3CmAJw/ZBAQAFEgAKAV9BYJL/QD2GG9jCX/n/P1CiHAD+tyz3AAAKQoUdsKJEAEuQYv9Qol +AAR5Bs/z4HjxwBoOz/PPcaAArC86gVIhAQBRIQCAocEA3YD0gODPdoAA+CpY8mYIj//Pd4AAYDgg +h2B5qXCM4AfyIIdgealwkOAghiv0AIYB4IHgAKYK9AHZz3CgAMgcMaCODmAHKHCLcfYM7/SKIAcF +AIZCIECAAKYG9M9woADIHLGgABQFMUwlwIAq8gohwA/rcs9wAACJGerbFQYv9ZhzAeGB4SCmCfQB +2c9woADIHDGgOg5gByhwz3EGAAJ1z3CgAOwnJqAAhkIgQIAApgj0z3CgAMgcsaAE8LoIAAAAhgHg +geAApgn0AdnPcKAAyBwxoPoNYAcocM9wgACgLAOAz3GgAOwnDoCAuAahAIZCIECAAKYG9M9woADI +HLGgaQXv86HA4HjxwG4IAADPcIAAYDgggGB5A9iA4NQPggTPcIAA7DIEgFEggIAL8s9xgACgLE2B +PpFTIgAA+gwgAgHb0cDgfuB48cDhxc91gADIRACFUSAAgAz0hgnAA7YOz/riCM/3Lg7P/wCFgLgA +pQkFz/PxwDIJb/uKIAQCgOAR8o4Nj//GD8//z3CAAGA4IIBgeQTYgOAF8kIMT/8OCAAA0cDgfuB4 +8cBeDM/zz3WAAMhEAIVRIECAHfTPcIAAYDgggGB5BNiA4BXy2ghv++LYgOAP8k4IL/0H2AoMoAQI +dlYJD/8+De/8yXAAhYG4AKWBBM/z4HjgfuB48cAGDM/zpBABAPi5CPK2EAEBz3CgAJgDPqCf8AAW +DUG8sAAWAkFdsAAWDkDPoAAWAkFAGIQAABYCQFGgABYCQUgYhABEJQIThOIa8hjbchjEAAAWA0CI +4nOgABYDQVAYxAAAFgNBVBjEAAj0qXOGI/MPjCMMgA7yGNsW8BDbchjEAADfz3OAABDP57MQ2wzw +HttyGMQAABYPQPagABYPQVwYxAOpd4Yn/RyMJwKSCfQC43B7chjEAAAWD0EC8ADf4btgGMQDBPIA +Fg9BKHSEJAyQBPQA2iPwgOIa9FEmAJDRISKCFPLQiKi5z3KAABDjpBhAAAK+1n7CYv66BPKLuaQY +QAAA2lqgW6Dm8QAWAkBaoAAWAkBboAjadBAOAb4QDwHCf2J/Qn+4EIIAmLmkGEAAz3GgAJgDQn96 +YlB6chiEALoQAgHwf3AYxAOlelywPoG2GEQAGQPP8+B48cCqCu/ziiAHBs92gABUJoYLr/sghhXd +z3eAAGAaAIbpcVJoAeAAplR6WGECgIDgWWES8s9yoAAsIFCCQnjXcElrANIA28j3YqGKIMcFSguv ++yCJAIaq4IP3ANgApmG9gOW+B83/rQLP8+B48cDPcIAA7BgO2QHa/gogAADbz3CAACQZCdkB2u4K +IABIc89wgAAYGCrZANreCiAAANvPcIAAwBgL2QDazgogAAHb0cDgfuB48cDhxc91gABiRYogRwbW +Cq/7II0E2FoL7/oB2c9wgABhRQCIsgsgACCNRQLP8+B48cDPcYAAYkWKIMcGpgqv+yCJz3CAAERs +ugtABdHA4H6A4PHA2HEL9AIJAAAA2SKgiiDHBX4Kr/vIcdHA4H7gePHAignP8+4IT/vPdoAAoAdm +2CJuAdpKDy/8SHOA4Az0CiHAD+tyz3AAALYU2duKJIEJPPACFgURTCUAgMwlgo8AAP//DPQKIcAP +63LPcAAAtxTc28EBL/WKJIEJZ9jJcQHa/g4v/EhzgOAM9AohwA/rcs9wAAC4FN/biiTBCRbwAZYk +bgHaAeAQeNYOL/xIc4DgoZYO9AohwA/rcs9wAAC5FOLbQCVEEG0BL/VKJQAAAm0QeCZuAdqmDi/8 +SHOA4Az0CiHAD+tyoZbPcAAAuhTl20AlhBDq8R0Bz/PPcaAAYB0SsRSR4H6B4PHAuHEc9EwlAIDE +9kwlgIPM9gohwA/rcqfYBbic2w0BL/VKJAAAQC2AABR4QiABA89wgACAGRlhH/DPcIAAICIyIEAB +jCDDj8ohwQ/KIsEHyiCBDwAA4RTKI4EPAACiAMwAIfXKJCEAArgUeAAggQ+AAGAaKHDRwOB+6LgI +8gQgvo8AAAAYAdgD9ADY4H8AqeB48cAKCM/zz3WAANoGAI3Pd4AA2AZaD+//II9BiM92gABoReO6 +IJcH8gHYAK6KIMcDTfACgIDgBvIA2ACukLlF8FEiAIEz8s9ygADMLweKEHEt9ACVYYpwcCn0z3CA +ANwGAIhGihByI/TPcIAAoCwOgFEgQIEb8s9wgABkRUCAgOIA2w7yz3CgACwgEIBCeNdwMQEALUT3 +AdpArgTwYK4A2hC6iiBHA0V5EfDPcIAA/CoAiIDgBvIB2ACuiiAHAwfwANgArpG5iiAHBC4Ij/ul +B6/zAI7xwB4Pj/OhwRpwOnKA4Wh2yAAsAADYmnEVIA0gz3GAAKAHABWTEAIVkhC6cOONIZEBjQHa +OGAQeItx1gwv/EhzgOAT8gAUADFMIQCgQCqCIAQggQ8AAAD/R7lUehjyx3KAAIAZF/DPcIAAoAfB +kKGNCiHAD+tyz3AAALsUiiOEAAAmRBNBB+/0CiVABcdygABgGoDmABrCBAPyAqoC8AGqUSAAgBPy +gOYM8gOKgLgDqhJvFHgbYmOLWGCBu2Oo5KqA5gTyJqoD8CWqQiRBIIDhRgft/0AlQCCVBq/zocDg +eOHFUyANAKCpBCCBDwAGAABCIQGABCCAD0AAAADKIWIAIKrXcEAAAAAB2MB4AKvgf8HF4HiA4PHA +D/SCDc//z3GgACwgMIHHcUlrANIioPYOb/uKIIcF0cDgfuB48cD+Da/z2HEKJoCQiHXMIyKABvJC +JgYBLyaHAUIN7//IcYDmz3GAAFgHAKEm8iSIArk0eUOIA+FRIgCAAhCFAA/0CiHAD+tyz3AAAOIU +iiOIBUokAAA1Bu/0CiWAAQhhUSBAgAz0CiHAD+tyz3AAAOMUiiOIBu/xARCFAFElAIDKIcEPyiCB +DwAA5BTKI4EPAAAoAsoiwQfd8+G90SUigcohwg/KIsIHyiCCDwAA5RTKI4IPAAAvAtAF4vTKJIIB +USUAkBPyUSXAgMohwQ/KIsEHyiCBDwAA5hTKI4EPAAA2AqgF4fTKJIEBgQWP8+B48cACDY/zocEI +dSh3GnIA3s9woAC0D3AQEQCKIMcA2g1v+6lx4gxgA8lwi3FAJEIwQCSDMIIO7//pcEwgAKAF9Eok +AAAJ8M9wgADQrgGIgOD49UokgAAgwAEUgjCpcbYO7/8CFIMwz3CAAGJFAIiA4MwlApAK8s9wgABY +BwCAwqDPcIAAYEXAqOW/F/LPcYAAzC8HiRB1EfQBiVMnAhAQcgv0BCePHwAGAACA5wHaBonAehBy +DfLPcIAA/SrAqM9wgABkRcCgz3CAAGhFwKiKIMcAJg1v+6lxLgxgAy8gRwSBBK/zocDgePHAz3GA +APRKiiCHAQINb/sggWoJz//PcIAA2AYAkIDg+AvC/9HA4H7gfuB48cByCs//tgnP/3oOgAZuC0/8 +5giAAdHA4H7geM9xAACt3sEEb/uKIIcJ4HjxwOHFz3CAAGhFAIiA4BL0sgvP/4DgDvSKIEcEAN2a +DG/7qXGQ2ZC5A8igGEAAGPDPcIAAUCYAiIDgEfLPcKAAAAQsiIwhAoAA3Qn0agxv+4oghwSR2ZC5 +6PEB3eUDr/OpcOB4z3GAAKAs8CEBACgRgAAogU0G7/8A2uB48cBOC4/zCHfPcoAAzC/PdoAA2AYA +lmeKEHPPcYAA/CoU9M9wgADaBgCQYYoQcw70z3CAANwGAIhGihByBvTPcIAA/SoAiAPwANj+Cu// +AKnPcIAA3AZAiM9xgADaBgCJII6A4gHawHrpcwDd6gzv/5h1z3CAAFgHAIABiM9ygABQJlEgAIEg +lgbyAdgAqoogRwMF8KCqiiCHA6ILT/sZA4/z4HjPcYAAzC/PcIAA2AYAkEeJEHIY9M9wgADaBgCQ +QYkQchD0z3CAANwGAIgmiRBxCvTPcIAA/CogiM9wgAD9KiCo4H7gePHAZgqP8892gAAwtRSOgeAS +9ATYyguv+gHZz3CAANoGAIjPcYAA2AYeDO//IIkA2BSuNvC2joDlMvLPd4AAYEUAj2G4EHUZ8loI +z//PcIAAeOsFgCFtBSh+AM9wgABEbIYMIAUvcYoghwbPcYAA2AbiCm/7IJHPcIAA2gYgkM9wgABh +RaCvIKjPcIAA2AYgkM9wgABiRSCoANgWrjWOgOEJ8s9wgADaBhoI7/8AiADYFa4dAq/zAdjPcKAA +LCAwgM9wgABkReB/IKDgePHA1g+v/+HFz3CAALwsEIiE4M91gADQrgv0iiAPCmoKb/uKIUoEAo1q +CCAAIYUCjSGFYgzv/wHa2QGP8/HAWgmP889wgACgLDwQkACtgIogBwI2Cm/7CnFTJQAQogjv/wpx +AYhRIACByiHCD8oiwgfKIIIPAADoFMojgg8AAGIDyiQiAKQB4vTKJQIEbQGP8/HABgmv89hxocEa +cItxQCRCMEAkgzCiCu//yHABFIAwgOAK8gIUgDCA4AbyQiAQIS8gByQgwDoI7/8KcQEUgTCA4QTy +oogD8KGIiiDHAaoJb/vIcUAoACZALQIUBXoBFIAwAhSBMAi4BXqKIMcBiglv+0V54b3RJeKQBfJR +JQCRD/IKIcAP63LPcAAA5xSKI00DSiQAAAUB7/QKJQAEzQCv86HA8cBeCI/zocEacADez3CgALQP +cBARAE4IYAPJcIogRwEyCW/7CnGEKAgpACGNf4AASLAl8EAlABcWIIQDBRSAAIYg/oca8gSFi3FA +JIMwQCRPMMIJ7//pcqgVABDqD6//6XEgwAQUgQABFIIwAhSDMP4J7/9KJMAAAeYMlRB2uAfF/4og +RwHOCG/7CnHWDyADLyBHBCkAr/OhwOB48cC+D0/zocEIdxpxOnIA3s9woAC0D3AQEgCuDyADyXCj +j4ogBwGSCG/7qXEFh4txQCSDMEIJ7/9AJEIwCoduD6//QCRBMIDl0vcUIYwjIIwgwAEUgjACFIMw +8CCPI3YJ7/9TJwQQAeaxdrH3iiAHAUYIb/upcVIPIAMvIIcEnQdv86HA8cAmC8//DgmABtHA4H7g +ePHAMg9P8wokAIDPcIAACOykaFUgQQQEEAYBBfIMJICBjPcKIcAP63LPcAAA2xuq25UHr/QKJYAB +MiEAAQAhAwEAIQ4BACEFAWKLw44AIQIBBBWFAIwgQ4fMI4GPAABQAMwmgZ8AAG8AzCWBjwAAmgAH +9OWKiecF9OaKjOcS8gohwA/rchi4ELsFIw0ACL7Ffc9wAADeG7XbLQev9AUlRQMBigImAgFAIJAA +AiIChMohxA/KIsQHyiCEDwAA3xvKI4QPAAC8AAAHpPTKJQQEgOLG9oBx3gzgAwAhAAQAlQDZAiAA +BAC1z3CAAHg5qQZv8zag4HjxwEYOb/OKIYsGAN3PcIAAVM2loBoPL/uKIMoBz3CAALw9oqDPcYAA +oCwAgcQQAAZRIECBV/IDgRiIhOBT8oogyQPuDi/7iiGLCM9wgAAAKwSAz3WAAPBnIICKIIkD0g4v ++za5AIVCIACAyiBiAIHgGPTeD+AEqXDPdoAAuGcAhkIgAIDKIGIAgOAM9IogiQ6eDi/7iiFLC8lw +KgggBSKFz3WAAAxoAIVCIACAyiBiAIHgGfSaD+AEqXDPdoAA1GcAhkIgAIDKIGIAgOAL9IogiQ5e +Di/7iiGLDslw5g/gBCKF0QVP8+B44cUA289ygAAAzhQiDQBgtWi1GmIgGsIAwB3EECgawgDPcYAA +rM0WeSKRMBrCANAdxBCAHdwQeB1EEAHZiBpCAM9xgACgzhV5YKHgHcQQ8B3EEOB/wcXgePHARg6v ++xHYgOA99M9xgADML89wgADYBgCQR4kQciz0z3CAANoGAJBBiRByJPTPcIAA3AYAiCaJEHEe9M9w +gABEOACAgOAc9HYPAAOA4An0C8gFIIAPAAAAPAsaGDCuDwADgOAI9AvIBSCADwAAANQLGhgwC8iQ +uAsaGDByDM/6A/CaCE/00cDgfuB4ANmcuc9woACsLz2g4H7geEkGj/rxwM4ML/YV2Iog0AdCDS/7 +QNnPcIAAdEUkiIDhDfKD4Qj0A4iA4An0Sg5AA9HA4H6CCIAD/PH88c9xgAB0RQOJgODE9mG4A6ng +fuB4ocHxwOHFrMEA2UrBkNkYuUjBz3OAAPDNIIMEII0PAQAAwIYh/gMkuQ65CyVAkE7AjsIW8td1 +AAAAQMwlgp8AAACAzCWCnwEAAAAE9CGDA/Aig664r7iwuAV5IKIOwwjAi3UEI4EPAQAAwC65QCkC +BkV4SMCKIAYGScBBw6lwANpSCSAAAdvPcYAATCQagTuBJHhRIACCEvIKwAvBhCgEDgAhgH+AAJjv +ArkI4DR5IWDPcKcAiEkvoMYKYAWpcAjczwNv86zA4HihwfHATgtv8whyrcEI2ErAkNgYuEnAz3CA +APDNoIAEIY4PAQAAwIYl/hMkvQ69CyZAk1DBkMMW8td2AAAAQMwmgp8AAACAzCaCnwEAAAAE9AGA +A/ACgK65r7mwuSV4AKMQwwnFBCOBDwEAAMAuuUApAAbmugV9ScUN8grABCO+jwAAABhFIMAASsAF +8oUgEAFKwOS6EPKbvc9woAAsIAWAANsCuG64gODKIMwAybileEnABvDougTynb1JxRDAgcVCwKlw +RgggAALbA8gMws9xgABMJLkYggAagTuBJHhRIACCDPICus9wgACg71R6QWDPcKcAiEkvoL4JYAWp +cAjcvwJv863A4HjxwEYKT/OjwWGACHVAw+m7ANgKpTTyBCOADwEAAMAuuM9ygACccwpiSSKCAGG6 +S6USahR4x3CAAJDwyoDPd4AAiM/GpQuAz3aAAKAsBaXDhiDA1Ib1jwR+5H4JvkApDwLlfsV4BCOD +DwAAABBleAelCIUY4p64CKVLpZDwUSKAghryz3CAAGhqAIBBwOi4QsAP8oYg/wkjuAHggeDJ94Lg +BPQG2GHAJfAH2GHAIfAiwGHAH/BBw89ygACsBkCCRoKeEgIGhuIU9AQjvo8AAAAYDvTPcoAAoCxE +gkiCBCK+jwAGAAAE8gHYCqUE8AqlANgBxui+H/JCxiLCoOLKIiEABCaPHwEAAMBBL4QTRCYPFiO/ +AecEJo4fBgAAADG+ACbFE892gACcczImDhECJk4REvBTJsIQz3eAAOh3XXpKZwQmjh8BAADALr7P +d4AAnHPOZ2G+6LvWekulCPIgx892gACkc+5mA/AB3oQoBA4AIYB/gACY7wK6VHpHYGG+WGDmpQGA +BCODDy8AAN0mu8V7UiPDAwWlZ6XPcIAA8M0DgBEgQIAA3w7yz3CAAIRqAIDguAryhiB/Dx14QCjP +AwTwAN+Pv4DnHPTPdoAAYDgghmB5ANiM4BHyIIZgeQDYkOAL8iCGYHkA2JHgB/IghmB5ANiS4AT0 +Hgvv+wDYCIUFf+ilrQBv86PA8cBCCE/zz3WAAHw4AIXEkMlwNgugAIYg/AMAhclxtgpgAIYh/AOa +4M9zgADMzwX0IYOAuSGjSoMB4kqjz3OgAMQnkRMBhsO5UHEN9IolCBATG1iDkRMBhsO5UHED8hIb +WINNAE/z4HjxwNIPL/MA2M9xoACoICiBz3GgANQLOIHPcaAAxCdSEQKGFREChkIRA4b+uwbyAdjP +cYAAUM9hsVEiwIAacMolYhQS9FEgwMbKJaIUDPTPcKAA0A8gEAGGHxAAhhBxAN3KJWIVgOV39M92 +gABQzx+G8Lho8qgWARCU2FYNoALJckwgAKDPd6AA0A8o8s9wgADkByCAz3CgAPwlgOHPcoAA5MwM +9DOACoIZYSqiz3IA/wCqiiCIBQzwE4AkkhlhMHkksoogiAXPcgD/AP9iDg/9AJaSDG/9NJaUFwAQ +gODPcoAA2EgB2RrybYIB422ia4J4YAuiz3CAAPwqIKgfhu64BvLPcIAAjAYgoAjw77gG8s9wgACQ +BiCgz3CgAPwlE4BsgnhgDKLPcgCgCADscECgbyJDAOxwQKAOH1iQXgjABs9wAAD/f89xoAAMJAGh +G9gEoeUGL/OpcOB/AdjxwOHFocGuD6/6i3CA4Df0ABQFMFElAIAM8oYIAADPcYAAUM9Dgc9xgADs +tUGhJ/BRJYCABPJyDs//IfBRJUCCBPL+Dc//G/BRJcCAHPII2M91oADEJxMdGJCyCAABlOAN8gLY +PB0AkM9wgABQzyOAz3CAAOy1IaAZ2JngxfN1Bi/zocAKIcAP63IX2Iy4iiPHAHkGb/SKJIMP4Hjx +wOHFz3CAAFDPP4AEIYEP//+POAQlgF8AAHDHJXjPcYAAUM8foUQiAFOI4M91gABQzyT0USVA0SDy +Kg/P/1ElgNOcHQAQCfLPcIAA9CwFiJgdAhAV8FElwNMJ8s9wgAAEMBmImB0CEAvwA4UaDW/0JIWY +HQIQBfAA2JwdABCcFQAQgODMIOKAePLPcIAAVB4LgIDgD/LPcp8AuP8dos9xgADgKgSBAeCzuLW4 +uLgEoRaiz3CgAKggCIAfhVEgAIEH9FElwNIF9IDYmB0CEJgVgBBRIMCBQCgBBgn0USKA04K5DvL2 +D0ACGvAfhVEigNOzuB+lxSGCDwAAAAdFIQAGz3GAANzPLImGIf0PUiHBAUW5JXjPcaAAiCQQoYog +1gDPcaAAxCd+GRiAz3CgANQLAdpSoATYEBkYgM91gABQzx+FUSCAgSXyFJVRIECBIfTPcKAALCAP +gIDgG/StccoNb/hWJUAVgBUAEJS4gB0AEB+FkLgfpQ3wz3GAAFxID4EB4A+hENnPcKAAkCM9oMkE +L/MZ2PHARgwv8wDZCHYBgMG4g+DKIEEgBfIGDyAAyXAacEwgAKDH9BCGUSCAgcPyEIbPdYAAUM/u +uAfyz3CAAPQsBYgN8BCG77gH8s9wgAAEMBmIBfAFhiaGngtP9JgdAhCAFQAQBCC+jxBwAAAH9K1x +Jg1v+FYlQBURhs9xgAB4BwChQSgBA1MhxQCYFYEQQSgGBVEhwIEUaQUgRAEG8h6FlbgepXzwrgyv ++k8kQAKQ4OwABgDPcYAAYKqYFYMQ8CEBAEArAgaGI/0PUiPDAUW7ZXrPc6AAxCdBG5iAANqMugIm +TwD6Ysu613IAAAAIQC0PA5C/UvcFJ48RYhvYg4wiAoDH989xgADQSRKBAeASoQDZnblG8OV5YhtY +gNdyAADAD1IADgAOIoMPAAAAEM9ygADAqRZ6oOMgggQSBQBP9wDYDyDAAGG4TiMPCAEpwgN4eQV5 +AC3AAAV6FvBCIwMIANgPIMAAYbh4eQUhAgCKIf8PCvDPc4AA0EkTg4oh/w8ocgHgE6MB2M9zgABg +tgCrAhsEASGjQqO98QDZnLmAFQAQJXiAHQAQQCYAEqAdABAC2c9woAD0JiOgJYbPcIAA7LUhoOkC +L/MKcPHAbgoP8wh1VSBRBA3MosHtuNEgYoAH8gTIVg6v/5gQAADPcIAAzM8MgM9xoADIH2TgHqEQ +2A6hAdgVGRiAAYWA4AX0USMAwPvzAYXBuIPgRAICAAARACBBwAQUADFBKBIDEIVRIICBBhQQMUTy +DczruEXyEIXPdoAAUM/uuAfyz3CAAPQsBYgN8BCF77gH8s9wgAAEMBmIBfAFhSaFjglP9FEgwIGY +HgIQyiNhIAzyHoYA35W4HqaKIAUJsgrv+ulxeneYFoAQz3GAAKi2BLhGkQUggARQcAnyz3KAANBJ +CYJKIwAgAeAJogSR13AAAP//EfRKIwAgDfDPcIAAXEgtgADfAeEtoGYK7/qKIAUMencBlZzgwPQE +ERQgCBERIM9woAD0JgLZI6Ajhc9wgADstSGgHgwgAKlwCiQAgLn0z3CAAKi2ZJDPcYAAIOBMIwCg +QCsFAQAhQgE/8s92nwC4/89woP4YBRamz3CgAMAvFSDGACoWB4YWFgaGz3eAACDgMCdBETamIYI2 +piKCNqYjgjamSBgYhc9xgADcz0kYWIQsiUAqDiMQuZ+5xXlBKA4hxXlHGFiADczruA3yENmruAwa +XDANGhwwz3GAAFRJB4EB4AehDRIBN+y5BvJKJIAGrLkNGlwwTCMAoGHyz3aAANyi4BYBEOWFRCk+ +BwAmQB7goKyVAeGisM91gADcz6yN4B5AEEAqASOoqAkYggQQvQoYBASleQwYAAVBKA0hEBhABKV5 +arDPdaAAwC9HHViQlOPAI4YPAACTAM9xoABoLPAhwQArsI8VAZbnuSL0z3Og/lAFoxUBllEhAIGP +FQGWFfRod892nwC4//am4ILnufam4YL2puKC9qbjgvam6/MI8EokAAIL8Oe5yiEhAEDBARSCMMa5 +xrpYqDmoiHARAC/zosDgePHA4cXPcYAAoCwjgUiBUSIAgCvyhiD/Ac9ygACcc0O4CmIA24DiyiHB +D8oiwQfKIOEHzyAhA8ojgQ8AAG8AyiTBABgAYfTKJSEAgeLPcKoADFC5gcb3gL25oQHZJaAF8KC9 +uaFloN0Hz/LgePHAYg/P8gh1DcxTIECAB/IEyDoLr/+YEAAAAYXBuIPgyiYhEAXyCgogAKlwCHaA +5mP0EIVRIICBA/QA2VDwDMxRIMCAQfINzFMgQIANEgI2JPQAIoAPgACIzgHZz3aAAChHIKgRjlEg +AIBQD+IEyiBCABGOUSBAgRDyz3CAAHRFA4iA4Ar0iiAQDxPZvg+v+ou5oghgAgTYENgMGhwwz3GA +ANhIF4EB4BehA8gNEgE2hBACAc9wgAB8zjV4KYBZYSmgGt678c9wgABcSC2AAeEtoHoPr/qKIMUJ +AdnPcIAA/CoB2kCoz3CAAMzPToAGggHgBqIC8AHZAtrPcKAA9CZDoEOFz3CAAOy1gOFBoJAMggO9 +Bu/yyXDPc4AAUM9YE4EAgOEA2g/0PJNiuRC5RSFDAc9xoAD0JmOhz3GAAOy1QaHtAAAA4HjxwBoO +z/IIdgGAwbiD4ADdBfLWCCAAyXAIdYDlNvQQhlEggIEm8gzMz3KAAOBHUSBAgRfyQNgMGhwwVRIA +Bs9xgAAAzgHgVRoYAA3IANoUeQPIQKmuCa//mBAAAArwrBIBAAHhrBpAAJoOr/qKIAUKz3CAAPwq +AdkgqM9wgADMzy6ABoEB4AahAtnPcKAA9CYjoCOGz3CAAOy1IaDpBe/yqXDgeOB/CNjxwG4Nz/II +dSh3JJVODq/6iiDEC0EvDhHDvojmz3GAAKh61nkH8gGVQYEE4FBwCNgE9CCBYHmpcJ0Fz/LPcYAA +zM8sgc9yoADIH2ThPqIQ2S6iAdkVGliAIYCA4QT0USMAwPzzIYDBuYPhEPTPcIAA/CoB2SCoz3CA +AMzPLoAGgQHgBqEA2Q3wIYBRIQCAANnKIeEFAYBRIECAyiGhBOB/KHDgePHAzgzP8s92gADMzwGG +BCC+jwBwAAA68i8pAQDPcIAAsEX0IE0AK4ZPJYAQlgpgAkmGgOAT9IwlA5DPcYAA4EcH9LoRAAYB +4LoZGAAe8LkRAAYB4LkZGAAY8AGG/rgP8s9xgAAoRwyJT4kQcgzyEYlRIMCAIAvBAgbwANnPcIAA +YLYgqAoOQAaxBM/y8cA+DM/yCHYBgMG4g+AA3xL0gOfPdYAAUM9J9BCGUSCAgTvyEIbuuAvyz3CA +APQsBYgT8NoO7//JcAh36/EQhu+4B/LPcIAABDAZiAXwBYYmhpYLD/RRIMCBmB0CEAjyHoWVuB6l +H4WXuB+lgBUAEAQgvo8QcAAAD/ScuIAdABAwhgYNL/hWJUAVQCYAEqAdABAA2AW2AdnPcIAA/Cog +qLQVARAGgQHgBqFYFYAQgOAZ9D4JT/qA4AXyEIbtuAHYAvQA2M9xgACyz/QhAAA8lThgYrgQuIC4 +z3GgAPQmA6EG8ALZz3CgAPQmI6Alhs9wgADstSGgsQPv8ulw8cA+C+/yANkIdQGAwbiD4MogQSAF +8v4N7/+pcBpwz3CgACwgBoAQeEwgAKDPdoAAUM/KJyIQWfQwhVEhgIEy8jyWMHDI9iWFz3CAAOy1 +AoAQcV30EIXuuAbyz3CAAPQsBYgO8BCF77gG8s9wgAAEMBmIBvAFhSaFcgoP9JgeAhCAFgAQBCC+ +jxBwAAAK9GYIT/qA4AvyEIXtuAnyAd8I8ADfGfCeCE/7FfAA3zCF3gsv+FYmQBWAFgAQqBYBEJ64 +gB4AEFEhQIJAJQASoB4AEOrzAdnPcIAA/CogqLQWARAGgQHgBqFYFoEQgOHPcKAA9CYa9M9xgACy +z1yW9CHBA1lhYrkQuYC5D/C0FgEQC4EB4AuhtBYBEIogRQsSC6/6K4HA8QLZI6Alhc9wgADstSGg +cQLv8gpw8cAOCs/yz3CAAFQeC4CA4A/yz3KfALj/HaLPcYAA4CoEgQHgs7i1uLi4BKEWos9woACo +IAiAUSWA0892gABQzwbyz3CAAPQsBYgO8FElwNMG8s9wgAAEMBmIBvADhlYJL/QkhpgeAhAfhlEg +AIEL9FElQNMH9FElQNIF9IDYmB4CEJgWgBDnuAvyX4Y+hrO6lbmXuj6mX6YA2QHdFvCcFgEQgeEQ +9D+GUSFAgs9xgACgLCOBKYEF8kQhDQQF8EQhDQID8AHdBNkYuCV4z3GgAIgkEKEfhlEggIEc8hSW +USBAgRj09gyAAoDgFPTPcKAALCAPgIDgBvINzFEgwIEK8h+GkLgfpq1xSgov+FYmQBWA5R30USKA +0wTy7gsAAhfwRCI+089xgABQzxH0AYFRIACADfKYEYAAz3GAABDjArgWeABh/riACcL6z3CgAFAM +AIDPdoAAuAcE2c91gABQzwCmz3CgAJAjPaAfhfO4BvQPhYDgANgx8k1xfgmv+oogRA43hYoVAhEA +hgTiGWFRIIDEBfRRIQDG+/PPdYAAUM+YFYAQ57gA2wn0ArjPc4AAEOMWeANjLbvAu4oVABFPFY0Q +z3aAAKAs8CbDEEJ5onjaDK/6T5OlAM/y4HjxwOHFocEA2EDAz3GAAFxID4EB4A+hA9nPcKAA1Asx +oOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB4MaDPdaAAxCcVFQCWz3GfALj/FqExFQCW +FqEQ2BAdGJAGCW/6i3CA4Bf0ABQFMFElgIAN9AohwA/rcg3YjLiKI18HPQAv9Iokgw8E2RMdWJAb +2RYdWJARAO/yocDxwM9wgAA4tloIr/QY2c9wgABwpk4Ir/QY2dHA4H7gePHAbg+P8hpwz3WgANQL +EIUA34HgocFAxw7yCiHAD+tyD9iMuIojlgiKJIMP1Qfv8wolAATPcKD+eALPdp8AuP8WplgeABTP +caAA/EQZgQQgvo8AAAggA/QdgUwgwKQI8koIb/qLcIDgyiACIEIgwSCU4W4BDQAyJkFwgAAAbkAn +gHI0eAB4z3GAAMzPToEIggHgCKIOgQiAFqaWDMAAANkocErwz3KAAMzPLoIHgQHgB6EOggeAFqbz +8c9ygADMzy6CDIEB4AyhDoIMgBam6fHPcoAAzM8uggKBAeACoQ6CAoAn8M9xgADYSAWBAeAFoR/w +z3KAAMzPLoIDgQHgA6EOggOAFqYB2QDYFvDPcYAA0EkagQHgGqEWprYOoAQB2L3xz3GAANBJFIEB +4BShFqYB2AhxgOEMDIIAz3CAAFDPH4DzuAnyz3CAALSp66jPcIAA6KbssAPYEaXgeOB44HjgeOB4 +4HjgeOB44HjgeOB44HjgeOB44HjgeBGlVQav8qHAGIbPcoAAzM+QuBimGIawuBimLoIFgQHgBaEO +ggWAFqZSCAAAxvHPcoAAzM8uggSBAeAEoQ6CBID08c9ygADMzy6CEYEB4BGhDoIRgLHxz3GAANhI +DoEB4A6hlPEKIcAP63JB2Iy4iiPYBx7x4HjxwIINj/LPcIAAzM8MgM92oADIHxDdAd9k4B6mrqYV +HtiTz3Gg/iACz3CfALj/NqDqDSAGCdgD2B6mrqYVHtiTBfAWCG/6iiBVDs9woAAMJAeAgOAE8lEj +AMD1840Fj/LxwM9wgADUHi4K7/oB2W/YBrjmCe/6CNkH2Aq42gnv+gXZ0cDgfuB48cDhxc9xgACg +LCOBKYFRIUCAyiCiACv0RLjPcYAAoEXDuAlh4LkF8lElgNEc9FEhQIAc8s91gACgLAOFGIiB4A/y +agoP+oDgB/LPcIAA6C8IiIfgBfIDhRiIguAG9FElgNEE8gHYA/AA2AkFj/LgePHAhgyP8kQiEFNN +doYm/BNNcE1wBCWAXwAAACBBKH6DBfIaCg/6gOAD9ADfAvAB3891gABQzx+F8bgE8gDdpPBMIACg +/PX2CQ/6gOAe8s9wgADoLwiIh+DMIGKCFvQBhYwg/48S9CSVz3AAAP//EHEM9AWFjCD/jwj0DJXX +cAAA///KJWEQgPLPcIAAoCzwIMEDCYFRIECBBfLPcIAAaHQE8M9wgAB0dDiJKmBBLgARz3GAAIB0 +CGEWes9wgAAoe0hg4LgF8j+FhiH2jxfy4bgF8j+FUSGAghHy4rgE8lElANIE8gHdDPDjuAnyz3Gg +AAwkMYGMIf+P9vMA3VEggIHKJSIQNgkP+oDgCPIEJb7fAAAAIsolYhCA5Sjyz3GAAFDPH4HouA/y +jCYCkMwmgp8AAFAAzCaCnwAA0AAD9JO4H6HPcIAAoCwCgMIQAAaA4BryjCYCkMwmgp8AAFAAFPRP +gUV4D6EP8M9wgACgLAOACYDhuAf0jCYCkAb0USCAgQLyAt1lA6/yqXDgePHA8gqP8s9wgABUHgCA +osGA4ADeD/LPcp8AuP8dos9xgADgKgSBAeCzuLW4uLgEoRaiz3GAAFDP3qHfocCxz6FPGYIDgBmA +A4wZhAOA25gZwgCEGYADz3KgAMgfpBIAAPgSDQCsGYADQhmEA6J4sBkAAM9wgABYo9mgz3CAAAjQ +wKAE3c9wgAB4B6CgmRGAAKC4mRkCAM9woADEJ2QYmIPPdQAA/38TGFiDG90WGFiDGhiYg4on/x/P +daAA/ET9pfmliieYHc91oABQDOKlcaJwojwYgIOKIxgIbqKAEgMApBmAA1EjQIDPc4AA7LVYGYID +DfJCEACGBCC+jwDAAAAF8gGDgOAD8gKjwaOAGoADUSGAw89zgADgR89wgACgLEOAGfIfgYu4H6FV +I8AFtBkAAArYHLEbkpYZBACKIEQLqgpv+gDZBtnPcKAAyBwpoA/wQCMAA7QZAAAQ2ByxGpKWGQQA +iiCEC4IKb/oA2c9xoADUCxCBgeAN9AohwA/rcgvYjLiKI9UAiiSDDwEC7/O4cwHdsKFRIEDGCvTP +cKAAqCAmgAeAxQIgAAPdz3CAAFDPtBABAACBAeAAofrYHgvv+gDZINjPd4AAKNAmCKAEAKcB2M9x +oADIHxOhz3OAAAArCINAJxAVQIAMgwAQBAAEg89znwC4/wAQBQD4EQAAz3GgADAQIYE2o89xoAAM +JCeBAiICgDajANkDJEMAAiUBAM9wgABQz1AYhANSGIQDVBiEAyOnz3CAAKAsQacjgGKnFJHPcqUA +CAwJtwiBwLgItwASBADPcoAAUM9TJEUBTBpCAVMkQgCD4sohwQ/KIsEHyiBhBcojgQ8AAJwLEAHh +888gIQMEJIMPAAAA4M9ygABQzy27mhrCAF+C67oUHwARDPIEu4G7ZXgItwfYB/AVIAwgwKQD8ATY +AeCI4Lr3CIHruPgJggbPcIAAUM8fgCu4UyAQAFEggMWu8s9xgADsMgaBAeAPeAahQSmAQ89xgADs +MkaBz3GgALQPN4HAuDByAN0I9M9xoACoICaBjCGDjsT3A92l8BJwBPIE3aHwz3OAACjQBYPPcqQA +kEH1gjaCBCCADwAAAOAtuOC456PPdoAAUM8oowTyUB7EEwnwUB5EEwQnjx///wAA56PhuAXyML9S +HsQTBfBSHkQT8H/no1EggIAF8lQeRBAI8FQeRBMEIYEP//8AACijDYIGowQggA8AAAD+KbhWHgQQ +H4bruCTyz3CqAAAEBIAJo89wgABwpiCIgOFEaDfygOFkAC4AAhCEAJ9xANioIMAD9CIPABXdE73w +Jc8Tz3WAACjPFX0B4OClHvDPcIAAOLYgiIDhRGgZ8gIQhACA4cokTXDKIC0A6CCtA/QiDwAp3RK9 +8CXPE891gAAozxV9AeDgpSGrAhsCAbQWARAC3QGBAeABoRfwBCC+z2AAAAAI9IoghQeqDy/6DBIB +N2rxUSMAwAfyiiDFB5YPL/oA2Vzxdgkv+vHYgeU584LlF/QC3QQgvs+AAQAAyiWiEQb0USMAwMol +4hCC5fXzz3CgADAQA4CA4MolYhGG5UAEAgDPdoAAUM8clkIghAAfhuu4LyQIAXvyz3CqAAAEooDP +caUACAwggQQlgh8AAAD/KLoEIYEPAAAA4Im6O3tFe89ygAAo0HKmrKJtoiCASBaPEJTnKqIZ8gb2 +iucZ9CO5DvC35w7y7ucT9EUp/gJBKcFwUSXAkcIhYgAH3QvwRSn+AkEpAXH68SK5+PEA2QjdAYA3 +ppThC6I8sg30z3eAAKAs44fohwQnvp8ABgAAA/KMu3Km5LjKJSIS4bjKJSEShiD+D0EoAwFNHsIQ +CJKH5WV4CLIU9I7hB92P989wgACgLAOAhBAAABBxB/fPcKAAMBAIgBBxAvII3YflyiABAWgPofrK +ISEAOQMAAM9wpgAIBAGABCCADzAAAAA0uFEgQMZCHgQQQhYBEQv0z3CgAKggCIAZYTB5Cg+v+ohw +BPAqD6/6iHAEIIBPgAEAANdwAAEAAADZFfQB2E4eAhDPcoAAKNCaFoAQQh5EEE0eQhA3pimiBLgo +kom4JXgIsnXwTR5CEM9wpgCMAz2AUSDAxwQhgA84AAAAQSjCBJoeghAEIYIPAAAA8Cy6JbhFeM9y +gABQzxKmBPISgoy4EqJTIc4CSBKDANei4LvRIeKHB90D9Ajdz3CAACjQKaCaEoEA6JAEueV5KLDc +sIflMoItoED0z3GmAIwDvYEEJYEfAQAAADC5ThpCAKmgThKAAIDgHfKN4y30USAAxif0FNjPcaAA +yB8eoRDYDqEB2BUZGIAK3VEgAMbKJeIRUSMAwMolIhKK5fjzFPCO5pH3z3CAAKAsA4CEEAAAEHYJ +989woAAwEAiAEHYD9AfdAvAI3Yfl6PTPdoAAUM9OFoAQgODg8s9ypgDUBCwSAYA0EhKAOBIPgMsS +EAZKcMa46XKGIv0PBrpFeEpyhiL9DwS6RXgEIYIPAgAAACe6RXhEJwIcDbpFeOlyhiLzDwQhgQ84 +AAAADroluUV4JXhEJ4EQFLkleIi4RCcBEkEpwYBSIEAFEqZYHkIQyiGCDwAA///KIYEPAAAQHzpx +N4ZAHkQQBCKBL/8DAP8ouTemognv9wDa8r+sHgAQO/JIFoMQMoag49Eh4YIz8gQhgo8AAAABCPJE +IQ0GI70B5YHlCvcEIY0PAAAAJNd1AAAAJCHyBCGNDwYAAAAxvYLlMgANAILlCvSA4hXyRCENBiO9 +AeWC5Q/0gOIE8szjC/ZXhjJyyiKODwEAiA3MII6AzffXcAEAiA3H989xgADQSRyBAeAcoQjdMvCG +If8JQSnNAM9wgABoOCCAAeVgeQbYEHUW989wgACgLAOACIAEIL6PAAYAAADZyiFiABKGBCCADwAA +AAgruBBxSfcCDQAACHWU4Mol4hMK8M9woAAwEAiAN4YQcQfdyiViElgWghDPcYAAKNAIkQe6iLpF +eAixF4YwGQAEHLEShuuhDaGsFgAQKBmABB2xh+UF9GoIAAAIdYDlyiUhEIDlpAqi/8ogQgMA2M9x +oADUCxChz3CAANzPDYhRIACAB/LPcKAAiCQegAsaHDDqDkAADMyGIPmPCfSE5cwl4pAF9ADYj7gM +GhwwMtnPcKAAyBwqoBECb/KiwOB48cC6CU/yz3CgANQLGIBCIAAISCAAAM9xgADsMiWBgeGKIZkO +CPTPcYAAoCwjgT6BgCGZDhBxAN3KJW0UgOU79M92gABQz1gWgBCA4MogIgAi9AwSATfjuRDyDcxT +IH6ADPLruBeGBvKg4AHYwHgK8I7gAdjAeAbwUSFAgRL0ANjPcYAAoCwjgSmBPXlSIQEAwLkkeIDg +CPIfhpG4H6YL8BeG6PFqDAAAWBaAEIDgPAsBAIDleAICAM91gABQz1gVgBCA4BPyAtnPcKAA9CYj +oM9xgADstQDYAaHA2ZkVgBCAuJkdAhAocALwQtjPcaAAxCe/GRiAANgMGQCAAdgQGRiAH4XxuBQC +AgAShTeFAg+v9wDarB0AEB+F67hZ8s9wgACgLEOASBWBEBSCJHhEIAMBRCEADEIoBAGAc89wgABU +LcG7aGCJuBylcBWOEPSCTRWAEMR/hib/EwR/RL7fZ892gAAYdPQmzxNiHcQTz3eAAHgwa2eJu32l +dIJ0FY8Q5HuGJ/8TBHtEv/tj9CbDEGQdxBByhXqlVIJ7pUR5JHjPcYAAKHSAcPQhAgDPcYAAUHT0 +IQAAjh2EEJAdhBCSHQQQlB0EEADYTh0CEJjwThWBEM9wgAA0RYDhAIDAuFPygOAA28ogIgAK9HKF +SBWAEAQjgw8AAAAIe3vCuAAgjg+AAEgtMI7YjsdwgAB0MM93gAD4tUiIZX7cpXAVjhBlecO+3H70 +J44TZXoQiGIdhBMFe32ldBWAEMO4HHj0JwAQOqXPcYAACLZkHQQQaBWAEMO4HHj0IQMAW6WOHcQQ +z3OAAFC29CMAAJIdBBBsFYAQw7gcePQhAQCQHUQQ9CMAADzwgOAA2Ab0SBWAEMO4HHjPcYAARC0J +Yc9ygAD4tTylcBWBEMO5PHn0IkEAYh1EEM9xgABoMAhhHaV0FYAQw7gcePQiAADPcYAACLZShWQd +BBBIFYAQw7gcePQhAwBapc9xgABQtvQhAACOHcQQW6WQHcQQkh0EEJQdBBAeDIABz3CAAKAsA4AI +gOu4BvJOFYAQgOCUDgIGWBWAEIDgBfIiCA//A/A2DQAACHX1Bi/yqXDgePHA4cXPcaAAxCcVEQOG +BNgTGRiAG9gWGRiAA9rPcKAA1AtRoOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB4UaDk +u8olohUr9FIRAIbguMol4RUl8lEgQIAF8lEjwIAD8hLdHfAB2c9wgAD8Ks9ygABQz7QSAwAgqAaD +AeAGox+C7rgG8s9wgACMBiCgCPDvuAbyz3CAAJAGIKAV3YogBAzODu/5ANlRBi/yqXDgeMHYFBoC +MM9xgACgLAOBGIgB289ygABQz4bgF4LCI8EADOAYIMAAZhoEAGYSAAED4AQggA8AAPz/nbifuOxz +AKMFyOxzAKMDgRiIN4KG4AHYwiABABghAQDscCCg4H7gePHAcg0P8s9wgABQzzKAUSFAghLyz3GA +AKAsI4FIEIIANIFEeVEhgIBI2soigQ8AAJAAA/AO2gDfz3GgAKggJ4GsEA0AWWGxccIlRRDKJeYS +sHj+Dm/6CtnPcIAA1EAAkM92oADEJ1EgAIEF8owlA5ID9wDdGvD6DOABANjPcKsAoP/6oP4Lr/0A +2BkWAJaA4ATyAtgQHhiQz3GAANBJG4FqvbhgFN0boRkWAJaA4Aj0USEAxlQNoQXKIGEAHQUv8qlw +4Hjhxc9xgAAo0EGJwNsUGsIwz3OAAKAsY4MSakfgBCCADwAA/P9pgyq7wLsXu8dzAA4AAGV47HMA +owXI7HMAo0okwHMA26ggwAHwIc0A7HCgoAHjgOIA2cz3z3CAACjP8CBDAOxwYKAB4VBxuPcA2c9w +oADUCy2gC8wB4BB4BCCADwAA/7+PuAsaHDDPcaAAiCQeoeB/wcXgePHAFgwP8s93gABQz0CXCHZI +cYYh/ANCKQUBRCIIA4wXARFCKIgQQNjPdaAA0A8KI0CAEB0YkMojYgCsFwAQQCuGBc9zgAAo0C8k +CAAdszgTBwFALAQEBScAAQwdGJBhiwK7SOMQHdiQZhcDEVEigIJ5YTB5Zh9EEAX0DpdTIMCAEPLP +cIAAoCwDgAmAUSAAgD3YwCjiBcogoQfAKCEGCvBAKAARoHDPcoAA4CsIYhe4A+EEIYEPAAD8/wUg +gAEleJ24n7gMHRiQC8wB4BB4BCCADwAA/7+PuAsaHDAOHZiTIBUAls9wgACgLAOACIDruA/y5L4N +9FoLIAbJcM9wgABk0KDZxNo920YNoAEXu3EDD/LgePHA4cXPcIAAoAcAkM9xgAD4vajaAd2AIEQL +EHi+CK/6qXOA4MohwQ/KIsEHyiCBDwAAtRTKI4EPAADMAMokIQBQA2HzyiUBAeYIQADPcIAAmDop +Ay/ytKDxwKYK4AEA2JYND/ZmDs/9AggP+6YJr/0A2P/Zz3CrAKD/OaA4oNHA4H7gePHA4cXPcYAA +oCzwIQIASiRAAMMSAQYPeDIigg8AAB8DBCGDDwAGAACA4wHbwHsEIY0PQAAAANd1QAAAAMIkAgEW +Ci/7wLmxAg/y4HjxwDYKD/JuCOACCHXPcYAAUM8fgbC4H6HPcJ8AuP9YGMAIz3OfALj/WBsACM9y +oADQDxCCz3agAMQnFqPPcIAA7DIGgBajGRYAloDgANkF8gLYEB4YkBgaWICyDEABMgogBAHYgOUF +8oYPAAAF8GYPAAD6C0/6GRYAloDgBPIC2BAeGJAdAg/y8cDPcJ8AuP9YGAAIz3CfALj/WBhACM9w +gADoHuIOL/oj2WoMT//RwOB+4HjxwHoJ4AEB2ADZz3CAAFRJLqDaCe/0GdjRwOB+8cBaCQ/yosGL +dpIKr/nJcAolAJAZ9M9wgABQz89xoAAMJDuBV4AwcsolIhIghvC5BPIC2YwYRAAEJYJfAABwxz+A +RXk/oIDl2gMCAADA6bja8s91gAB8OACFiiEIAOSQz3agAMQnEx5YkM9xgABQzz+BOnfxuYYh/CND +8kEpASHDuc9ygACoejZ6IIJAeQh1GRYAloDgBfIC2BAeGJDPcAAA/38THhiQG9gWHhiQA9nPcKAA +1AsxoOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB4MaDPcIAAWKMZgIDgKAyCAZrlOgMC +AM9wgAAI8rIMIAQA3SsDAABuC2//KnAacACF7gov/ypxjgsv/wh3iOfMJ+KVyiXBEy3yTCAAoAvy +CgsgAIHACiUAkBz0Hgzv/wHAGPAD2c9woADUCzGg4HjgeOB44HjgeOB44HjgeOB44HjgeOB44Hjg +eOB44HgxoADdmucH9M9wgAAI8jYMAASA5aoCAgAyDQACz3CAAFDPH4DuuAjyAdnPcIAAjAYgoAnw +77gH8gHZz3CAAJAGIKARFgCWAN1RIICAQcAY9OYIr/mBwAolAJAS9AQUBTBRJYCADPQKIcAP63IK +2Iy4iiPHChkAb/OKJIMPgOVCAgIABNgTHhiQG9gWHhiQz3CAAFijGYCA4BALggEjAgAA4LjL8s92 +gABQzxKGhiA6AIwgBIKUDAUCz3GgAAwkPIEXhiJ4ZLgQeIoeBBBEIgBTiOAL9B+G8bgF9FElQNEB +2AX0ANgD8JIKT/+A4JweABAw8gYND/8KJQCQ4/QNzFEgwIER8h+GUSCAgQ3yLyCHCowgAoYH9M9x +gABQzx+BmLgfoaoJIACBwAolAJDJ9M92gABQzx+G8LgV8qgWARDU2LYMYAHJcoDgB/J6CIAFC/CC +Dg//tPDPcYAATEoegQHgHqEB389wgAD8KrQWARDgqAaBAeAGoR+G87j0C8L5D4aA4AALwvkfhu64 +CPIB2c9wgACMBiCgCfDvuAfyAdnPcIAAkAYgoADYz3GgAMgcB6Ew2AqhNgrv/wHAiiCEDS4Pr/kB +wR+G+LgS8hDYDBocMM9wgAAI8m4KAAQNyAAggQ+AAIjOH4bgqbi4H6YAloYg/ACMIAKAHPSiDE/5 +gOAY9APZz3CgANQLMaDgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeDGgAJZeCy/8NJZF +8FEgwIBBwBXfBPTpdSHwCNjPdqAAxCcTHhiQPgjP/5TgCHUV8gLYPB4AkCEWAZbPcIAA7LUhoBEW +AJZRIICA5vXCDm/5gcAKJQCQ4POV5R30z3CgAJAjHoAEFAQwUSCAgMohwQ/KIsEHyiBhAs8gIQPK +I4EPAADkBOAFIfPKJSEAxg6v/4hwCHWpcJUF7/GiwOB48cA6Dc/xocEIdgDYQMAApl4Ob/mLcAol +AJCK9M9woAAEJSKAAIYEIYEP/wBf/wUhAgBAplMhggBTIIMAZXqH4lX0USKA089wgABQzx+APfL6 +uF70BCC+jwAeAAAD9ACGCvBRIoDA//VRIgDAAIYE8oW4AKbPcoAAUM8/gvm5B/KIuIu4jrgApkLw ++7kT8k8gAQKJuY25i7mOuSCmHoIEIIAPAgAAAFIgQAQquCV4AKYu8Py5xSCCDwAAAAXj9YUgHAAA +piTw9bgAhiLyhiAcAIUgGAAAplEiAMH/9VEiwMAAhhbyhrgAphLwUyEDAFMgAgAFI76AyiXhFQry +hiF/D4Ygfw8FIT6AyiWhFM9wgADczwyIxLhAKAEGAIYleFEggMQApqgMYgXKICIIqXB5BO/xocDx +wOHFAN0F2Au41g0v+qlxfg/P8s9wgABQzx+A67gN9ITl2gAGAFEgQMVp9FEgAMVV9AHlVPAA2Zy5 +z3CgANAbMKAB2c9wpACYQDygBdgI8FIJAAB6DGAFBdgB2HIMQAWE5W4ABgAEIL7PMAAAAAHlyiUi +EFEjAMAa9FEgQMUF8lEhgMMl8lEgAMcb9FEgwMXl81EhgMPj889wqgAABAGAhiA/C4PgAN3U9RPw +9ggAAM9xgABUSQ6BAeAOoQnwANmcuc9woADQGzCg2ggAAADZz3CkAJhAPKAR8ADdUSMAwAX07gtg +BQHYnPG6CAAAz3GAAFRJDoEB4A6hgQPP8eB44cUMzEQgPopK8uO4KvKA2AwaHDANzM9xgADYSM9y +oP6UAc9znwC4/+u4AN0G8h2BAeAdoUhwB/AVgQHgFaFAIgANFqMNzFEgwIAG9M9woAAsIK+gDcyG +IIICDRocMCDwUSBAgRzyiiAEAAwaHDDPcYAA2EgUgQHgFKENzADZRiCAAg0aHDDPcKAALCAvoM9x +oP70Ac9wnwC4/zag4H/BxfHAXgqgAQHYJg3v8QPYJggAAE4KoAEB2NHA4H7xwOYPz/9CDs//dgwP ++tHA4H7gePHANgrP8c9xoAD8RAWBAN68uAWhGgqgAclwA93iDO/xqXDPcaAAMBCioc9wgADsMqKh +cQLv8cag8cDPcKAAtA83gM9wgADsMgaAEHEE9LYPz/8E8JoPz//RwOB+8cDOCe/xANkH2BpxOnAA +3kAoACEUeMdwgAD4vRUgjQMAlYwgAo0A34T2jCCFgsn2/9gAtYogEQOKCq/5/9kBnbzgBfaMID+B +R/bhtYogEQNyCq/5ANkB5s9+jOa0B8v/QiFAIIDgQCBBIKIH7f8veb0Bz/HxwGYJz/EA3c9wgAAw +tQYPL/m0qIDgE/II3oDlzCWikMwlIpHMJWKR4Ati/sogQgNhvoDmAeUz9xzwiiQBcc9xgAAAzqgg +QAEEGVAD4HgA2UokAHLPcoAArM2oIAADFiJAAGKQz3CAAHjONHgB4WCwz3WAAKAsz3aAAHS1QCUA +FyRuXg8gAgbaQCUAFUAmgRJODyACBtpAJQAXQCYBFEIPIAIG2iwVgBCE4A/0iiAPCp4Jr/mKIVsF +PBWAEJ4PL/4thdoNj/gOhVEgQIEJ8ooghw5+Ca/5iiHbCHILgAPaDg/5gOCEDsL/z3EAAP//z3CA +AEzvLKD2CG/5K6DVAM/x8cBmCO/xFNnPdYAAmDDY3CIJr/MCJQATz3CAAOQyFgmv8xTZz3aAAKAs +QCYAFQCmwNwCJQATAaYA3alwqXHmDi/yBtoB2Klx2g4v8gbaAIZKJIBwqXECpgOmqCDABRUmQhBg +googxg0NswCCAeGpoACCqaAAgsAYWAMAgsEYWAMAgsIYWAMb2c9wgAAoR0UA7/EsqPHAug+P8Rpw +OnFIdsYLL/macwh1BCaAHwAGAACA4EoiQCDCIoIkBCaOH0AAAADXdkAAAABKI0AgwiPCJM9wgACs +BsSIAN+GD2AB6XCA5Q30A94vIQcELyJHBMlwSnNKD6/6CiTABMlwsg+v+opxgOUE9BoMgAME8EoM +gAPPcIAA7DIEgFEggIAQ8s9wgABsRQCAgOAK9DnY2gsv+Yu4geAE9M4Mz/8N8ADZnrnPcKAA/EQh +oOB44aASD2ABANhRB4/x4HjxwAoPj/GjwQh2z3CAAKAs8CCDA4onCxYtk/1jPHoocIYh8Q/Cuke5 +JHpQcYYg/gNEuA/yCiHAD+tyg9iNuIoj0g1KJAAAVQfv8golAAFIg39nO7pTIgKAQK9Nk8C6Qa0L +8veThif/GUO/5613k4Yj/gdFu2itgOIb8s9ygACARRUiAwAAizV6Aq0Bi89xqqqqqgOtAosErQOL +Ba0DigatVg9v+Yog0A++CyABAo2LcKlxHg+v8QzaAMABwcoM7/ICwotwqXEKD6/xDNoAwAHBHgzv +8gLCz3GAAFAHAKGyCCAFyXCNBq/xo8DgePHAIg6v8VfYz3WAAKAsI4XPcoAAVAd3keC7AKID8l/Y +AKLiuwPyhbgAolEjQIAE8oe4AKKKJgsWy2HZYQDagOPKIIEAz3KlAOgPBqIAic9xoACkMIDgAYHP +IOIA0CDhAAGhsgjP9QOFz3GgAMgcT4AC4EihQgzgAchgA4WyDC/9DoANBo/x4Hjhxc9wgACgLAOA +KYBEIYOAANol9JDijAAGAAAijQ+AAOArAI2guACtgBWAEKC4gB0CEEAVgBCguEAdAhAQjaC4EK2Q +FYAQoLiQHQIQUBWAEKC4UB0CEAHi3vGQ4kQABgAAIo0PgADgKwCNgLgArYAVgBCAuIAdAhBAFYAQ +gLhAHQIQEI2AuBCtkBWAEIC4kB0CEFAVgBCAuFAdAhAB4t/x5rkR8s9ygADgKwiKgLgIqogSgACA +uIgaAgBIEoAAgLgR8IDjEfTPcoAA4CsIiqC4CKqIEoAAoLiIGgIASBKAAKC4SBoCAFEhAIAA2B3y +SiQAdOB4qCAABuK4FfIAIIMPgADgKyATgQCAuSAbQgCgE4EAgLmgG0IAYBOBAIC5YBtCAAHgHPBK +JAB04HioIAAG4rgV8gAggw+AAOArIBOCAKC6IBuCAKATggCguqAbggBgE4IAoLpgG4IAAeDgf8HF +8cAyDI/xgeDPdoAAoCwacAP0AIYC8AGGxBAABhUmDRRMIACgAd8luFMgBQAghcB/QCEABsQRAQZR +IUCBDPQKIcAP63KB2I24iiOND3kE7/IKJAAEiiILDVlgABYDQFhgYKAAFgBAAaEAFoBACKkAFoBA +CanPcIAA7DIFgIHgB/RAhQAWAEEPsgPwABYAQQAWgEAKqQAWgEALqQAWgEAMqQAWgEAAFgBBB7EA +FgBBCLEAFgBAjgoP/QCFyBAABoYgf45K9PAmwBPIEAAGhiB/jkL0iiDTAU4Mb/mKIQ4HCnDSCy/3 +AdmuDC/8LyAHBHYP4AQKcM9wgADoLyyQHpYQcQXyPg0P+BJwJvQAhcQQAQYKcCW5wLkGD+/zANrW +DUABgOAJ9AvIBSCADwAAADwLGhgwDg5AAYDgCPQLyAUggA8AAADUCxoYMAvIkLgLGhgwLg+P8eIJ +z/Y9A4/x8cC2Cq/xANkKJACgocHKIWEAFfLPcIAA7DIQEAUAUSWAgA30CiHAD+tyftiNuIojCA05 +A+/yCiQABc91gACgLBUlDhUAhhUlUhAkEBUAABIBICAQFgAoEBcBQS1PISmBGhAYAcC/JblTIRMA +bg9gBA3ZiiCJAIpxugmv++ly+g7v/YpwAIYJgCW4UyAQAIpwxgov9wDZTCQAoOAIwf9MIACgU/KA +5w7yCiHAD+tyf9iNuIojiQdKJAAAsQLv8rhziiBQDwILb/k3lYIOAAK2Ce/2AdgAhgiAUSAAgAby +LBWAEITgA9gD9AXYTCMAoDpwGvRmCc/68gjP+oogkAXKCm/5iiHJDs9wgAB0RQOIgOAK9IogEA6y +Cm/5iiEJD5IL4AAA2CwVgBCE4Az0iiCPDpYKb/mKIQoAgNjmDu/6AdlKIwAgUPAaD2//inA2Ce/2 +ANgsFYAQhOAL9Iogjw5qCm/5iiHKA4DYtg7v+gDZTCQAoA/04gjP+toIz/oqC4/1rg/P+IDg/AuC +9QDYH/DeC4/1ng/P+IDgBPTiCUAFFvDPcIAA6C8IiIngzCDige/1z3CAAGRwAIAE2b3aHttAwItw +UgsgARi7Adh6cACGCIBRIACABvIsFYAQhOAE2AP0Btg6cACGKIAUkAQhj48ABgAABX8G8va5wiei +EMAnoRAqcIpxGg1v9OlygODKIEIECA1i9MohwgNMIwCgBPK+D4/2pvBmDs/4BNnPcIAA7DK2D+/8 +JKAghsgRAAaGIH+OQ/T2CS/8inC+DOAEinAAEgAgyBAABoYgf45C9M9wgADoLyyQHpUQcQXyegoP ++JJwNvSKcApxSgzv8wHaf9kRuc9woACwHzSgPggP+QoLQAGA4An0C8gFIIAPAAAAPAsaGDBCC0AB +gOAI9AvIBSCADwAAANQLGhgwC8iQuAsaGDBiDI/xDPAkGUAFIIYgGYAFIIYoGcQFIIYaGQQGrg3P ++IDgC/JMJACgANgF9M4PAAUD8KoNAAUB3V4MYAKpcM9wgADIKq4LYAKgqEwkQKAV9M9wgADoLwiI +ieDMIOKBBfRMIACgB/SI4Af0Bg7P+IDgA/LyC0/zxgqP+KIOj/YEypDgzCCCjwAAswAP8gohwA/r +cgESBDaS2I24iiONBg0A7/IKJQAFUgsgAgDYjQdv8aHA4HjxwGYPT/EA3c92gACgLAjfAIbEEAEG +QSlAAVEgAIAO8oDlzCWikMwlIpHMJWKRBvSA5cwlopAN9FEhQIEM9IDlzCWikMwlIpHMJWKRBPTC +CS/+qXBhv4DnuAft/wHlz3eAAMwvz3WAAJS1QCcAFSRtcg3gAQbaQCcAE0AlgRJmDeABBtpAJwAV +QCUBFFYN4AEG2s4WABbPcaAAxCfPcoAArC93GRiAGJJ4GRiA0BYAFoAZGIAckoEZGIAPEQCGg7gP +GRiACQdP8fHAlg5P8c92gADgBgCGSiAAIIDgPA/CAs9wgABUHgOAgOAA3w/yz3KfALj/HaLPcYAA +4CoEgQHgs7i1uLi4BKEWogzM4Lg/8s9zoADIH7ATAADPcoAAoCxDggLgRhIBAWG5CCBBAD6jENgO +owHYFRsYgM9wgAAI7gMaGDDPcIAA0O7qC6ADBBoYMM9xoAD8RAWBSiFAILy4BaEMzIYg/4HPcIAA +oAYAgMIhQSSA4BgLQv0EII5PMAAAAM91oADIHwnw7bgX9M91oADIHwp2CiEAJM9wgAAAKxCAz3GA +ANBJ7KEAgA6h1/DPdaAAyB8A39HwsgrP/s9xoAD8RAWBvLgFoc9wgABUSQ6AjCACjYj3Mg8v9BnY +hg0gAQDYDMzPdaAAyB/vuNTzBNgGGhgwH4WA4IogDADKIIIPAAAAAg6lA9gVuBIdGJAAhoDg0A3C +As9wgADgKgCABCC+jwAADzgA2Qbyz3CfALj/PaCJBU/xHoVRIEDFDBIBNzHyBsiGIPGPLfTPdYAA +4EeIFQAWBCG+jwAAAFAB4IgdGBAE8gTYDBocMP4J7/4A389woAD8RCWAvLkloGsVABaMIAKNYgAG +AM9wgADgKgCA67gF8s9wnwC4//2gSiBAIAzM5Lgr9Oa4R/SGIP+Fy/JRIwDAtfJRIEDFsfQMzM91 +gADYSFEgwIDkAQEAgNgMGhwwDczruKXyHYUB4B2lSiAAIKLwJg4v9BnYdgwgAelwjQIgAEogQCAN +zFMgQIBY8wTIAxIBNgMaGDAmCqADBBpYMM9woAD8RCWAz3WgAMgfAN+8uSWgz3CAAKAGAICA4BXy +cvD+CaADAN/PcKAA/EQlgLy5JaDPcIAAoAYAgIDgz3WgAMgfYPQGyAQgvo8DgOhTavVRIEDFaPUS +Cs/5TCEAoBvy34WgFQAQCSYAEOTgzfbPcIAArM0AgFEgQIAF8v6l0gvgABDY5ObH90AVARYweS4O +r/kQ2IogCACgHcATDqUfhYDgBPSKIAQADqXKCIABL9iVuBIdGJDPcAEAwPwVHRiQ+g5AA89xgAA8 +QwCBh+DW8s9woAA4LgWABCCAD8AAAADXcMAAAADF8vXYBbjPcp8AuP8aogfYG6Jp2Bi4GaIB2Lrw +dghP/Z/xAN+u8BWFAeAVpc9wgAAoRxGIUSAAgIwLYgPKIGIAgOYF8hyFAeAcpQzM57gA31ryDcwE +IIQPAAAAGAwkgI8AAAAIM/L2C4/2DcxRIMCAP/LPcaAALCAFgSaBCuAwcGAADQADEgE2AtgMGhww +UNiOD+/9mBEBAJ4IgAPPcKAA/EQlgM91oADIH7y5JaBA8YogBAAMGhwwFIWA5gHgFKXF8xuFAeAb +pcHx5g7v9wpwUSAAgAbyCNibuAYaGDBS8M91oADIHwTYBhoYMDnxA8igEAAA8LjpcBnywg8P9wDY +lrgV8Oi4F/KaDa/7iiAEAEoLr/bpdQPIoBAAAPC4qXAF8poPD/cA2JW49gyABATY1fHpuM9xoADI +Hwjyfg8v9wHYANiQuPPxBCC+jwAAAFAK8lEjAMAI8oogBAAOoQTYBhoYMA3M77gM8kARAgbPcYAA +yM8vkTByhPevuA0aHDDPdaAAyB/bBc//ANiB4AT0B9gAoc9wgADgBgCAgOBMCsICz3GAANBJDIFN +gQgiAAANoc9wgAAAKxCAT4FggA6BAnsAyggiwgCI4E+hCvQD2c9woABALTCgRQTv/wAawjMB4D0E +7/8AGgIw4HjxwHIJb/GKIIsBz3eAADQIWgov+SCHANjPdoAA+AfPcYAAxEUIoQumAYaGIHmPFvLP +dYAAMAgAhSCHGLgQuQV5hSEYACYKL/mKIIsABtgApQDY6wIgAACnA9jCC6/4C7iA4CCHB/TPdYAA +MAgAhRi45vGA4coCAgACFoQQAxaFEM91gABM0UAlkRCELB8AL3AAIIEPgABU2BUhQQFbkTqRQCUS +GkAlEBUAJQYQBBYGAYDiuGADgCHyMHLKIcUPyiCFDwAAeyfKI4UPAACHAT4AJQDKIsUHgOAP8hBy +yiHGD8oghg8AAHwnyiOGDwAAiQHKIsYHS/fQcU73CiHAD+tyz3AAAH0niiNGA0okQAABAa/yuHOA +4BDyEHHKIcYPyiCGDwAAfifKI4YPAACPAcoixgdt9wyGgOAj9AeGgOAh9AHYz3GgALAfGaHPcIAA +ACsIgACAhCwfAAmmACGAf4AAGNgw4PQgQQECCS/5iiBLBoogSwb2CC/5KYYB2AemAo7PcYAAoCyE +KB8AACVCHiOBRYJIoUOOACGBf4AAGNgw4fQhggDPcYAAoCwjgc9wgACgLFSxz3GAAKAsACVCHiOB +RoIndUmhA4AllS2wAtgIcW4Or/EA2toNQAACjiOOhCgfAAAhgH+AABjYMOAwIEIu9CBBAFMiAAC6 +D2//ANsCjs91gAAwCIQoHwAwIkEuXggv+YogEwECjoQoHwAvcTAiQCAAIYIPgABI1iOOArk0eRYJ +IAFZYYogSwcyCC/5IIUaC+ABAdgWDsAAIo5DjoQpHwAAIYB/gACY1xUghAAwFAAAUSAAgA3yAdjP +c6AAsB8Zo89wgAAAKwiAAIACps9wgACgLAKAhCkfAMIQAwaBu8IY2AAwFAAAwLhSIAAAG3hVeAAg +gg+AAFTYNOI0IkEOCrkyIUAuKKYghVEgQIAAhxi5ELgFeRHyz3CAACjRIBCAAIHgCfSFIRQAkg/v ++IogiwAF2AfwirmCD+/4iiCLAATYAKUA2ACnAo4jjoQoHwAAIYB/gAAY2DDg9CBBAF4P7/iKIAsE +z3CAAAArMIAggUoP7/iKIAsEDIaA4MogIQBwCSH0yiEBAAHYlQYP8QohwA/rcs9wAAB/J4ojBwhK +JIAAvQZv8rhz8cDmCE/3ANjRwOB+8cAiC6/44cWA4DTyz3GAADC1FImB4C7yN4mA4Qnyz3CAAMi/ +AYAQcQHYwHgU8M9ygAC0qQuKhiD/jB7yz3GAAMi/YYGkirFzANgF8iCKMHMC9AHYgeDPcYAAJAgA +oQr0z3CAAGBoJoAjgSCBLgjAAiEGD/EuCE/37vHgePHAog0P8c9xgAD8BwCBz3WAADAIz3aAADQI +gLgAoc9xgADERQWBAeAFoSCFAIYYuRC4BXmFIRgAUg7v+IogiwAG2AClANjJBS/xAKbxwFIND/HP +cIAA+gcAiM9zgAD7B0CLAd6YcIQoHwAvcAAgjQ+AAJjXMOXwJYEQwLmB4QAggQ+AABjYMOH0IYUA +x3CAAEzRwH4B4uOIT3rxcj4AKgBAq/QhjwCwdxn0gOYX8vAljxBRJwCQE/QB4uOIT3rxckz29CGP +ALB3CPSA5gby8CWPEFEnAJDy80CrA4gQcnoACgDwJYAQhCwfAMC4UiAAABt4VXgAIIEPgABU2DTh +NCFADs9xgAAYCAq4AKHHcAAAABgqD0/4z3WAADAIIIXPdoAANAhAhhi5gOAQukV5DfKFIQwAVg3v ++IogiwAD2AClANgApgvwhSEYAEIN7/iKIIsABtj18a4Oz/+tBC/xANjxwD4ML/GKIEsBpcHPdoAA +NAgaDe/4IIbPd4AA+AcEFwUQAd2odIQkhpAAFgQQIPJMJACA8Ari9sogIgHPdYAAMAgAhSCGGLhA +KQIEBXqIuoogiwDWDO/4RXkB2AClAN3PcIAAKWygqKl3jPBMJACAQ/SKIMsAtgzv+ADZz3CAADAI +IIYAgBC5GLgFeYUhSACaDO/4iiCLAM9wgAAwCALZoKYgoM91gAApbACNgOAK9M9woAAsIBCAx3AA +AAB9Dac0FwcQz3AAAMR+QMAE2EHAAd5CxgDYQ8BEwMlwENkE2gDbmHO4c7IL7/bYcwDYAK3Jd8l1 +RvBMJECAIvQD2N4Nb/gLuIDgGvTPcIAAKWygqBYK7/YE2ACGz3eAADAIIIcQuBi5BXmIuQIM7/iK +IIsAoKcA2ACmCHUB3yTwTCSAgCf0ANjPcYAAKWwAqU8lgAABp89xgADERQaBz3eAADAIAeAGoQCH +QCwBBBi4BXmIuboL7/iKIIsAoKcA3aCmqXeA5UQJQQDpcB0DL/GlwAohwA/rcs9wAAB6JzUDb/KK +I4UC4HjxwJoKL/GKIIsCpcHPdoAANAh2C+/4IIbPd4AA+AcBhwh0hCQGkAAWBRAk8kwlQIAE9B4M +z/IK8IW4AafPcYAAxEUKgQHgCqHPdYAAMAgAhQAWBRAYuEAtAQQFeYi5Kgvv+IogiwAB2AClANgA +pkTwTCUAgDz0z3CAADAIAIBALQIEQCgBBgi4RXkFeYogiwD2Cu/4gLkBhwHaQKbPdaAALCCwhYYg +OY8A2c9zAADEfgTYQMNBwELCBPIQ2EPAA/BDwUTBANgG2QTaCHOYcLhwACWHHwAAAH0aCu/22HCK +IAsFpgrv+IohzgMF8EwlQIAF9AHYDQIv8aXATCWAgM91gAAwCAAVBBAM9IW4AafPcYAAxEUKgQHg +CqFALAAGnfEKIcAP63LPcAAAhCf9AW/yiiNOCPHAXgkP8c91gAD4BwGFz3aAADQILy8BEIogCwE2 +Cu/4IIYhhVAhDACnvFAkDJIH8qYL7/JOJ8AXG/AodIQkBpAa8pYL7/JOJ8AXAYWGIAYAAaWKIEsA +/gnv+ADZz3WAAFw4AIWA4AXyQHgA2AClUQEv8QHYAIaA4Lz0USEAgM93gACgLJX0Ao0jjYQoHwAv +cAAggg+AAJjXMOLwIkMAAdoCuWZ6VHnHcYAAVNg04RBhCrgIpcdwAAAAGEoLb/hKIUAgwxcBFhpw +z3CAAADONHgRiIDg4gxv+MIhQiRMIACgzCEioMwgIoBT8iKNz3CAAEjYhCkfAC9yU2DPcIAA2AYA +kBBzI4ca9MdygABM0WWCCIFTIwQAUyAPAJB3DvRDioHixCOBDwAGAADEIIEPAAYAAMwjAYAE8gDY +A/AB2EmBDKXPdYAAMAhghVEiQIFAhhi7ELpleg/ygOAN9BiJg+AJ9E8iQQLuCO/4iiCLAALYCfBP +IgECibnaCO/4iiCLAAPYAKUA2CIOIAAApnHxTCAAoAj0iiALCLoI7/jZ2Wnxz3GAANBJHoEB4B6h +YfG+DKAAAdgAh8QQAAYluF4K7/PAuBII7/MU2PYJr/oE2OoIQAAijc9wgAAI2YQpHwAwIEEOcgjv ++Iogyg9+Ck/5QfEKIcAP63LPcAAAeSf920okgAD1By/yuHPxwF4P7/CKIEsCz3GAADQIOgjv+CCB +z3CAADQIAICA4Lb08gjv8gHeiiATAh4I7/iKIYwEAtimD2/2yXHPcIAArAYAgM91gACgLCaAz3eA +APgHnhEABqa4nhkYACOFSIE0kVMiAAAuDy//yXN6DQAAAtgA2aoNb/EC2iKFwhEABqG4whkYAACF +xBAABiW4wLjyCe/zANkjhYogywOuD6/4NJHPcKAAsB/ZoM9wgAAAKwiAAIACp9YKYAQC2H4KoAHJ +cM9wgADsMgSAUSCAgBHyz3CAAGxFAICA4Av0Jgtv+IogzA6B4AX0FgwP/wzwANieuM9xoAD8RAGh +4HgA2AGhWg6AAFoJj/0DhSmAz3WAADAIQIVRIUCBz3GAADQIIIEYuhC5RXkQ8kyHgOIM9BiIg+AK +9IUhHAASD6/4iiCLAAfYHfBCj89wgABc0YQqHwAwIEAOgOAG8gGHhiA5jwnyiLnqDq/4iiCLAMCl +CPCLudoOr/iKIIsACNgApQDZz3CAADQIIKBBBu/wKHAKIcAP63LPcAAAgyeKI00GSiSAAE0GL/K4 +c+B48cC2De/wiiDLAs91gAA0CJIOr/gghc92gAD4BwKOz3eAAEzRhCgfAEAnABQwIEEOcg6v+Iog +ywIEFgQQiHSEJAaQAIUS8s92gAAwCCCGELgYuQV5iLlODq/4iiCLAAHYAKYA2AClW/CA4ED0iHQC +joQkhpCEKB8AJ3cO8hAXBRAKIcAP63LPcAAAjSe5BS/yiiMPAA4Nb/YEhwhxz3CAAHxolg9AAs9x +gADERQyBAeAMoXINr/MU2FYPb/oE2M9wgAAwCACAQIVAKAEGELoIuEV5BXmKIIsAyg2v+EUhwQAD +2AClAdgb8IPgG/TPcoAAxEUtgs93gAAwCBC4AeEtoiCHGLkFeYi5mg2v+IogiwAB2ACnANgApQem +BQXP8AohwA/rcs9wAACFJ4ojzwZKJIAAFQUv8rhz8cB6DM/wz3WAAPgHIo3PcIAAWNFCIJAChCkf +ADAgQA4GDe/0KYUIdwGFz3aAADQIhiB5jwz0ANjiDi/4jLiA4AbyDIWA4MwnYZAl9ACGgeDgDYHy +DIWA4MwnYZAH9M9xgADERQCBAeAAoSCGz3WAADAIAIUQuRi4BXmFIRgA7gyv+IogiwAG2AClAN/V +ASAA4KYCjSONhCgfAAAhgH+AAJjXMODwIEAAUSAAgDnyCIUCDO/0IoWMIBCAZgApACCGgeFwDYHy +ANjPc4AAxEUIowOFgOAR8iSFANoA3w8nTxAGIMCDLy8BEAOlTieBFwHi9fUkpUijAIbPdYAAMAgg +hRC4GLkFeYUhFAFiDK/4iiCLAAXYAKUE2ACmAN+i8CCGheF0AQ0AMiZBcIAAaG5AJ4ByNHgAeAKN +AN+EKB8AMiBALlEgQIDKI8IDBfSyD4ADYIYCjSONhCgfAAAhgH+AAJjXMODwIEAAELvPcYAAMAgg +geC4QCkCBmV6DPKAuAOl5KUIuSV6iiCLAEUiQQGA8AHYz3GgALAfGaHPcIAAACsogACBAqUAgU8i +AQKKuQqluguv+IogiwAF2M9xgAAwCACh4KYB307wA4WA4CT0z3eAADAIAIcYuJC4krhPIAECirmK +C6/4iiCLAAXYAKcA2ACmz3CgALAfAd/5oM9wgAAAKwiAAIAKpYogSwReC6/4ANko8OC4B/QvKAEA +TiCBBySlgghv+wSFz3CAADAIAIBAhkAoAQYQugi4RXkFeYogiwAqC6/4gLkB389wgAA0ahoOYADg +poogSwQSC6/4JIV9Au/w6XDPcYAAxEUHgQHgB6HPcIAAMAgggEApAAaRuAi5BXmKIIsARSFBAd4K +j/gF2ETxCiHAD+tyT9gHuIojSQpKJIAAaQIv8rhzz3CgAEwuC4DTuGUFoAMG2fHA4cXPdaAAOC5H +hc9wgADARQDZQKAnpboKoAQg2AeFirgHpQvIBCCAD////wMLGhgwC8iPuAsaGDALyJC4CxoYMPkB +z/DgePHAqg/P/89wgADARSCAz3CgADguJ6BmDE/90cDgfuB48cBWCc/wpg0v+AHdgODPdoAA+AcB +hsB9hiB5D0IgAIDKIGIACLgFfQDYzgsv+Iy4gOAB2MB4ELgFIH6DLvILhoHgFfQCjiOOhCgfAAAh +gH+AAJjXNXgsgIC5LKDPcIAAxEWA2SmgANgLps92gAAwCACGz3WAADQIIIUYuBC5BXmFIRgAwgmv ++IogiwAG2ACmANgVAiAAAKVCjmOOhCofAC9wACCND4AAmNd1fSyFUyEEgDL064aB5y70TyQCAFIi +AgBbenV6gLnHcoAAVNgspTTiEGLPcYAAxEWA3amhCrgA2Qimz3CgACwgA4Arps91gAA0CAKmAIXP +doAAMAgghhC4GLkFeYq5Pgmv+IogiwAE2L/xz3eAAEzRhCofAEAnABMwIEAO3gjv9CmGgOBAJ5AR +HvIMhoDgGvQohs9wAAABFAghAACZIAoAugjv9CKGgOAH8iYOQACyCo//h/HPcYAAxEUAgQHgAKGB +8c91gAA0CACFgOAR8oTge/IKIcAP63LPcAAAgieKI0sOSiSAAFkAL/K4cwiGagjv9CKGgOAV8iCF +z3aAADAIAIYQuRi4BXmFIRQBkgiv+IogiwAF2ACmBNgApQDYbvACjoQoHwAvcBlnI5GA4R9nOPIj +jsdwgACY1zDg8CBAAFEgAIAu8gKXCrgOCO/0KoaA4FPyz3KAAOBHOYIYgiJ4JIJFgkJ5GWECjoQo +HwA0IEAuEHEW9yYIr/iKIIsEz3CAAAArMIAggRYIr/iKIIsEz3GAAMRFAYEB4AGhHfAghc92gAAw +CACGELkYuAV5hSEUAeoPb/iKIIsABdgApgTYAKUb8AiGHg+v9CKGCiIAgBAADwD+DEAAigmP/xDw +z3OAAGBoBoMDgCCAaHBGCWACWWEqD2/zFNgB2BUHj/DxwLIOr/CKIIsJz3eAAPwHjg9v+CCHz3WA +ADQIAIWB4EQIgfLPcIAAMAhAgCCFiiCLABi6ELlqD2/4RXkA3s9wgAAwCMCgz3CAAHxocghgAsCl +z3CAAGBoZghAAs9wgAD7B8CowKfPcIAAFAjAoM9wgADERcmgAtjJcfoML/EIcpkGj/DgfuB44H7g +ePHA4cUUuCV4z3WgADguBqUF8OoIb/iKIFwIBoX/uPvzfQaP8M9xoAC8LRV5WYExgc9zoADALzBy +CvSgEwGGESEAgAHYwiABAAS4BvBAIgAEInjDuOB+4HjxwM4Nj/DPcaD+xAYA389wnwC4/zagz3ag +AMAvpR7Ykw/dCL0F8H4Ib/iKIJwCoxYAlqR4jCAQgPfzFB7YkwbwYghv+Iog3ASjFgCWCyBAg/j1 +5QWP8OB4lODKIgUAhfcIcoAiwgTPcaAAaCzwIYEAANvPcqAAxCxnomiiDLiduJ+4JXgGouB+8cBK +DY/wCHZyD+//KHXJcBIP7/+pcaEFj/DgeOHFMNsA3c9woADIHGmgA9rPcaAAzBchGZiATqGnoGqg +4H/BxfHABg2v8ADZz3CgAAwkWIDPdYAAUM+tcEEqhgeGIPcPmBWDECm4dnnAccdxgAD46hV5ABGE +AM9wgAAUIiCAQCzOANV+0GHZYUQgj4BTII4ABCKADwAgAADMICKABvSA58wgIYAA2AP0AdjPd6AA +xCdAKwUGhiP9D0wkAIRSI8MBtAAqAEW7gObMICKAVPLPcIAAuHvwIIcDQC6GA4LmBSbGAQUlgAEF +e0Ef2JAm9B+FENqauB+lCNhPHQIQz3CgAMgcSaAHgc9yoADwFwaiBoEGogWBBqIEgQaiANgKoooV +ABFouBB4ih0EEACVhiD/jCn0AdgdoifwThWAEIDgI/SKFQARTKVkuBB4ih0EEIPmBNlPHUIQDPQr +FwGWZLgQeIodBBAM2C2lTx0CEKIK7/eIcAnwBSNDAUEf2JAfhbO4H6UtBI/w4HgQ2s9xoADIHEmh +AdvPcaAA8BdqoaQQAgDruibyAtpdoc9zgACI4USDRqFDg0ahQoNGoUGDRqFwEAABHOBTIMCABPRA +IwAIBPBAIwAMQIBToUxoQIJTofgQAoJTofwQAIAToQ/wXJCGIv+MA/R9oUiARqFHgEahRoBGoQWA +BqHgfuHFL4DPc6AA8BfPcqAA/Bcoo0AQAQEqsjGAKKNIEAEBKrIzgCijUBABASqyPJCGIfMPjCEM +gAf0NoAoo1wQAQEqsnAQAQG8kAjhqLK9kKiyVBANAaiyYBANAaiyuYCno7qAp6O7gKejchAAAThg +EHgIss9woAD0ByegAtnPcKAAyBwnoOB/wcXxwKoMj/cSCM/30cDgfuB44H7gePHAogqP8M91gABQ +zxeFmODPdoAAmOsG8lgVgBCA4AXyGoVbhQPwHIVdhc9xgAA0RSCBUSEAgAn0MoUEIYEPAAAAECV4 +JXrPcf7//z8keAGmAN/ipkR5LaYO2PoP7/cOpoDgCPLPcYAA2C/OCeAAAdjPcYAAtCzCCeAAANgX +hZTgBvQB2AGuMR4CEAXw4a4xHsITeQKP8OB4ocHxwPoJj/A6cQh2SHdSCu/5AN2B4MogQiML9M9w +gAC0KgCQgeAB2MB4QCgQA8lwhiD8AIwgAoUj9M9wgABQz5gQgADnuMogIgAK9AK4FnjPcYAAEOMA +YS24wLjPcYAAeAcggVEhgIDPcYAAyM8UeQTyINqtkQrwmNqrkQbwz3CAAIzPs5AO2gGXQCUBFRBx +RvaieEggAAAQeAPwANhacADYKnGpc6oMYASYcAohAKAE9I4LAAQ6cEwhAKAA2E30BSCAIw1xALEN +cQAZhAQjhw1wIKAolw1wILCKIIUAGgpv+MlxjCYClRTyjCYDkR7yjCYDlSPyCiHAD+tyE9iMuM9z +AACUCookgw+RAe/xuHPPcIAAUM+0EAEAD4EB4A+h1gkgAOlwE/DPcIAAUM+0EAEADoEB4A6hCfDP +cIAAUM+0EAEADYEB4A2hz3GgAPQHANgEoQHYGnDPcaAAyB/4EQIAQnUCJYAQSCAAAF+BEHhQcD4A +BQBDh89wgADstUwhAKBCoKDYD6EA2B+hz3CAAFDPHJBiuEJwH6EC2BUZGIAF8lEgQMYg2ALygNgO +oYwmA5UH9M9wgABQzxyQCPCMJgORCfTPcIAAyM8PkEIK7/gA2ToNj/4MzIYg+Y8R9IwmA5HKICEA +zyChAwnyTCIAoADYzyAiA8ogIQEMGhwwCnAI3FsAj/DgePHAAgiP8KHBCHdOCO/5AN2B4Ar0z3CA +ALQqAJAB3YHgwH0Mvc9wgACE7gSAz3KAACi2BCCADwAAABBFIEEDQMEgwMO4HHj0IgMAz3CgAMgf +oBACAHC7UHMA3g73fhAChqO6fhiYgPB4cHvyDmAEFNr4uATyyXA48APYz3GgAPQHBaGFJQMZDXCg +sA1wwLCKIv8PDXBAoM9yAAD//w1wQLADyM9zgAAQ489ygACgLBCIArgWeABjLbjAuPAiAACggA1w +oKADyBCIArgWeABjLbjAuPAiAABCkA1wQLDEoeoIAAQB2IUHb/ChwOB48cAOD0/wGnDPcYAAYLYA +iYDgFvLBgaKBz3CAAHgHAhERAeCAz3GAANBJC4E0vwHgC6E28LYJL/iKIAsIz3GgAMQnEREAhlEg +gIEA3/TzZBEChmQZ2IMC2BMZGICA4i8ogQBOIIEHE/LPcIAAwKk2eMCAoYDPcIAAQKr0IFEAz3CA +AGCq8CBPAArwz3GAANBJCoHpdel2OncB4AqhBBABIA1wIKAIEAEhDXAgsM9xgAAI0ACBgOAH8kKB +DXBAoADYAKHPcIAAoCwDgAiA67jKIIIDyiFCA8oiwgPkD2IEyiNCBFMhwCDPcYAAeAcggRS/USGA +gAy45XgJ8oK4DXEAoQ1wwKANcKCgH/ANcQChSiQAdOB4qCDAAkQmgRAPuVMmABAleA1xAKEivkok +AHTgeKggwAJEJYEQD7lTJQAQJXgNcQChIr0pBk/w4HjxwM4NT/AIdih1KHBIcWIIIABocoHgyiCB +AxAIIQDKIUEDGQZP8OB4IrkG8OxyYKIE4GG5geFggDr3z3CgANQLbaAD2c9woABEHTWg4H7geEEp +gYAK8i8kSXDgeKgggAEEEAIE7HFAoeB+4HjxwFoNT/ChwQh3z3agAKwvGYYEIIAPcAAAANdwIAAA +AAHYwHgvJgfwKHUachP0iiDJAxoOL/iKIcwFOYYODi/4iiCJA4ogiQMCDi/4qXEA2C3wC8wAHEQz +TyDBAwIcRDAB4BB4BCCADwAA/7+PuAsaHDDPcKAA1As4gEIhAQhIIQEAQCcAEhBxtA/FAwfnBCeP +HwAA/P8FJwAUnbifuOxxAKEAwexwIKAB2BUFb/ChwPHA4cX+DK/5AN2B4MogQgMJ9M9wgAC0KgCQ +geAB2MB4DLiFIAMBA9rPcaAA9AdFoQ1yALIDyADbXZANcECwA8hRgA1wQKADyEgQAgENcECwZKHV +BE/w4HjxwFoMT/DPdYAA3KLgFQAQAN6A4ND3RC4+FwAhQHMc2cXaHttqDu//GLvgFQAQAeYQdrP3 +ANiRBG/w4B0AEOB48cAaDE/wIYAKJgCQEInDuMohwQ/KIsEHyiChBsojgQ8AAKoAzyAhAzzygOHK +IcEPyiLBB8og4QbKI4EPAACrAM8gIQMu8gK4z3GAABDjFngAYc9xgAA0By24wLgMqSOGIJGGIfwA +jCECgAz0z3GAAKAs8CEBAL8RAAaBuL8ZGAABhqKAgOUI8gGFgOAE8gCFgOAN9AohwA/rchzYjLi5 +20okQAABBK/xuHNRIIDBBvQ2DwAAgOAN8oogzgJGDC/4wNkAhYDZKKABhUB4HvABhiCQFMgQccoh +zQ/KIs0HHdjKI40PAADGALgH7f/PIC0D8guv98lwCg0gAAGFz3CAADQHtgjgAwyIfQNP8M9wgAAc +avEGz//gePHA/gpP8KPBCHeKIIsD3gsv+Olxz3CAAPsHIIgBHMIzz3CAAPoHAIhgwYQoHwAAIYB/ +gAAY2C7g9CBAAADaAxwCMAHYAhyCMM92oADIHxOmz3GAAAArDIEAgITaQsAIgQCADNke20HAi3DO +DO//GLvPc4AAMAjPdYAAxEULEgE3XpWE2GCDcgngA5h3jggABKQWABATpdECb/CjwM9wgAAMtSiA +z3CfALj/ANo2oAjZ7HAgoAPZz3CgABQEJaAByOxxAKHPcKAA1AtNoOB+4HjxwC4KT/ClwQh3KHaK +IJkGCgsv+FrZANnPcKAALCCwgEDGBthBwELBQ8FEwQHYHtnpcgDbmHO4cwAlhx8AAAB9vgvgANhz +UQJv8KXA8cDmCU/wpMHPdYAA+gdAjc9wgAD7ByCIhCofAAAhgH+AABjYMOD0IEAAAN4PeWDAngov ++IogSwMgjc9wgABg0c91gADERYQpHwAwIEAOwLgBHAIwCYXJpQIcAjAIhcilAdkDHAIwz3CgALAf +OaDPcYAAACsMgQCAg9pCwAiBAIAe20HAz3CAAOBHPYAJgDhgQ8CLcBDZhgvv/xi7ABSEMAsSATfP +c4AAMAhelYPYLgjgA2CDnQFv8KTA4HjxwOHFpcHPcIAA+gcgiM9wgAD7B0CIhCkfAAAhgX+AABjY +MOH0IYIAAN1PeWPCz3KAAGDRMCJADsC4DRwCMNYJL/iKIAsDz3GgALAfAdgZoc9ygAAAKyyCIIEe +20HBKIIggUDBJIIggQ4cQjNEwItwQsEPHEIzFNmC2uYK7/8Yu89ygADERQwUhDALEgE3z3OAADAI +XpKC2IYPoANggwEBb/ClwAjIh7gIGhgwCcibuAkaGDAKyAoaGDALyIe4CxoYMAzIDBoYMOB+4HjP +cYAA3KMAgYG44H8AoeB4z3GAANA5NolRIcCBDvLPcYAAgDgggeG5yiFiAAX0USEAgATyANkgqOB+ +4HjPcYAA3KPgfwOx4HjPcYAAqGPgfwCh4HjhxYDgz3KgAKwvANkr9M9woAC0DzygGIL6uGT0FYJR +IACAYPIaglEgAIBc8s9zgAD4KkCDAWqB4Ab0Ad3PcKAAyByxoM91gABHaM9woADsJ6aggOJAo0b0 +z3CgAMgcMaBA8BiC+rg59BWCUSAAgDXyGoJRIACAMfLPc4AA+CpAgwFqgeAG9AHdz3CgAMgcsaDP +dYAARmjPcKAA7CemoECj4HjgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB4 +gOIF9M9woADIHDGgAdnPcKAAtA88oOB/wcXPcoAACEcVeiCiBQAv+Iogkg7gePHAmHAKIcAP63IK +JcAHz3AAAKIZiQdv8Vbb4HjPcoAA5EYVeiCi1Qfv94og0g7gePHAmHAKIcAP63IKJcAHz3AAAKMZ +WQdv8V7b4HjPcoAAHEcVeiCipQfv94ogEg/gePHAmHAKIcAP63IKJcAHz3AAAKQZKQdv8Wbb4Hjx +wKQQAQD5uQT0Yg5P9wfwINnPcKAAyBwpoAPZz3CgABAUJaDRwOB+4cUDuDV4z3GAAGBsAmFKJAB0 +ANmoIMACFiJAAKGAYIAp2BK4AeF1eKCg4H/BxeB4z3CAAKwGAIChwSaAnhEABoa4nhkYAOB/ocDg +eOB+4HjPcYAANAfgfwSh4HjxwA4OD/DPcoAAoCwjgjiJhOEO9AohwA/rcoogjA6KIwYCSiQAAHkG +b/G4cyCCxBEBBlEhQIFH8s92gABkZyCGQiEBgMohYgCA4T30gOAP9AohwA/rcoogzA6KI4YDSiQA +AD0Gb/EKJQABJoYjgc93gAAAK6CBJIcggdW5PWXPcYAAeOslgWG4BSk+ACd1iiCJC2oO7/epcQSH +IICKIIkLWg7v9za5yXDmD6ABQiWBEs9wgACAZwAlgR8AAIgT0g+AAbUFD/DgePHAmguP94DgH/R2 +C4/3gOAL8s9wgADoLyyQz3CAAKAsHpAQcQ/08gqP94DgDfLPcIAAgDgAgOu4B/LOCo/3gOAD9AHY +AvAA2NHA4H7xwKoKj/eA4BzywgqP94DgFPLPcIAA6C8skM9wgACgLB6QEHEO9M9wgACAOACABCC+ +jwAAOBAG9J4PT/eA4AT0AdgD8ADY0cDgfuB48cCyDA/wz3WAAIAHzI0NjcK+wrgWfs9+jghv/A3Y +BriBuBC+xXjPcaAA7CcGoQSFz3GlAOgPBqEFhQeh4QQP8PHAbgwP8M92pQDoDyaGp4bPcIAAgAcA +3ySgpaBKCG/8DdgGuIG4z3GgAOwnBqHmpkUlzR+npqEED/DgeM9xgADML89wgADYBgCQR4kQchX0 +z3CAANoGAJBBiRByDfTPcIAA3AYAiCaJEHEH9M9wgABEOACAAvAA2OB+4HjhxZ/h4cYA3RjynuED +9oDhQ/YA2BTwn+Ef3kr2TiH8B+B4qCCAAQ8ljRNhvhEgQIAD8qV4AvCmeACiAdjBxuB/wcXgePHA +rgsv8CjY7g0P+M91gABkOECFCHYEIIQPAADw/wDYYHpBLAEBQIUB2EQmBBNgekEsgQBAhQLYYHpT +JkEQug0v+ADYQIUId0EoAQID2GB6wLlAhUEvQRIE2GB6wLnPcQAAaNPPcIAAYDggoM9wAQAg+gCl +z3H+ygIAIgzv94ogkg+VAw/w4HjxwFoMz/vyD4/7z3EAAJDTz3CAAGg4ughv+yCgz3EBAFD6z3CA +AGw4IKDPcf7KAQDiC+/3iiCSD9HA4H7xwO4KL/BQ2CoND/jPdYAAdDhAhQh2ANhgelMmQRBAhQHY +yXFgeoYh/Q/PcQAAtNPPcIAAcDggoM9wAQCA+gClz3H+ygMAkgvv94ogkg8NAw/w4HjxwOHFsg4v ++QfY7gmv+wh1ng/P/z4Oz/ueCy/5qXDxAg/w4HjxwHIKD/DPcIAAdEUEiM92gAAoR4Dgz3eAAKAs +BvQDhw2QP5YQcSfytgrv8hXYz3CAAHRFAN2kqAOHsa6GCiAADZDPcIAAYDgggGB5BNiA4BDyz3CA +AGxFAICA4Ar0iiDYCavZ+grv9wS5Ugpv+wLYv7aKIJAI6grv94ohDgRdAg/w4HjxwO4JL/CYcM9x +gAAoR22JAN1AIQIKSiTAcOB4qCBAAxEjQIMH9M9w/wD//xUiTAMApAHlr31rgaqBcHUMgdX2EHXP +9hBzAtvKICkAyiVpEMojbADKICwAyiWsEBTwAdsC2ADdEPAQc8v2EHUA3cojqQDKIGkACPYB2ALd +A/AC2AHdANvwIs8A8CJFA/AiAAACJc4DzaECIEABDqEA2A8gwAA8GQIADyBAAz0ZAgCpAS/wABzC +AOB48cDhxc9xgAAoRw+Jz3WAAChHDKl+CSACAthRIADDHfRWD4AADI2GIP8BQ7gQuE8gwQbPcIAA +oCwDgDIggA8AANgCn7mA4AHYwHgPuCV4z3GgAPxEDaERjYS4VQEv8BGt8cDSCA/wCHfPcIAAoCwD +gM92gAB0RQmAJbhTIBAAB46B4NEnIZAL9ADYB676CCAA6XC6DyAAAdhd8M91gAAoRx+VEHdX8oog +kAV6Ce/36XEEjhKtAdgErs4IIADpcFEnAJAF9ASOhOAL9M9xAgICAlIJ7/eKIJAI7g3P/1HwEo2A +4ADZM/QB2ASurB1AEDGtFa0WrQrYF60F2BitUNpZrQDajrpIpUmlR6UD2kAdghAE2kEdghBCHYIQ +Qx0CEEQdAhBFHQIQBthGHQIQRx0CEEgdAhBJHQIQCNhKHQIQDNhLHQIQMti0HQAQ/gkgALAdQhAE +joDgFfIEypDgEfRMIACgD/LPcoAAKEcNijNoJXgPqg6qtBIAAMYNIAADrhkAD/DgePHArg/v70ok +QAAacMC4geDCJAIBCnKGIv4DRLoKcYYh8Q+A4M91gAAoR0e5BfQflVEgAIAD9ADYAvAB2LIdAhBE +IIAjHHgIcw2tBCCOLwAAAAxKvrh2060EII8vAAAAMEy/9K0EII4vAAAAQE6+sR2CE1MgvoDKIcEP +yiCBDwAAkRrKI4EPAACCAcoiwQch8kwkAIAu8gQjQAAQccohwg/KIIIPAACSGsojgg8AAIwByiLC +Bw30BCGAABByD/IKIcAP63LPcAAAkxqKI0YDiiTDD3EHL/FKJQAAgOJJ9AohwA/rcs9wAACUGooj +hgPx8YPnBPaA5wv2CiHAD+tyz3AAAJUaiiMGBePxsHeE9kwlAIAL9gohwA/rcs9wAACWGoojxgXV +8VMgBgBEII4ALySBAwAkjgGGIP8OQrgeZs9+sHZE9tOtuHbxdkT21K3Jd4LmRfYA2LEdAhCwd89w +gAB0RQf0xIiA5gPyBN7EqM9wgAB0RcSIgebMJiKQzCYikQX0E2tleA+tDq2A4swmIpEE8hNqRXgO +rYDhzCYikQXyE2kleA+tE2tleBCtDo0MrV4O4AEA2F0G7+8+HQQU4HjxwPYN7+8C2s92gAAAKySG +z3CAAHRFoIFEqCCB1b3CDq/3iiAQBs9ygAAoRzCKb4oA2ACihiH/AYYj/wEBogKirBoAAAHYQ7lD +u3BxEaoE9AXYEaongjB1UPeBuP4LIAARqs9xgABUSRmBAeAZoQSGIICKIJAJCPCuCwAABIYggIog +EApaDo/32QXP7/HAZg3P76HBz3CAAAArJIAA3mDGIIE+Dq/3iiAQCeYLAABaC+//i3DPdYAAKEew +FYIQgOJAJQEaBPQTFYQQEfAgwHmN8CEPAAGFBSj+ADd3NfYB2BOtsB2CE5hwyXKA4swkYYAQ9CDA +8CECAAGFOY0FKH4AN3LI9gLYE60B2bAdQhCYcEwkQIAd8kwkgIAR8kwkwIAi8gohwA/rcs9wAACY +GoojzAxRBS/xSiUAAAGFOI0FKT4ADYU3cAX3PRWAEAfwsRWAEIDg+vU8FYAQM2gleA95Dq0Q8AGF +OI0FKT4ALYUvIEAOEHEt9y6FMHCo9z/ZLq0UFYQQTCRAgBPyTCSAgCHyTCTAgBDyCiHAD+tyz3AA +AJkaiiMNBt0EL/FKJQAAPBWAEBHwAYVYjQUqPgBNhS8gQA4QcgX3ToVQcD/YRfc9FYAQU2hFeA+t +Bg2v94ogEAkvjQ4VhRAQjQUhQQEleIYg/wENFYQQQ7gLJACAyiLBB8oggQ8AAJoayiOBDwAAZgNw +BCHxyiHBDwYgPoHKIsIHyiCCDwAAmxrKI4IPAABnA1AEIvHKIcIPIQTv76HA4HjxwLYLz+/PdYAA +KEcVjSGFEHFH9xaNIoUQcWgABQAthc9wgABoRylgz3CAAHRFIg7v/yOoz3CAAGA4IIBgeQTYgOAM +8s9xAACwsFYMr/eKINgJqgsv+wLYANgNpQ6lAKUBpQKlrB0AEM9wgAAAKySAIIEuDK/3iiBQBkIJ +AAAq8BGNobg3jUCFMHLPdoAAACsRrYn3hgkAAASGIICKIFAJFvAkhiCBR4XVuVBxSveBuGoJIAAR +rQSGIICKIJAJCPAmCQAABIYggIogEArSC4/3UQPP7/HA4cXPdYAAKEcRjVEgAIEJ8g6NDK0mC+AB +AdgRjaS4Ea01A8/v4HjxwLYKz+/PdoAAKEcRjlEgAIBT8s9ygABQzz+C5rkL9ACShiD8AIwgAoBH +9FEhAIJD8gCGAeAAphCOhiD/AZoSjQBDuLFwOfQA2awWBRBKJMBwVhIEAaggwAXPcIAAoM80eGCI +ESVAkEAkDwtALYAAFHg1eNhgBfLg48InxRDzoAHhQCVAAMK4rB4AEAGGAeABpgCShiD8AIwgAoAE +9AKGAeACpoog0Af6Cq/3iiFUAKoLr/IV2GkCz+/gePHAA9nPcIAAdEUkqADYz3GAAChHEakOiUyJ +EHIF8gypNgrgAQHY0cDgfuB48cDPcIAAdEUC2SSoz3GAAChHEYmAuKO4D3ihuBGpDolMiRByBfIM +qQIK4AEB2NHA4H7gePHAAtnPcIAAdEUkqM9xgAAoRxGJRSBAAhGpEIlMiRByBfIMqdIJ4AEB2NHA +4H7geOB+4HjxwGYJz+/PcoAAKEcBghUShAAJJAQATCQAgAXyTCQAgs33CiHAD+tyz3AAAJcaiiNJ +CcUBL/FKJQACANtqokwkAIBromyi1/dod2h1aHESaRR4HmLThgHh32ceYtSGWGAVgNtjL3mQcR1l +rKKx92ui6qJdAc/v4HjxwOHFz3GAAKAsI4EtkQHbz3WAAHRFUyECAIHiR43Aewetz3WAAChHDiIC +gMoiYgCA48wiYYAG8rIVghCB4h70geAA2rIdghAV9DYOj/8MjS6NEHEE9EAlghME8EAlwhMUjQnZ +guAurUL2L60AigytBPCqD6//KHDtAM/v4H7gePHAbgjv7wDbocEEuM9ygACY6xR4HWKQ3hpiAYIY +vsiliiYEEs9y/v//P8mlBHqA4UDCyiXBAAvyCIEEIIAPAAAAMEIgBYDKJWIATCUAgCbyz3CAAPDN +ABAEAMiBBCSGDwAHAAAEJo4fAAAAMCy+Yb5BLgYGQCaAExEmgIMPIgIAQMJC9AohwA/rcj7YjLiK +I4oObQAv8bh2z3CAAHRFB4iB4M8ioQMv8s9zgADwzc92gABQz5oWgRADiwshAIAh8kwWgRAA21Mh +TgBEIQ8DDyODA0K/AN4PJs4ThiH/AwQmDpAA30S5BHsPJ08Q5HjKJgEQgOPKI4EDDrtlegPwAYMF +ekDCz3CAAPDNIICLcoYh/gMkuUApgwMgggQhjg8BAADACybAkBby13YAAABAzCaCnwAAAIDMJoKf +AQAAAAT0AYAD8AKArrmvubC5JXgAogAUBDAEJIGPAQAAwAr0CiHAD+tyRtiMuJUH7/CKI4sJCIUu +uUApAgYEHQARRXgIpYogBQYJpc9wgACkzwSIgOCKIAUOyiCBDwAA2AEJpalwANoB3oYMb/zJc8Ct +KQev76HA4HgKJQCA8cAT8kwlgIAT8kwlwIAU8gohwA/rcoogzQ6KIwQFKQfv8Iokgw9WDAAA0cDg +fuYLAAD98X4LAAD58eB48cB2Do/vCHXPcIAAREEJgIDgCvTPcIAA1EApgAzg8CBOAAPwAd6KIP8P +AKXPcYAAoCwAgcQQAAZRIECBM/SeC8/5AKU6CS/4qXCA4Mol4hGk9H4MD/eA4AX0AIWMIP+PDPTP +cIAAaDgggGB5AdiB4AXdyiUiEZLwz3GAABwiIZHPc4AA6AdAgzzhOmIhg2TiFOFZYTBwAd3CJU4T +s33BvXzwA4EYiITgE/T6Cs/5AKXPcYAAHCIhkc9zgADoB0CDPOE6YiGDZOIU4Vlh5PHPcIAAZGcA +gM93gAAEp0IgEIAKCu/5yiBiIAClAYcQdsb3Og8v9slxCHbPcIAAACsEgM9xgAB46wCAJYFJbtW4 +BSm+ACdwargghUggAAAwcMogRgBF9wClSiBAIM9xgAAcImGRz3GAAOgHQIEhgTzjAd16YmTiFOE6 +YlBwwiVOE7N9UyVNkCLyTCBAoCD0z3CAAGRnJg8AAc9wgACAZxoPAAHPcIAAKGgSDwABz3CAAERo +Bg8AASGHMHbJcMb3FgggAAHZBPDaDk//QQWv76lw4HjxwNoMr++4cQonAJDKIcEPyiLBB8oggQ8A +AEsDyiPhDsokIQBEBeHwyiUBAc9wgAC4ZwaAA4AAgM9xgAAAKySBSW/Agc9xgAB461MmTRUlgR1l +BSm+ACd1AiUCEIwiF4c2vv5mSffPcIAABKcBgAUofgAndR5mTCUAgBLyTCVAgD7yTCWAgGvyCiHA +D+tyiiCNDpDb1QTv8Iokgw/uCQ/3gOAU8s9wgADoLyyQz3CAAKAsHpAQcQryz3CAALhnAiWBHwAA +AAwH8M9wgAC4Z0IlARWKDgABz3CAANRnACWBHwAAiBN2DgABiiBJDNoMb/dCJQEViiBJDMlxZPCO +CQ/3gODPcYAAKGgR8s9wgADoL0yQz3CAAKAsHpAQcgfyKHACJYEfAAAADATwKHBCJYEXKg4AAc9w +gABEaAAlgR8AAIgTGg4AAYogCQ1+DG/3QiWBF4ogCQ3JcTTwMgkP94Dgz3GAAPBnEvLPcIAA6C9M +kM9wgACgLB6QEHII8ihwAiWBHwAAAAwF8ChwQiUBFc4NIAHJvs9wgAAMaAAlgR8AAIgTug0AAc9w +gAAEp8OgiiDJDRYMb/dCJQEViiDJDelxBgxP989xgAB46waBgbh1A6/vBqHxwAYLj+/Pd4AAnGcG +DSAB6XDPcIAAIEEggM9wgAAkQQCAz3agACwgCSEBAM9wgADkzAiACSENADCG6XBKDSABuWEwhoog +CgCqC2/3uWEwhoogCgyeC2/3uWEVA4/v4HjxwOHFz3CAAASnAYCB4Ab0z3CAANRAB4DPcYAA8Gcg +gUIhAYDKIWIAgOEd9M9xgABUzSyBgOEX9M9xgAA8zRoML/YjgQh1iiDJA0oLb/ex2YogyQM+C2/3 +qXGpcHIN7/8C2b0Cj+/gePHAQgqP789wgAAAKwSAoIDPcIAAZGcAgEIgAIDKIGIAgOA2vQb0z3CA +AIBnHgwAAc9wgAA8zSGIz3CAALhngOHPdoAABKcM9CCAQiEBgMohYgCA4QTyIIaA4S707gsAAc9w +gADUZ+YLAAEBhoILL/YIcSGGD3gwcMz3CiHAD+tyiiANA9fbSiQAAEUC7/C4c89xgADwZyCBQiEB +gMohYgCA4QfyHWUjhsm9MHUE8roM7/8A2fkBj++A4uHF4cZW8kAiwwMku8O6AvAA2o/ilgANADMm +gnCAAIxuQCcNc1R9IH3AiAEZkgMB4AEQggQBGZIAARCCBAEZkgABEIIEARmSAAEQggQBGZIAARCC +BAEZkgABEIIEARmSAAEQggQBGZIAARCCBAEZkgABEIIEARmSAAEQggQBGZIAARCCBAEZkgABEIIE +ARmSAAEQggQBGZIAARCCBAEZkgABEIIEARmSAEIjQ4Cz9cHG4H/BxeB4gOJYYFlhC/IvJIlw4Hio +IMAB/xCCgv8ZioDgfoDi4cXhxiTyY2oiu8G6A/AA2oPiGfczJoJwgACIbkAnDXNUfSB9wIAEGZAD +BOAEEAIEBBmQAAQQAgQEGZAABBACBAQZkABCI0OA5PXBxuB/wcXgePHAYgiv71MhQgBOIg0Bz3Kg +ABQEyYIA2w4mgh8AAAAGUHHKIcYPyiLGB8oghg8AAMYiyiOGDwAAmwLKJGYAsADm8MolxgCA4cok +TXDKIs0A6CAtAk5gz3GgADgEAeLIqYHlDvKC5Qjyg+UO9M9woAA4BGioz3CgADgEaKjPcKAAOARo +qEkAj+/xwLYPT+8acHpx+nK6cwoiACEKJEAhyHUKIcAhCiFAg89ygAAe48ohYgASaRZ4CGJMIwCg +BLgId4Yn/hMlf8ohzA/KIswHyiCMDwAAwSHKI4wPAADuAMokbAAMAOzwyiXMBFEggMEP8s9wgAAM +tYDZKKAMwIDgBPJAeJPw+gwP/4/wTCBAoIogSgPKIIIPAACOAjIIb/cA2c92gABQagGGANkOCG/x +ONoAhhzZIKABhhjZILDPcYAAoCwVIVYDABYBIFOBDcHwqM93gACICCgYQARFeaS5IaAA2TMYQgDp +cSKgCiFAgzEYwgQyGMIENBjEBcohYgAyCC/2DOCA5Qb0z3GAAHS1BfDPcYAAlLUjps9wAABIEQCx +TCBAoBjYAqYE8oogBQIAsQzAgOAE9M9wAQDM9gGnABYAILkQAAZRIACAF/JBhhrYALICpgCRh7gA +sQDYC7EBgkwlAKCtuAGiB/LPcIAA2EIEgDMaAgBMIgCgFPIhhgGBmLgBoQOBn7gDoc9xgABkBwAW +ACAAGQQFQIABgEGhAqEqCi//yXBhBk/v4HjxwBIOT++6cHpx+nIKIgAhCiFAIch1CiTAIQogQIPP +coAAHuPKIGIACHECuBZ4CGJMIwCgBLiGIP4DBSBQAMohzA/KIswHyiCMDwAAvyHKI4wPAACWAMok +bABoBqzwyiXMBAzAgOAN9AohwA/rcofYBriX20okAABJBq/wuHNRIIDBCvLPcIAADLWA2SigDMBA +eGrwz3aAAFBqAYYA3+lxag4v8TjaAIYc2SCgAYYQ2SCwz3GAAKAsFSFWAwAWASAzgTMYwgPPd4AA +kAgQGAIEpLmNuZm5IaDpcSKgCiFAgygYAAUxGMIEMhjCBDQYxAXKIWIAjg7v9QzggOUF9M9xgAB0 +tQTwz3GAAJS1I6ak2ACxTCVAoBDYAqYF9KTYjLgAsc9wgACgLBmQjriPuAGxTCIAoAzAAacT8iGG +AYGYuAGhA4GfuAOhz3GAAGQHABYAIAAZRARAgAGAQaECocIIL//JcPUET+/xwOHFz3WAAPBKAI2M +IMOPD/TPcoAASGcGggOAIIDHcQ8AAKAmD+AASHD+2ACtFQVP7+B48cCaDG/vANjPdYAA0OVKJAB0 +gN6oIAAFCHEB4E8gwgEWJUMQR6uKIggAArk2ecdxgAAQ40ChANpCscapwNh/HQIQz3WAAOAHwK3P +cIAAkOKA2R4NL/EocsGtz3CAAAQw2ajPcIAA9CydBG/vxajgePHAJgxP76HBCHeKDC/yGNjPdoAA +4EcghgGGgOHMICGAK/TPcKAA1AsYgADdQiAACIDgyiBMA4wgCIVI98EWABYB4MEeGBAd8J3YABwE +MAvM6XECHAQwAeAQeAQggA8AAP+/j7gLGhwwAMAe2loIIAAYuqGmBfCA4APyYbgBphoIAAAA2HYN +b/hAJgESAQRv76HA4HjxwM9wgACgLAOAGIiF4A/0z3ABAKCGKg2AAmYLz/QIcc9wgACYaO4NwADR +wOB+4HjxwFoLT+8IdxpxOnLPdoAAoCwDhs91gADgRxSQELjiD6/2AqWA4MogIiDPcIAAdAcAgIDg +CvSFIQgkTyFAJ5+47HEAoexw4KADhgiAUSAAgATyAoWBuAKlz3CAANwGAIiA4AX0AoWDuAKlz3Cg +ACwgEIDPc4AAaElyHRgQSiTAcADYqCAABs9xgAC0BiCJgOEM2soiIQBEKL4Dz3GAACjzJ3IzIYIA +QCMBAxlhAeBAqUAlDhICDy/yyXBMIACgB/IihQDYgLkipQPwiiD/D89xgAB0ByCBZxUPFoDhaBUE +FhP0ANsH8OxyIKIEeQQeUBAB44wjgoAghrf3z3KgANQLLaIkeACmZx3YE2gdGBEA2KkCb+/cHQAQ +JQbv/wDY4HjxwM9ygADgBgKCJYiA4QHYBvII2foJb/crogjwz3GAABgzOg4v8ACh0cDgfvHAFgpv +79hwPgggAADdyWiA5pb2+HCpdzImgAOw4Ir2ueAI9uYMD/Mybzh4BX0B50InRwBMJwCAYb4w90EC +b++pcOB4CHID8AHgIIiA4f714H9CePHAxglP7891oAD8RB2FOYUGC+ACAN4A2J64AaXgeMGlxaUR +Ak/v4HjPcaqqu7vPcJ8AuP82oDagNqA2oM9xoADIOw6BiLgOoWkgQAD+8eB48cDPcIAAoCwDgBiI +hOAO9AohwA/rcoogDA6KI4UKSiQAAOEBr/C4c4ogCgsyCi/3iiFFC6oJL/ID2M9wgADkzAAQBABM +JACAC/QKIcAP63KKIEwOiiMFDKkBr/C4c89wgAC0KgCQgeAB2MB4DLjXcAAAABAS9M9woAAsIBCA +z3GAAERBAqEC2AOhz3EBAMRatg7v/gHYCPCKIAoLwgkv94ohhQ7RwOB+8cDGCE/vz3WAAFTNL4VK +IAAggOHKIcEPyiLBB8oggQ8AAL4hyiOBDwAASADKJAEEKAGh8MolwQDPcIAAtipAiM9wgAAMtWB5 +SKA8HQAU6ggv8gLY1QBP7/HAdghP7+IK4AAIdYDgz3GgAMgfRYUN8m4RDgYCgGSFxHpFe24Z2AAi +hQChCvBuEQAGRHhuGRgAHNgYuBUZGIChAE/vgOAB2cB5z3CAAOxK4H8goPHAHghP789wgABgOCCA +osFgeQTYgOCqAgEAz3GAAPgqAIEB4IHgAKEJ9AHZz3CgAMgcMaC2COACKHAGDG/4BdjPdoAA0EQO +ps9xgAD4KgCBAeCB4AChCvQB2c9woADIHDGgigjgAihwA9jyDi/wyXEE2OoOL/AibgXY4g4v8CRu +C9jaDi/wJm4P2NIOL/BAJgESNtjGDi/wQCaBEjfYvg4v8EAmARM42LIOL/BAJoETz3enABRICIfP +cacAmEcEpg2Hz3KrAKD/BaYOh891oADsJwamHIEHpheHCKYWhwmmGIILphmCDKYagg2mz3AFAMYD +BqXG2JC4BqXPcCwAAgEGpc9wWgBCAQaliiCLAAalz3BAAIcNBqXPcNEAwg0Gpc9wwAAHDgalz3CA +APgqAIDPcoAA+CpCIECAAKIG9M9yoADIHADYEaIB2AinANgNpw6nz3BQAP8AHKEB2BenANgWp/zZ +z3CrAKD/OKBz2TmgGoDPcasAoP+BuBqhz3AqAAIOBqWLcEIMIACBwQDBz3CAAIilNaYyoAHBL6DP +cBoAAg4GpYtwIgwgAIHBAMHPcIAAiKU2pjOgAcEwoM9wJgACDgali3ACDCAAgcEAwc9wgACIpTSg +N6YBwTGgz3CAAPgqAIAB4IHgz3GAAPgqAKEI9M9xoADIHAHYEaHuDoACAZYQuIUghAAGpQKWELiF +IIUABqUDlhC4hSCLAAalBJYQuIUgjwAGpQWWELgFIIAPAACCDQalBpYQuAUggA8AAMINBqUHlhC4 +BSCADwAAAg4Gpc9wgAD4KgCAz3GAAPgqQiBAgAChB/TPcaAAyBwA2BGhBIYrhginBYYNpwaGDqcI +hhenCYYWp89wqwCg/zigLIY5oC2GOqCmDi/4DobPcIAA+CrPcYAA+CoAgEIgQIAAoQf0z3GgAMgc +ANgRockFL++iwPHAXg0P734IAADPdoAAlGp2D6/1AIYIdQCGEHUK8pYLb/qpcEIMr/qgpkYMb/IR +2LIOz/TPcKAALCAwgM9wgABwB4kFL+8goPHAug/v/6HBz3CAAPRKAIAE2WLaHttAwItwMg+v/hi7 +ocDRwOB+4HjxwFYN7/EW2ADY0cDgfuB48cDaDC/vB9jyCE/4CHfPcKAAtA/cgMIM7/4A2M9xoAAs +IDCBog3v9oogkQX+Cc/6z3WAAPRKjg3v+gClQIXPcYAAgGoAoc9xgABUSUqhSg2v+wuhggzv/s94 +og0v+Olwz3CAAMgqAIiB4CL0QIWKIEQEz3WAALgqI4UaYjhgEHIB2MIgBQCA4AvyiiARCzoN7/YA +2eIJ7/IE2ACFBfDKCe/yBNgCha4PYAIDpZUED+/xwM9wgADsSgCAgOAd9GINb/cW2IDgGfTPcIAA +YDgggGB5BNiA4BHyz3CAAEw4YIDPcQIARBwL2GB7BNqSDe/xFtjRwOB+z3GAAKAsAIHEEAAGUSBA +gQj0AYHEEAAGUSBAgQny2gpv8hPY1gpv8hHY6fHp8fHAz3CAAEQmAIDPcYAAcAcbeHYML/MggYDg +CfIB2c9wgADIKmoP7/8gqNHA4H7gePHAhgsP7wh3fdgNuM9xgAB468WBDg0v78lxjCACgM9xgABI +JgDdh/cdeIwgAoAB5Xz3AChCAwUqvgPPcoAARCYWuAChgOfPcYAA8EoAGkAOA/T/2ACpAImMIMOP +YA6B/40DD+/xwA4LD+86cHpxSHdodgokACEA2s9xqwCg/1mhB9gaoVihzgugAgHYGdnPcKcAmEc6 +oJIML/se2M9ypwAUSB2CvoJsEhAAcBISAACnoKb3uMUggg8A/wAA0yDhBfe9xSWCHwD/AADTJeEV +ig7v9IohEAAIdqlwfg7v9IohEAAIdUAoACJuDu/0iiEIAAh3QCoAImIO7/SKIQgA0XkZ4Sx5L3Gx +ehniTHovcjB3ABmAIwAbQCOD9gDYBPBQcH32AdihAi/vABwCIPHAXgoP7wh1KHYeC6ACCtgB2M9x +pwCYRxqhDgugAgrYz3CmAJw/ZBAEAFEkAIDKIcEPyiLBB8oggQ8AAL8ZyiOBDwAAuACkAmHwyiUh +AM9wpwAUSCyAHYAApve4xSCCDwD/AADTIOEFYQIv7wCl4HjxwOYJD+/PcoAApLTEgowmw5898v/Z +JKLAoIQuCBkAIY1/gABIsASNCiBALoDgAd8S9AKFz3GAAJwzUg/v8CCBCHHPcIAAACsEgACA1grA +AIDgBPQB2Bzwz3CAABwzIo3AqCGoz3GgALAf+aHPcYAAACswgSCBAN0hoAYJL/fpcAAggC+AAGiy +oKgA2L0BD+/xwM9wgAAAKwSAz3GfALj/AIDVuBahPg6P/s9xoADQGxOBkLgcoSYJ7/4A2NHA4H7x +wOHFCHXPcIAAACsEgCCAiiDJCwIK7/Y2uYogyQv6Ce/2IoVyCe/xBtjaDI/7z3CAAKAsA4AYiITg +DvQKIcAP63KKIAwPiiMGC0okAABtAW/wuHPPcYAA1EAJgYTgRPcB4Amhz3GAAHjrBoFGIEABBqHP +dYAA5AcAhYLgEPSKIEkFlgnv9oohRg8ghYogRg/yD+/4BNp+CS/5BNgFAQ/v8cDhxQh1z3CAAAAr +BIAggIogCQxiCe/2NrmKIAkMWgnv9iKFz3GAAERBCYEB4Amhz3GAAHjrBoGCuAahz3CAAHRFA4iA +4Av0iiCQDioJ7/aKIccFCgpv/gLYiiDJAxoJ7/aKIYcGygnv8QbYlQAP7/HA4cUIdf/Zz3CAACCw +IKhvIEMARgpv8AHZz3CAAAArJIAggeII7/aKIMwNBoUDgEKFIICKIIgAzgjv9kJ5VQAP7+B46QYv +8hHY4HjxwOHFCHXPcIAAACsEgCCAiiCJDKYI7/Y2uYogiQyeCO/2IoXPcIAAoCwDgBgQhABMJACB +DPQKIcAP63KKIEwPiiNHChkAb/BKJQAAz3CgACwgMIDPcIAAAGT2CaAAliFBD89wgABUzQyAgOAX +8s9wgAC0KgCQgeAB2MB4DLjXcAAAABAL9IogyQMyCO/2iiEHDvYKIAAA2CfwDguP+89wgABAIwCA +gOAd9M9xgAB46waBRiBAAQahz3WAAOQHAIWC4BH0iiBJBfIPr/aKIYgEIIWKIIgEUg7v+ATa2g/v ++ATY2ghP+WEHz+7gePHA4cUIdc9wgAAAKwSAIICKIMkMug+v9ja5iiDJDLIPr/Yihc9wgAAoaACA +QiAAgMogYgCA4Aj0z3GAAERBCYEB4Amhz3GAAHjrBoGCuAahNgjv8QbYz3CAAFTNDICA4Bfyz3CA +ALw9AoCA4BHyz3CAALQqAJCB4AHYwHgMuNdwAAAAEAX00gogAADYEPDPcIAAdEUDiIDgCvSKIJAO +Mg+v9oohSA8SCG/+AtitBs/u4H7gePHAMg7P7qLBgODKIYEPrd6t3gfyJoAjgSCBAoACef4Or/aK +IE8Nz3WAAFArAYWB4Az0iiBPDeYOr/aKIYYKANjaCe/1AaVT8PYJz/WB4AHYwHgvJgeQD/KKIA8N +vg6v9oohxg0B2H4Pr/AGpXIN7/UC2M4Jz/WC4A3yCiHAD+tyiiDfBYojBwCKJMMPMQYv8LhzignP +9c9wgAB46wWQgOBKAAwACoUI2UHAC4WU2h7bQMCLcLIPb/4Yu4ogjw5eDq/2iiEHBIogjw5SDq/2 +K4WKII8ORg6v9iqFgOYF9AYPj/AB2AelANgLpbUF7+6iwPHA4cUIdQaAA4BChSCAiiAPCxoOr/ZC +ec9wgAB46wWQgODF9j4Mz/UD8PoLz/UOCCAAqXCBBc/u8cAKDe/uiiAPCuoNr/aKIYUI+ghv9gDe +gODPdYAAUCsN9Iogzw7ODa/2iiHFCQHYAaWqDu//yXA/8AvIBCCAD/7//wMLGhgwC8iHuAsaGDAL +yJC4CxoYMPYID+/CDE/2Sg6v8QvYz3CAAAArEIAkhQCAx3EAAAAUInjXcACAAABI94ogDwpuDa/2 +iiEFD8Olhgjv9cKlgOAcDOH1yiBhAM9wgAB46wWQgODKIIkPAABAAOgOSfjBBM/u4HjxwOHFCHXP +cIAAACsEgCCAiiAJDiINr/Y2uYogCQ4aDa/2IoXPcIAAoCwDgBiIhOAN9AohwA/rcoogzA+KI8oF +SiQAAJUEL/C4c89woAAsIDCAz3CAAABkcg5gAJYhQQ/PdYAA5AcAhYLgEfSKIEkFxgyv9oohCggg +hYogCggmC+/4BNquDO/4BNiKIMoBqgyv9oohyggB2c9wgAC8PSKgz3GAAHjrBoFGIEABdg9v+wah +hg0P+Q0Ez+7gePHA4cUIdc9wgAAAKwSAIICKIEkOZgyv9ja5iiBJDl4Mr/Yihc9wgACgLAOAGIiE +4A30CiHAD+tyiiAND4ojig9KJAAA2QMv8Lhzz3GAAHjrBNgGoYogygEiDK/2iiHLAc9wgAC8PQHZ +IqDPcIAAdEUDiIDgCvSKIJAOAgyv9oohiwLiDC/+AtiqDK/xBtimDK/xCNhxA8/uz3CAAABk/QRA +AOB48cCODK/xE9jPcIAAACsEgCCAz3CAAAAdIKDRwOB+4HgIcgDYeQKv9RDZ4HgIcgHYbQKv9SDZ +4HgIcgLYYQKv9UDZ4HgIcXUCr/UA2AhxbQKv9QHYCHFlAq/1AtgZBs/v8cDhxQh1z3CAAAArBIAg +gIogSQ1iC6/2NrmKIEkNWguv9iKFz3CAAKAsA4AYEIQATCQAgQz0CiHAD+tyiiCMD4ojCQPVAi/w +SiUAAM9woAAsIDCAz3CAAABksgxgAJYhQQ/PcYAAeOsGgUYgQAEGoc91gADkBwCFguAR9IogSQX2 +Cq/2iiGJByCFiiCJB1YJ7/gE2t4K7/gE2N4LD/llAs/u4HjxwOHFCHXPcIAAACsEgCCAiiCJDb4K +r/Y2uYogiQ22Cq/2IoXPcYAAeOsGgYK4BqHPcIAAdEUDiIDgC/SKIJAOkgqv9oohCQ1yCy/+Atg+ +C6/xBtgJAs/u8cAyC6/xFNiCCA/w0cDgfvHAz3GAADAIiiALBl4Kr/YggRILr/EU2PoLb/gE2NHA +4H7geP0Cr/EY2OB48cD/2c9wgADwSoIMb/8gqI4Nj//RwOB+8cA2Cc/uz3WAABQzABUQEIwgw68I +8oogDA0OCq/2iiGHAiLwgOAT9M9wgAAotGgQBAAKIcAP63LPcAAAhwyKI8cDiQEv8AolAAQIcYIh +CADPcIAASLAOIEAAngrv7oohCAkacM9wgABEuBMQAoaMIsOP/9kF8hwYGIQgpQvwExgYhCClANnP +cIAA4AYkoIoPj/YJAc/u4HgB2c9wgADgBiSgdQeP9uB48cCWCM/uz3CAACRpBoDPdYAAgDgjgCCB +Zgmv9ooglQsC2EYOb/ABpYLgFPI6Dk/wgOAQ8jIOT/AIcUYJr/aKIBUKJg5P8BUlARAUgQHgFKHP +cIAA6C8skM92gACgLB6WEHEZ8gvIBCCAD////8MLGhgwC8iHuAsaGDBiDM/uAIbEEAAGUSBAgQXy +AIXruAPYAvIF2EIIj/AA2I4Kb/iMuGEAz+7xwOHFz3CAAOgvCIiH4C30z3CAAKAsAYAe2cAQAwaA +4y8owQACIQIAEvKO4gnyEmoWeM91gAAf4whlgOAK8hAjg4AvKMEAAiECAPH1AdgD8ADYgOAZ8hoO +D/aA4FQJIgDKICIAEfBmCg/2z3KAAIA4IIKhuYDgrrkgogfyTgoP9oDgTAtB9eEHj+7gePHA4cXP +cIAAfDlIiCqIRCo+CwAhgH+AAAw5NXgGiM91gACAOIHgFPTPcYAAoCwAgcgQAAaGIH+OCvQBgcgQ +AAaGIH+OjA7h/8ogIQAAhaq4iQev7gCl4HjxwAIPj+4Idc93gAB8OnDcAicBEyJ4sgjv7hzZCHZC +JwAeNG4AIZEPgACAOFwRASZChUQuPhcncFIJYABZYQAmgB+AANA5OIiA4Rpw1faMIcOPRfZhuS95 +OKiA4c32cNwCJwATXREBJkKFRC4+FydwGglgAFlhcgkP9oDgAdoaGIIgB/JiCQ/2gOBgCkH11QaP +7uB48cDhxc9xgABEOiJ4Jgjv7hzZQgkv9gh1ACWBH4AA6jmA4ADaQKkH9CoJD/aA4DwKQvW9Bo/u +4HjxwDoOj+7PcIAAJGkGgCOAIIEaD2/2iiDVC/oLT/CB4BXy8gtP8IDgEfLqC0/wCHH6Dm/2iiDV +CNoLT/DPcYAAgDgVeQuBAeALoc9wgACAOCCAz3CAAOgvTJDPcIAAoCzwuR6QD/IQcgr0BCG+jwAA +OBAG9IoLD/aA4LvyMgqv7wHYz3CAAOgvLJDPcIAAoCwekBBxCvTPcIAAgDgAgAQgvo8AADgQBPIB +3wPwAN/PcIAACGliD2/y6XHPcIAA6C8IiIjgEPQA3QLeRC0+FwAhgH+AAEQ6Qg9v8ulxYb6A5gHl +Nfc2CA/2GnDPcIAA6C8skM9wgACgLB6QEHEN9M9wgACAOACABCC+jwAAOBAF9EwgAKA+9AvIBCCA +D////ysLGhgwC8iHuAsaGDBaCc/uz3CAAOgvCIiH4Cz0z3CAAKAsAYDAEA8GgOcvKMEDTiCOByDy +juYX8rJutn3HdYAAEOMFlYDgz/YGlVEgQIAJ8sIM7+/PeIoLQAIF2BKtANgFtRAnj5MvKMEDTiCO +B+T1z3CAAOgvCIiI4Cj0z3CAAOgvLJDPcIAAoCwekBBxC/TPcIAAgDgAgAQgvo8AADgQFPLPcIAA +oCwBgMQQAAZRIECBzCAioAryz3CAAIA4AIBRIACAB9gD8gbYmgxP8LEEj+7gePHAz3GAAIA4/BEC +AIPiRAANADMmgnCAAFxuQCeAclR4AHgdgQHgHaEF2BLwHoEB4B6hAtgM8B+BAeAfoQbYCPCAEQAA +AeCAGQAAAdhCDE/w0cDgfvHA8guP7gh2z3CAAFQeD4CA4BDyz3KfALj/HaLPcYAA4CoEgQHgs7i1 +uLi4BKEWos9wgAAIaQaAz3WAAIA4I4AggaIMb/aKIBULz3CAAOgvCIiH4O4BAgCA5lHy+BUAEIDg +4oYT9PYVgBCA4A/2CiHAD+tyz3AAAL8biiMIBkokAAAFBO/vCiUAAWG48g+v7/gdABByD6/v6XDP +cIAA3AcAgPgVARAiqPgVABCA4Cf0zggP9oDgEfJqCUACiiAVBCIMb/aKIUgMz3CAANwHIIAEiYC4 +BKnPcIAAfDlIiCqIRCo+CwAhgH+AAAw5NXgGiIHg5A/h8MogwQMAhfC4aA9i78ogYgDGCE/wgeAU +8r4IT/AIcc4Lb/aKIBUJrghP8BUlARACgQHgAqEAhYe47wEgAAClgOYF8gCFp7gApQvIkLgLGhgw ++g6v7kogACDPc6AAkCMcg1EgwIAQ9HATBAAKIcAP63LPcAAA5RuKI0kJFQPv7wolAARKCA/5cg8P +/s9xoADQGxOBkLgcoc9wgADgKgCA77gH8s9wnwC4/3QYAATPcIAA3AcggAKJgOC39ASJUSAAgD/y +iiCVBCYLb/aKIckNz3CgAEgu64DPdqAAOC7TvweG5HhFHRgQiiAVDAILb/bpcYogFQz6Cm/2RRUB +FgeG5ngHpg4LYAIQ2ACFz3EAAPAfkLgApQeGiLgHps4K7/YN2AvIBCCAD/7//wMLGhgwC8iOuJC4 +CxoYMBIOj+7PcIAA3AcggASJoLgEqW3w+BUAEIDg4oYO9PYVgBCA4Ar2CiHAD+tyb9gGuIojiggP +8WG4Gg6v7/gdABDPcIAAoCwBgMQQAAZRIECBCfL4FQAQgOC4CiH0yiDBA892gAB8OmgWgJCA4CPy +ahaAkFEgwIEd8i4Mz/VqFoGQGnAAhca5CrmBuAClz3CAANBotgsgAPlhTCAAoAv0BgzP9YDgB/IA +hY64Eg0v9QCl9gvP9YDgBvJVFQAWAeBVHRgQ+BUAEIDgE/QIFoCQChaBkEQoPgsAIYB/gAAMOTV4 +BoiB4MQN4fDKIMEDPQGP7uB48cDWCI/uCHfPcIAAJGkGgCOAIIGuCW/2iiDVCs9wgABUHg+AgOAA +3Q/yz3KfALj/HaLPcYAA4CoEgQHgs7i1uLi4BKEWoiKHz3CAAIA4z3aAAHw5QBhYAAiOz3GAAA85 +RCg+CzIhRA5KjkIkQQBQccj2QCJFAC8lRwEKHkIRBfCqrkolAABEKD4LACGAf4AA+DgVIEIBTJKA +4g70sHHJ9kAlRQAvJUcBCh5CEQTwqq5KJQAAFSBAAQyQgODKIswHyiCMDwAA5hvKI4wPAADlA5QA +7O/KIcwPogyP7wiOKo5EKD4LACGAf4AADDk1eCaIgOHpcAT0wg8AAgTwmg0AAs9wgADgKgCA77gG +8s9wnwC4/72gKQCP7vHA4cUA3SIOb/apcNoIb/CpcFoJT/EmCU/wz3CAACgjFQCv7qCg4HjxwKoN +j/U2Do/1Gg2P9dHA4H7geOHFz3KgAMgfpBIDAM9xgADgBg2BEHPCIwYARPdieBN7v4IOgbtjeGAO +oQHYShoYAOB/wcXPcqAALCBmgs9xgADgBg6BYngOoRCC5Qav8w2h8cAyD2/uSiRAAMCBoIAB39F1 +wiQCAdF1oYFhgMInzhMB3rFzwH6xcwHbwiPOAEwkAIDMJiKQyiNiAAv0gOMG9IDmzCcikATyAtsD +8ADbgOMU8oHjDvKC4xr0oIDAgQGAIYECJY2ToKIDIEAAAaIQ8ADYAKIBogzwoIHAgCGBAYACJY2T +oKIDIQEAIaINB2/uaHDgePHA4cUmgECAQiICgMoiYgCA4sohwg/KIsIHyiCCDwAANhHKI4IPAAB3 +AMokIgAAB6LvyiUCAWCBMHMK8kKAooNCfYDlBPZggzBz+vVBgwGjYKBBoACiRICmgFEiQIBAJQMW +C/JGhYDiBvKigkKAQn2A5cP2AKNEgKaAUSLAgEAlAxcL8keFgOIG8qKCQoBCfYDlw/YAo0GAUHEF +9JINL/8GgHUGT+7gePHA9g1P7gh2AIBCIAGAyiFiAIDhANgo8iaGQYYB3zByIIZBhkGhIKIAps9w +rd4CAAGmpobAfwaFEHYH9KlwWgggAALZBqWmhgeFEHYG9KlwRgggAAjZB6WA5wXyKg0v/waGAdj5 +BU/uIIAQccohIQDgfyhw8cCCDU/uCHWGD+//KHYId8Kl1g7v/6lw0QVv7ulw4HhAgBByCPJkggsj +QIAF9ECCEHL79QDa4H9IcOB4z3KgAMgf9BIAALzbGLsEIIAP//8A8PQaAAALyGV4CxoYMBUa2IDP +c4AAACsIgwDZIKAMgyCgCYMgoA2DIKAKgyCgDoMgoAuDIKAPgyCgz3AADA8ApBpAAA6iD9gMuBCi +4H7gePHA5gxP7s91oADQG9OF+r4G8s9wgABwaUoJAAD7vgfyz3CAAJBpPgkAAPy+BvLPcIAAsGku +CQAA/b4H8s9wgADQaSIJAAD/vgbyz3CAAFBpEgkAALzYGLgTpfkET+7gePHAggxv7gDbCHfPdqAA +yB+kFgAQz3WAAAAr+GCkHgAQAdgTpiiFDIVAgQCAACLCg0ChLIUBIMAAAKEC2BOmKYVNhQCBQIIA +IMCDAKENhQEiwgBAoATYE6YqhQ6FQIEAgAAiwoNAoS6FASDAAAChCNgTpiuFD4VAgQCAACLCg0Ch +L4UBIMAAAKEEhQCA7ggv8elxJIUAoQWFAIDiCC/x6XElhQChBoUAgNIIL/HpcSaFAKEHhQCAxggv +8elxJ4UAoQ/YmrgOpg/YDLgQps9wgABQaUILD//PdYAAcGk2Cy//qXAyCy//QCUAGCoLL/9WJQAS +Igsv/1YlABPxA0/u4HjxwIILT+4IdyDwAIYhhiGgAKEA2ACmz3Ct3gIAAaamhgaFEHYG9Klw+g3v +/wLZBqWmhgeFEHYH9Klw6g3v/wjZB6UjhmB5yXCuDe//6XAKJgCQCfIDhyCAAoYieIDgrgfM/7IK +L//pcIEDT+4P2Jq4z3GgALAfFaEP2Ay4F6HgfvHA9gpP7s9ygABQzz+COnDruarBANgQ8s9zgACg +LGODdINIEoEAwN1keYYh/w4iuTp9BPAU3QLYihIBAQJ5EoIE4RYJ7/MA2q4JYAACIE4DA9jPcaAA +yB8Toc91gAAAKwiFAIBCwAyFAIBDwAmFAIBEwA2FAIBFwASF4IAFhQAQEgBAEQAGHmb8EQAAz3CA +ADC1ANlAgAGAACKCgwEgQABAwkwhQKBBwIt2DvQiCA/whMEacMlwHgvv/4bCCHYIEAEhDPCCwclw +Cgvv/4bCCHbPcIAAeOskkM9ygAB462WCBsIEu1BzQCmAAoj3UHBL9wJ6UHC+9wbw1gtgAIbACHJG +woLmFfTpcPIO7/BIcQh3SnDqDu/wBsEGwlpwBMMHwQXAACLCgAEgQABEwhbwgOYV9Olw8g7v8Ehx +CHdKcOoO7/AGwQTDWnAGwQXAB8ICI0OARMMDIIAARcCB5gvyz3CAAKAsA4AYiITgzCYhkADYAvQB +2C8gB6BG9Olwfg7v8APZCHZKcHYO7/AD2QDBCHcBwEAhwYBBIAAAQcAEwEDBBcFAIMCAQSEBAETA +SghgAEXBTCEAoAr0BIXAoAiFAMEgoAyFAcEgoEwhgKAR9ASFwKAIhQDBIKAMhQHBIKAFheCgCYUE +wSCgDYUFwSCgTCFAoAr0BYXgoAmFAMEgoA2FAcEgoIogBw7mCS/2CnFMIACgAdnAec9wgABQKzSo +NQFv7qrA8cDeCE/upcEIdgKLKHWYcGTAAIsAEgYBERwCMHlwAhIHAQQSCAEQFAAx5JIGEgUBACDJ +AwCRLyFIEgcgQAIKCSAAEHgAIIoBAZUvIogSByCAAvYIIAAQeAAgxgEClS8miAEHIIAB4gggABB4 +ACAHAgOVLyfIAQcgwAHOCCAAEHgAJQUABJUvJUgBByBAAboIIAAQeB9nBZXwf+d4qgggABB4JpUh +cBB4B3k8eg+5JXpQegAigQIweQAcRDBHlSd6XHkPukV5MHkAIYIBUHpceQIchDAPukV5MHkAIcIB +UHpceQQchDAPukV5MHkAIUIBUHpceQYchDAPukV5MHk/Z/B//HkIHMQzD7/leTB5OGBpcca5hbkI +uQUhwQIgthB4IJUKHAQwJ3gceAi4BSAAAQG2AMABpgHAAqYCwAOmCQBv7qXAD3tIuA94z3KAAAB8 +9CIAAEAoAQJIuAV59CLAADB54H8neOB48cDPcoAAQGkggoDhyiHBD8oiwQfKIIEPAAA0EcojgQ8A +AOMGyiQhANwHYe/KJQEBAaIB2s9xoADIH1ChShmYAEgZGADRwOB+z3CAAEBp4H8AgOB4z3GAAEBp +IIEA2IPhzCEigAL0Adjgfw94CiIAgPHAF/LiD8//gODKIcEPyiLBB8oggQ8AADMRyiOBDwAA3AbK +JCEAcAdh78olAQHPcIAAQGlAoNHA4H7geAhzKHLPcIAAACsEgACAAiCADwACAABJACAAaHHhxVMg +QgUEII0PwP8AAM9wgAB46wWAAiCDAAQhgg/A/wAA1bkieKV7RXgQc8ogrQAF9xBzANjKIGYA4H/B +xeB48cDhxdhwuHG6D+//mHIIdchwsg/v/4hxEHXKIK0ACvcQdQDYyiBGAZgP5v/KIQYBtQYP7gDY +z3GAAOTMBaEEgaC4BKHNB+/wA9jgeDa4NrkwcNYghQ8AAIAA4H8ieOB48cAODg/uCicAkM92gAB4 +6891gABwaQ/0z3CAAIB7yXFqDK/+FNqyC2/vqXBAJQAYEfCC5wr0pgvP78lxTgyv/hTaQCUAGAzw +yXDGCiABBdmpcIYLT+/PcIAAUGl6C0/vBJYKuAWmBoaGIMMPBqYqCyAA6XAmCU/v/QUP7vHAocEI +cw4J7/SLcILgANgG8gDAEHMB2MIgDgChwNHA4H7gePHAANnPcIAAwDcaCCAAIKDPcIAA5GNmD4// +0cDgfuB4ANnPcoAAtAcjoiSiJaImoieiIqLPcIAATGkgoM9wgADwaSCgMbIwss9wgAAwQ+B/IKDg +ePHAz3GAAMA3AIGA4Bn0AdgAoQDZz3CAAAAdtg/v/yCgiiCHDuIN7/WKIY8Hz3CAALwsEIiD4GwJ +IQDKIGEB0cDgfuB48cDWDC/uiiDHD6TBtg3v9Yoh0gKuCY/1gOCwCQIAz3CAAAAdAIDPcYAAMEOK +Du//IIHPdoAAtAcwllGWWWEwcADdxPcCIE0AAoaA4BX0gOUT8s9xgADwaQCBuGAAoc9xgABMaQCB +uGAAoc9xgABcSBKBuGASoc9wgACMBgCAgeAA3wb0z3CAAExp4KCKIAgAz3GAAPBpLg3v9SCBz3CA +AExpAIBCxUDAz3CAAPBpAICLdUHAAoYQ2aLaHttDwKlwTg6v/Ri7ANieDi/3qXHPcIAAAB0ggM9w +gAAwQ+Km8bYgoPC2z3CAAIwG4KBWDO/wE9jPcIAA8GkAgIXgjfdiCCAAAdguCk/5z3GAAFRJHYEB +4B2hBPBKCCAABdghBC/upMDgeBXYANrPcaAAyB9vGRgA4NiQuBChCdiwGQAAtBkAAHjYQhkYAADY +mrgPoaQZgADPcAAMABkOoeB+z3KAAORjJoIjgWG4YIHPcYAAAB0ggdW5eWHPc4AAeOtlgwUrPgAn +ccdxAAAAEM0Fr/9IcPHA4cXPdYAAtAcHhYDgFPTPcIAAwDcAgIHgDvRODE/2muAK8s9wgAAAKwSA +AIAFpQHYB6WJAw/u8cDhxc91gAC0BweFgOAa8s9wgADANwCAgeAU9BYMT/aa4BDyz3CAAAArBIAA +gAalvgzv/yWFMJU4YBC1ANgHpUUDD+7PcIAAwDcAgIHgC/TPcIAAACsEgCCAz3CAALQHI6DgfvHA +z3CAAMA3AICB4BD0z3CAAAArBIDPcoAAtAcAgASiagzv/yOCMZI4YBGy0cDgfvHAcgov7oohCAAI +dc9woADIHzCgAdlBGFgAVgkAAM92gAB46wOGJYbVuDBwyiHND8oizQfKII0PAAA1EcojjQ8AAJsA +yiQtAMACbe/KJQ0B9g+P7+YPr+8IdxpwgOXMJWKQSvTPdYAAACsIhSCGIKAMhSGGIKAAhSWGIKAE +hSOGIKCqD0/1gOBw8s9wgADoLwiIh+Bq9AWFwIAAgAQmjh/A/wAAUyBRBQSFAIDyDq/wCnHVuEWF +BX4C28Ciz3KgAMgfc6LJhQIgQYRghk2FQIIKAAQAQinABwfwJJcKuQIhQQQZYQDYAiNDgAMiAQBg +pg2FO/CC5Tr0BJfPdYAAACshhQq4AKHPcIAAoCwAgMQQAAZRIECBCYUg8s9xgADoLyiJh+Ea9M9x +oADIHwHaU6EohQDbIIFMhQIhAYRAgiCgDYUDIsIAQKAEhQCAUg6v8ApxJYUAoQrwIIcgoA2FIYcg +oCOGBYUgoGkBD+4A2Za5z3CgANAbM6DgeFEjgMX/8+B+4HjPcIAAcGkngIDhB/IDgECAAoFCeATw +z3D/D///4H7geM9xgACgLCSBKIEEIb6PAAYAAKHBBfRRIQCACPQI8AQgvo8AAAAYBPIA2APwAdjP +caYApAAXoeB/ocDgePHAnggP7s91oAC0Rwh2BvBeC6/1iiCJDHEVAJYEIIAPcAAAAEEoPoX09Yog +/w9vHRiQax0YkAPYD7jPcaAAyB8TGRiABYZZHRiQBoZaHRiQB4ZbHRiQCYZYHRiQCIZXHRiQQBEB +Bs9xgACEaiCBBCCADwAAAIBRIQCAB/SA4AbYyiDhAQLwANjPcYAAoCwjgSiBz3KAAAAGUSEAgBDy +TyABAo25l7kmogUggQ+AAEA6J6IFIIAPgADAUxDwBSCBD4AAwCQmogUggQ+AAAA+J6IFIIAPgACA +VwiihBUAlgmiBoZ+C6/xIYbeDu//AYYdAA/u4HjxwJ4Pz+06cM93gAAoRwyPhiD/AUIo0ADPdqAA +tEcKdQXwWgqv9YogiQxxFgCWBCCAD3AAAABBKD6F9fVDFgCWRiAADUMeGJBXFgCWvLi/uFceGJBf +FgCWv7hfHhiQANieuFMeGJDgeADYUx4YkAyPYB4YkGoPz/rPcIAAYDgggGB5BNiA4BbyTCFAoGwN +IfnKIEEDz3eAAIxqAI8QdQryz3CAAJg6NoBgeQDYAB8CFEoNz+9DFgCWTCEAoEUgAA2fuEMeGJBN +8kwhQKAR8kwhgKA28gohwA/rcoogWgqKI40CSiQAAFEHL+8KJUAEz3CAAKAsA4AQvZu9MiCADwAA +2AKfvYDgAdjAeA+4pXhfHhiQBvBmCa/1iiCJDHEWAJYEIIAPcAAAAEEoPoX09Yog/w9vHhiQax4Y +kBPwz3CAAKAsA4AQvTIggA8AANgCn72A4AHYwHgPuKV4Xx4YkAbIhODoD6HwyiChBJUGz+3gePHA +Og7P7Qh1KHbKD+/tAYCghRC5QS0AFDhgug/v7clxELmweDhgrg/v7UAugRJ5Bu/tKHDxwAYO7+0E +2QDYz3WgALRHSx0YkADakLp3HZiQAdp3HZiQz3KgAIREGKIA2pG6dx2YkALadx2YkM9yoACIRBii +ANiSuHcdGJB3HViQgNh3HRiQANieuFQdGJAA2Jy4VB0YkM92gABUBslwag6v7xzZz3CAAEgGXg6v +7wrZyXAhHRiQz3CAANQEEHhJHRiQ5QXP7eB4/BwItIXg8cAacI33CiHAD+tyiiDaC3fbCiQABOEF +L++4c4ogGQo2Dq/1CnHPc4AAVAYkg2hwNHggkFEhAIIO8hATBAAAEAUBCiHAD+tyiiDaCq0FL+9+ +2ySDAeGI4SSjANoD9ESjLyEHBIUhDAAgsJDZz3CgAPxEGLkioAuTAeAQeAuz0cDgfwQUEDSA4PHA +B/TPcIAAoK6mDa/vJNnRwOB+4HjxwM4Mz+2KDmABCHbODoAAz3GgAMgfCHVA2A+hQBEBBjB5hg4v +9slwEQXv7alw4HjxwJoM7+1KJAByz3CgAIggAN6oIIAPh+Y58qCAz3GAAKzNz3KAAHjr1nloiUeC +emKA5c9zgAB4ztR7HvQAJo0fgABwzviNgucI9OCT+38jkYC/JH/gswbwgecE9CKRILMA2Titz3Wg +AMgc+oUgk+R5LLMF8CyTMHXD91lhA/Css7liiSHPDwQYUAAB5gDZz3CAAHjrbQTv7Seg4HjxwAAW +BEAHGhgxABYFQAEaWDEEEoEwnOHKIsIHyiCCDwAA3A7KI4IPAAD0CmAEIu/KIcIPygjgAA7Z0cDg +fuB48cC6C8/tGnANyM93gACgzvAnARDPdYAAAM4DEgI2CBhEIAGSgOANEgE2AN4O8hQlQxCAEw4H +gOZp8gDegBucA/AbhAPgG4QDFCVDEMCzAYLuuB/0yLPQG4QDEIrPcYAAEOMCuBZ4G2Flk4DjOGDR +9mG7ZbAQinJodnt6YUWSgOJ5YQf0JpFRIUCAKAsC7w3IACCBD4AAHM7Eqcyp1KnPcYAArM0WeRR9 +IpHAHYQTFX94HUQQAxIBNsCnAYEEIIAPAAAAYNdwAAAAIBP0EInPcYAAEOMCuBZ4AGHtuMomYhDP +cIAA2CvUeCCQEOEgsAPZz3CgABQEMKDSDKABCnDZ2KoLr/UBEgE2PfBwEg0B4BMBAQIhTgOxdgb3 +wn2ieBB4gBscAM9woADUBw8QDoYA3fAbhANwEgIBwBtEA0J5MHngG0QA0BMBAQHhMHnwEwUB0BtE +AFMlfoDKIcIPyiLCB8og4g3KI4IPAADnDcokgg8AAP4A2AIi788gIgMD2RMYWICdAs/t4HjxwCoK +7+0A2M9xgAAYagChz3CAAFQeAYCA4KPBD/LPcp8AuP8dos9xgADgKgSBAeCzuLW4uLgEoRaiDMzP +daAA1AdRIACAA9ggHRiQUvIUHRiQAxIBNgAWBEAHGhgxABYFQAEaWDEEypzgyiLCB8oggg8AANwO +yiOCDwAA9ApIAiLvyiHCDyhwrg6gAA7ZAxIBNlCJUyLAAIYi/gMQqUS6ArjEGYIAFnjPcoAAEOMA +Ys9ygACgLC24wLjwIgAABKK5EAIGz3CAAKzNQKAPFQCWtBkEAAbIRgsv9A0SAjYDEgE2khEAAQYO +b/qUEQEAMfBKJEAAFB0YkQAWAEAHGhgwABYFQAEaWDEEypzgyiHCD8oiwgfKIOIJyiOCDwAAZgKk +ASLvzyAiAwPItBAAAQ8dGJDL2O4Jr/UNEgE2AxIONpQWABBRIECCBfIGDw/2AxIONg0SAzbPd4AA +AM4UJ8EQCJGA4CH0UI7PcIAAEON1fwK6VnpAYJgWAhAtuE6nVqfAuM9ygADYK/QiAgC8HoQQ0BEA +AQQigg8AAPD/w7hFeNAZBAAF8NARAAG8HgQQAdigHgAQugwv+tCOgODwAyEAAxIDNgbIUSCAgeQD +AgAhg/q5CPKQ2JC41QMgAKAbAAACvs9wgAAQ40AgggPWfs5ixBOCANFyCPKR2JC4sQMgAKAbAADK +g89yoAAsIPCCjCb/nw3ywn/XdwCAAABH94fYkLiNAyAAoBsAABAThABALI8A9n/mYAQmvp8AAAAT ++GBZ8um+B/KL2JC4ZQMgAKAbAADsvjP0JZCA4Rz0B8gEIIAPAMAAANdwAMAAAAz0EdgUuKAbAADh +2KoIr/WIcQMSAzYh8IjYkLigGwAA4tj28ZIIr/Xj2AMSAzakEwAAtLikGwAAkhMAAae4khsEAJ4T +AAGnuJ4bBAAF8IXYkLigGwAAz3CAAKAsA4AYiITg4AICAM9xgABQKwyBUIsPIIAADKHPcYAAjCsA +gQHgwQIgAAChwpAzE4AAESYAkCbyB8gEIIAPAMAAANdwAMAAABX0CIuA4BT2pBMAALS4pBsAAJIT +AAGnuJIbBACeEwABp7ieGwQACvBRIYCBCPKN2JC4bQIgAKAbAAAGyFEgAIAWAgEA8g2P/wMSAzYI +cqgbAADPcIAAACsEgLATBwEggFUnQAbVuRBxz3aAAHjrQ/cF2AemBYYieIwgCYbKISUApBMAAAkh +gQDyuKwbQADm8pgTgQDDuQfIPHkEIIgPAQAA8A0SBjbPcIAArM0WIIABxZCsEwAACSCAA4ATDgF+ +Ew8B32fPdoAAoCzEhkYWDhH+ZggggAPCeJgTDgBBKAgT6L4A34byRCYPFgQmgR8GAAAAI78xuQHn ++WHPd4AAAH4yJ0QQQS6BEgQmhR/AAAAAUiEBAEEthQUyJ08RwLkDuRjhgHeF58ohjQ8BAIkN1SHO +A6QTDwD0vyPyIniEEwEBInhIIAAAQrhBLk8TwL8Ev/R/yXHGuUkhwQU0f+u+z3GAAEh28WEF8kEp +DgEUJkEQBSk+AEEpAHIA31jwQSiEAEEuQBPAuPRo9H/JcMa4SSDABRR/677PcIAASHbwYAXyQSgP +ARQnABAFKD4BQSkAcoQTDwHrvvlhEOFBKYQAQS5BE8C5BLk0ecl3xr9JJ88V9HnPd4AASHYxZwXy +QSkOARQmQRAFKT4BQSkPciDwUSZAksogwgMa9APgz3aAACB28CZBECK4BSk+AC9wUyAOANhghBMO +AR14J+YivgUpvgMvd1MnARA/Z/1/z3GgAMQs76HuoUAoDhaevkAuDwXlfsV4wBsAAAqhz3GAABRG +AdgAoQTwT4KwEwcB8HJG9wXYGLigGwAAz3CAAFwHQYAgkwkhgQAAiIHgB/QZFQCWEHEA2AL3AdiA +4Az0A9gYuKAbAADPcYAA2EgTgQHgE6GgEwAABCC+jwEBAAAZ9JITAAGUEwEAkBMCAbITAwGyD2AB +SiRAAAMSAjagEgEAJXigGgAAzthCDW/1ARIBNgMSDTagFQAQBCC+jwEBAAAG8g4MT/QNBEAAA8zP +cZ8AuP8YoQbIUSAAgMogISB78qQVABDyuDPyz3GAABRGAIGA4ADYM/IA2AChgBUAEX4VDxEfZ89w +gACgLASARhAAAR9nUSGAxf7zz3CgAMQsy4Df2MYMb/XJcVMmgRT+vswhIoAJ8pgVABAaCi/zANp0 +uPhgAvAA2AMSATYI8A3Iz3GAAKzNFnkFkalxSiAAIIDgz3KgAMgfrBUOEAf0pBUDELG7pB3AEAPw +CSYOEAPbGLtvovgSAwCA4KFrCCZOE2J+oBqAAwDbmLtuogvypBEAAPG4DczFIKIEzyBhAA0aHDAB +kYDgCvINyM9ygAAAz/QiAACA4AXyAYHuuAXyDcyAuA0aHDDM2BIMb/UGEgE2Gg+v+QPIAxIBNnyR +RCMAA4TgbfINyM9ygAAAzhR6wBIAAWV4YYHtuxyxCvJUEQMBvBENAcO7pXtUGcQAhiD9DIwgAoIZ +9BCJArgWeMdwgAAQ42WQgOPR9gaQUSBAgA3ygeMI9GARAAGEuGAZBAAF8ByRjbgcsQGRgOAn8tAS +AAFUEQMBw7gFe1QZxACAEgAHgOAF9ByRirgcsaQRDQDovQnyaBECAVMjwABYYBB4aBkEAFElQJIJ +8moRgADDu3hgD3hqGQIAB8jPcoAAEM8EIIAPAMAAANdwAMAAAAT0DhoEBAXwANiLuAeyAZGA4BTy +DcjPcoAAAM4UetASAAFTIMCACvLwEgIBz3CgAJgDXqC2GYQApBEAAAQgvo8AAAAwB/SGIOWPWA1i +AMogQgAmDAABgOAO8sIMz/wD2c9woAAUBCOgiiAQAK0BYAAGGhgwA8ikEAAABCC+jwAAADDO8vS4 +CfRODM/y1tiiCm/1BhIBNgPIpBABAOy5VPKOCm/1zdgeC6/wAdgDEgE2HbHPcIAAoCzEgN4J7/YA +3YHgDPTPcIAAtCoAkIHgAN3PJSETyiUCFAPYz3GgAPQHBaGFJQIdDXCgsAPIXZANcECwA8hPgOC6 +BvJChg1wQKBGlgfwDXBAoAPIQBACAQ1wQLADyFGADXBAoAPISBACAQ1wQLAQGQAEA8iUEAAAUSBA +ghAPwfVmDc/3BhIBNtkAYADQ2OoJb/XR2AMSATYBgfi4D/LPcIAAZAcAkB2xz3CAAGgHQIABgFGh +EqEH8FYKr/AC2AMSATYdsR4MD/0DyPoLr/94EAABgOCQAEIA0tieCW/1CnEDEgM2AYOYEwEA+LiU +G0AAFfLPdYAACPKpcIYN7/docRDYDBocMA3Mo7gNGhwwwgyv/6lwUQBAAJ4TAAG+EwIBkhsEAJAb +hAC+D2ABghMDAQh1z9hGCW/1qXH4vQ/yA9nPcKAAFAQjoIogEAAGGhgw/dgNAGAAqXEDyKQQAQCG +IeWPiAtCAAMSDTakFQAQ9LiUAgEAcI3PcoAA8OF2es9woAAsIA+AhBUOESCSCCCAA8J4sBUOEWTm +0XAGAS4ACSBBAAK7z3CAABDjdntgYAQgjg+AAwAAN75lvoDmyiYMFAQggA8YAAAAM7gN4AHfSiIA +IA8iEiADEpEAVglv9JgVABAJIIEEmBUAEO24yiDCI0AoAyF0ewhyxrpJIsIFVHvruM9ygABIdnJi +BfJBKgABFCCCACi62HoDagQggA8AAPz/z3KAAPjrA6LPcqAAxCwNojAaQAQHyA0SAzYEIIAPAQAA +8Cy4GLiduBS7ZXgFeSqiz3KAAExKCIIB4AiiGghv9d7YUSGAxf/zz3CgAMQsy4Df2AYIb/XJcQQm +jx/wBwAA/r40v1MmgRQH8oHnxfcAlRDgEHEN9wMSDTZKIAAgz3GAAFRJAYEB4AGhANks8KQVABD3 +uNUhwgPPdoAA+OsgpuKmmBUAEBoN7/IA2gGmz3GAAFRJAoEB4AKhAIH4YAChz3CAAKAsA4AJgFEg +QIAH8g3MRiCAAg0aHDADEg02AdlKIAAggOGSFQAROvKUFQEQz3KAAPjropLAgkDBz3OlAKz/z3KA +AKAs2KNEglYSAgEU4kJ9A+UivbplumJIIkIABbpFIkIDVqNRIMCByiCCLwAAgAAgwAQhgQ8AAAAg +JbkFIAAEJXiJuI64GaPPcKAAqCAIgIYNT+/pBQAApBUBEKe4kh0EELS5pB1AEJQVABCQFQMRz3Gl +AKz/QMCwFQIReKHPc4AAoCxkg1YTAwEU42J6A+IiultiemJIIkIABbpFIkIDVqEgwgQggA8AAAAg +JbgFIgIERXiJuI64GaHPcKAAqCAIgAPZz3CgAPQHJaANyJgVAhDPcYAAOM4VeUChpBUAEAh0hCQa +kBn0BCC+jwAAAAkI8roJ7/ypcDIK7/wDyA3wcBUBEc9woAD0Byegz3CgAMgcHBgABAMSATbT2DYO +L/WkEQEAA8ikEAAAUSAAgQn0yg+P8tvYHg4v9QYSATYDyAGA+bgH9KIOb/AE2AMSATYdsWoNr/YA +3oHgDPTPcIAAtCoAkIHgAN7PJiETyiYCFM91oAD0BxmFgOAQ8gohwA/rcjPYjLjPcwAAbgoKJAAE +ZQWv7golAAQDyByQxXgNcQCxA8g9kA1wILADyC+ADXAgoAPIQBABAQ1wILADyDGADXAgoAPISBAB +AQ1wILADEgE2HJGGIP8MhOAf8jOBDXAgoAPIUBABAQ1wILADyFQQAQENcCCwAxIBNhyRhiDzD4wg +DIAJ9DaBDXAgoAPIXBABAQ1wILADEgE2HJGGIP0MjCACghv0YBEBAQ1wILADEgE2pBEAAPe4EfI5 +gQ1wIKADEgE2pBEAAGQZAAS4GQIEuhkEBLe4pBkAAKQRAAAEIL6PAABACAfyAYHwuMwMQvAO8DqB +DXAgoAMSATakEQAAhiDzjwTyO4ENcCCgAdkrpQPaSKXPc4AAPEMNEg02QINQdQDYG/LPcqAAOC5F +ggQigg/AAAAA13LAAAAADPL12AW4z3KfALj/GqK7omnYGLgZoihwgeAD9KCjz3CgAPxEPYAZgOu4 +NfQEIb6PAAYAAC/04HjgeOB4USBAwynyA8jPcaAAyB+wEAABliBBDx6hENgOoQHYFRkYgOYL4ABB +2FEgQMMV8s9wgAAYagHZIKADyKQQAQCauaQYQACGC2//AdjPcYAATEoNgQHgDaEqDQAAGnDU2P4L +L/UKcQQgvq8GAMoAIfLPcIAA0CoDgIDgyiHCD8oiwgcr2Mojgg8AAD8EzyAiAwT1z3GAAExKEIEB +4BChz3Gg/ugAz3CfALj/NqCdAgAAA9nPcKAAFAQloAMSATYBgVEgwIAp8qQRAADPcoAAoCxRIACA +BIID8ruQBPCWCO/1upDPcYAAKEcRiVEgAIAV8gOCMIkQuTIggA8AANgCn7mA4AHYwHgPuCV4z3Gg +APxEDaED8HYRDQENzFMgQIAN8tXYOgsv9QYSATYGyAQSATamCK/zDRICNs92gAAI8slwJg+v9wMS +ATYDyAYSEDbPd4AA1CugEBEAAdgAp04Nb/+pcIDgANkgpwryhiB+j+zyA8igGEAEBhoYNAMSATaS +EQAB6rgH8qq4ogpv+ZIZBAADEgI2fhIBAYISAAGAEgMBOGAbYw3Iz3GAAHzOFXkJgXB7G2NpoQGC +USDAgHPy19ieCi/1ANniDK/3gNgGEgE2BCGBDwIAAQDXcQIAAAANEgI3CPT9uAbyTyLBAA0aXDAG +8KO6UHkNGpwwAxICNgGCUSCAgS3yTyHAAoy4EHkNGhwwEIozEoIABLhFeM91gACots9yoAA4LkSC +BrUR8C8ugRBOJoMXAN4PJs4QxnrPdoAAYOH0Js4Q0XAI8oDi8PXPcAAA//8EtQPwZLUI2AwaHDDP +cIAAKEcRiFEgQIEJ8s9wgAB0RVYOr/wAiA0SATcDyAGA/bjPIeIB0CHhAQ0aXDDPcYAA2EgWgQHg +FqEz8BDYDBocMA3Mo7gNGhwwBg1v/8lw2NimCS/1ARIBNgMSAjYBkoDgCfINyM9xgAAAz/QhAACA +4AvyAYLuuAn0DcgB2gAggQ+AAIjOQKkNzFMgQIAJ8gQSATaKIAQAKg3v+ZgRAQADyBqQzg9v9w0S +ATYNzFEgwIAGEgE2EfJCCS/119jPcIAAEM8DEgE2AoCYGQAABsgiCq/zDRICNgYSATbc2BoJD/V5 +AG/to8DgePHA4cWpwYt1qXDPcYAAqG7WCG/tJNqpcP4Mr/cDEgE2DgogAalwdQBv7anA8cDhxQMS +ATaigSCFZg6v/STagOUN9AohwA/rclnYjLju20okAABhAK/uCiUAAQGFgODiIAIAOQBP7eB48cCi +Dw/tmCTBMzpwANhOHBgwABaTQAAWkEAAFpRAABaSQEwiAKHE9i8iRyRMIgChyiHKD8oiygfKIIoP +AAC1KMojig8AAFAAyiQqAPwHau7KJYoEQSgOIcC+QCkBJIogkwJGCC/1xXmA5iz0TCAAoCvyz3CA +APDNA4gKcYYh/AdFuSZ4UyDNIOC4yiFCA8ohIQBWJMw5IKzhuMohQgPKISEAi3SAJEQeIKxRIICA +yiBCA8ogIQCLdIAkhB4ArAbwUyD+oCv0AN2EKgoiL3C6cMdwgADkv4QuBB8E4AAgUA5EKj4nACGA +f4AAdMzgiAGIkne4cMwgwYQg8gohwA/rckAsDSRAKw4kh9iNuIjbBSXEEzkHb+4FJYUDCiHAD+ty +QCsOJM9wAACvKG7bBSYEFRkHb+4KJQAECnCCCyAASNlWIAApdgsgAAbZACWAL4AAUMKA5iOACfSB +uSOgThQBNiSgJaAD8IK5I6ADgIYgfw6G4IogEwPKIIIPAADLBCoP7/QqcYDlz3GAAKwGCvLPcIAA +dMxAiByIEHIE9AQZQgQAgRCIUnAM9Apw9g/v/MlxiiASDfIO7/ROFAE2/gxP8jEGL+2VJMEz8cDu +DS/tANnPcKAA/ER0EBAA2YAEJoKfAAAACAv0BCC+rwAGAAAH9APIpBAAAPq4jPLPcIAAoCwEgM9x +oADIH1EggKZGEAABH6Eg2A6hC/ICDg/xiiAEAIYO7/QA2QDdP/BRIECmEvLmCS/wAd0DEgI2CHGg +GgAAhiB+j8IlQRNeDu/0/Ngt8FEgwKQDEgE2DPJvIEMAoBkAAIogCAAGGhgwiiBEAtrxUSCApAzy +ANiXuKAZAACKIAgABhoYMIoghALM8aQRAAD6uCnyBdgQuKAZAACKIAgABhoYMADdz3CfALj/WBgA +CApwXg6gAMlxA97Pd6AA1AfSp9IPT/zPcIAA1CsAgIDgzCUikAP0Ex+YkwPIoBAAABnwgOII8s9y +gADQSRCCAeAQotLxCiHAD+tyCiUACDLYjLjPcwAAJQlBBW/uCiQABChwCQUP7eB48cCkEAEA6bkF +8goOz/zRwOB+KHSEJBKQEfL5uQT0XgxP9AfwINnPcKAAyBwpoAPZz3CgABAUJaDr8evx8cBeDA/t +CicAkDpxAN0W8ulxLyhBAE4gggfPcKAADC1PevAggADCuA8lDRAA2A8ggAAGIQGA7/WA5SvyLyhB +A04gjgcNGpgz9dgFuKYOL/XJcQ3Iz3KgABQECqLPcaAAZC7wIQAAUyDQBCmC5gzv9NrYKnCuCi/z +BCDBI5IOr/nJcADYDyCAAwYlDZDY9c9ygAA8QwCCB9mH4A0aWDAe8s9woAA4LgWABCCAD8AAAADX +cMAAAAAO8vXYBbjPc58AuP8aozujadgYuBmjAdgD8ADYgeAC9CCiz3CgABQEKqDdAw/t8cDhxc9w +gAAE0c91gAD6B2CNQYiEKx8AACGBf4AAhNTeCa/9AuIgjc9wgAD4B0CQhCkfAAAhgH+AAGjRvQMv +7UCw4HjxwEILD+0odkYhzQAdZTIIIAAiucG+geYN8oLmB/KD5gz0ABaAQAEdEhAAFoBAAR0SEAAW +gEAArXUDD+2A4VbyQCHCAyS6w7kC8ADZj+GWAA0AMyZBcIAAeG5AJ4NyNHsAewAWAUAEGFAAABYB +QAQYUAAAFgFABBhQAAAWAUAEGFAAABYBQAQYUAAAFgFABBhQAAAWAUAEGFAAABYBQAQYUAAAFgFA +BBhQAAAWAUAEGFAAABYBQAQYUAAAFgFABBhQAAAWAUAEGFAAABYBQAQYUAAAFgFABBhQAAAWAUAE +GFAAQiJCgLP14H7geIDhyiRNcOB46CCtAQAWAUECGFQA4H7gePHANgoP7QDdz3cAAAQdSiAAIql2 +FSKAMw4QAQYA2M9yoAAUBMqiqKInogSiPWWI4Wi5yiEOAJIML/XpcEIgUCBMIACgIOcB5ib3UQIP +7eB44H8A2PHA1gkP7aHBGnBKIwAgABzANIogBwm+Cu/0CnHPcIAAqGoyIBIEz3CAALQG0YgSiBB2 +XAEJAGp3CiHAJALwenVELr4TACJALs9xgAAo8zMhDQBMIACmu32tfVf2z3GAAEwkGoE7gSR4USAA +gg3yz3CAALQGC4iLc8lxXgyv9alyAMACfa19ACaAH4AAtAYcEMEAz3KAAPRKAIoF2loPIACpc89x +gAB4aiCBAN1KJIBxInioIIAFc250e7V7z3KAAKCmeWIhiYDhemIL8hBxEPIQcRP2heVX9gHlr30K +8EIlkRAvIUckYb2vfRHwAxLPAADZanUM8IDlSiEAIMolYRAF8kIlURAvIUckAdmA4S3y8270fxUn +QRPPc4AAoKY6YwAjRQAVJ08U+WMhiUGKMHL7Y+OL2PYCIkQAAxWCAAS/8H8ieAS6LyQIAQIngxBs +eC8gRg5OCi/tiHEOeAJ/COfuf0S/7X9MIACmhPYK5+1/yXAKccYMIADpcgHmz3CAALQGEojPfhB2 +tgbM/6EAL+2hwOB48cBOCA/tCHYodUh3GnNPeRC5D3gIuAV5iiBHCCIJ7/SleYDnzCAioAjyLG0v +ec9wgAC0BjOoB/DPcIAAtAazqKlxz3KAALQGtKrAqvWqFhoCBBYKIADJcAAQhwDhiM9wgAC0BtGI +EogQdqQBCQBELz4HL3GELgMRCiRADgAhQw4KIYAfgAAYpyFzQC+CAFR6hC4BFQolQA4AIk0OCiaA +D4AALPIAJkgDACaNH4AAtAZMJwCAzCdigCb0GhPAAADZGK0bE8AASiSAcRytGIsgHQIQqCBABhQg +QBBBiLNutH01fcd1gACgpgAQwABArRUjQgABrQESwAAB4QKtAIoveQOtffABE8AAgOAZ9ADaWK1c +rSAdghBKJIBxANmoIIADE24UeDV4x3CAAKCmQKhBqEKoQ6gB4S95YfB8uQAkRABsugAiQQEAIYUB +ACRAAhqIOosCCSAA6XIYrQAkQAIbiDuL8gggAOlyHK0AJEACGIg4iwAkRALeCCAA6XIgHQIQAN1K +IoARFCVLAxQgSRMBE4AQARGBEL4IIADpcjNuNHm1ecdxgACgpgCp2HEAE4AQABGBEJ4IIADpcgEe +AgAVJEsDFSNJAwETgBABEYEQhgggAOlyAh4CAAATgBAAEYEQcgggAOlyAx4CAEIiShBMIgCQAeWS +B+3/r30B5s9wgAC0BhKIz34QdmYGzP8A2c9wgAB0ap0G7+wgqOB48cDhxc91gAD0SoogxwkWD6/0 +IIUAhc9xgABwaiCBTWgwcsAgbAHMIQyAPAsJAIEGz+zgeAJ5LXlMeVYhAXJHuThg4H8PeOB4geDx +wLhxHPRMJQCAxPZMJYCDzvYKIcAP63LPcAAA1xSKI4gCWQYv7kokAABALYEAZLkAIYAPgAAoGh3w +z3CAACAiMiBBAYwhw4/KIcEPyiLBB8oggQ8AANgUyiOBDwAAEAIcBiHuyiQhAM9wgABYHDV40cDg +fuB48cDPcoAAxgYKarIJIAApaiYOAADWCAAAz3GAAJh+IIHPcIAA7BgiCCAAAdrPcYAAlH4ggc9w +gAAYGA4IIAAA2tHA4H7xwCoNz+wacIDhSHeUACwAAN06cRUgQCOA50CIAogM8s92gAAoGhV+ArgU +eMdwgACAGQvwz3aAAFgcFX4CuBR4x3CAAGAaIYhRIQCAJPIFEMEAIq4GEMAAA67pcNIMIABIcQCu +gODMIGKAyiAhABPyRCg+BwAhgH+AABSnxRCDAOEQgQACIsAAEHgHuGIO7+xieQGuQiFBIIDhegft +/wHl6QTP7PHAjgzP7M9wgAC0BhEQiADPcIAAtAYSiBFwtAALAEomAABKIcARRC4+By9whCgDESdw +ACCBD4AAFKcfEcsAACCBD4AAFKceEcoA+HAA3gbfACeND4AAFKfVfQeNaXEF2phwPgogAAUVwxBA +LoIAVHqEKAEVACJBDtR5x3GAACzyuHEAqYhwSXEH2hYKIAAGFcMQAR0CAGG/gOcB5rQH7f/PfkIh +SRBMIQCQQCZGAHoH7f8vJocBQCBIEM9wgAC0BhKILyAHEhFwVgfK/ykEz+wC22CoANgAqQHY4H8A +quB4ocHxwKoLz+yhwWXCCHYodc9wgADaBoXBi3JAJEMw0gsgAACIRC6+FgAlQB4UFMEwz3eAAGSp +mOX4YHoAKgAgqFMlgBCF4EwACgBGJc0Rr30b8AEUgDAAJoEfgACY71JtVHpZYSDCAKlELr4WACVA +HkSpFBTBMPhgIKjJcF4IIACpcQHlr31TJYAQheCj9iHwARSCMBJtFHgAJoEfgACY7zhgQKggwkSo +yXAyCCAAqXEP8EIlABYPeAEUgTDHdoAAsPACuBR4HmYgwCiuDK4I3EcD7+yhwOB44H7gePHAzgrP +7ADez3CgALQPcBAQAIogxwjPcYAA9EqiC6/0IIGuCq/8yXDPcYAAtAayiRGJsXAQ9s9ygADErn/b +FCAPAF9nYK/BrwHgD3ixcAXbYq/29s9wgAAUp0GQz3WAAHhqgOLApQnyz3CAAIBqAICMIB+EA/YA +2RTw13AAAKAPe/ZCeECJgOKKIQ8KwCjiAAT0RCi+Ay9w9gvP7AhxAKUeC6/0iiDHCADdDt7Pd4AA +kGw+CO//qGdhvoDmAeWvfTn3z3CAAPRKIIDPcIAAcGogoP4Jr/wvIAcEWQLP7OB4DngseClqANgP +IEAAJ3BaeOB/DiDAAOB48cDKCe/siiCHCM93gAC0BrYKr/QzjwCP1gvv/zOPz3CAAGxqABDQAM9x +gADMLxSPR4kQcg70AI8hiTBwCvTPcIAAdWoAEMAACSAABC8gBSCxjwTwAeWvfRKPEHUAAQkAAN5K +IoAjz3CAAG1qAIiA4BDyRC2+EwAmQB7PcYAAbGoAEcIAACCBD4AAKPNAqV/wz3CAAGA4IIBgeQDY +jOAM9M9wgACAbMlgAiBAIA14SCBAAATwSCBAIC8hBSDPcIAAkGzLYBOPqXGWCq/0VY8JIEAELyEF +IM9wgABgOCCAYHkA2AAlkx+AANAGkOAL8s9wgABgOCCAYHkA2IzgBBOBIAv0z3GAAHAIyWEEE4Ag +IngJIEEECPDPcIAAcGzIYAJ5CSFBBEQtvhMAJkAex3CAACjzIKg6cBOPqXG6Dq//yXIAEcEgAnkA +GUIgQiJSIEwiAKAB5hIH7f/Pfn7xxQDP7PHAegjP7Ah1z3CAAJM6AIgQdSh3B/TPcIAAkjoAiBB3 +J/LPdoAAtAapcEAmgRKKD2/1QCbCEgqOr3orjhi6CLgFeoogVA0iCa/0RXkqjgRuOg5v9UuOCo6q +DG/1K47PcIAAkzqgqM9wgACSOuCodQDP7OB4gODhxRr0jCHCjTgAKgAB2EokgHHPc4AA9KeoIAAE +oWtEKD4HMiVNHrFxzPaA5QjyhuAI8gHgD3gA2ATwYbgPeOB/wcXhxeHGABHNAIDlRPYA3aCpgOAc +8oDlRfYA2ACpAN3PcIAAbGsAkBB1hPapaK19oKnPcIAAxGoUIE4DoI6gqgARwQA0eAGIGvCA5UT2 +AN2gqc9wgAAYbACQEHWF9qlorX2gqc9wgABwaxQgTgOgjqCqABHBADR4AYgAq8HG4H/BxfHARg+v +7ADYocEAHAQwz3WAAKAHAJXPdoAAFKfJcYoiBAr6DC/1AduA4BD0CiHAD+tyABUEEc9wAADbFIfb +i7uRB+/tiiUECgAWhBBMJACByiHLD8oiywfKIIsPAADcFMojiw8AAIwAzyPrAmQH6+3KJSsAcgiP +9IDgyiHCD8oiwgfKIIIPAADdFMojgg8AAJIAzyPiAsokIgA4B+LtyiUiAItxRdgB2nIML/UB24Dg +D/QKIcAP63LPcAAA3hSV24u7iiRBAQ0H7+1KJQAAABQAMQHZhiD+D8DgwHnPcIAAICMgqM0Gr+yh +wOB48cBaDo/sCHXXdSUAAIAA2Er3z3GAAHjrJYEwddD3In0B4Pnxz3CAAHjrxYCpcMYPr+zJcQUu +PhACJU0ejCAQgMohxg/KIsYHyiCGDwAAzSLKI+YMyiQmAIwG5u3KJQYBFrhlBq/spXiB4M9xgABc +BwT0AdgAqQGpAImB4MoggQ8AAMQJyiCCDwAAgADgfwGh8cDKDY/sCHXPdoAA2DuKINgOog5v9CCO +iiDYDpYOb/QhjgCOuGAArgGOHWUJBq/soa7geEGJArgWeMdwgAAQ40ioIongfymoz3GAAKAs8CEC +AADZDZJEuOC4LqIE8oohCAAuouG4BPKLuS6iUSCAgAPyjbkuouB+DRICNgQgvo9gAAAAz3OAAADO +VHvHcoAAcM4IcQbyA8gckFEggIIK8gQhgQ9hAAAA13EBAAAABvQA2ACzAdge8AzMUSDAgQMSATYN +8jIRgQABizBwBPQA2AGr8vEB4AGrC/AxEYEAAIswcAX0ANgAq+bxAeAAqwLY4H8YquHF4cbPcoAA +pAaA4MAiIgH/3RJpFngAIIMPgAAX46CrAN1KJABxz3OAAPjqqCCAAq5ieGU2eMSormIB5a99wKjB +xuB/wcXgePHAjgyv7IogygWhwc91gABwRUCVz3aAAGxFIJYQuloNb/RFec9wgABMJgCAguBA8gCF +IIYQcSryz3CAAOwyBIBRIICAQMEF8k8hAAFAwIDhCPR2Dm/yANhqDk/yMgvP9ItwBNmh2j3bWg4v +/Be7IIaA4QvyAIWA4Af0Tg5v8gHYlgnP9CCGIKWA4RLyZg9P8n/YCrjPcaAA0BsToX/YEKEA2JW4 +EKGKDW/vAdhNBK/socDgePHA1guP7M9xgACgLBV5QIEIggQggw+AAAAARCAPAi+7Br9lfwQggw8A +AQAAQStOA+V+LLvFe8ESDgbRc8ASDQYw8gQgvo+AAQAAHvLPdoAA6C/IjofmGPS+uAiiQIEIggQg +gw+AAAAARCABAi+7BrlleQQggA8AAQAAQShDAyV7LLgFe4DlwRrYAAzyLylBA04hgAcSCCAAECUN +EIDl+PWdA4/s8cAyC6/smHCQ4I33CiHAD+tycdiNuIojjQupA+/tSiUABEokAHQA26ggwA5ALI0B +dX1ALIIAx3WAANDmAIXPcYAAEONWet24QWEApfG50SAiggjyRCACBiO6AeKB4gv3z3KAAFDlFiIC +AUCKUSIAgAPynrgT8C25wLnPd4AAoCzwJ08QUiBOAsEXARYLIYCDBvIoh/657/OfuAClAeP9Ao/s +4HjPcYAAoCzwIQAAz3GAAKzNuxACBroQAwZCoWGhvBACBr0QAAZFoeB/BqHgeM9xgACgLPAhAADP +cYAArM2+EAAGFiECAAKSGrEDkhuxCIo4GQIAANjgfx2x8cDhxc9zoACsLxmD8LgZgwDdDPIEIIAP +CAAAANdwCAAAAAHYwHgH8IYgfw+C4AHYwHiA4BnyGYMEIIAPDgAAAEIgAIDKIGIAgeAP8gohwA/r +cmQTBADPcAAArg2Z22kC7+1KJQAAGgyv9FTY5LhEIAECI/LPcp8AuP+9ohzaFvDPc6AAyDtWg7aD +hiL/CIYl/xileraDhiX/GKV6z3WgAKggrYXk5ZL3gOLs9QLbz3KAAEwmYKJRIECAz3KAAGxFAIIR +8oG4EPA4EwQAWBMFAAohwA/rcs9wAACZIekB7+0v26G4USCAgACiHvLPcoAAfGoAghBxGPLPcIAA +IiMAiIHgIKIJ9M9xgAAwRQCBgODD9mq4AKEB2c9wgADIKkIMb/0gqIkBj+zgfuB44H7gePHA/giP +7EogACDPcYAAfDnPcIAAgDjPc4AADDlIiQp1DPBEKj4LACGBf4AA+Di1eSyRAeUAIFAgRCo+Cy9x +P2Pjj/F1PmOv989ygADoL0iKh+JG9EaOx3GAAPg4geIB2sIigQBVeRgRBAFMJICCTvYKIcAP63LP +cAAAxRuKI0QGFQHv7UolgALsEAEB9hCAACx4L3USdZX3qXAKCq/sCnGA4XvyCiHAD+tyz3AAAMYb +iiNECAokAATdAO/tuHUKcOIJr+ypcYDhZ/IKIcAP63LPcAAAxxuKI4QJ7vGI4kn0QIBRIgCCRfJG +jsdxgAD4OIHiAdrCIoEAVXkYEQQBTCSAgsohyw/KIIsPAADMG8ojiw8AAC4BbAfr/8oiywfsEBEB +DCBApBb3KnB6Ca/sCnGA4TPyCiHAD+tyz3AAAM8biiNEDQokAARNAO/tCiVABApwUgmv7CpxgOEf +8gohwA/rcs9wAADQG4ojhA7s8UwgAKDKIcEPyiLBB8oggQ8AAMgbyiOBDwAAQAHKJAEECADh7col +IQDJB0/s4HjPcYAA0ElcGcAHz3GAAAArUIGduJ64IILPcaAAyBwNoeB44HjgeOB44HjgeOB44HgA +guB+8cDhxSDdz3OgAMgfsKNDGxgAANi6D+//jbixo5EHT+zxwBYPT+yhwQh2KHVId4ogEQXyDy/0 +NdmKIBEF5g8v9MlxiiARBd4PL/SpcYogEQXSDy/06XHPcKAALCAQgM9xgADMRAChng/v/zLYi3EG +Dm/tyXAAFAAxpHgQdQHYwHgdB2/socDgePHAqg5P7M91oAAsIEAVEBBAFQUQ67kH9AQgvo8ABgAA +JvLsuST0z3YAABAnB/Bi2FIJL/SMuEAVBRDPcKAA/EQZgOy4AiUABAP00XCx9tdwAAAQJ4z2CiHA +D+tyiiCaCmnbjLvZBq/tCiQABKEGT+xRIADDz3CgAPQH8cAr8ieAGYAweThgA7iWIEIFz3GgAMgf +HqEQ2A6hAdgVGRiAqg7v/4HYUSAAwxXyz3CAABhqAdkgoAPIpBABAJq5pBhAAEoOb/4B2M9xgABM +Sg2BAeANoQPZz3CgAPQHKqDRwOB+8cAA2QrYz3KgAMgfHqIQ2A6iAdgVGhiAKHAH8AHZBCCADyAA +AABRIADDzCEhgMwgIYAY9FEjAMAU9M9wAACfF2IID/TPcqAA/EQdglmC67oA2eb1BCC+jwAGAADg +9eHxUSMAwBXyz3CAABhqAdkgoAPIpBABAJq5pBhAAK4Nb/4B2M9xgABMSg2BAeANoVEgAMMA2An0 +z3GAANBJEIEB4BChANiYuNHA4H7gePHAHg1v7ADZCHfPcKAALCBAEBAAz3WfALj/HYXPdoAAiAY9 +pQCmDPCGCI/tz3APAEBCwg1v8ApxgeAQ8s9woADUCxiAQiAACEggAAAQdy73AIYdpS0FT+wAhgoh +wA/rcl7bHaXPcAAAziKKJMMPRQWv7bhz8cCaDG/sAdmlwRpwz3WAAKQGWnWaCW//i3BMIECgABSF +MAEUkTAE9EAlEhFMJQCAxPZMJQCBzfYKIcAP63LPcAAAKSWs2/kEr+1KJEAATCUAgDQBDgCocAAW +jkAAFpRATCQApHpwhfaMJMOvKPQAFgBBABaPQAAWgEAAFgBBTCQApIYACgCA5yfyz3CAABQiAIBA +LM0gtX0Q4LhgEglv/wTZz3CAABQiAIBMIUCgHWXMJ2GTGfQA2Iy4GPAKIcAP63LPcAAAKiW320ok +QABxBK/tCiUABQohwA/rcs9wAAArJcDb8/EA2AC1z3CAABQiAIBALMEgNXkyYDhgBSJCBECwBN0G +8IHABN2mCG//qXEAIowjABwCFc9wgACgLPAgAAQe38AQAgaA4i8pgQACJ0AQJfIyaM9zgAAX4zZ5 +K2MRI4CDCPIAJoEfgAD46hZ5ABkCBQAtgRMLIcCACPIAJoEfgAD46hZ5BBkCBRAiAoAvKYEAAidA +EN71QiNAIIDg2AbN/yoKj/FlA2/spcDgeOB+4HjxwBILT+zPcYAACOxAIREBVSFOBM9wgAB4ORaA +AN+A4FYhTQPAC8L4ABEEIQAkgQMwdTgABgBAjYwiQ4cBjRL0Qo3Q4g70Q43v4gz0RI2MIoKGCPRF +jYniBPS/YALnwn8C4B1lMHWp94DnyicBEc9zgACYOQWLQCCQAFUkQAQCcIwgCIDKIc0PyiLNB8og +jQ8AAMIbyiONDwAAkAAMA63tyiUNBJB32GdH9wAgAQSiCe/8AiTCAwRr2WfeCO/8CnIAEQEhz3CA +AHg5AnEAGUQgoQJv7Pag4HjxwOHFCHXPcIAA6C8IiIfgzCBiggXyCg2P84DgHvLPcIAAgDgAgFEg +gIIY9HoIz/OA4BTyz3GAAKAsAIHIEAAGhiB/jgr0AYHIEAAGhiB/jmAJof3KIEEDYQJP7M9xgACA +OACBorjgfwCh4HjxwNYJT+yCD4/zgOAk8s9wgADoLwiIh+Ae9M92gACAOACG8bgY8s9woABILguA +z3WgADgu07jnhQR/B4XmeAelpgogABDYB4Wov+V4B6UAhrG4AKbpAU/s8cAuD4/zgOAX8s9wgADo +LwiIh+AR9M9zgACAOACD8LjRIGGECfTPcqAAOC4ngpG4iLknogCj0cDgfuB48cBGCU/sz3CgAEgu +C4DPdaAAOC7TuMeFBH4HhcZ4B6UyCiAAENgHhaW+xXgHpYUBT+zgeOHFz3CAAKAsAYAe2cAQAwaA +4y8owQACIQIAE/KO4gryEmoWeM91gAAf4whlgeAL8hAjg4AvKMEAAiECAPD1AdgC8ADY4H/Bxc9w +gAB4ORaAQiAAgOB/yiBiAOB48cDhxc91gACAOACF77gH8q+4QgkgAAClOfA6Do/zgOAE8h4Kj/Ez +8ACF8rgF8rK4jgqv8QClLg6P84DgJ/LPcIAAfDlIiCqIRCo+CwAhgH+AAAw5NXgGiIHgGfS6Do/z +gOAV8s9wgADoLwiIh+DMIGKCBvIaC4/zgOAJ8gCFUSCAgqAPYf3KICEAoQBP7OB48cAmCE/sng6v +8wh2gOAG8tYJr/3JcBLwz3WAAIA4AIVRIICCCvLPcIAAtGgCCs/9AIWquACl7vFZAE/sANnPcIAA +eDngfzagz3GAAIA4AIGCuAChANhhAu/1jLjxwMIPD+zPcIAACGnGCe/9AN/PcIAAJGm6Ce/9At3P +cIAA0GiuCc/9z3CAALRopgnP/c92gAB8OnDcAiYBE0QvPhcKIEAujgnv/QAhQA5CJgAeggnv/QJw +Yb2A5QHnK/fFBw/s8cDPcoAAoCwAgs9xgACAOMgQAAaGIH+OJ/QBgsgQAAaGIH+OIfQD2LoNr/MB +oYDgBfL2CK/9ANgF8P4Mz+1qD8/tANjPcaAAxCd3GRiAeBkYgIAZGICBGRiADxEAhqO4DxkYgATw +AIGPuACh0cDgfvHA3g4P7Ah2z3CgAMAvpRAUhhQQE4aiEBKGiiAVDMIP7/PJcc9xoP5YAc9wnwC4 +/zag9giv+0ogACCA5inyyXcvKcEDTiGRBwDYLyFHJA8gQAQGf89woABkLvAgTQRTJc2UBSBQIxDy +LylBA04hgAcA2Q8hAQALIkCgJn0ACYL7gOX09a4Kb/IqcIDn2vXJcD4Ir/sKcSTwLyiBA04gjwfv +fwDYDyDAAwZ+z3CgAGQu8CDNA1MlzZQS8i8pQQNOIYAHANkPIQEAJn1ALwEVDLglePYIb/QB2YDl +8fWA5t71z3CgAMAvpRgYhRQY2IRFBg/s4HjgfuB44H7gePHA9g0P7Ah1BvDPcAAAaw66CM/zz3ag +AMAvoxYAllEgAIH18wfIQB4YkA3IhuAG9NIN7/6pcIDwz3eAAAjyCo+A4AnyQCeAEkAlgRImDK/8 +CtrPcKAA1AsYgEIgAAhIIAAAsOBwCOX/yiAlDAPIA5AluMC4F7jHcAAOAABFIAEL7HAgoAESATbs +cCCgIIXscCCgIYXscCCgIoXscCCgI4XscCCgJIXscCCgJYXscCCgJoXscCCgJ4XscCCgKIXscCCg +B/DPcAAATg4CCM/zoxYAllEgAIH48wfIBCCADwEAAPAsuJTgwCCGDwAAkwDPcaAAaCzwIQ0Az3CA +AExqwIDZ2OIN7/MFJkETTgxv8QUmQBMqj4DhDvKKIFINxg3v84e5z3GAADhKF5EB4BB4F7EA2Aqv +KQUP7KHB8cCmDA/so8FMwRpwSHXpuTpzCiIAITLyAtnPcKAAyB9JGFiALMFTbe7hUHgG9DoK7++B +wRrwt+EI9Bt4EHgqCu/vgcER8JThBPQceArwiuEF9AQchDAG8M9wAAD//wQcBDDgeADYz3KpAKT/ +uaIEFAExgrg3ohqiCfDouTfyTCIAoNEg4qEF8s91oADIH0zwz3KlAKz/z3CAAKAsuKIEgFYQAAEU +4AIhAyAD4yK7eGN4YEggQAAFuEUgQAMWokEowCHAuHdoLMAEIYEPAAAAICW5z3WgAMgfZXgleIm4 +jrgZokAVABYg8CzAgODKIcEPyiLBB8ogIQ7PICEDyiMhBc8jIQPKJCEARARh7colwQAFvaV4z3Gl +AKz/FqHPdaAAyB9AFQAWz3agALRHVxYBlkojACBKJEAgBCG+jwAoAADPcYAAACswgSCBwiQCJQXw +stg+Dq/zjLhvFgCWTCQAoAQghA+AAAAABCCCDyAAAAAEIIMPAAYAAAbyQBUBFoPhhPcA2QPwAdkT +FQ+WBCC+jwA4AAAEJ48fAAAAgMwhIYDAI2EgBSIBAeV5BSH+gAX0TCNAop4Hzv+A5wXygOLMIyGA +k/JrFhOWTCMAoE/yanSEJNCRC/LPcYAA2EgQgQDdAeAQoZy9Y/BRI8CgCvLPcYAA2EgRgQHgEaFC +3VnwanSEJAKYCfLPcYAATEoRgQHgEaEO8FEjgKEJ8s9xgABMSgSBAeAEoQTwUyM+owTyAN0/8FEj +QKMK8sYIz/zPcYAAyEoFgQHgBaH08fYOz/EKIcAP63JvFgWWRNiMuOnbjLvtAm/tCiTABIDiCPLP +cYAA0EkQgQHgEKHc8YDjLvL6uAvyz3KAAExKL4IA3QHhL6KRvQrw+bgS8s9ygABMSjKCQt0B4TKi +aguv/2px3dgA2foK7/OYuZi9SfBxFgSWbxYFlgohwA/rcjnYz3MAAAIRfQJv7Yy4JgjP/M9xgADQ +SRGBAeARoaTxExUAlvC4yiAhAGAKof/PIKEDaxYBllgWAJYLIECAIPJvFgCWz3WgAPQHUyBAgAHY +EPIJpeB4ANgJpc9xgADISgiBAeAIoc9xnwC4/xah4gkv/gHYA9gKpQXdmL0D8ADdgOUY9FEgwKEM +8kwiAKAN9AHZz3CgAPQHLKAD2QbwA9nPcKAA9AcloFEggKKICQL4H/ADEgE2z3CAAAjuEHEG8s9w +gADQ7hBxDPSSEQABqriSGQQAnhEAAaq4nhkEAM9xoP5kAM9wnwC4/zagz3CAAOQGAICA4Afyz3GA +ABwzBYEicAWhz3GAANhID4EB4A+hz3CAAMi/IYDPcIAAoCwDgBSQEHEO9M9xgABMJBqBO4EkeFEg +AIKIC6L0yiBiAKlwCNzzAC/so8DgeKHB8cCiCA/sKHUIdhpyBCG+jwEAAMBody306L0V8kQlABYj +uCFoBCWAHwYAAAAxuDhgBCWBHwYAAAHXcQIAAAHKIKEAAvAB2IHgEPKC4Anyg+AA2Mog4QHAKKED +CvDPcIAA8M0CgAbwz3CAAPDNAYAFfclw6gyv+KlxyXCpcQpy6XNuC+//SiRAAIDgUAqB/wjcewAP +7OB4z3CkAJBBTYDPcYAAZNBCsRqAUSBAxgOxBCCAD/8AAAAwuASxz3CAAGTQANoI8s9xgABQzzKB +USGAggXyQrBDsESw4H9ZsOB48cDKD+/rmHDPcIAAUM8OkM92gABk0AC2z3CAAFDPSBAFAAQlj48A +AAACANsE8lElAIIK8s9xpgDo/wuBA6YMgQSmBPBkpmOmz3WkALRFDBUClg0VAJb/2S8ghxCA5xC5 +BCJJACzyMhUBllMhjwD/ZyG2/9n0fwi5739EeUAvBhIAJkcAACDIEwUnBwJALwEWBCKCDwD/AABA +LwgUOmIAIEgS/9kFJwcCCLkFIsIBBCBHAPhgACeBASV45bZPeQQigg//AAAAKLpFeSO2D3gEtgQV +AJZRJQCCArYQ8kQlAAYjuAHggeDK989xpgDo/w2BBaYOgQamBPBmpmWmANpKJIBwBtmNuaggQAMp +2BK48CBDAEAmAB9VeAHhYKAB4s9wgABQzwCQOB4AEVUmQRQats9wgAA80OYNb/wI2hsVAJbPcaUA +2MsZphwVAJYaph0VAJYbpg6BHKYPgR2mJhUAlh6mz3CkAJB/HIDJBu/rH6bhxc91gABk0AmlKqV4 +tUulAdgZteB/wcVKJAB6ANmoIIACANrPcIAAZNA1eECgAeHgfgAAAgAAAABAAQAAAAAAqBJDdQEG +AAEAAAAAAAAAAARLgACYS4AAAKKAAOAqgABcCIAAjAWAgQ8aGyIAABslAgAbQAAAG3EwBoCBAADA +Fg8bCyI0BoCBAADAFg8bCiI4BoCBAADAFg8bCCKkM4CBAgBcbhEAAGH4QcQQDxsJIgALCTkCAApi +AwEKYgQCCmIAAAlABAAAYQkACUACAABhCgAJQAAAAGECAAlBAAkaKAAAwBYBABsmAADAFwQAHSYB +AAgn6QAIZA8gGyI4BoCBAADAF4wFgIEPGhsiAAAbJQIAG0AAABtxD0UAIgBcADkHAABiBmAAYgAA +WDhgRcAQcEXAEHhFwBCQRcAQbAAAYQgAWG74DwBhAAATJQAAEyQkEMARgAATJUdoEyQEKMARAIAT +JDgcwBEPABMiAQATMAQowBEPcxMiggETMAQowBEPdBMiAgITMAQowBEPdRMiQgITMAQowBEPFBUi +AQAVJg9yEyIIAMwRD0QAIgoAAEAAQABwDgAAYQAAEyUCABMk7BzAEQ92EyIYCMoRCQATQBwIyhEJ +ABNAIAjKEQ94EyIEAMoRAAABJAAAASUGAABhD3YTIixIxxEPeBMiAADGEQMAASQAAAElAAATJcIs +EyQEKMARAkYTJAQowBHCXxMkBCjAEQ9FACIAXAA5LAAAZAAAEyQBABMlOBzAEQ93EyLgHMARAgAB +Yg8BEyIECMARGAbAEgQowBEPEwIiHAbAEgQowBEPEwciIAbAEgQowBEPEwQiAgBxcAcAAGH/ABMl +AhATJAQowBEAABMlAAATJMhJxxEGAABhAAATJQIQEyQEKMARAAATJUkAEyTISccRD3ATIgEAEzAE +KMARAwATJAAAEyUECMARAAATJDhFwBEkBsASGCjAEQ8TAyIEAABhAABYOAAAEyQBABMlOBzAEQAA +FSQAAAAhBAaAgQAAwBYPG1AiCAaAgQAAwBYPGxoiDAaAgQAAwBYPGxkiEAaAgQAAwBYAAACFAAaA +gQAAwBYPGwQiHAQbZhsBG2gUHMAQCgAbQAQAG24LAABhDxwdIgEAHSb5DwBhFAaAgQAAwBYFABti +jAWAgQ8aGyIAABslAgAbQAAAG3FkDAAQAMAGEQEABCf8AARkAAAbJAIAGyU4HMARjAWAgQ8aGyIA +ABslAgAbQAAAG3EAABslQAAbJDAcwBGMBYCBDxobIgAAGyUCABtAAAAbcaAGgIEAAMAWAgETZEIB +EyQEKMARGGqAgQAAwBYGARNiBAjAEAQAE2QPXAAiCgAAQAAGAHAZAABhAAATJAAAEyUAAMAXAAhY +MMggwBBwRcAQEAjAEAAAEyUDABMkHAjAERwIwBEAABMkBAjAEQ8UFSIEABUm+/8wMgMAEyQYCMAR +DxQVIgIAFSYEADAwAAATJBBFwBEYCMARABBYMA98EyIIAMwRAAATJQAAEyQ0SMcRD3sTIgEAEzAE +KMARDxQVIgIAFSb/ABMlAhATJAQowBEPFBUiAgAVJpgHgIEAAMAWwiwTJAQowBECRhMkBCjAEcJf +EyQEKMARD00TIgQQxRECABMk8BzAEQEAEyTsHMARAAATJHAAEyUQHMARAAATJQAAEyTgHMARgAAT +JUZoEyQEKMARAAATJQEAEyQkEMARAAAVJAAAACEPDhoiAABAFgABG3ANAABhgABjJP/+GzIAAEAX +AAAbJQ8bDyJwBoCB/wAbMgIAG0EAGxooAADAFgAAGyUCABtAAAAbcQEAZHAHAABhAQBjJAAAGyRS +BoCBAABAF0gGgIEAAEAW7Q8AYQIAZHAQAABhAgBjJAEAGyRSBoCBAABAF0oGgIEAAEAW5A8AYQQA +ZHAHAABhAgBjJAIAGyRSBoCBAABAF0wGgIEAAEAW2w8AYQAAHSQAAAAhAAIPbgkAAGFSBoCBAABA +FgAAGyVOBoCBABsaKAAAABYBABsmAAAAFw0AAGFoBoCBAABAFgIAGyYBEBtoAAAbJAAAQBdUBoCB +ABobKA8bDiJsBoCBAABAFgEAGyYAAEAX1ASAgQ8aGyIAABslAgAbQAAAG3EAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvAKAADwAgAAAAAAAAAAA +ACgAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAy1gAAMBgAADLWAAEjcAAAJDREUCg0TFxkZGRkJCQAA +JLCAABSAAAAMtYAAAAAAAAy1gAAAAAAAKNGAADyAAAAwgAAAAAAAADGAAACZuViFMoAAAADKmrgz +gAAAAFAAUDSAAAAAUAAANYAAAABQAFA2gAAAAFAAUDeAAAAAAABQOIAAAAAAAAA5gAAAAFAAUDqA +AAAAUABQO4AAAABQAFA8gAAAAFAAAD2AAACZyQpQPoAAAFW4iMk/gAAAAAAAgjCAAAAAAAAAMYAA +AJm5WIUygAAAAMqauDOAAAAAUABQNIAAAABQAAA1gAAAAFAAUDaAAAAAUABQN4AAAAAAAFA4gAAA +AAAAADmAAAAAUABQOoAAAABQAFA7gAAAAFAAUDyAAAAAUAAAPYAAAJnJClA+gAAAVbiIyT+AAAAA +AACCMIAAAAAAAAAxgAAAAAAAADKAAAAAAAAAM4AAAAAAAAA0gAAAmkUAADWAAACqyqrKNoAAAAAg +ACA3gAAAACAAIDiAAAAAIAAAOYAAAAAgACA6gAAAqsqqKjuAAAAAEJbKPIAAAAAAAAA9gAAAAAAA +AD6AAAAAAAAAP4AAAAAAAAAwgAAAAAAAADGAAAAAAAAAMoAAAAAAAAAzgAAAAAAAADSAAACaRQAA +NYAAAKrKqso2gAAAACAAIDeAAAAAIAAgOIAAAAAgAAA5gAAAACAAIDqAAACqyqoqO4AAAAAQlso8 +gAAAAAAAAD2AAAAAAAAAPoAAAAAAAAA/gAAAAAAAAP//AAClAQEAuQHfADsCLQCxABsAFgEbAK8A +GwAUARsAbACgANEAoABvAIMAcQCDAHMAMwDUAQYA0AEAAHgASQB5AGoA3gBqAKgAAAANAQAApgA/ +AKcAAQALAT8ADAEBAAQACACcAcwAnQHMANUBzADWAcwAtAAgABkBIACPAIgA9ACIAJAAIgD1ACIA +kQAEAPYABACFAAAAhgAAAIcAVQCIAAAAiQCqAIoAAACLAN0AjAAAAIUAAQCGAAEAhwBVAIgAAACJ +AKoAigAAAIsA3QCMAAAAhQACAIYAAwCHAFUAiAAAAIkAqgCKAAAAiwDdAIwAAACFAAMAhgAHAIcA +VQCIAAAAiQCqAIoAAACLAN0AjAAAAPv/AAD//wAAuQHfADsCLQCxABsAFgEbAK8AGwAUARsAbACg +ANEAoABvAIMAcQCDAHMAMwDUAQYA0AEAAHgASQB5AGoA3gBqAKgAAAANAQAApgA/AKcAAQALAT8A +DAEBAAQACACcAcwAnQHMANUBzADWAcwAtAAgABkBIACPAIgA9ACIAJAAIgD1ACIAkQAEAPYABACo +AAwADQEMAIUAAACGAAAAhwCZAIgAAACJAKoAigAAAIsA3QCMAAAAhQABAIYAAQCHAJkAiAAAAIkA +qgCKAAAAiwDdAIwAAACFAAIAhgADAIcAmQCIAAAAiQCqAIoAAACLAN0AjAAAAIUAAwCGAAcAhwCZ +AIgAAACJAKoAigAAAIsA3QCMAAAA+/8AAP//AAC5Ad8AsQAbABYBGwCvABsAFAEbAGwAoADRAKAA +bwCDAHEAgwB2AIMAcwAzAG4AMwBwADMAcgAzANcAMwDUAQYA0AEAAH4APADjADwAeABJAN0ASQB/ +AFoA5ABaAKoAPwCrAAEADwE/ABABAQB5AGoA3gBqAKgAAAANAQAApgA3AKcAAQALATcADAEBAAQA +CACcAcwAnQHMANUBzADWAcwAtAAgABkBIAAxAgwAMgIMADMCvQA2AgwANwIMADgCvQCgAIgABQGI +AKEA1QAGAdUAogAEAAcBBACPAIgA9ACIAJAAIgD1ACIAkQAEAPYABACfAAwA+wAMAJQAAACVAAAA +nACXAJ0A0ACaAI0AmAARAJYAMwCXAHcAlAABAJUAAQCcAJcAnQDQAJoAjQCYABEAlgAzAJcAdwCU +AAIAlQADAJwAlwCdANAAmgCNAJgAEQCWADMAlwB3AJQAAwCVAAcAnACXAJ0A0ACaAI0AmAARAJYA +MwCXAHcA+gAAAPkAAAACAZcAAwHQAAABjQD+ABEA/AAzAP0AdwD6AAEA+QABAAIBlwADAdAAAAGN +AP4AEQD8ADMA/QB3APoAAgD5AAMAAgGXAAMB0AAAAY0A/gARAPwAMwD9AHcA+gADAPkABwACAZcA +AwHQAAABjQD+ABEA/AAzAP0AdwCFAAAAhgAAAIcAVQCIAAAAiQCnAIoAAACLAN4AjAAAAIUAAQCG +AAEAhwBVAIgAAACJAKcAigAAAIsA3gCMAAAAhQACAIYAAwCHAFUAiAAAAIkApwCKAAAAiwDeAIwA +AACFAAMAhgAHAIcAVQCIAAAAiQCnAIoAAACLAN4AjAAAAOsAAADqAAAA7ABVAO0AAADuAKcA7wAA +APAA3gDxAAAA6wABAOoAAQDsAFUA7QAAAO4ApwDvAAAA8ADeAPEAAADrAAIA6gADAOwAVQDtAAAA +7gCnAO8AAADwAN4A8QAAAOsAAwDqAAcA7ABVAO0AAADuAKcA7wAAAPAA3gDxAAAApAGAAKEBQAD7 +/wAA//8AAKUBAQC5Ad8AsQAbABYBGwCvABsAFAEbAGwAoADRAKAAbwCDAHEAgwB2AIMAcwAzAG4A +MwBwADMAcgAzANcAMwDUAQYA0AEAAH4APADjADwAeABJAN0ASQB/AFoA5ABaAKoAPwCrAAEADwE/ +ABABAQB5AGoA3gBqAKgAAAANAQAApgA3AKcAAQALATcADAEBAAQACACcAcwAnQHMANUBzADWAcwA +tAAgABkBIAAxAgwAMgIMADMCvQA2AgwANwIMADgCvQCgAIgABQGIAKEA1QAGAdUAogAEAAcBBACP +AIgA9ACIAJAAIgD1ACIAkQAEAPYABACfAAwA+wAMAJQAAACVAAAAnACXAJ0A0ACaAI0AmAARAJYA +MwCXAHcAlAABAJUAAQCcAJcAnQDQAJoAjQCYABEAlgAzAJcAdwCUAAIAlQADAJwAlwCdANAAmgCN +AJgAEQCWADMAlwB3AJQAAwCVAAcAnACXAJ0A0ACaAI0AmAARAJYAMwCXAHcA+gAAAPkAAAACAZcA +AwHQAAABjQD+ABEA/AAzAP0AdwD6AAEA+QABAAIBlwADAdAAAAGNAP4AEQD8ADMA/QB3APoAAgD5 +AAMAAgGXAAMB0AAAAY0A/gARAPwAMwD9AHcA+gADAPkABwACAZcAAwHQAAABjQD+ABEA/AAzAP0A +dwCFAAAAhgAAAIcAVQCIAAAAiQCnAIoAAACLAN4AjAAAAIUAAQCGAAEAhwBVAIgAAACJAKcAigAA +AIsA3gCMAAAAhQACAIYAAwCHAFUAiAAAAIkApwCKAAAAiwDeAIwAAACFAAMAhgAHAIcAVQCIAAAA +iQCnAIoAAACLAN4AjAAAAOsAAADqAAAA7ABVAO0AAADuAKcA7wAAAPAA3gDxAAAA6wABAOoAAQDs +AFUA7QAAAO4ApwDvAAAA8ADeAPEAAADrAAIA6gADAOwAVQDtAAAA7gCnAO8AAADwAN4A8QAAAOsA +AwDqAAcA7ABVAO0AAADuAKcA7wAAAPAA3gDxAAAApAGAAKEBQAD7/wAA//8AALkBwQDUAQMA0AEE +AHgAPADdADwAeQBqAN4AagCoAAEADQEBAAQACACcAcwAnQHMANUBzADWAcwAtAAgABkBIACPAIgA +9ACIAJAAAAD1AAAAkQAGAPYABgCFAAQA6wAEAKQBgABdAjMASgIOAEwCDgBNAgEArQEHALMBBAC4 +AQAAuwFWAFACCwBRAgMAUgIBAFMCAABUAgsAVQIDAFYCAQBXAgAAZgIGAGgCBwBqAgcAbAIHAG4C +BQBwAgwAfQIGAH8CBwCBAgcAgwIHAIUCBQCHAgwAtQAhABoBIQBLAgEAoQFAALMAAAAYAQAAlAIL +AJUCAwCWAgEAlwIAAJgCCwCZAgMAmgIBAJsCAACyADAAFwEwAJwCDwChAg8AoAKIAJ8CiACeAogA +nQKIAKUCiACkAogAowKIAKICiAD7/wAA//8AALkBwQDUAQMA0AEAAHgAPADdADwAeQBqAN4AagCo +AAEADQEBAAQACACcAcwAnQHMANUBzADWAcwAtAAgABkBIACPAIgA9ACIAJAAAAD1AAAAkQAGAPYA +BgCFAAQA6wAEAKQBgABdAjYASgINAEwCDwBNAgEArQEGALMBBAC4AQAAuwFWAFACCwBRAgMAUgIB +AFMCAABUAgsAVQIDAFYCAQBXAgAAZgIGAGgCBwBqAgcAbAIHAG4CBQBwAgwAfQIGAH8CBwCBAgcA +gwIHAIUCBQCHAgwAtQAhABoBIQChAUAA+/8AAP//AAC5AcEA1AEDANABBAB4ADwA3QA8AHkAagDe +AGoAqAABAA0BAQAEAAgAnAHMAJ0BzADVAcwA1gHMALQAIAAZASAAjwCIAPQAiACQAAAA9QAAAJEA +BgD2AAYAhQAEAOsABACkAYAAXQIzAEoCDgBMAg4ATQIBAK0BBwCzAQQAuAEAALsBVgBQAgsAUQID +AFICAQBTAgAAVAILAFUCAwBWAgEAVwIAAJQCCwCVAgMAlgIBAJcCAACYAgsAmQIDAJoCAQCbAgAA +ZgIGAGgCBwBqAgYAbAIHAG4CBQBwAgwAfQIGAH8CBwCBAgYAgwIHAIUCBQCHAgwAsgAwABcBMACz +AAAAGAEAAJwCDwChAg8AoAKIAJ8CiACeAogAnQKIAKUCiACkAogAowKIAKICiAC1ACEAGgEhAKEB +QABLAgEA+/8AAP//AAC5AcEA1AEDANABAAB4ADwA3QA8AHkAagDeAGoAqAABAA0BAQAEAAgAnAHM +AJ0BzADVAcwA1gHMALQAIAAZASAAjwCIAPQAiACQAAAA9QAAAJEABgD2AAYAhQAEAOsABACkAYAA +XQI2AEoCDQBMAg8ATQIBAK0BBgCzAQQAuAEAALsBVgBQAgsAUQIDAFICAQBTAgAAVAILAFUCAwBW +AgEAVwIAAGYCBgBoAgcAagIGAGwCBwBuAgUAcAIMAH0CBgB/AgcAgQIGAIMCBwCFAgUAhwIMALUA +IQAaASEAoQFAAPv/AAAAAAAAAgAAAA3SEtIT0hTSDNIV0gvSAtIR0gRDABAUEAkQERABQBvSHNIA +0goACwAEAA4AtQAaAQ8AQgC8AMMAIQEoAbYAtwC4ALkAvQC+AL8AwAAbARwBHQEeASIBIwEkASUB +CgAAAAsAAAC2AAAAtwAAALgAAAC5AAAAGwEAABwBAAAdAQAAHgEAAL0AAAC+AAAAvwAAAMAAAAAi +AQAAIwEAACQBAAAlAQAAEtIAABPSAAAAAAEAAgADACwAZAB0AIAAjAChAAcAAAAAAAEAAgADAAAA +AAC3EyIAuBQjALkVJAC7FiUAvBcmAL0YJwDAGSgAxBopAAcbAAAIHAEACx0CAAweAwAQHwQAIiEF +ACQiBgAmIwcAKCQIAColCQAsJgoALicLADAoDAA0KQ0AOCoOADwrDwBALBAAZC4RAGgvEgBsMBMA +cDEUAHQyFQB4MxYAfDQXAIA1GACENhkAiDcaAIw4GwCROhwAlTsdAJk8HgCdPR8AoT4gAKU/IQAk +SQYCLEoKAjRLDQE8TA8BZE0RAWxOEwF0TxUBfFAXAYRRGQGVUh0BnVMfAQEEAAACBQEAAwYCAAQH +AwAFCAQABgkFAAcKBgAICwcACQwIAAoNCQALDgoADA8LAA0QDAAOEQ0AAUAABAJBAQQDQgIEBEMD +BAVEBAQGRQUEB0YGBAhHBwQJSAgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAACGAIYAhgCGAIYAhgCGAIYAhgCGAIYAhgCGAIYAhwCIAAQABQAGAAYABwAIAAgACQAJ +AAoACwAMAAwAJAAlACUAJgAnACgAKABEAEUARgBGAEcASABIAEkASgBKAEsATABoAGgAaQBqAGsA +bABtAG0AbgBvAG8AcABxAHEAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgBy +AAoAPwCGAIYAhgCGAIYAhgCGAIYAhgCGAIYAhgCGAIYAhwCIAAQABQAGAAYABwAIAAgACQAJAAoA +CwAMAAwAJAAlACUAJgAnACgAKABEAEUARgBGAEcASABIAEkASgBKAEsATABoAGgAaQBqAGsAbABt +AG0AbgBvAG8AcABxAHEAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAAoA +PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAEAcAABEHAAATBwAAMgbAADMGwAANAygAEAMoAAcHKAAQCCgACgkoABs +EKAAGCSgAHgkoAB8JKAAgCSgAIQkoABQEKAAVBCgAEgmoABgEKAATCagAGQQoABoEKAAXBCgAFgQ +oAAwEKAAPBCgADQQoAAsDKAAAIGkAAGBpAADgaQAiCSgAIwkoACQJKAAlCSgAJgkoACcJKAAoCSg +AKQkoAAAAAAAAAAAAAAAAAAAAAAAAQACAAIAAwAEAAQABQAGAAYABwAIAAgACQAKAAoACwAMAAwA +DQAOAA4ADwAmACcAKAApACoARgBGAEcASABIAEkASgBKAEsATABoAGkAagBqAGsAbABsAG0AbgBu +AG8AcABwAHEAcgByAHMAcwB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AAoA +PwAAAAAAAAAAAAAAAAAAAAAAAQABAAIAAwADAAQABQAFAAYABwAHAAgACQAJAAoACwALAAwADAAN +AA4AIwAkACUAJgAnACgAKQBEAEUARgBGAEcARwBIAEgASQBJAEoASwBoAGgAaQBqAGsAbABtAG0A +bgBvAG8AcABxAHEAcgByAHMAcwBzAHMAcwBzAHMAcwBzAHMAcwBzAHMAcwBzAHMAcwBzAAoAPwAA +AAAAAAAAAAAAAAAAAAAAAQACAAIAAwAEAAQABQAGAAYABwAIAAgACQAKAAoACwAMAAwADQAOAA4A +DwAmACcAKAApACoARgBGAEcASABIAEkASgBKAEsATABoAGkAagBqAGsAbABsAG0AbgBuAG8AcABw +AHEAcgByAHMAcwB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AAoAPwAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAgADAAMABAAFAAUABgAHAAcACAAJAAkACgAKAAsAJAAl +ACUAJgAnACgAKABEAEUARgBGAEcASABIAEkASgBKAEsATABoAGgAaQBqAGsAbABtAG0AbgBvAG8A +cABxAHEAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAAoAPwCAf4AAAAAA +ALIMLAH/////////AAH//wID////BP//////////////////////Bf8G/wf/CP8J/wr/C/8M//// +Df///w7///8P////EP//////////////////////////////////////////////Ef///xL///8T +////FP///xX///8W////F////xj///8Z////Gv///xv/////HP///x3///8e////H////yD///8h +//////////////////////8iIyT/JSYn//8o////Kf////////////////////////////////// +////////////////////////////////////////////AAEAAQEAAAAAAAAAAAEAAAAAAAAAAAAA +AAAAAAMAAAAAAAAAAQAAAAAAAAA4VgEAAAAAAGx2AAABAAAAZBgCAAIAAAC8FwIAAwAAADB7AgAE +AAAAOFYBAAUAAAAsPgEABgAAAKQKAQAHAAAAtD4BAAgAAAB8PgAACQAAAFRpAAAKAAAAoN4AAAsA +AABsNwAADAAAADR7AgANAAAAzP8AAA4AAACAAAEADwAAAFj/AAAQAAAAXAABABEAAACIZwEAEgAA +AFg8AgATAAAAKCgAABQAAADMlAEAFQAAAFB9AQAWAAAAVI0BABcAAADkFgIAGAAAALC/AQAZAAAA +1CsBABoAAAA0VgEAGwAAAAAUBQAAAAAAAAAAAAAAAAAAAAAA/wD/AAAAAAAABwAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////AAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAwogAAMKIAADCiAABsiAAAMKIAADCiAADQiAAAMKIAADCiAAAwogAAMKIAADCiAAAwogAAMKIA +ADCiAAAwogAAXJEAAKCQAACQkAAAuI8AAMiQAAB0jwAAMKIAADCiAAC4lwAAbJsAAIidAAAwogAA +MKIAADCiAACYoQAAvJYAAPSWAABglgAAMKIAADCiAAAwogAAVKEAADCiAABAlgAAMKIAADCiAAAw +ogAAMKIAADCiAAAwogAAMKIAADCiAAAwogAAMKIAADCiAAAwogAAMKIAADCiAAAwogAAMKIAADCi +AAAwogAAMKIAADCiAAAwogAAMKIAADCiAAAwogAAMKIAADCiAAAwogAAMKIAADCiAAAwogAAMKIA +ADCiAACUiQAAMKIAADCiAAAwogAAMKIAADCiAACkngAAMKIAADCiAAAwogAAMKIAADCiAADsjAAA +MKIAAPyMAAD4jAAA8IwAAPSMAAAQhgAAMKIAAMiFAAAwogAAMKIAADCiAAAwogAAMKIAADCiAAAw +ogAAMKIAAEyFAAAwogAAMKIAADCiAAAwogAAMKIAADCiAAAwogAAMKIAADCiAAAwogAAMKIAAPyK +AAB0igAAMKIAABiLAAAwogAAtIkAADiPAAAwogAAMKIAAHyRAAAwogAAMKIAADCiAAAwogAAMKIA +AACTAACskQAAMKIAADCiAAAwogAAMKIAADCiAAAwogAAMKIAADCiAAAwogAAMKIAADCiAAAAjQAA +MKIAADCiAAAwogAASJ4AADCiAAAwogAAMKIAAOigAAAwogAATKEAAOSdAAAwogAAMKIAACyEAACk +nQAAMKIAADCiAADAjwAA2I8AADCiAAAwogAAqIwAAGCGAAAwogAAMKIAADCiAAD8lgAAXI8AADCi +AAAwogAAMKIAADCiAAAwogAAMKIAAJSOAAAwogAAFKMAAFSlAACIpAAAXKUAAICkAAB4pAAAZKUA +AFSiAAAwogAAMKIAADCiAAAwogAAMKIAADCiAAAwogAAMKIAALCMAAAwogAAMKIAADCiAAAwogAA +MKIAADCiAAAwogAA+KUAAAynAAB0hAAAwIQAADCiAAAwogAAMKIAADCiAAAwogAAlIYAADCiAAAw +ogAAMKIAADCiAAAwogAAMKIAADCiAAAwogAAMKIAADCiAAAwogAAMKIAADCiAAAwogAAMKIAADCi +AAAwogAAMKIAADCiAAAwogAAMKIAADCiAAAwogAAMKIAADCiAAAwogAAMKIAADCiAACYhgAAuIcA +ACiHAABspQAA2IQAAESIAADciAAAMKIAADCiAAAwogAAMKIAAMiIAADMiAAAMKIAADCiAABwiAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAzLQAAPiyAABEtgAAQLUAAFi3AAAAAAEA/////wAAAAD//////////wEA +AAAQDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAND+AAAAAAAAAAAAAAAAGCCg +ACAgoABAIaAASCGgABwgoAAkIKAARCGgAEwhoAAoIKAAMCCgAGghoABwIaAALCCgADQgoABsIaAA +dCGgADggoAA8IKAAeCGgAHwhoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMQNAAAA/wMAZA4AAAD/BQAIDgAAAP8tAOQN +AAAA/z0AgA0AAAD/BACoDQAAAP8lAFziAAAA/90ALA4AABAQTAAAAAAAAAAAAAABAQA8PDw8PDw8 +PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PBUVFRU8PDw8FRUVFTw8PDwAAAAAAAAAAAAAAAAAAAAA +PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDwVFRUVPDw8PBUVFRU8PDw8AAAAAAAAAAAA +AAAAAAAAADw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8FRUVFTw8PDwVFRUVPDw8PAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAP8AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAFgQAACwFwAA4BMAADwRAAB8GQAA8BQAAJgWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0B4AAtLWAABgAAAB0tYAA +AAAAAAAAAAAAAAAAAAAAAAQpAQDswwAAkCQAAOzDAADswwAA7MMAABAHAABMNAIAAPAAAOzDAADs +wwAAJCwAACQsAAAkLAAAJCwAACQsAAAkLAAAJCwAAOzDAADswwAA7MMAAOzDAAA0WgAA7MMAAOzD +AADswwAA7MMAAOzDAADk7wAA7MMAAOzDAACY4QAAAAAAAMAOAQDEDgEAtAIAAKACAABcZgEAAAAA +AHTTAAAM+gEAnNMAADz6AQDA0wAAbPoBAEBDgACgqoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAASCIAABAiAAC4toAAAAIAAAAAAACIHgEAWB4BALi4gABABQAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAjB4BAAxjAQBIv4AAVAAAAAAAAACIHgEA4GEBAPi9gABQAQAAAAAAAIgeAQDIWwEAhAeA +AAgAAAABAAAAiB4BAFQdAQAAAAAAUAEAAAAAAACIHgEAVFwBANg7gAACAAAAAAAAAIgeAQBgWwEA +gAeAAAQAAAAAAAAAkB4BAFgeAQCcv4AAKgAAAAAAAACIHgEAWB4BAPhKgAAIAAAAAAAAAAAAAABg +HgEAAAAAAAAAAAABAAAAAAAAAHQeAQAAAAAAAAAAAAAAAAAAAAAAXB4BAAAAAAAAAAAAAAAAAIge +AQDA/AEAAAAAAAAAAAAAAAAAiB4BAID8AQCMB4AABAAAAAAAAABuAG4AaQDAAKAAUACAAL4AUAF9 +AD4AAQABAAEAWAIoAOYBLQBVAzwA3AFjAAAAbgBuAGkAwACgAFAAgAC+AFABfQA+AAEAAQABAFgC +KADmAS0AVQM8ANwBYwAAAAAAAAABAQAA+CcBABXSAAAAAAAA/wMAAPgnAQAM0gAAAAAAAP8BAAD4 +JwEAFdIAAAoAAAAA/A8A+CcBAAzSAAAJAAAAAP4DAPgnAQAV0gAAFAAAAAAA8D/4JwEADNIAABIA +AAAAAPwH+CcBAAbSAAAAAAAA/wEAAPgnAQAH0gAAAAAAAP8DAAD4JwEABtIAAAkAAAAA/gMA+CcB +AAfSAAAKAAAAAPwPAPgnAQAG0gAAEgAAAAAA/Af4JwEAB9IAABQAAAAAAPA/AAAAAAAAAAAAAAAA +AQAAAAEAAAAKAAAABQAAAAUAAAAGAAAACgAAAAoAAAAGAAAABAAAAAUAAAAGAAAABQAAAAUAAAAG +AAAABgAAAAYAAAAGAAAABwAAAAcAAAAHAAAACAAAAAgAAAAIAAAABAAAAAAAAAAAAAAAAAAAAAAA +AAABAAAAAgAAAAEAAAACAAAAAQAAAAEAAAADAAAAAwAAAAIAAAABAAAABAAAAAAAAAAAAAAAAgAA +AAEAAAABAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAA +AAAALAEAAF4BAAABAAAAAQAAAAEAAAABAAAAAwAAAAAAAAAAAAAAzDYBAHg8AQAkOwEA/DwBAHQ8 +AQBEOgEA+DwBADg4AQA0OAEAYOMWACDWEwAAAAAAEAAAAACAAAAAAKAAECcAAOgDAADoAwAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAEAAAABAAAAAgAAAAUAAAACAAAAAgAAAAUAAAAC +AAAAAgAAAAEAAAABAAAABQAAAAUAAAACAAAABQAAAAUAAAAAAAAABQAAAAIAAAACAAAAAAAAAAAA +AAAAAAAABQAAAAUAAAAAAAAABQAAAAIAAAACAAAABQAAAAUAAAAFAAAAAAAAAAUAAAACAAAABQAA +AAEAAAABAAAAAgAAAAIAAAACAAAABQAAAAUAAAACAAAABQAAAAEAAAABAAAAAgAAAAIAAAACAAAA +BQAAAAUAAAACAAAAAgAAAAUAAAABAAAAAgAAAAUAAAACAAAABQAAAAUAAAAEAAAABQAAAAUAAAAB +AAAABQAAAAUAAAAFAAAAAgAAAAIAAAAFAAAABQAAAAUAAAABAAAABQAAAAUAAAAFAAAAAgAAAAIA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAEQAAEAAAAC +gAABQgAGAhAAAiAAAAPAAAFDAAYDEAACwAAAA8AAAUMABgQQAAJAAAACgAABRAAGBREAAEAAAAPA +AAFFAAYGEQAA4AAAA8AAAUUABgcRAAEAAAACgAABRgAGCBEAAiAAAAPAAAFHAAYJEQACwAAAA8AA +AUcABgoRAAJAAAACgAABSAAGCxIAAEAAAAPAAAFJAAYMEgAA4AAAA8AAAUkABg0SAAEAAAACgAAB +SgAGDhIAAgAAAAKAAAFMAAYBeAAwAAAAUAAABLY8BgJ4AEQAAABQAAAEuTwGA3kACAAAAFAAAAS7 +PAYEeQAcAAAAUAAABL48BgV5ADAAAABQAAAEwDwGBnkARAAAAFAAAATDPAYHegAIAAAAUAAABMU8 +Bgh6ABwAAABQAAAEyDwGCXoAMAAAAFAAAATKPAYKegBEAAAAUAAABM08Bgt7AAgAAABQAAAEzzwG +DHsAHAAAAFAAAATSPAYNewAwAAAAUAAABNQ8Bg58ABAAAABQAAAE2j4GAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAQIBAQACAQABAgICAAEBAAIBAgECAAIAAQIDgICAgICAgIABgAKAgICAgMAAkADQAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbgAAAG4AAgBuAG4AbgACAGkAaQBu +AAEAwADAAOgAAQCgAKAANgEDAFAAUAD1AAEAgACAAOgAAQC+AL4AvgABAFABUAFQAQEAfQB9AK8A +AwA+AD4APgABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAFgCWAJYAgEAKAAoACgAAQDmAeYB5gEB +AC0ALQAtAAEAVQNVA1UDAQA8ADwAPAABANwB3AHcAQEAYwBjAGMAAQAAAAAAAAAAADIABQAyAAUA +AgAIAGQAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAAAAAAAjAqMCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAACAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoCYCABUAAAADAAAAUGmAAAAA +AAAAAAAAAAAAANQfAgAGAAAAAAAAAHBpgAAAAAAAAAAAAAAAAABEJgIABQAAAAMAAABQaYAAAAAA +AAAAAAAAAAAAOCYCAAoAAAADAAAAUGmAAAAAAAAAAAAAAAAAAAAjAgAEAAAAAAAAAHBpgAAAAAAA +AAAAAAAAAAAAIwIABAAAAAAAAABwaYAAAAAAAAAAAAAAAAAAACMCAAQAAAAAAAAAcGmAAAAAAAAA +AAAAAAAAAAAjAgAEAAAAAAAAAHBpgAAAAAAAAAAAAAAAAAAAIwIABAAAAAAAAABwaYAAAAAAAAAA +AAAAAAAA8CMCAAYAAAAAAAAAcGmAAAAAAAAAAAAAAAAAACgkAgAEAAAAAAAAAHBpgAAAAAAAAAAA +AAAAAAAoJAIABAAAAAAAAABwaYAAAAAAAAAAAAAAAAAAKCQCAAQAAAAAAAAAcGmAAAAAAAAAAAAA +AAAAACgkAgAEAAAAAAAAAHBpgAAAAAAAAAAAAAAAAADwIwIABgAAAAAAAABwaYAAAAAAAAAAAAAA +AAAA8CMCAAYAAAAAAAAAcGmAAAAAAAAAAAAAAAAAAPAjAgAGAAAAAAAAAHBpgAAAAAAAAAAAAAAA +AAAoJAIABAAAAAAAAABwaYAAAAAAAAAAAAAAAAAAKCQCAAQAAAAAAAAAcGmAAAAAAAAAAAAAAAAA +ABQhAgAKAAAAAAAAAHBpgAAAAAAAAAAAAAAAAAD8IgIACgAAAAAAAABwaYAAAAAAAAAAAAAAAAAA +/CICAAoAAAAAAAAAcGmAAAAAAAAAAAAAAAAAAPwiAgAKAAAAAAAAAHBpgAAAAAAAAAAAAAAAAAD8 +IgIACgAAAAAAAABwaYAAAAAAAAAAAAAAAAAA/CICAAoAAAAAAAAAcGmAAAAAAAAAAAAAAAAAAPwi +AgAKAAAAAAAAAHBpgAAAAAAAAAAAAAAAAAD8IgIACgAAAAAAAABwaYAAAAAAAAAAAAAAAAAA/CIC +AAoAAAAAAAAAcGmAAAAAAAAAAAAAAAAAAPwiAgAKAAAAAAAAAHBpgAAAAAAAAAAAAAAAAAD8IgIA +CgAAAAAAAABwaYAAAAAAAAAAAAAAAAAA/CICAAoAAAAAAAAAcGmAAAAAAAAAAAAAAAAAAPwiAgAK +AAAAAAAAAHBpgAAAAAAAAAAAAAAAAACMKAIABgAAAAAAAABwaYAAAAAAAAAAAAAAAAAA3CcCAAUA +AAADAAAAUGmAAAAAAAAAAAAAAAAAAAQgAgAKAAAAAAAAAHBpgAAAAAAAAAAAAAAAAACkIAIACgAA +AAAAAABwaYAAAAAAAAAAAAAAAAAA9DoCAAoAAAADAAAAUGmAAAAAAAAAAAAAAAAAAGAhAgAKAAAA +AAAAAHBpgAAAAAAAAAAAAAAAAABMIgIACgAAAAAAAABwaYAAAAAAAAAAAAAAAAAA5CQCAAoAAAAA +AAAAcGmAAAAAAAAAAAAAAAAAAKAlAgAKAAAAAAAAAHBpgAAAAAAAAAAAAAAAAACkJgIACgAAAAAA +AABwaYAAAAAAAAAAAAAAAAAASCcCAAoAAAAAAAAAcGmAAAAAAAAAAAAAAAAAAKAnAgAGAAAAAAAA +AHBpgAAAAAAAAAAAAAAAAACwJwIABgAAAAAAAABwaYAAAAAAAAAAAAAAAAAA1CcCAAEAAAAAAAAA +cGmAAAAAAAAAAAAAAAAAAMwpAgAKAAAAAQAAAJBpgAAAAAAAAAAAAAAAAABAKQIABQAAAAEAAACQ +aYAAAAAAAAAAAAAAAAAA5CwCAAYAAAABAAAAkGmAAAAAAAAAAAAAAAAAADgtAgAGAAAAAQAAAJBp +gAAAAAAAAAAAAAAAAABYMAIACgAAAAEAAACQaYAAAAAAAAAAAAAAAAAAAAAAAFBpgABQaYAAuCCg +AGwgoAAAgAEA/3/8/wAAAAAAAAAAcGmAAHBpgACkIKAAOCCgAAEAAAD8////AAAAAAAAAACQaYAA +kGmAAKggoAA8IKAAEAAAAMf///8AAAAAAAAAALBpgACwaYAArCCgAHghoABAAQAAP/7//wAAAAAA +AAAA0GmAANBpgACwIKAAfCGgAAAMAAD/8f//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWCECABUA +AAADAAAAUGmAAAAAAABQAAAAAAAAADQHgAC0tYAAGAAAAHS1gAAAAAAAAAAAADQHgAC0tYAAGAAA +AHS1gAAAAAAAAAAAAAAAAAA0B4AAtLWAABgAAAB0tYAAAAAAAAAAAAAAAAAAfwAAAAAAAAAAfwAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAA//8AAAEAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAABAgME +BAQEBAUGBwgICAgICQoLDA0AAG47aDtiO1w7bjpoOmI6XDpuOWg5YjlcOW4raCtiK1wrbipoKmIq +XCpuKWgpYilcKW4oaChiKFwobidoJ2InXCduJmgmYiZcJm4laCViJVwlbiRoJGIkXCRuI2gjYiNc +I24iaCJiIlwibiFoIWIhXCFuIGggYiBcIGITXBNuEmgSYhJcEm4RaBFiEVwRbhBoEGIQXBBuAmgC +YgJcAm4BaAFiAVwBbgBoAFQAAABuO2g7YjtcO246aDpiOlw6bjloOWI5XDluK2grYitcK24qaCpi +KlwqbiloKWIpXCluKGgoYihcKG4naCdiJ1wnbiZoJmImXCZuJWglYiVcJW4kaCRiJFwkbiNoI2Ij +XCNuImgiYiJcIm4haCFiIVwhbiBoIGIgXCBuEmgSYhJcEm4RaBFiEVwRbhBoEGIQXBBXEFIQTRBJ +EG4BaAFiAVwBbgBoAGIAXABUAAAAAAAAAAAAAAAdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +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 +CjMiNDo1UTZpN4A4ljmtOsM72TzvPQQ/GUAuQUJCVkNqRH1F////AP///wH/AgP///8EBf8J/wcK +BggLAAEBAgECAgMBAQEBAQEBAQICAgICAgICAwMDAwMDAwMEBAQEBAQEBAECAgICAgIDAwMDAwMD +AwMDAwMDAwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAMQ2AAAQOQAARDMAAEQyAADEMgAA5DcA +AAwyAAAMOAAAjDgAADoBAgHVAN8A2gCiAHUAfwCKBSoDOQGoAYoFygLZAEgBAQMPBwoUN25qARoB +2QDoAAoBugB5AIgAygFKAeIA+QDKAeoAggCZAHTRRRfooosuAAUHAQMEAAUBBQAAAAUGAAIEAAUA +BQAAAQIBAgMEAAAFBgcICQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAUN4AABThAAAk3AAAAQAAAAAAAAABAAAAAgAAAAMAAAAAAAAABAAA +AAIAAAAFAAAABwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcH +BwcHBwcHBwcHBgYGBgYFBQUFBQQEBAQEAwMDAwMCAgICAgEBAQEBAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAKAAwACwALAAoADwANABAADwA +jABsAFgASAD0ALAAf/8HDx8/AQMwAAAANgAAAAwAAAASAAAAGAAAACQAAAAGAAAACQAAAAUABwID +BAYGQAOABsAJAA2AEwAaQB2AIIAGAA2AEwAaACcANIA6AEHACYATQB0AJ4A6AE7AV4BhmQMzB9kK +cw6mFeYcgCAZJDMHcw6mFeYcWSvMOQBBM0jZCqYVgCBZKwBBplaAYVlsndiJnU7sxE40SIM0J3Zi +JxqkQRoTO7ETERiBEQ/8wA9O7MROJ3ZiJxqkQRoTO7ETDdIgDYmd2AkIjMAIB37gBzRIgzQapEEa +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 +QAAAAIAAAAAAAQAAAAIAAEAAAAAABAAAQAAAAEAAAAAA8GEAAAEBAgECAgMAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAABkAAAAKgAAAA4AAAAAAAEBAAAAAAAAAAAAAQEAAAAAAgABAAICAwMDZCYC +AHAmAgB8JgIAiCYCAJAmAgCYJgIAAQEAAQIBAQEAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAA +AQAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAP////8A +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIANAAAAIAAAgA0AAIAN +AAAAIAAAgA0AAAAGAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +ABAAAAAkNQIAICCADwAAQABpIAAAaSBAAGkgAABpIEAAICCADwAA6ABpIAAAaSBAAGkgAABpIEAA +ICCADwAA7OlpIAAAaSBAAGkgAABKIAAASiEAAEoiAABKIwAASiQAAEolAABKJgAASicAAEogABBK +IQAQSiIAEEojABBKJAAQSiUAEEomABBKJwAQSiAAIEohACBKIgAgSiMAIEokACBKJQAgSiYAIEon +ACBKIAAwSiEAMAokgD+BAABAQSycMEAsnDBCJBw0CiKAP4AAIGMKIwA3Kg3ABkomAHBpIEAASiYA +cEomAHBKJgBwSiYAcAAWAHCAADwpQHggIECHAAAAAAAAAAAAAPwciLb8HEi2/BwItvwcyLX8HIi1 +/BxItfwcCLX8HMi0/ByItPwcSLT8HAi0/BzIs/wciLP8HEiz4H7geATcON018OB4BNw03TPw4HgE +3DDdMfDgeATcLN0v8OB4BNwo3S3w4HgE3CTdK/DgeATcIN0p8OB4BNwc3Sfw4HgE3BjdJfDgeATc +FN0j8OB4BNwQ3SHw4HgE3AzdH/DgeATcCN0c8OB4BNwE3RnwNBQaMDAUGTAsFBgwKBQXMCQUFjAg +FBUwHBQUMBgUEzAUFBIwEBQRMAwUEDACxwHGsCRNM7AkHzPgfuB44HjgeOB44HjgeAokgPAFIEQA +4CDBB0Qk/oBBKsQAhAACAC8kAvFCIQEBQiADAeggogQEEQQCBBEFAgQRBgIEEQcCBBsIAQQbSAEE +G4gBBBvIASwAJQBEIj6BPAAiAEQi/IBAIcEA4CDBB0AjwwCoIIABARGEAgEbCgEgIMAHBBEEAgQR +BQIEGwgB1Afh/wQbSAFEIvyABBEEAskH7/8EGwgBQiFBAEIgQwCoIIABARGEAgEbCgEgIMAHz3Gg +AKwvGIGauBihqQLgEAXY4HjPcaAArC8YgbO4urgYoZUC4BBk2AoiQIAA2e4AAQAvJgDwSiZAAE4A +BgBPACAAiiX/D+B4CiJAgADZzgABAGwAJAAvJgDwXAAFACsINQhKJkAACHEA2AIhvoDgIMUHQnkB +4AIhvoDgIMUHQnnrB+//AeAvLQEAQCVFAAImfPEAACAAAChAAeggYgMvIACALyFLAAIhvoDAIIYB +wiGGAOB+EQAgAEogABBKIEAQDiJCAC8gCxLOIEWAiiX/DwgABQAvLQEAQCVFAAImfPEAACAAAChA +AUomQADoICIDLyAAgC8hSwACIb6AwCCGAcIhhgBKJgAAQiD+kM4gggFEIH6QziGCAeB+CQAAAOB4 +CiYA8Iogvw/KIGQA4H8vIAMA4H+KIP8P/ByIsfwcSLH8HAix4cPhwuHB4cAHwBwcwDHhwOB/AcDx +wBYNz/8IdlpyAYlAiRC4GLoHegKJCLhHeEOJB3oAhuKGByCHAEWJBIkQuhi4R3hGiQi6R3hHiQd6 +AYajhgcgiAAIiUmJGLgQugd6CokIuAd6C4lHeE2JB38MiRC6GLhHeE6JCLoviUd4J3gHfUojQCFe +8IIMoAUA2Qh36nB6DKAFAdkHf+hwbgygBQLZB38JcGYMoAUD2SCG53gHIQcAQSsABlIMoAUA2Qhz +KXBKDKAFAdkHe0lwPgygBQLZB3tpcDYMoAUD2SGGZ3gHIQgAQS4AJiIMoAUA2QhzCnAaDKAFAdkH +eypwDgygBQLZB3uIcAYMoAUD2eKGZ3gHf0EtABb2C6AFANkIc4pw6gugBQHZB3vIcOILoAUC2Qd7 +qnDWC6AFA9mjhmd4B31BLwAGxgugBQDZCHNBLQAUD3i6C6AFAdkHe0EvABIPeKoLoAUC2Qd7LyAH +Ap4LoAUD2SSGZ3gHIQUAQSgAFo4LoAUA2QhzQS8ABA94fgugBQHZB3tBLQASD3hyC6AFAtkHe+94 +ZgugBQPZZ3hlhgd7QS8AFlYLoAUA2ZhwQSgAFA94SgugBQHZByQEAEEvAAIPeDoLoAUC2QckBACv +eC4LoAUD2SaGByAAAQchFgBBLQAWGgugBQDZCHVBLwAUD3gKC6AFAdkHfUEoABIPeP4KoAUC2Qd9 +LyDHAfIKoAUD2ad4p4ZCI1OgQS0JBEErEAQHfSDmQS0XFEEuACIvIMcQQS0KEi8jhxVBLQECLyRH +A0EuFCRBKwICLyVHIS8nxyUvJwcALyFHEi8ihxIvIAckLyFHIC8kByUvJocAQS0ABgT1igqgBQTZ +BCCPDwD/AADqcHoKoAUE2f/ZELkkeAd/6HBqCqAFBNn/2Qi5JHgHfwlwWgqgBQTZD3gghud4J3hB +KAEGABpCIEEoAQQBGkIgQSgBAgMaAiACGkIgQSsABioKoAUE2QQggw8A/wAAKXAaCqAFBNn/2RC5 +JHgHe0lwCgqgBQTZ/9kIuSR4B3tpcPoJoAUE2Q94IYZneCd4QSgBBgQaQiBBKAEEBRpCIEEoAQIH +GgIgBhpCIEEuACbOCaAFBNkEIIMPAP8AAApwvgmgBQTZ/9kQuSR4B3sqcK4JoAUE2f/ZCLkkeAd7 +iHCeCaAFBNkPeCKGZ3gneEEoAQYIGkIgQSgBBAkaQiBBKAECCxoCIAoaQiBBLQAWbgmgBQTZBCCD +DwD/AACKcF4JoAUE2f/ZELkkeAd7yHBOCaAFBNn/2Qi5JHgHe6pwPgmgBQTZD3gjhmd4J3hBKAEG +DBpCIEEoAQQNGkIgQSgBAg4aQiCBAe//DxoCIOB48cBOCc//ngkgAAh1ANko2BUlQhAVJQMQwIPg +gsCi4KPBg+GCwaLho8KD4oLCouKjw4PjggThZLjDotkJIoDjownbBIUQ5Ti4AgmgBQTZD3i+CKAF +ANkIdgCFMLgPeO4IoAUE2Q94qgigBQHZB34AhSi4D3jWCKAFBNkPeJIIoAUC2Qd+AI3GCKAFBNkP +eIIIoAUD2cd4AKUBhTi4rgigBQTZD3hqCKAFANkIdgGFMLgPeJoIoAUE2Q94VgigBQHZB34BhSi4 +D3iCCKAFBNkPeD4IoAUC2Qd+BI1yCKAFBNkPeC4IoAUD2cd4AaUChTi4WgigBQTZD3gWCKAFANkI +dgKFMLgPeEYIoAUE2Q94AgigBQHZB34ChSi4D3guCKAFBNkPeOoPYAUC2Qd+CI0eCKAFBNkPeNoP +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 +GIAD2s9woADUC1Gg4HjgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB44HhRoOS74SDCBxbYUhEA +huC44SDBB8og4QUJCF4ACQveAOB/EtgB2c9wgABoKc9ygABE17QSAwAgqAaDAeAGox+CDwieA89w +gAAABiCgB/APCN4Dz3CAAAQGIKAV2OB+4HjgfuB48cA2C4/zz3CAAETXMoAnCV4Cz3GAAPgqI4FI +EIIANIFEeVEhgIBI2soigQ8AAJAAAvAO2gDfz3GgAKggJ4GsEA0AWWGxccIlRRDKJeYSsHh+CO/6 +CtnPcIAAiDgAkM92oADEJwsIHgGMJQOSA/cA3RnwbgygAQDYz3CrAKD/+qBuC+/9ANgZFgCWBegC +2BAeGJDPcYAAyEAbgWq9uGAU3RuhGRYAlojoUSEAxogOYQTKIGEA6QKv86lw4HjgfuB44H7gePHA +4cXPcIAA4AYAkM9xgADgxajaAd2AIEQLEHhODO/6qXOA4MohwQ/KIsEHyiCBDwAAtRTKI4EPAADM +AMokIQAMBCH1yiUBARYKQADPcIAATDKZAq/ztKDxwMILoAEA2BIOD/dKDw/+igtP+74K7/0A2P/Z +z3CrAKD/OaA4oNHA4H7gePHA4cXPcYAA+CrwIQIASiRAAMMSAQYPeDIigg8AAB8DBCGDDwAGAACA +4wHbwHsEIY0PQAAAANd1QAAAAMIkAgGqDW/7wLkhAo/z4HjxwKYJj/MmDyACCHXPcYAARNcfgc92 +oADEJ7C4H6EZFgCWANkE6ALYEB4YkM9woADUCzegog4AAVYLIAMB2AXt3ghAAAXwvghAAE4Pj/oZ +FgCWBegC2BAeGJC5AY/z4HjxwOoKoAEB2ADZz3CAAExALqC+DS/2GdjRwOB+8cAeCY/zosGLdn4L +L/rJcAolAJAZ9M9wgABE189xoAAMJDuBV4AwcsolIhIghg0JHgQC2YwYRAAEJYJfAABwxz+ARXk/ +oIDlugMCAADA6bjW8s91gAAsMgCFiiEIAOSQz3agAMQnEx5YkM9xgABE1z+BOneGIfwjhQleBEEp +ASHDuc9ygADsXTZ6IIJAeQh1GRYAlgToAtgQHhiQz3AAAP9/Ex4YkBvYFh4YkAPZz3CgANQLMaDg +eOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeDGgz3CAAIyWGYCA4PQNQgGa5RoDAgDPcIEA +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 +AiWBHwAAAAwE8ChwQiUBFd4OgADPcIAATEUAJYEfAACIE84OgAAKcMm4z3GAAESaA6EGhoG40QOv +8Qam8cDhxc91gADcRDoOoACpcM9wgADUOCCAz3CAANg4AIAJIQEAz3CAAMzUCIAJIQIAz3CgACwg +MICpcHoOoABZYaEDj/HxwM9wgABEmgGADwhRAM9wgACIOAeAz3GAADBFIIFCIQGAyiFiAJDpz3GA +ADzVLIGK6c9xgAAk1coJb/cjgQoO7/8C2dHA4H7xwOIKj/HPcIAAbCkEgKCAz3CAAKREAIBCIACA +yiBiADa9h+jPcIAAwESODYAAz3CAACTVIYjPcIAA+ETPdoAARJqK6SCAQiEBgMohYgAE6SCGreli +DYAAz3CAABRFWg2AAAGGVglv9whxIYYPeB0JBQAKIcAP63KKIA0D19tKJAAAOQQv87hzz3GAADBF +IIFCIQGAyiFiAAbpHWUjhsm9Cw1AEFoN7/8A2aUCj/HgeOHF4carChAAQCLDAyS7w7oC8ADalQoV +BDMmgnCAALRKQCeNclR9IH3AiAEZkgMB4AEQggQBGZIAARCCBAEZkgABEIIEARmSAAEQggQBGZIA +ARCCBAEZkgABEIIEARmSAAEQggQBGZIAARCCBAEZkgABEIIEARmSAAEQggQBGZIAARCCBAEZkgAB +EIIEARmSAAEQggQBGZIAARCCBAEZkgABEIIEARmSAEIjQ4Cz9cHG4H/BxeHF4cYj6mNqIrvBugLw +ANo1ChUBMyaCcIAAoEpAJ41yVH0gfcCABBmQAwTgBBACBAQZkAAEEAIEBBmQAAQQAgQEGZAAQiND +gOP1wcbgf8HF4cXhxqsKEABAIsMDJLvDugLwANqVChUEMyaCcIAApEpAJ41yVH0gfcCQAhmUAwLg +AhACBQIZlAACEAIFAhmUAAIQAgUCGZQAAhACBQIZlAACEAIFAhmUAAIQAgUCGZQAAhACBQIZlAAC +EAIFAhmUAAIQAgUCGZQAAhACBQIZlAACEAIFAhmUAAIQAgUCGZQAAhACBQIZlAACEAIFAhmUAAIQ +AgUCGZQAQiNDgLP1wcbgf8HF8cB6CK/xUyFCAE4iDQHPcqAAFATJggDbDiaCHwAAAAZQccohxg/K +IsYHyiCGDwAAxiLKI4YPAACbAsokZgAUAibzyiXGAIDhyiRNcMoizQDoIC0CTmDPcaAAOAQB4sip +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 +9gAEAIUAAACGAAAAhwBVAIgAAACJAKoAigAAAIsA3QCMAAAAhQABAIYAAQCHAFUAiAAAAIkAqgCK +AAAAiwDdAIwAAACFAAIAhgADAIcAVQCIAAAAiQCqAIoAAACLAN0AjAAAAIUAAwCGAAcAhwBVAIgA +AACJAKoAigAAAIsA3QCMAAAA+/8AAP//AAC5Ad8AOwItALEAGwAWARsArwAbABQBGwBsAKAA0QCg +AG8AgwBxAIMAcwAzANQBBgDQAQAAeABJAHkAagDeAGoAqAAAAA0BAACmAD8ApwABAAsBPwAMAQEA +BAAIAJwBzACdAcwA1QHMANYBzAC0ACAAGQEgAI8AiAD0AIgAkAAiAPUAIgCRAAQA9gAEAKgADAAN +AQwAhQAAAIYAAACHAJkAiAAAAIkAqgCKAAAAiwDdAIwAAACFAAEAhgABAIcAmQCIAAAAiQCqAIoA +AACLAN0AjAAAAIUAAgCGAAMAhwCZAIgAAACJAKoAigAAAIsA3QCMAAAAhQADAIYABwCHAJkAiAAA +AIkAqgCKAAAAiwDdAIwAAAD7/wAA//8AALkB3wCxABsAFgEbAK8AGwAUARsAbACgANEAoABvAIMA +cQCDAHYAgwBzADMAbgAzAHAAMwByADMA1wAzANQBBgDQAQAAfgA8AOMAPAB4AEkA3QBJAH8AWgDk +AFoAqgA/AKsAAQAPAT8AEAEBAHkAagDeAGoAqAAAAA0BAACmADcApwABAAsBNwAMAQEABAAIAJwB +zACdAcwA1QHMANYBzAC0ACAAGQEgADECDAAyAgwAMwK9ADYCDAA3AgwAOAK9AKAAiAAFAYgAoQDV +AAYB1QCiAAQABwEEAI8AiAD0AIgAkAAiAPUAIgCRAAQA9gAEAJ8ADAD7AAwAlAAAAJUAAACcAJcA +nQDQAJoAjQCYABEAlgAzAJcAdwCUAAEAlQABAJwAlwCdANAAmgCNAJgAEQCWADMAlwB3AJQAAgCV +AAMAnACXAJ0A0ACaAI0AmAARAJYAMwCXAHcAlAADAJUABwCcAJcAnQDQAJoAjQCYABEAlgAzAJcA +dwD6AAAA+QAAAAIBlwADAdAAAAGNAP4AEQD8ADMA/QB3APoAAQD5AAEAAgGXAAMB0AAAAY0A/gAR +APwAMwD9AHcA+gACAPkAAwACAZcAAwHQAAABjQD+ABEA/AAzAP0AdwD6AAMA+QAHAAIBlwADAdAA +AAGNAP4AEQD8ADMA/QB3AIUAAACGAAAAhwBVAIgAAACJAKcAigAAAIsA3gCMAAAAhQABAIYAAQCH +AFUAiAAAAIkApwCKAAAAiwDeAIwAAACFAAIAhgADAIcAVQCIAAAAiQCnAIoAAACLAN4AjAAAAIUA +AwCGAAcAhwBVAIgAAACJAKcAigAAAIsA3gCMAAAA6wAAAOoAAADsAFUA7QAAAO4ApwDvAAAA8ADe +APEAAADrAAEA6gABAOwAVQDtAAAA7gCnAO8AAADwAN4A8QAAAOsAAgDqAAMA7ABVAO0AAADuAKcA +7wAAAPAA3gDxAAAA6wADAOoABwDsAFUA7QAAAO4ApwDvAAAA8ADeAPEAAACkAYAAoQFAAPv/AAD/ +/wAApQEBALkB3wCxABsAFgEbAK8AGwAUARsAbACgANEAoABvAIMAcQCDAHYAgwBzADMAbgAzAHAA +MwByADMA1wAzANQBBgDQAQAAfgA8AOMAPAB4AEkA3QBJAH8AWgDkAFoAqgA/AKsAAQAPAT8AEAEB +AHkAagDeAGoAqAAAAA0BAACmADcApwABAAsBNwAMAQEABAAIAJwBzACdAcwA1QHMANYBzAC0ACAA +GQEgADECDAAyAgwAMwK9ADYCDAA3AgwAOAK9AKAAiAAFAYgAoQDVAAYB1QCiAAQABwEEAI8AiAD0 +AIgAkAAiAPUAIgCRAAQA9gAEAJ8ADAD7AAwAlAAAAJUAAACcAJcAnQDQAJoAjQCYABEAlgAzAJcA +dwCUAAEAlQABAJwAlwCdANAAmgCNAJgAEQCWADMAlwB3AJQAAgCVAAMAnACXAJ0A0ACaAI0AmAAR +AJYAMwCXAHcAlAADAJUABwCcAJcAnQDQAJoAjQCYABEAlgAzAJcAdwD6AAAA+QAAAAIBlwADAdAA +AAGNAP4AEQD8ADMA/QB3APoAAQD5AAEAAgGXAAMB0AAAAY0A/gARAPwAMwD9AHcA+gACAPkAAwAC +AZcAAwHQAAABjQD+ABEA/AAzAP0AdwD6AAMA+QAHAAIBlwADAdAAAAGNAP4AEQD8ADMA/QB3AIUA +AACGAAAAhwBVAIgAAACJAKcAigAAAIsA3gCMAAAAhQABAIYAAQCHAFUAiAAAAIkApwCKAAAAiwDe +AIwAAACFAAIAhgADAIcAVQCIAAAAiQCnAIoAAACLAN4AjAAAAIUAAwCGAAcAhwBVAIgAAACJAKcA +igAAAIsA3gCMAAAA6wAAAOoAAADsAFUA7QAAAO4ApwDvAAAA8ADeAPEAAADrAAEA6gABAOwAVQDt +AAAA7gCnAO8AAADwAN4A8QAAAOsAAgDqAAMA7ABVAO0AAADuAKcA7wAAAPAA3gDxAAAA6wADAOoA +BwDsAFUA7QAAAO4ApwDvAAAA8ADeAPEAAACkAYAAoQFAAPv/AAD//wAAuQHBANQBAwDQAQQAeAA8 +AN0APAB5AGoA3gBqAKgAAQANAQEABAAIAJwBzACdAcwA1QHMANYBzAC0ACAAGQEgAI8AiAD0AIgA +kAAAAPUAAACRAAYA9gAGAIUABADrAAQApAGAAF0CMwBKAg4ATAIOAE0CAQCtAQcAswEEALgBAAC7 +AVYAUAILAFECAwBSAgEAUwIAAFQCCwBVAgMAVgIBAFcCAABmAgYAaAIHAGoCBwBsAgcAbgIFAHAC +DAB9AgYAfwIHAIECBwCDAgcAhQIFAIcCDAC1ACEAGgEhAEsCAQChAUAAswAAABgBAACUAgsAlQID +AJYCAQCXAgAAmAILAJkCAwCaAgEAmwIAALIAMAAXATAAnAIPAKECDwCgAogAnwKIAJ4CiACdAogA +pQKIAKQCiACjAogAogKIAPv/AAD//wAAuQHBANQBAwDQAQAAeAA8AN0APAB5AGoA3gBqAKgAAQAN +AQEABAAIAJwBzACdAcwA1QHMANYBzAC0ACAAGQEgAI8AiAD0AIgAkAAAAPUAAACRAAYA9gAGAIUA +BADrAAQApAGAAF0CNgBKAg0ATAIPAE0CAQCtAQYAswEEALgBAAC7AVYAUAILAFECAwBSAgEAUwIA +AFQCCwBVAgMAVgIBAFcCAABmAgYAaAIHAGoCBwBsAgcAbgIFAHACDAB9AgYAfwIHAIECBwCDAgcA +hQIFAIcCDAC1ACEAGgEhAKEBQAD7/wAA//8AALkBwQDUAQMA0AEEAHgAPADdADwAeQBqAN4AagCo +AAEADQEBAAQACACcAcwAnQHMANUBzADWAcwAtAAgABkBIACPAIgA9ACIAJAAAAD1AAAAkQAGAPYA +BgCFAAQA6wAEAKQBgABdAjMASgIOAEwCDgBNAgEArQEHALMBBAC4AQAAuwFWAFACCwBRAgMAUgIB +AFMCAABUAgsAVQIDAFYCAQBXAgAAlAILAJUCAwCWAgEAlwIAAJgCCwCZAgMAmgIBAJsCAABmAgYA +aAIHAGoCBgBsAgcAbgIFAHACDAB9AgYAfwIHAIECBgCDAgcAhQIFAIcCDACyADAAFwEwALMAAAAY +AQAAnAIPAKECDwCgAogAnwKIAJ4CiACdAogApQKIAKQCiACjAogAogKIALUAIQAaASEAoQFAAEsC +AQD7/wAA//8AALkBwQDUAQMA0AEAAHgAPADdADwAeQBqAN4AagCoAAEADQEBAAQACACcAcwAnQHM +ANUBzADWAcwAtAAgABkBIACPAIgA9ACIAJAAAAD1AAAAkQAGAPYABgCFAAQA6wAEAKQBgABdAjYA +SgINAEwCDwBNAgEArQEGALMBBAC4AQAAuwFWAFACCwBRAgMAUgIBAFMCAABUAgsAVQIDAFYCAQBX +AgAAZgIGAGgCBwBqAgYAbAIHAG4CBQBwAgwAfQIGAH8CBwCBAgYAgwIHAIUCBQCHAgwAtQAhABoB +IQChAUAA+/8AAAAAAAACAAAADdIS0hPSFNIM0hXSC9IC0hHSBEMAEBQQCRAREAFAG9Ic0gDSCgAL +AAQADgC1ABoBDwBCALwAwwAhASgBtgC3ALgAuQC9AL4AvwDAABsBHAEdAR4BIgEjASQBJQEKAAAA +CwAAALYAAAC3AAAAuAAAALkAAAAbAQAAHAEAAB0BAAAeAQAAvQAAAL4AAAC/AAAAwAAAACIBAAAj +AQAAJAEAACUBAAAS0gAAE9IAAAAAAQACAAMALABkAHQAgACMAKEABwAAAAAAAQACAAMAAAAAALcT +IgC4FCMAuRUkALsWJQC8FyYAvRgnAMAZKADEGikABxsAAAgcAQALHQIADB4DABAfBAAiIQUAJCIG +ACYjBwAoJAgAKiUJACwmCgAuJwsAMCgMADQpDQA4Kg4APCsPAEAsEABkLhEAaC8SAGwwEwBwMRQA +dDIVAHgzFgB8NBcAgDUYAIQ2GQCINxoAjDgbAJE6HACVOx0AmTweAJ09HwChPiAApT8hACRJBgIs +SgoCNEsNATxMDwFkTREBbE4TAXRPFQF8UBcBhFEZAZVSHQGdUx8BAQQAAAIFAQADBgIABAcDAAUI +BAAGCQUABwoGAAgLBwAJDAgACg0JAAsOCgAMDwsADRAMAA4RDQABQAAEAkEBBANCAgQEQwMEBUQE +BAZFBQQHRgYECEcHBAlICAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAACGAIYAhgCGAIYAhgCGAIYAhgCGAIYAhgCGAIYAhwCIAAQABQAGAAYABwAIAAgACQAJ +AAoACwAMAAwAJAAlACUAJgAnACgAKABEAEUARgBGAEcASABIAEkASgBKAEsATABoAGgAaQBqAGsA +bABtAG0AbgBvAG8AcABxAHEAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgBy +AAoAPwCGAIYAhgCGAIYAhgCGAIYAhgCGAIYAhgCGAIYAhwCIAAQABQAGAAYABwAIAAgACQAJAAoA +CwAMAAwAJAAlACUAJgAnACgAKABEAEUARgBGAEcASABIAEkASgBKAEsATABoAGgAaQBqAGsAbABt +AG0AbgBvAG8AcABxAHEAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAAoA +PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAIAAgADAAQABAAFAAYABgAHAAgACAAJ +AAoACgALAAwADAANAA4ADgAPACYAJwAoACkAKgBGAEYARwBIAEgASQBKAEoASwBMAGgAaQBqAGoA +awBsAGwAbQBuAG4AbwBwAHAAcQByAHIAcwBzAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0 +AHQAdAB0AHQACgA/AAAAAAAAAAAAAAAAAAAAAAABAAEAAgADAAMABAAFAAUABgAHAAcACAAJAAkA +CgALAAsADAAMAA0ADgAjACQAJQAmACcAKAApAEQARQBGAEYARwBHAEgASABJAEkASgBLAGgAaABp +AGoAawBsAG0AbQBuAG8AbwBwAHEAcQByAHIAcwBzAHMAcwBzAHMAcwBzAHMAcwBzAHMAcwBzAHMA +cwBzAHMACgA/AAAAAAAAAAAAAAAAAAAAAAABAAIAAgADAAQABAAFAAYABgAHAAgACAAJAAoACgAL +AAwADAANAA4ADgAPACYAJwAoACkAKgBGAEYARwBIAEgASQBKAEoASwBMAGgAaQBqAGoAawBsAGwA +bQBuAG4AbwBwAHAAcQByAHIAcwBzAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0 +AHQACgA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQACAAMAAwAEAAUABQAGAAcABwAIAAkA +CQAKAAoACwAkACUAJQAmACcAKAAoAEQARQBGAEYARwBIAEgASQBKAEoASwBMAGgAaABpAGoAawBs +AG0AbQBuAG8AbwBwAHEAcQByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIA +CgA/AIBjgAAAAAAAsgwsAf////////8AAf//AgP///8E//////////////////////8F/wb/B/8I +/wn/Cv8L/wz///8N////Dv///w////8Q//////////////////////////////////////////// +//8R////Ev///xP///8U////Ff///xb///8X////GP///xn///8a////G/////8c////Hf///x7/ +//8f////IP///yH//////////////////////yIjJP8lJif//yj///8p//////////////////// +//////////////////////////////////////////////////////////8AAAEAAQEAAAAAAAAA +AQAAAAAAAAAAAAAAAAAAAwAAAAAAAAABAAAAAAAAAAAtAQAAAAAAPGsAAAEAAAB81wEAAgAAAPDW +AQADAAAAHCECAAQAAAAALQEABQAAACwTAQAGAAAAbOYAAAcAAAC0EwEACAAAAEQ+AAAJAAAAzF4A +AAoAAAAEwgAACwAAAFA4AAAMAAAAHCQCAA0AAACk3wAADgAAAOTfAAAPAAAAoN8AABAAAADg3wAA +EQAAANBBAQASAAAABO4BABMAAAAQMgAAFAAAAIBqAQAVAAAAxFYBABYAAAB8ZgEAFwAAAFzWAQAY +AAAA7I8BABkAAADsBQEAGgAAAPwsAQAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAP//////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIjgAAiI4AAIiOAAB8eQAAiI4A +AIiOAADgeQAAiI4AAIiOAACIjgAAiI4AAIiOAACIjgAAiI4AAIiOAACIjgAA/H8AAER/AAA0fwAA +rH4AAGx/AACUfgAAiI4AAIiOAADYhQAAqIgAAFSKAACIjgAAiI4AAIiOAADwjQAA8IQAACiFAACU +hAAAiI4AAIiOAACIjgAArI0AAIiOAAB0hAAAiI4AAIiOAACIjgAAiI4AAIiOAACIjgAAiI4AAIiO +AACIjgAAiI4AAIiOAACIjgAAiI4AAIiOAACIjgAAiI4AAIiOAACIjgAAiI4AAIiOAACIjgAAiI4A +AIiOAACIjgAAiI4AAIiOAACIjgAAiI4AAIiOAACIjgAAiI4AAIiOAACgegAAiI4AAIiOAACIjgAA +iI4AAIiOAAAQiwAAiI4AAIiOAACIjgAAiI4AAIiOAAAEewAAiI4AAHB8AAAQfAAAoHsAAAB8AAA4 +dwAAiI4AAAx3AACIjgAAiI4AAIiOAACIjgAAiI4AAIiOAACIjgAAiI4AAJh2AACIjgAAiI4AAIiO +AACIjgAAiI4AAIiOAACIjgAAiI4AAIiOAACIjgAAiI4AAIiOAACIjgAAiI4AAIiOAACIjgAAiI4A +AFh+AACIjgAAiI4AAByAAACIjgAAiI4AAIiOAACIjgAAiI4AAGSBAABMgAAAiI4AAIiOAACIjgAA +iI4AAIiOAACIjgAAiI4AAIiOAACIjgAAiI4AAIiOAACIfAAAiI4AAIiOAACIjgAAiI4AAIiOAACI +jgAAiI4AAESNAACIjgAApI0AALCKAACIjgAAiI4AADh1AABwigAAiI4AAIiOAAC0fgAAzH4AAIiO +AACIjgAAwHoAAHx3AACIjgAAiI4AAIiOAAAwhQAAfH4AAIiOAACIjgAAiI4AAIiOAACIjgAAiI4A +ALx9AACIjgAAsI4AADyPAAAcjwAAVI8AAOiOAADQjgAAXI8AAKyOAACIjgAAiI4AAIiOAACIjgAA +iI4AAIiOAACIjgAAiI4AAMh6AACIjgAAiI4AAIiOAACIjgAAiI4AAIiOAACIjgAAiJEAAJSSAADA +dQAADHYAAIiOAACIjgAAiI4AAIiOAACIjgAArHcAAIiOAACIjgAAiI4AAIiOAACIjgAAiI4AAIiO +AACIjgAAiI4AAIiOAACIjgAAiI4AAByQAABgjwAAzJAAALCQAADwjwAAeI8AAOSQAACYkAAAiI4A +AIiOAACIjgAAiI4AAIiOAACIjgAAiI4AAIiOAADgdwAAzHgAAGx4AAD8kAAAJHYAAFR5AADseQAA +iI4AAIiOAACIjgAAiI4AANh5AADceQAAiI4AAIiOAACAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARJ0AAIyb +AACongAAtJ0AALyfAAAAAAEA/////wAAAAD//////////wEAAAD4EwAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAIAAAAAAND+AAAAAAAAAAAYIKAAICCgAEAhoABIIaAAHCCgACQgoABEIaAA +TCGgACggoAAwIKAAaCGgAHAhoAAsIKAANCCgAGwhoAB0IaAAOCCgADwgoAB4IaAAfCGgAJgRAAAA +/wMAUBMAAAD/BQDcEQAAAP8tALgRAAAA/z0ANBEAAAD/BABcEQAAAP8lAJTEAAAA/90AbBIAABAQ +TAA4EwAAAP8iAAASAAAA/yYA2BIAAAD/KACkEgAAAP8gAITDAAAAIAAAyMIAAAD/MAAAAAAAAAAA +AAABAQA8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PBUVFRU8PDw8FRUVFTw8PDwAAAAA +AAAAAAAAAAAAAAAAPDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDwVFRUVPDw8PBUVFRU8 +PDw8AAAAAAAAAAAAAAAAAAAAADw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8FRUVFTw8 +PDwVFRUVPDw8PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAA0BAEAzKoAACwkAADMqgAAzKoAAMyqAACEDAAA +FOUBAGjRAADMqgAAzKoAACg1AAAoNQAAKDUAACg1AAAoNQAAKDUAACg1AADMqgAAzKoAAMyqAADM +qgAAVFYAAMyqAADMqgAAzKoAAMyqAADMqgAATNEAAMyqAADMqgAACMIAAAAAAAAc6wAAIOsAALQC +AACgAgAApEABAAAAAACEuAAArMMBAKy4AADUwwEA0LgAAPzDAQC0o4AA9DqAACCegAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAhAAC4IQAAoL6AAAACAAAAAAAAoPoAAHD6AACgwIAA +QAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKT6AACAPQEAMMeAAFQAAAAAAAAAoPoAAFQ8AQDg +xYAAUAEAAAAAAACg+gAAUDYBAMgGgAAIAAAAAQAAAKD6AABs+QAAAAAAAFABAAAAAAAAoPoAANw2 +AQCMM4AAAgAAAAAAAACg+gAA6DUBAMQGgAAEAAAAAAAAAKj6AABw+gAAhMeAACoAAAAAAAAAoPoA +AHD6AADwQYAACAAAAAAAAAAAAAAAePoAAAAAAAAAAAAAAQAAAAAAAACM+gAAAAAAAAAAAAAAAAAA +AAAAAHT6AAAAAAAAAAAAAAAAAACg+gAAIMYBAAAAAAAAAAAAAAAAAKD6AADgxQEA0AaAAAQAAAAA +AAAAbgBuAGkAwACgAFAAgAC+AFABfQA+AAEAAQABAFgCKADmAS0AVQM8ANwBYwAAAG4AbgBpAMAA +oABQAIAAvgBQAX0APgABAAEAAQBYAigA5gEtAFUDPADcAWMAAAAAAAAAAQEAAHwDAQAV0gAAAAAA +AP8DAAB8AwEADNIAAAAAAAD/AQAAfAMBABXSAAAKAAAAAPwPAHwDAQAM0gAACQAAAAD+AwB8AwEA +FdIAABQAAAAAAPA/fAMBAAzSAAASAAAAAAD8B3wDAQAG0gAAAAAAAP8BAAB8AwEAB9IAAAAAAAD/ +AwAAfAMBAAbSAAAJAAAAAP4DAHwDAQAH0gAACgAAAAD8DwB8AwEABtIAABIAAAAAAPwHfAMBAAfS +AAAUAAAAAADwPwAAAAAAAAAAAAAAAAEAAAABAAAACgAAAAUAAAAFAAAABgAAAAoAAAAKAAAABgAA +AAQAAAAFAAAABgAAAAUAAAAFAAAABgAAAAYAAAAGAAAABgAAAAcAAAAHAAAABwAAAAgAAAAIAAAA +CAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAABAAAAAgAAAAEAAAABAAAAAwAAAAMAAAAC +AAAAAQAAAAQAAAAAAAAAAAAAAAIAAAABAAAAAQAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAACwBAABeAQAAAQAAAAEAAAABAAAAAQAAAAMAAAAAAAAA +AAAAAFQNAQC4EQEAqBABACQSAQC0EQEA7A8BACASAQB8DgEAeA4BAGDjFgAg1hMAAAAAABAAAAAA +gAAAAACgABAnAADoAwAA6AMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAABAAAAAQAA +AAIAAAAFAAAAAgAAAAIAAAAFAAAAAgAAAAIAAAABAAAAAQAAAAUAAAAFAAAAAgAAAAUAAAAFAAAA +AAAAAAUAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAUAAAACAAAAAgAAAAUAAAAF +AAAABQAAAAAAAAAFAAAAAgAAAAUAAAABAAAAAQAAAAIAAAACAAAAAgAAAAUAAAAFAAAAAgAAAAUA +AAABAAAAAQAAAAIAAAACAAAAAgAAAAUAAAAFAAAAAgAAAAIAAAAFAAAAAQAAAAIAAAAFAAAAAgAA +AAUAAAAFAAAABAAAAAUAAAAFAAAAAQAAAAUAAAAFAAAABQAAAAIAAAACAAAABQAAAAUAAAAFAAAA +AQAAAAUAAAAFAAAABQAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAA +AAAAAAAAAAAAAAgAAAABEAABAAAAAoAAAUIABgIQAAIgAAADwAABQwAGAxAAAsAAAAPAAAFDAAYE +EAACQAAAAoAAAUQABgURAABAAAADwAABRQAGBhEAAOAAAAPAAAFFAAYHEQABAAAAAoAAAUYABggR +AAIgAAADwAABRwAGCREAAsAAAAPAAAFHAAYKEQACQAAAAoAAAUgABgsSAABAAAADwAABSQAGDBIA +AOAAAAPAAAFJAAYNEgABAAAAAoAAAUoABg4SAAIAAAACgAABTAAGAXgAMAAAAFAAAAS2PAYCeABE +AAAAUAAABLk8BgN5AAgAAABQAAAEuzwGBHkAHAAAAFAAAAS+PAYFeQAwAAAAUAAABMA8BgZ5AEQA +AABQAAAEwzwGB3oACAAAAFAAAATFPAYIegAcAAAAUAAABMg8Bgl6ADAAAABQAAAEyjwGCnoARAAA +AFAAAATNPAYLewAIAAAAUAAABM88Bgx7ABwAAABQAAAE0jwGDXsAMAAAAFAAAATUPAYOfAAQAAAA +UAAABNo+BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAABAgEBAAIBAAECAgIAAQEAAgECAQIAAgABAgOAgICAgICAgAGAAoCA +gICAwACQANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABuAAAAbgAC +AG4AbgBuAAIAaQBpAG4AAQDAAMAA6AABAKAAoAA2AQMAUABQAPUAAQCAAIAA6AABAL4AvgC+AAEA +UAFQAVABAQB9AH0ArwADAD4APgA+AAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAWAJYAlgCAQAo +ACgAKAABAOYB5gHmAQEALQAtAC0AAQBVA1UDVQMBADwAPAA8AAEA3AHcAdwBAQBjAGMAYwABAAAA +AAAAAAAAMgAFADIABQACAAgAZACgAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACj1gAABAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAAAAAACMCowKAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAANDhAQAVAAAAAwAAAOhFgAAAAAAAAAAAAAAAAAAc4QEABQAAAAMAAADoRYAAAAAAAAAA +AAAAAAAAEOEBAAoAAAADAAAA6EWAAAAAAAAAAAAAAAAAANzeAQAKAAAAAwAAAOhFgAAAAAAAAAAA +AAAAAAAs4AEACgAAAAAAAAAIRoAAAAAAAAAAAAAAAAAALOABAAoAAAAAAAAACEaAAAAAAAAAAAAA +AAAAACzgAQAKAAAAAAAAAAhGgAAAAAAAAAAAAAAAAAAs4AEACgAAAAAAAAAIRoAAAAAAAAAAAAAA +AAAALOABAAoAAAAAAAAACEaAAAAAAAAAAAAAAAAAACzgAQAKAAAAAAAAAAhGgAAAAAAAAAAAAAAA +AAAs4AEACgAAAAAAAAAIRoAAAAAAAAAAAAAAAAAALOABAAoAAAAAAAAACEaAAAAAAAAAAAAAAAAA +ACzgAQAKAAAAAAAAAAhGgAAAAAAAAAAAAAAAAAAs4AEACgAAAAAAAAAIRoAAAAAAAAAAAAAAAAAA +LOABAAoAAAAAAAAACEaAAAAAAAAAAAAAAAAAACzgAQAKAAAAAAAAAAhGgAAAAAAAAAAAAAAAAAA8 +4QEACgAAAAMAAADoRYAAAAAAAAAAAAAAAAAAlOIBAAUAAAADAAAA6EWAAAAAAAAAAAAAAAAAADTe +AQAKAAAAAAAAAAhGgAAAAAAAAAAAAAAAAACk3gEACgAAAAAAAAAIRoAAAAAAAAAAAAAAAAAA1OwB +AAoAAAADAAAA6EWAAAAAAAAAAAAAAAAAAAjfAQAKAAAAAAAAAAhGgAAAAAAAAAAAAAAAAACw3wEA +CgAAAAAAAAAIRoAAAAAAAAAAAAAAAAAAMOABAAoAAAAAAAAACEaAAAAAAAAAAAAAAAAAALDgAQAK +AAAAAAAAAAhGgAAAAAAAAAAAAAAAAADU4QEACgAAAAAAAAAIRoAAAAAAAAAAAAAAAAAAROIBAAoA +AAAAAAAACEaAAAAAAAAAAAAAAAAAAHDiAQAGAAAAAAAAAAhGgAAAAAAAAAAAAAAAAACA4gEABgAA +AAAAAAAIRoAAAAAAAAAAAAAAAAAAAAAAAOhFgADoRYAAuCCgAGwgoAAAgAEA/3/8/wAAAAAAAAAA +CEaAAAhGgACkIKAAOCCgAAEAAAD8////AAAAAAAAAAAoRoAAKEaAAKggoAA8IKAAEAAAAMf///8A +AAAAAAAAAEhGgABIRoAArCCgAHghoABAAQAAP/7//wAAAAAAAAAAaEaAAGhGgACwIKAAfCGgAAAM +AAD/8f//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN8BABUAAAADAAAA6EWAAAAAAABQAAAAAAAA +AFQGgAB8p4AAGAAAADyngAAAAAAAAAAAAAAAAABUBoAAfKeAABgAAAA8p4AAAAAAAAAAAAAAAAAA +fwAAAAAAAAAAfwAAAAAAAAAAAAAAAAAAoImAAAAAAAAAAAAA//8AAAEAAAAAAAAABwAAAAAAAAAA +AAAAAAAAAAABAgMEBAQEBAUGBwgICAgICQoLDA0AAG47aDtiO1w7bjpoOmI6XDpuOWg5YjlcOW4r +aCtiK1wrbipoKmIqXCpuKWgpYilcKW4oaChiKFwobidoJ2InXCduJmgmYiZcJm4laCViJVwlbiRo +JGIkXCRuI2gjYiNcI24iaCJiIlwibiFoIWIhXCFuIGggYiBcIGITXBNuEmgSYhJcEm4RaBFiEVwR +bhBoEGIQXBBuAmgCYgJcAm4BaAFiAVwBbgBoAFQAAABuO2g7YjtcO246aDpiOlw6bjloOWI5XDlu +K2grYitcK24qaCpiKlwqbiloKWIpXCluKGgoYihcKG4naCdiJ1wnbiZoJmImXCZuJWglYiVcJW4k +aCRiJFwkbiNoI2IjXCNuImgiYiJcIm4haCFiIVwhbiBoIGIgXCBuEmgSYhJcEm4RaBFiEVwRbhBo +EGIQXBBXEFIQTRBJEG4BaAFiAVwBbgBoAGIAXABUAAAAAAAAAAAAAAAdAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKGEBAAgAAAADAAAA6EWAAMwHgABMCIAAzAiAAEwJgAAK +DREUCg0RFBkZGRkKCgAAAAAAAAYGBgYJCQkJAAYAAAAFBgcIDQ4PEBUWFxgZAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBSamhwkmpqa +mpqTmm6BPzUJiysAAAAyAAAAjwCMAIoAQwAPACBoNwAAABEAPjogEQAAAiUAAAwvAAACLzk5AAol +PLdHb4oABxQnYi4AAAIAFwAAFg4WFAAAAABCQhcABRAKIDBAAAAGBgoS9hX2BvYJ9gz2D/YA9gMA +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 +gA0AAAAGAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAFCUCACAggA8AAEAAaSAA +AGkgQABpIAAAaSBAACAggA8AAOgAaSAAAGkgQABpIAAAaSBAACAggA8AANjzaSAAAGkgQABpIAAA +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 +IAGKJIMPDw2eEQDYDNwnAs//z3aAAAjoFiZNEaeNoK/JdRYlTREApRQUADFGrcdxgADI5AK1AIkH +rQAZQgEAG0IBx/HxwIIJz/8IyM9yoADIHw4aGIAJyA8aGIAKyBAaGIALEgE2AsgkeBEaGIAMyM9x +gAA4Ry0aGIAAgQHgAKHDuFcIUQMLyH/ZCrkkeC8oAQBOIIIHANgPIIAABCEBgEIijQIZ8gsjQMAX +9M9woACIIPAgUAPPdoAAdEQAhs93gAB4RA0NARAAhxJwAAuBBqCmAB8AFFUBz//geJ/hzCDuh8wg +ToAG9wJ5QWkLChEIiiH/DwbwANkPIYEAYbkYeeB/KHDxwLII7/+KIA8KgiQCOppxenJac4h1qHcK +IYAhCiDAIcIJYACewYpwuglgAItxgsZqcLIJYADJcUpwqglgAITBqXCiCWAAhsGIxelwlglgAKlx +KnCOCWAAisEKcIYJYACMwalwisHODuAAkMKLcMlxwg7gAJLCyXCEwboO4ACUwobAqXGuDuAAlsKY +xpDAksHGDqAAyXKax5TAlsG6DqAA6XLJcOlxjg7gAJzCnMCewaYMIACOwp/F7gvgEARtjsBKCSAA +JG23CBAAhsCKwYIN7/9AJQITi3CEwXYN7/9AJQIVlMBAJQETbg6gAMlykMBAJQEVYg6gAOlyyXDp +cTYO4ACcwozAnMFODqAAyXJqDqAAyXDJcI7BPgwgAEAlAheSwEAlARMyDqAAyXKWwEAlARUmDqAA +6XLJcOlx9g3gAJzCjMCcwRIOoADJcslwjsEGDCAAQCUCGZYIYABAJQAXz3GAAFQIEKGGCGAAQCUA +Gc9xgABUCBGhB/AA2c9wgABUCDCgMaCBB6//gCQCOuB4z3GAAJx+4H8IYeB48cAqD6//2HAodkhx +iHUyDu//yXAId6lwJg7v/6hxCHEALoADBH8mfwArQAMkeGUHr//lePHAugvABc9xgADgKfAhAABA +eM9woADQG4DaUKDPcIAAaC4AgADZDwgeAs9wnwC4/z2g0cDgfuB4YIBAgQGAIYFQc8wgQYDhIMEH +yiAhADBwhvYE9gkKxQDgfwHYiiD/D+B+4HiA4cokTXDoIG0Cz3GgAFAMJYEBGFIA4H7xwHYOj//P +cIAA5C8DgBiIpcFKIAAgHQgRAQohwA/rcoogjA1k2wokAATZBOAAuHPPd4AAiC4khyCB/gjgBoog +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 +CNgQec9wgAC0EOYMj/YV8CCFYHkC2CCFDwhQAGB5AtgghRsIkQBgeQjYEHnPcIAArA2+DI/2B9iG +8Ot2YHkC2Lhwz3AAALsZCiHAD8lyiiNOBdED7/aKJIMPYHkB2O0IkQAghWB5AtiA4CCFCNgI9EB5 +EHnPcIAAeAsH8EB5EHnPcIAAkAxqDI/2XfBgeQLYkegghet3YHkB2LhwZ9gGuAohwA/pcoojjgx5 +A+/2iiSDD89wgACgOyCAYHkA2CCFTQgRA2B5CNgghQ8IkABgeQjYIIWR6GB5AtgghRsIUQBgeQjY +EHnPdYAABBUCDK/2qXCpcCXwYHkI2BB5z3WAAMAT7guv9qlwqXAb8GB5AtiB4CCFCNgM9EB5z3WA +ADAXEHnOC6/2qXCpcAvwQHnPdYAA7BUQeboLr/apcKlwOgyP9gHYPgtAAwYLz/2aCUAAzggAAK0E +j/UIcViJAYACoYjqWYmA4sIgogDAIKEAAqHgfuB48cDhxc9wgACgOyCAocFgeQTYjwhRAC4Mb/yK +IMwOgwhRAM91gACALgCFAeAApRcIUQAB2c9woADIHDGg+gtgBihwSiTAcKgggALPcQEAQmnPcKAA +7CcmoItxkgqv9oogRgkAhUIgQIAApQf0ANnPcKAAyBwxoAAUBTFMJUCAyiHCD8oiwgfKIIIPAACs +KMojgg8AAEcDGALi9sokIgABBK/1ocDgfuB48cB6C4/1z3aAAIAuAIYB4ACmFQhRAAHYz3GgAMgc +EaFuC0AGz3WAAKg7IIVgeQDY1wiRAMfYlLjPdaAA7CcGpc93AACCK89wAwCCKwalz3ADAMJEBqXP +cAMAAiwGpc9wAwBCRQalz3EAAMJ0z3ADAMJ0BqXPcAMAgm8Gpc9wAwCCbAalxtiQuAalJqUCC2AG +CtjPcAAAgmwGpfYKYAYK2M9wAAACLAal5gpgBgrYz3AAAEJFBqXaCmAGCtjPcAAAgm8GpcoKYAYK +2OalwgpgBgrYz3AAAMJEBqW2CmAGCtjPcBMAxgAGpaYKYAYy2ACGQiBAgACmB/TPcaAAyBwA2BGh +3QKP9SCFYHkA2GkI0QDH2JS4z3WgAOwnBqXPdwAAgmzPcAMAgmwGpc9wAwDCdAalz3ADAEKWBqXG +2JC4BqVOCmAGCtjmpUYKYAYK2M9wAADCdAalOgpgBgrYz3AFAEKWBqUqCmAGiiAHDc9wAABClrTx +IIXrd2B5ANgghRpwYHkB2Lhwz3AAALoZCiHAD+lycttxAO/2CiQABPHA4gmP9c9yoACsLzWCAN8P +CR4AAdvPcaAA7CdmoYjoz3CAAJg7AIBAeErwFYJRIACAyiHBD8oiwQfKIIEPAAB/GcojgQ8AAKoA +yiTBABwA4fbKJcEAz3ATAMcAz3WgAOwnBqXPcBAABmkGpcfYlbgGpc92gACALgCGAeAAphcIUQAB +2c9woADIHDGgZglgBihwz3AAAEItBqXPcAAAgkYGpc9wAABCYAalAIZCIECAAKYG9M9woADIHPGg +jQGP9fHAJgmP9c9wgACgOyCAocFgeQTYMujPdoAAgC4AhgDdAeAAHEQzAKYVCFEAAdnPcKAAyBwx +oP4IYAYocItxqg9v9gDYAIZCIECAAKYF9M9woADIHLGgABQBMc91gACsO4Yh/wxAhUK5YHoC2AAU +ATFAhQPYYHrBuRkBr/WhwOB48cCeCK/1A9jPdoAAoDsghs91gAAQRmB5osEG6CCGYHkE2IboZwMg +AEgVBBAD2Bpwz3enABRIz3agAOwnXg+v/QXYDqXPcIAAgC4AgAHgz3GAAIAuAKEXCFEAAdnPcKAA +yBwxoE4IYAYocAPY+g5v9qlxBNjyDm/2Im0F2OoOb/YkbQvY4g5v9iZtD9jaDm/2QCUBEjbY0g5v +9kAlgRI32MYOb/ZAJQETONi+Dm/2QCWBEwiHBKUNhwWlDocGpc9wpwCYRxyAB6UXhwilFocJpc9w +qwCg/xiAC6XPcKsAoP8ZgAylz3CrAKD/GoANpc9wBQDGAwamxtiQuAamz3AsAAIBBqbPcFoAQgEG +poogiwAGps9wQACHDQamz3DRAMINBqbPcMAABw4Gps9wgACALiCAEQlRAM9yoADIHADYEaIB2Ain +ANgNpw6nz3CnAJhHz3JQAP8AXKAB2BenANgWp/zaz3CrAKD/WKBz2lmgGoDPcqsAoP+BuBqiz3CA +AIAuIKAVCVEAz3GgAMgcAdgRoSIPAAbPcEAAhg0Gps9wEAACDgami3ASCiAEgcE2hQDAIngEKIAP +AAB0CRWFN4UCeZ4Ir/UvcAHCT+DPcYAAlKUUpVehGKHPcEAAhw0Gps9wEQAGDgamz3CAAIAuAIDP +cYAAgC5CIECAAKEH9M9xoADIHADYEaGLcK4JIASBwTaFAMAieCoNr/sSpTKFVYUseDeFLyBADkJ5 +OWE2CK/1NXnguBx4wCBiAIIgxALPcYAAlKUSpROlFqHPcIAAgC4AgAHCAeBVoc9xgACALgChFQhR +AM9xoADIHAHYEaFGDgAGAZUQuIUghAAGpgKVELiFIIUABqYDlRC4hSCLAAamBJUQuIUgjwAGpgWV +ELgFIIAPAACCDQamBpUQuAUggA8AAMINBqYHlRC4BSCADwAAAg4Gps9wgACALgCAz3GAAIAuQiBA +gAChB/TPcaAAyBwA2BGhBIUrhQinBYUNpwaFDqcIhRenCYUWp89wqwCg/zigLIU5oC2FOqC+C6/9 +DoUyhYwhgoBE9owhP4EN9pYNIAYK2N4KwANCIEAggOACBc3/BfAuCK/8iiDRBTKFjCGCgET2jCE/ +gQb2Fgiv/IogEQtIFQQQjCSCgET2jCQ/gQ32CiHAD+tyz3AAALQZiiNFDLkDr/a4c89wgADKJgCI +B+jPcIAAcEYAEAQAiHB1BW/1osDgeM9wgAAQRuB/FIDgeM9xAQAkXs9yAQBAVDUFb/oA2OB44H7g +ePHAz3CAAJg7AIBAeM9wgACUOwCAQHjRwOB+4HgA2c9wgACUB+B/IKDxwL4MT/XPcIAAoDsggKHB +YHkE2IHgAd3n9MYML/yKIFAMgeDh9M92gACALgCGAN8AHMQzAeACHMQzAKYTCFEAz3CgAMgcsaCK +DCAGqXCLcTYLb/YA2AAUATHPdYAArDtAhQDYhiH8D2B6RrkAFAAxQIVEIAEMAdhgekS5AdgKC2/2 +QCSBMECFCNhgegIUATHPcIAAoDsggGB5ANgZCBADz3CAAKA7IIBgeQDYABQFMVEIEQQAFAUxqHCG +IPwPjCADgA7yCiHAD+tyz3AAAL0ZiiMRA3UCr/aKJIMPAhQFMah0hCQDnD7yCiHAD+tyz3AAALYZ +iiPRA1ECr/ZKJEAAqHCGIPwPjCACgMohwg/KIIIPAAC1Gcojgg8AAFcEyiLCB9r1AhQFMUwlAIDM +JWKAzCWigBbyqHCGID0PjCACgMohwg/KIsIHyiCCDwAAthnKI4IPAABdBPABovbKJGIAAtgmCm/2 +QCSBMAAUBTGocIYg/A+MIAKADfKMIAOAJ/IKIcAP63LPcAAAtiiKI5IAovECFAAxQIVTIFAABNhg +egpxABQAMYYg/wNEuILgzCDioBHyCiHAD+tyAhQFMc9wAAC3GYojkQyG8UCFBNhgegfZAIZCIECA +AKYW9M9woADIHPGgEPDPdYAArDtAhQHYYHoIcUCFBNhgegPZQIUF2GB6A9kdA2/1ocDgePHAugpP +9c91gACALgCFAeAApQDeFQhRAAHZz3CgAMgcMaCmCiAGKHDPcIAABiHPcaAA7CcGoc9wgABGOgah +z3CAAMZTBqHPcIAAxiQGoc9wgAAGPgahz3CAAIZXBqEAhUIgQIAApQb0z3CgAMgc0aDPcKcAiEnQ +oK0CT/UI2c9wgAB41+B/I6DxwDIKT/XPdoAAgC4AhgHgAKYA3RUIUQAB2c9woADIHDGgHgogBihw +z3AAAMIsz3GgAOwnBqHPcAAAAkYGoc9wAADCXwahAIZCIECAAKYG9M9woADIHLGgRQJP9fHAOguv +9xbY6gnAA89xgADkLwCBxBAABg8IXwEBgcQQAAYNCF4BGgzv9xPYz3CAAIw7IIBgeQvY0cDgfvHA +sgkv/IogiAUO6KIJL/0A2M9wgACgOyCAYHkE2IDgaAgC/9HA4H7PcIAA5C8DgAiAz3GAAHjXCQge +AAGJA/ACieB/AKngePHAuHGN6AohwA/rcs9wAACnGYojxAvBB2/2iiSDD89xgAB41yCBTCUAgAQh +gQ8ABwAAQSkDBgDZyiRNceggbQPwIEUABCWCDwEAAMAuumV6CwuBAAHh0cDgfgohwA/rcs9wAACo +GYojBA5tB2/2SiRAAOB48cDhxQDdz3CAAKAGpgggAKCgz3CnABRIqKA5AU/14HjxwKHBuHAA2EDA +UyWAACcIUABFCJAATwgQAQohwA/rcs9wAACrGYojigoZB2/2iiSDD89wgACoOyCAYHkB2ITgAdnA +ec9wAAAi0jR4z3GAAEvyD/DPcAAAI9LPcYAATvIH8M9wAAAk0s9xgABR8inaErrwIgAADiCCDwAB +AABAwotwpgxgAwPaocDRwOB+4HjxwCYIT/UDyJQQAADPdoAAgC4EIJAPAQAAwACGQSiQIwHgAKYA +3RcIUQAB2c9woADIHDGgBgggBihwz3EkAAcBz3CgAOwnJqCKIYUAJqBTIIEgKwlQAE8JkABrCRAB +CiHAD+tyz3AAAIgZiiMGA4okgw9BBm/2CiUABM9xgADkLyOBKIFRIQCAyiGCD4AAxyDKIYEPgACH +JCagz3EEAEdLJPDPcYAA5C8jgSiBUSEAgMohgg+AAAc6yiGBD4AAxz0Q8M9xgADkLyOBKIFRIQCA +yiGCD4AAh1PKIYEPgABHVyagz3EEAMcxJqAAhkIgQIAApgb0z3CgAMgcsaCNBw/18cDPcYAA5C8j +gS8oAQAogcC5ACGDDwAAItJOIIEHKdgSuPAgwADPc4AAUMl4i89ygABL8qHBQMCG6wIggA8AAADA +QMCLcDR5WWFOC2ADA9qhwNHA4H7gePHA1g4v9bhwz3AsAAYBz3OgAOwnBqPPcqsAoP8aglMlgQAA +3SUJUABnCZAAmwkQAQohwA/rcs9wAACBGYojhQMZBW/2iiSDD89xgADkLyOBKIHPdQIAwgJRIQCA +yiGCD4AAxiDKIYEPgACGJCajpqPPcQQARksmo89xSABCASajAdvPcacAFEh3oYG4PvDPcYAA5C8j +gSiBz3YCAIICUSEAgMohgg+AAAY6yiGBD4AAxj0mo8ajz3EEAMYxJqPPcUoAQgEc8M9xgADkLyOB +KIHPdgIAggJRIQCAyiGCD4AAhlPKIYEPgABGVyajxqPPcQQAxjEmo89xTABCASajz3GnABRIt6GA +uBqiOQYP9eB48cC+DQ/1A8iUEAAAAd7PdacAFEjIpQQgkA8BAADA1g7v/0EogCP/2Ju4z3enAJhH +HKeKIBINSghv/EEogSPPcYAAoAYAgYDgyiHCD8oiwgfKIIIPAACsGcojgg8AAOUAyiQiAOQDYvbK +JQIBANgWpdqnsQUv9cCh8cBGDQ/1z3CmAJw/GYC9CB4Az3WAAKwGAIVGgKASAAYvKAEATiCBB0Ep +0AARCNUgSHCAIAoAMiAABJDoCiHAD+tyz3AAAK0ZiiNLAookgw+BA2/2CiUABM92gABA8kAmwBKK +Cq/2CdkA2JoOb/8PIAAEgOAA2A8gAAQF9BYMz/8D8KINz/8DyLkQgAAbeIC4Cq4AhSaAliFBAwAh +AAQYiIwgw48CcQXyYbgPeBipiiBSDQDZUg8v/A8hAQQAhSaAoBEABp8ZGACqC8//3QQP9c9xKioV +Fc9wgADIZuB/IKDxwGIMD/U6cBt9z3CmAJw/ZBAQAC0IHyA6CW/1A9hhvYwl/5/z9QohwA/rcs9w +AACkKFHbCiRABLkCb/YKJQAEgQQP9fHAJgwP9c9xoACsLzqBUiEBAFEhAIChwQDdf/TPdoAAgC6z +CBAAhgiP/893gACgOyCHYHmpcBMIEAMgh2B5qXAghlkIEQQAhgHgAKYVCFEAAdnPcKAAyBwxoN4L +4AUocItxigov9oogBwUAhkIgQIAApgb0z3CgAMgcsaAAFAUxVw3QAAohwA/rcs9wAACJGerbHQJv +9phzAeEgphUJUQAB2c9woADIHDGgjgvgBShwz3EGAAJ1z3CgAOwnJqAAhkIgQIAApgn0z3CgAMgc +saAD8LYIAAAAhgHgAKYVCFEAAdnPcKAAyBwxoE4L4AUocM9wgADkLwOAz3GgAOwnDoCAuAahAIZC +IECAAKYF9M9woADIHLGgeQMv9aHA8cBqCAAAz3CAAKA7IIBgeQPYgOBcC4IDz3CAADA2BIAZCJ4A +z3GAAOQvTYE+kVMiAADiCCACAdvRwOB+8cDhxc91gAAIRgCFGwgfAAoOwAJGCo/7CgsP+ToOz/8A +hYC4AKUhAw/14HjxwL4K7/uKIAQCEeiuDY//xg/P/89wgACgOyCAYHkE2AXoegxP/w4IAADRwOB+ +4HjxwHYKD/XPdYAACEYAhTkIXwDPcIAAoDsggGB5BNgU6G4K7/vi2BDoQglv/QfYog9gAwh2qgkP +/14Ib/3JcACFgbgApZ0CD/XgfuB48cAmCg/1pBABABUJHga2EAEBz3CgAJgDPqCe8AAWDUG8sAAW +AkFdsAAWDkDPoAAWAkFAGIQAABYCQFGgABYCQUgYhABEJQITNQoQARjbchjEAAAWA0BzoAAWA0FQ +GMQAABYDQVQYxAARChECqXOGI/MPjCMMgA7yGNsW8BDbchjEAADfz3OAAJjY57MQ2wzwHttyGMQA +ABYPQPagABYPQVwYxAOpd4Yn/RyMJwKSCfQC43B7chjEAAAWD0EC8ADfYBjEAwkLXgAAFg9BKHSE +JAyQBPQA2iLwmepRJgCQ0SEighXy0Iiouc9ygABI5aQYQAACvtZ+wmILCp4Hi7mkGEAAANpaoFug +5vEAFgJAWqAAFgJAW6AI2nQQDgG+EA8Bwn9if0J/uBCCAJi5pBhAAM9xoACYA0J/emJQenIYhAC6 +EAIB8H9wGMQDpXpcsD6BthhEADkBD/XxwM4IL/WKIAcGz3aAANwpegsv/CCGFd3Pd4AACB4Ahulx +UmgB4ACmVHpYYQKAWWER6M9yoAAsIFCCQnjXcElrANIA28f3YqGKIMcFPgsv/CCJAIYJCJQKANgA +pmG9ww1VkNUAD/XgePHAz3CAAJQcDtkB2uYKIAAA289wgADMHAnZAdrWCiAASHPPcIAAwBsq2QDa +xgogAADbz3CAAGgcC9kA2rYKIAAB29HA4H7gePHA4cXPdYAAokaKIEcGzgov/CCNBNgeD2/7AdnP +cIAAoUYAiIoLIAAgjW0AD/XgePHAz3GAAKJGiiDHBp4KL/wgic9wgAC8awIMwAPRwOB+8cDYcYro ++ggAAADZIqCKIMcFegov/Mhx0cDgfvHAtg/P9PYIz/vPdoAAmAdm2CJuAdpyDK/8SHOL6AohwA/r +cs9wAAC2FNnbiiSBCTnwAhYFEUwlAIDMJYKPAAD//w30CiHAD+tyz3AAALcU3NvpBS/2iiSBCWfY +yXEB2iYMr/xIc4zoCiHAD+tyz3AAALgU39uKJMEJFfABliRuAdoB4BB4Agyv/EhzoZaP6AohwA/r +cs9wAAC5FOLbQCVEEJkFL/ZKJQAAAm0QeCZuAdrWC6/8SHOM6AohwA/rcqGWz3AAALoU5dtAJYQQ +6/FRB8/0z3GgAGAdErEUkeB+8cC4cTUIUQAJDVIAGQ3SAwohwA/rcqfYBbic2z0FL/ZKJAAAQC2A +ABR4QiABA89wgAAoHRlhH/DPcIAAyCUyIEABjCDDj8ohwQ/KIsEHyiCBDwAA4RTKI4EPAACiAPwE +IfbKJCEAArgUeAAggQ+AAAgeKHDRwOB+EQgeAgQgvo8AAAAYAdgD9ADY4H8AqeB48cBCDs/0z3WA +ANoGAI3Pd4AA2AZeD+//II9BiM92gACoRiCXDwreAAHYAK6KIMcDSPACgAXoANgArpC5QPBnCh4B +z3KAABAzB4pbCQEAAJVhilMIwQDPcIAA3AYAiEaKQwoBAM9wgADkLw6ANwheAc9wgACkRkCAANsO +6s9woAAsIBCAQngRCIUPMQEALQHaQK4E8GCuANoQuoogRwNFeRDwz3CAAIQuAIgH6AHYAK6KIAcD +BvAA2ACukbmKIAcEPggP/OUF7/QAjuB48cBeDc/0ocEacDpyaHa9CXIAANiacRUgDSDPcYAAmAcA +FZMQAhWSELpw440hkQGNAdo4YBB4i3ESCq/8SHMS6AAUADFAKoIgBCCBDwAAAP9HuVR6MwkQIMdy +gAAoHRjwz3CAAJgHwZChjQohwA/rcs9wAAC7FIojhAAAJkQTgQMv9golQAXHcoAACB4AGsIEA+4C +qgLwAaolCB4ADO4DioC4A6oSbxR4G2Jji1hggbtjqOSqA+4mqgLwJapCJEEgVQl1gEAlQCDlBO/0 +ocDgeOHFUyANAKCpBCCBDwAGAABCIQGABCCAD0AAAADKIWIAIKrXcEAAAAAB2MB4AKvgf8HF4Hjx +wJDong3P/89xoAAsIDCBx3FJawDSIqAWD+/7iiCHBdHA4H7xwFIM7/TYcQomgJCIdcwjIoAG8kIm +BgEvJocBYg3v/8hxz3GAAFAHAKEl7iSIArk0eUOIA+ECEIUAIwofAAohwA/rcs9wAADiFIojiAVK +JAAAhQIv9golgAEIYRsIXwAKIcAP63LPcAAA4xSKI4gG7/EBEIUAUSUAgMohwQ/KIIEPAADkFMoj +gQ8AACgCyiLBB9/z4b3RJSKByiHCD8oiwgfKIIIPAADlFMojgg8AAC8CJAIi9sokggErDR4QUSXA +gMohwQ/KIsEHyiCBDwAA5hTKI4EPAAA2AvwBIfbKJIEB3QPP9OB48cBeC8/0ocEIdSh3GnIA3s9w +oAC0D3AQEQCKIMcABg7v+6lxNgqgAslwi3FAJEIwQCSDMI4O7//pcA0IESBKJAAACfDPcIAAWLYB +iPnoSiSAACDAARSCMKlxwg7v/wIUgzDPcIAAokYAiIDgzCUCkAryz3CAAFAHAIDCoM9wgACgRsCo +Lw9eEc9xgAAQMweJIw0BEAGJUycCEBsKAQAEJ48fAAYAAIDnAdoGicB6HwoAAM9wgACFLsCoz3CA +AKRGwKDPcIAAqEbAqIogxwBWDe/7qXGGCaACLyBHBOEC7/ShwOB48cDPcYAAUEqKIIcBMg3v+yCB +pgnP/89wgADYBgCQgOAgDML/0cDgfuB+4HjxwKYKz//uCc///g0ABQoPj/xiDUAB0cDgfuB4z3EA +AK3e8QTv+4oghwngePHA4cXPcIAAqEYAiJDo3gvP/47oiiBHBADdzgzv+6lxkNmQuQPIoBhAABfw +z3CAANgpAIgQ6M9woAAABCyIjCECgADdCPSiDO/7iiCHBJHZkLnq8QHdTQLv9Klwz3GAAOQv8CEB +ACgRgAAogVkG7/8A2uB48cC2Cc/0CHfPcoAAEDPPdoAA2AYAlmeKz3GAAIQuLQsBAM9wgADaBgCQ +YYodCwEAz3CAANwGAIhGihEKAQDPcIAAhS4AiAPwANguC+//AKnPcIAA3AZAiM9xgADaBgCJII6A +4gHawHrpcwDd/gzv/5h1z3CAAFAHAIABiM9ygADYKSCWDwgeAQHYAKqKIEcDBPCgqooghwPaC8/7 +gQHP9M9xgAAQM89wgADYBgCQR4kxCgEAz3CAANoGAJBBiSUKAQDPcIAA3AYAiCaJFQkBAM9wgACE +LiCIz3CAAIUuIKjgfuB48cDSCM/0z3aAALi8FI4pCFEABNjSDy/7AdnPcIAA2gYAiM9xgADYBjoM +7/8giQDYFK418LaOM+3Pd4AAoEYAj2G4NQ0AEKIIz//PcIAAsO0FgCFtBSh+AM9wgAC8axINoAMv +cYoghwbPcYAA2AYiC+/7IJHPcIAA2gYgkM9wgAChRqCvIKjPcIAA2AYgkM9wgACiRiCoANgWrjWO +CenPcIAA2gZiCO//AIgA2BWujQDv9AHYz3CgACwgMIDPcIAApEbgfyCg4HjxwB4I7//hxc9wgAAA +MBCIz3WAAFi2GwgRAYogDwqqCu/7iiFKBAKNFgggACGFAo0hhXYM7/8B2kkAz/TxwMoPr/TYcaHB +GnCLcUAkQjBAJIMwFgvv/8hwARSAMAjoAhSAMAboQiAQIS8gByQgwM4I7/8KcQEUgTAD6aKIAvCh +iIogxwFCCu/7yHFAKAAmQC0CFAV6ARSAMAIUgTAIuAV6iiDHASIK7/tFeeG90SXikAPyIw0eEQoh +wA/rcs9wAADnFIojTQNKJAAAyQXv9QolAASZB6/0ocDxwCoPj/ShwRpwAN7PcKAAtA9wEBEAEg5g +AslwiiBHAc4J7/sKcYQoCCkAIY1/gADQtyXwQCUAFxYghAMFFIAAhiD+hxryBIWLcUAkgzBAJE8w +Pgrv/+lyqBUAEH4I7//pcSDABBSBAAEUgjACFIMwdgrv/0okwAAB5gyVuQ4EkIogRwFqCe/7CnGe +DWACLyBHBPkGr/ShwPHAGgzP/4oJAAXRwOB+4HjxwI4Or/SKIYsGAN3PcIAA3NaloDIJ7/uKIMoB +z3CAAPw+oqDPcYAA5C8AgcQQAAatCF4BA4EYiKUIEAGKIMkDBgnv+4ohiwjPcIAAiC4EgM91gACI +ZSCAiiCJA+oI7/s2uQCFQiAAgMogYgAxCFEARgqgA6lwz3aAAFBlAIZCIACAyiBiAIzoiiCJDroI +7/uKIUsLyXCSCqADIoXPdYAApGUAhUIgAIDKIGIAMQhRAAYKoAOpcM92gABsZQCGQiAAgMogYgCM +6IogiQ56CO/7iiGLDslwUgqgAyKFHQaP9OHFANvPcoAAiNcUIg0AYLVotRpiIBrCAMAdxBAoGsIA +z3GAADTXFnkikTAawgDQHcQQgB3cEHgdRBAB2YgaQgDPcYAAKNgVeWCh4B3EEPAdxBDgf8HF4Hjx +wD4OL/wR2Lnoz3GAABAzz3CAANgGAJBHiVUKAQDPcIAA2gYAkEGJRQoBAM9wgADcBgCIJok5CQEA +z3CAAIg7AICa6K4OQAKI6AvIBSCADwAAADwLGhgwng5AAojoC8gFIIAPAAAA1AsaGDALyJC4CxoY +MOIOT/sD8BoLj/XRwOB+4HgA2Zy5z3CgAKwvPaDgfuB4kQNP++B+4HjgfuB4IIAA2oDhRfYB2jN5 +IKCAIQGAf9zAIQQDR7kgoAPqM3kgoOB+ocHxwOHFrMEA2UrBkNkYuUjBz3OAAHjXIIMEII0PAQAA +wIYh/gMkuQ65CyVAkE7AjsIW8td1AAAAQMwlgp8AAACAzCWCnwEAAAAE9CGDA/Aig664r7iwuAV5 +IKIOwwjAi3UEI4EPAQAAwC65QCkCBkV4SMCKIAYGScBBw6lwANpKCSAAAdvPcYAA1CcagTuBJHgn +CB4CCsALwYQoBA4AIYB/gADQ7wK5COA0eSFgz3CnAIhJL6BCDeADqXAI3EsEr/SswKHB8cDKC6/0 +CHKtwQjYSsCQ2Bi4ScDPcIAAeNeggAQhjg8BAADAhiX+EyS9Dr0LJkCTUMGQwxby13YAAABAzCaC +nwAAAIDMJoKfAQAAAAT0AYAD8AKArrmvubC5JXgAoxDDCcUEI4EPAQAAwC65QCkABgV9ScUfCp4B +CsAEI76PAAAAGEUgwABKwAXyhSAQAUrAJQoeAZu9z3CgACwgBYAA2wK4briA4MogzADJuKV4ScAG +8AkKHgKdvUnFEMCBxULAqXBCCCAAAtsDyAzCz3GAANQnuRiCABqBO4EkeBsIHgICus9wgADY71R6 +QWDPcKcAiEkvoD4M4AOpcAjcPwOv9K3A8cDGCo/0o8FhgAh1QMMA2AqlbQteAgQjgA8BAADALrjP +coAARHMKYkkiggBhukulEmoUeMdwgADI8MqAz3eAABzZxqULgM92gADkLwWlw4YgwNSG9Y8EfuR+ +Cb5AKQ8C5X7FeAQjgw8AAAAQZXgHpQiFGOKeuAilS6WP8DcKngLPcIAA7GYAgEHAQsAhCB4ChiD/ +CSO4AeAVCJQACwiRAAbYYcAk8AfYYcAi8CLAYcAe8EHDz3KAAKwGQIJGgp4SAgYrCpEBBCO+jwAA +ABgP9M9ygADkL0SCSIIEIr6PAAYAAAXyAdgKpQPwCqUA2AHGQQ4eEkLGIsKg4soiIQAEJo8fAQAA +wEEvhBNEJg8WI78B5wQmjh8GAAAAMb4AJsUTz3aAAERzMiYOEQImThET8FMmwhDPd4AAKHddekpn +BCaOHwEAAMAuvs93gABEc85nYb7WekulEwseAiDHz3aAAExz7mYC8AHehCgEDgAhgH+AANDvArpU +ekdgYb5YYOalAYAEI4MPLwAA3Sa7xXtSI8MDBaVnpc9wgAB41wOAAN8dCE4Az3CAAAhnAIAVCB4A +hiB/Dx14QCjPAwTwAN+Pv5vvz3aAAKA7IIZgeQDYJQgQAyCGYHkA2BkIEAQghmB5ANgRCFAEIIZg +eQDYCwiRBO4Ib/wA2AiFBX/opTEBr/SjwOB48cDGCI/0z3WAALw7AIXEkMlwLgqgAIYg/AMAhclx +7glgAIYh/APPc4AAYNkLCJEGIYOAuSGjSoMB4kqjz3OgAMQnkRMBhsO5GwmBAIolCBATG1iDkRMB +hsO5CwmAABIbWIPRAI/04HjxwFYIr/QA2M9xoACoICiBz3GgANQLOIHPcaAAxCdSEQKGFREChkIR +A4YRC54HAdjPcYAA5NhhsVEiwIAacMolYhQS9FEgwMbKJaIUDPTPcKAA0A8gEAGGHxAAhhBxAN3K +JWIV6Q0REM92gADk2B+GywgeBKgWARCU2PoO4AHJcs93oADQD1EIECDPcIAA1AcggM9woAD8Jc9y +gABs1ozpM4AKghlhKqLPcgD/AKqKIIgFDPATgCSSGWEweSSyiiCIBc9yAP8A/xoJj/0AljYPr/00 +lpQXABDPcoAANEgB2RnobYIB422ia4J4YAuiz3CAAIQuIKgfhg8IngPPcIAAjAYgoAfwDwjeA89w +gACQBiCgz3CgAPwlE4BsgnhgDKLPcgCgCADscECgbyJDAOxwQKAOH1iQLghABc9wAAD/f89xoAAM +JAGhG9gEoW0Hb/SpcOB44H8B2PHA4cWhwRoKb/uLcLLoABQFMB0NHgB+CAAAz3GAAOTYQ4HPcYAA +dL1BoSTwCw2eAHoOz/8e8A0NXgIKDs//GvA7Dd4ACNjPdaAAxCcTHRiQag/AAB0IEAUC2DwdAJDP +cIAA5NgjgM9wgAB0vSGgGdiXCFCGBQdv9KHACiHAD+tyF9iMuIojxwABBa/1iiSDD/HA4cXPcIAA +5Ng/gAQhgQ///484BCWAXwAAcMcleM9xgADk2B+hRCIAU891gADk2EMIEQI/DV5RNg/P/5wdABAT +DZ5Tz3CAADgwBYiYHQIQFPAVDd5Tz3CAAEgzGYiYHQIQDPADhZoLr/UkhZgdAhAE8ADYnB0AEJwV +ABCA4Mwg4oBx8s9wgAD8IQuAD+jPcp8AuP8dos9xgABoLgSBAeCzuLW4uLgEoRaiz3CgAKggCIAf +hQ8IHwELDd9SgNiYHQIQmBWAEEAoAQYTCN8BgrkdCp5TygnAARrwH4VRIoDTs7gfpcUhgg8AAAAH +RSEABs9xgABw2SyJhiH9D1IhwQFFuSV4z3GgAIgkEKGKINYAz3GgAMQnfhkYgM9woADUCwHaUqAE +2BAZGIDPdYAA5NgfhUkIngEUlUEIXwHPcKAALCAPgJrorXEeD2/5ViVAFYAVABCUuIAdABAfhZC4 +H6UM8M9xgAC4Rw+BAeAPoRDZz3CgAJAjPaBxBW/0GdjgePHA7gxv9ADZCHYBgMG4g+DKIEEgBfJi +DiAAyXAacEwgAKDE9BCGUSCAgcDyEIbPdYAA5NgPCJ4Dz3CAADgwBYgN8BCGDwjeA89wgABIMxmI +BfAFhiaGKgqP9ZgdAhCAFQAQBCC+jxBwAAAH9K1xeg5v+VYlQBURhs9xgAB0BwChQSgBA1MhxQCY +FYEQQSgGBRRpBSBEAQ8J3gEehZW4HqV58D4PL/tPJEAC6wgVBM9xgADosZgVgxDwIQEAQCsCBoYj +/Q9SI8MBRbtles9zoADEJ0EbmIAA2oy6AiZPAPpiy7rXcgAAAAhALQ8DkL9S9wUnjxFiG9iDjCIC +gMf3z3GAACxJEoEB4BKhANmduUXw5XliG1iAWQ6FcAAAwA8OIoMPAAAAEM9ygABIsRZ6IIIlCzUI +BBIFAADYDyDAAGG4TiMPCAEpwgN4eQV5AC3AAAV6F/BCIwMIANgPIMAAYbh4eQUhAgCKIf8PC/DP +c4AALEkTg4oh/w8ocgHgE6MB2M9zgADovQCrAhsEASGjQqO98QDZnLmAFQAQJXiAHQAQQCYAEqAd +ABAC2c9woAD0JiOgJYbPcIAAdL0hoJUDb/QKcOB48cAeC0/0CHZVIFAEDcyiwe240SBigAfyBMiK +Dq//mBAAAM9wgABg2QyAz3GgAMgfZOAeoRDYDqEB2BUZGIABhoPo/wsewAGGwbiD4OL0ABAAIEHA +BBQAMUEoEQMQhgYUEzGHCJ4BDcyDCN4CEIbPd4AA5NgPCJ4Dz3CAADgwBYgN8BCGDwjeA89wgABI +MxmIBfAFhiaGJgiP9VEgwIGYHwIQAd0K8h6HAN2VuB6niiAFCToNb/upcZgXgBDPcYAAMMAEuEaR +BSBABBUIgADPcoAALEkJggDdAeAJogSRJQiBDwAA//8A3Qzwz3CAALhHLYAA3QHhLaDyDG/7iiAF +DAGWnOCG9AQQEiAIEA8gz3CgAPQmAtkjoCOGz3CAAHS9IaCSCyAAyXCA4ID0JO3PcqAAxCwcGoAE +z3GAAHDZ6KIsiUApAyMQuZ+5ZXlBKwMhZXkmog0SATcdCd4CENqruQwanDANGlwwz3KAALBIJ4IB +4SeiDRIBNw0JHgMa2Ky5DRpcMKUNEBDPdYAA3KLgFQMQRYZEKz4HACVBHkChTJYB40Kxz3KAAHDZ +zIrgHcAQz3KAADDAyKkJGUIEChnEBAwZgAREkuShQCkDIxC+QSsNIcV7pXtKsc91oADAL0cd2JCU +4sAihg8AAJMAz3OgAGgs8COCAEuxjxUDlgfwoxUClo8VA5YRCh8B9wvegQfwCNgM8Oe7yiMhAEDD +ARSCMMa7xrpYqXmpTQFv9KLA4HjxwOHFz3GAAOQvI4FIgVkKHgCGIP8Bz3KAAERzQ7gKYgDbgOLK +IcEPyiLBB8og4QfPICEDyiOBDwAAbwDKJMEARAdh9colIQDPcKoADFATCrQAuYGAvbmhAdkloATw +oL25oWWgEQFP9PHAmghP9Ah1DcxTIECAB/IEyPoLr/+YEAAAAYXBuIPgyiYhEAXy9gkgAKlwCHbD +DhEQEIUJCJ8BANlO8AzMgwjeAA3MUyBAgA0SAjYi9AAigA+AABDYAdnPdoAAcOMgqBGOUSAAgIgK +ogPKIEIAEY4hCF4Bz3CAALDYA4iK6IogEA8T2c4Kb/uLuUYLoAEE2BDYDBocMM9xgAA0SBeBAeAX +oQPIDRIBNoQQAgHPcIAABNg1eCmAWWEpoBrevvHPcIAAuEctgAHhLaCKCm/7iiDFCQHZz3CAAIQu +AdpAqM9wgABg2U6ABoIB4AaiAvAB2QLaz3CgAPQmQ6BDhc9wgAB0vYDhQaBIC4IC/Qcv9Mlwz3OA +AOTYWBOBAADajuk8k2K5ELlFIUMBz3GgAPQmY6HPcYAAdL1BoeEAAADxwF4PD/QIdgGAwbiD4ADd +BfLOCCAAyXAIdbXtEIZPCJ4BDMzPcoAAPEcxCF4BQNgMGhwwVRIABs9xgACI1wHgVRoYAA3IANoU +eQPIQKmCCq//mBAAAAvwrBIBAAHhrBpAALYJb/uKIAUKz3CAAIQuAdkgqM9wgABg2S6ABoEB4Aah +AtnPcKAA9CYjoCOGz3CAAHS9IaA1By/0qXDgfwjY8cC6Dg/0CHUodySVaglv+4ogxAtBLw4Rw77P +cYAA6HnWeRMOEBIBlUGBBOBQcAjYBPQggWB5qXDpBg/0z3GAAGDZLIHPcqAAyB9k4T6iENkuogHZ +FRpYgCGAhOn9Cx7AIYDBuSEJ0QDPcIAAhC4B2SCoz3CAAGDZLoAGgQHgBqEA2Q3wIYBRIQCAANnK +IeEFAYBRIECAyiGhBOB/KHDgePHAHg4P9M92gABg2QGGBCC+jwBwAAA58i8pAQDPcIAA5Eb0IE0A +K4ZPJYAQBg2gAUmGlOiMJQOQz3GAADxHCPS6EQAGAeC6GRgAH/C5EQAGAeC5GRgAGfABhiEIngfP +cYAAcOMMiU+JGwoAABGJUSDAgKwJAQIH8ADZz3CAAOi9IKiiDsAEBQYP9OB48cCODQ/0CHYBgMG4 +AN8nCNEAz3WAAOTYjw8REBCGdwieARCGGQieA89wgAA4MAWIEvDiDu//yXAId+3xEIYRCN4Dz3CA +AEgzGYgG8AWGJobKCk/1mB0CEBEI3gEehZW4HqUfhZe4H6WAFQAQBCC+jxBwAAAP9Jy4gB0AEDCG +Bg8v+VYlQBVAJgASoB0AEADYBbYB2c9wgACELiCotBUBEAaBAeAGoVgVgBCZ6E4Nz/oF6BCG7bgB +2AL0ANjPcYAARtn0IQAAPJU4YGK4ELiAuM9xoAD0JgOhBvAC2c9woAD0JiOgJYbPcIAAdL0hoAkF +L/TpcPHAlgwv9ADZCHUBgMG4g+DKIEEgBfIKDu//qXAacM9woAAsIAaAEHhMIACgz3aAAOTYyici +EFb0MIVlCZ4BPJYTCQMAJYXPcIAAdL0CgLcJAQAQhQ8IngPPcIAAODAFiA3wEIUPCN4Dz3CAAEgz +GYgF8AWFJoWyCU/1mB4CEIAWABAEIL6PEHAAAAr0egzP+gvoEIUTCF4DAd8I8ADfGPD2CM/7FPAA +3zCF5g0v+VYmQBWAFgAQqBYBEJ64gB4AEEAlABKgHgAQ2QleggHZz3CAAIQuIKi0FgEQBoEB4Aah +WBaBEM9woAD0Jprpz3GAAEbZXJb0IcEDWWFiuRC5gLkP8LQWARALgQHgC6G0FgEQiiBFC0IOL/sr +gcLxAtkjoCWFz3CAAHS9IaDRAy/0CnDxwG4LD/TPcIAA/CELgBDoz3KfALj/HaLPcYAAaC4EgQHg +s7i1uLi4BKEWos9woACoIAiAz3aAAOTYEQ2eU89wgAA4MAWIDfAPDd5Tz3CAAEgzGYgF8AOGnghv +9SSGmB4CEB+GEwgfAQ8NX1MLDV9SgNiYHgIQmBaAEBsI3gFfhj6Gs7qVuZe6PqZfpgDZAd0W8JwW +ARAlCVEAP4ZRIUCCz3GAAOQvI4EpgQXyRCENBAXwRCENAgPwAd0E2Ri4JXjPcaAAiCQQoR+GMwie +ARSWKwhfAcIMwAGR6M9woAAsIA+ABegNzBcI3gEfhpC4H6atcW4ML/lWJkAVm+0LCp5Tlg5AARXw +RCI+089xgADk2A/0AYEbCB4AmBGAAM9xgABI5QK4FngAYf64oAxC+89woABQDACAz3aAALAHBNnP +dYAA5NgAps9woACQIz2gH4UNCN8ED4WA4ADYL/JNccoML/uKIEQON4WKFQIRAIYE4hlhCwifRP8J +HsbPdYAA5NiYFYAQ57gA2wn0ArjPc4AASOUWeANjLbvAu4oVABFPFY0Qz3aAAOQv8CbDEEJ5ongS +CG/7T5MlAg/04HjxwOHFocEA2EDAz3GAALhHD4EB4A+hA9nPcKAA1AsxoOB44HjgeOB44HjgeOB4 +4HjgeOB44HjgeOB44HjgeOB4MaDPdaAAxCcVFQCWz3GfALj/FqExFQCWFqEQ2BAdGJBqDO/6i3CX +6AAUBTAbDZ8ACiHAD+tyDdiMuIojXwe5By/1iiSDDwTZEx1YkBvZFh1YkJUBL/ShwPHAz3CAAMC9 +rg5v9RjZz3CAAMCtog5v9RjZ0cDgfuB48cDyCA/0GnDPdaAA1AsQhQDfocFAxyEIUAAKIcAP63IP +2Iy4iiOWCIokgw9RBy/1CiUABM9woP48As92nwC4/xamWB4AFM9xoAD8RBmBBCC+jwAACCAD9B2B +EwjQJLYL7/qLcIDgyiACIEIgwSCU4WwBDQAyJkFwgAAAbkAnAHI0eAB4z3GAAGDZToEIggHgCKIO +gQiAFqb2C8AAANkocEnwz3KAAGDZLoIHgQHgB6EOggeAFqb08c9ygABg2S6CDIEB4AyhDoIMgBam +6PHPcoAAYNkuggKBAeACoQ6CAoAm8M9xgAA0SAWBAeAFoSDwz3KAAGDZLoIDgQHgA6EOggOAFqYB +2QDYFfDPcYAALEkagQHgGqEWpjYKYAMB2L7xz3GAACxJFIEB4BShFqYB2AhxgOGsC4IAz3CAAOTY +H4AVCN4Ez3CAAASx66jPcIAAOK7ssAPYEaXgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB44Hjg +eBGl3Qfv86HAGIbPcoAAYNmQuBimGIawuBimLoIFgQHgBaEOggWAFqZOCAAAxfHPcoAAYNkuggSB +AeAEoQ6CBIDz8c9ygABg2S6CEYEB4BGhDoIRgLDxz3GAADRIDoEB4A6hlfEKIcAP63JB2Iy4iiPY +ByDx8cAKD8/zz3CAAGDZDIDPdqAAyB8Q3QHfZOAepq6mFR7Yk89xoP7kAc9wnwC4/zagtg6gBAnY +A9gepq6mFR7YkwXwegvv+oogVQ7PcKAADCQHgATo7wsewBkHz/PxwM9wgAB8IoYLb/sB2W/YBrg+ +C2/7CNkH2Aq4Mgtv+wXZ0cDgfuB48cDhxc9xgADkLyOBKYFRIUCAyiCiACf0RLjPcYAA1EbDuAlh +CQkeADUNn1E1CV4Az3WAAOQvA4UYiCEIUAC2Do/6COjPcIAALDMIiA0I0AEDhRiIDQiRAAkNnlEB +2APwANidBs/z4HjxwBoOz/NEIhBTTXaGJvwTTXBNcAQlgF8AAAAgQSh+gwTyag6P+oToAN8D8AHf +z3WAAOTYH4ULCF4EAN2a8P8IEaBKDo/6H+jPcIAALDMIiIfgzCBighf0AYWMIP+PE/Qklc9wAAD/ +/xsJAQAFhYwg/48J9AyV13AAAP//yiVhEHjyz3CAAOQv8CDBAwmBDwheAc9wgADscwTwz3CAAPhz +OIkqYEEuABHPcYAABHQIYRZ6z3CAAGh6SGAPCB4AP4WGIfaPFfINCF4AP4UjCZ4CCQieAAkNHlIB +3QzwEwjeAM9xoAAMJDGBjCH/j/bzAN1RIICByiUiEJINj/oH6AQlvt8AAAAiyiViECftz3GAAOTY +H4EfCB4CjCYCkMwmgp8AAFAAzCaCnwAA0AAD9JO4H6HPcIAA5C8CgMIQAAYa6IwmApDMJoKfAABQ +ABL0T4FFeA+hDfDPcIAA5C8DgAmADwhfAIwmApAE9AkIngEC3Q0F7/OpcOB48cCaDM/zz3CAAPwh +AICiwQDeEOjPcp8AuP8dos9xgABoLgSBAeCzuLW4uLgEoRaiz3GAAOTY3qHfocCxz6FPGYIDgBmA +A4wZhAOA25gZwgCEGYADz3KgAMgfpBIAAPgSDQCsGYADQhmEA6J4sBkAAM9wgABYo9mgz3CAAJzZ +wKAE3c9wgAB0B6CgmRGAAKC4mRkCAM9woADEJ2QYmIPPdQAA/38TGFiDG90WGFiDGhiYg4on/x/P +daAA/ET9pfmliieYHc91oABQDOKlcaJwojwYgIOKIxgIbqKAEgMApBmAA1EjQIDPc4AAdL1YGYID +C/JCEACGBCC+jwDAAAAF8gGDA+gCo8GjgBqAA89zgAA8R89wgADkL0OANQmeQx+Bi7gfoVUjwAW0 +GQAACtgcsRuSlhkEAIogRAsqDu/6ANkG2c9woADIHCmgEPBAIwADtBkAABDYHLEakpYZBACKIIQL +Ag7v+gDZz3GgANQLEIEdCFEACiHAD+tyC9iMuIoj1QCKJIMPqQEv9bhzAd2woRUIX0bPcKAAqCAm +gAeAuwIgAAPdz3CAAOTYtBABAACBAeAAofrYdgxv+wDZINjPd4AAvNniCyADAKcB2M9xoADIHxOh +z3OAAIguCINAJxAVQIAMgwAQBAAEg89znwC4/wAQBQD4EQAAz3GgADAQIYE2o89xoAAMJCeBAiIC +gDajANkDJEMAAiUBAM9wgADk2FAYhANSGIQDVBiEAyOnz3CAAOQvQacjgGKnFJHPcqUACAwJtwiB +wLgItwASBADPcoAA5NhTJEUBTBpCAVMkQgCD4sohwQ/KIsEHyiBhBcojgQ8AAJwLuAAh9c8gIQME +JIMPAAAA4M9ygADk2C27mhrCAF+CFB8AERkK3gIEu4G7ZXgItwfYB/AVIAwgwKQD8ATYAeD1CBSC +CIHruKwNwgTPcIAA5NgfgCu4UyAQAFEggMWq8s9xgAAwNgaBAeAPeAahQSmAQ89xgAAwNkaBz3Gg +ALQPN4HAuADdFQpBAM9xoACoICaBjCGDjsT3A92g8AkIAAQE3Zzwz3OAALzZBYPPcqQAkEH1gjaC +BCCADwAAAOAtuOejz3aAAOTYKKMNCB4AUB7EEwnwUB5EEwQnjx///wAA56MPCF4AML9SHsQTBfBS +HkQT8H/now0IngBUHkQQCfBUHkQTBCGBD///AAAoow2CBqMEIIAPAAAA/im4Vh4EEB+GRwjeAs9w +qgAABASACaPPcIAAwK0giERoNelhCXQAAhCEAJ9xANioIIAD9CIPABXdE73wJc8Tz3WAALzYFX0B +4OClHPDPcIAAwL0giERoGekCEIQAgOHKJE1wyiAtAOggrQP0Ig8AKd0SvfAlzxPPdYAAvNgVfQHg +4KUhqwIbAgG0FgEQAt0BgQHgAaEW8AQgvs9gAAAACPSKIIUHMgvv+gwSATdu8RELHkCKIMUHHgvv ++gDZYvEKDa/68diB5T3zMQ2REALdBCC+z4ABAADKJaIRBfRRIwDAyiXiEO0NkJDPcKAAMBADgIDg +yiViEYblNAQCAM92gADk2ByWQiCEAB+G67gvJAgBfPLPcKoAAASigM9xpQAIDCCBBCWCHwAAAP8o +ugQhgQ8AAADgibo7e0V7z3KAALzZcqasom2iIIBIFo8QlOcqohryBfY1D5ESI7kN8B8P0B3u5xL0 +RSn+AkEpwXBRJcCRwiFiAAfdCvBFKf4CQSkBcfvxIrn58QDZCN0BgDemC6I8sh0JEQXPd4AA5C/j +h+iHBCe+nwAGAAAE8oy7cqbkuMolIhLhuMolIRKGIP4PQSgDAU0ewhAIkmV4CLIrDdERJQm0Awfd +z3CAAOQvA4CEEAAAEQhEAM9woAAwEAiABwkAAAjdh+XKIAEByAhh+8ohIQApAwAAz3CmAAgEAYAE +IIAPMAAAADS4Qh4EEEIWAREbCF9Gz3CgAKggCIAZYTB5bghv+4hwBPCOCG/7iHAEIIBPgAEAAADZ +MwiBDwABAAAB2E4eAhDPcoAAvNmaFoAQQh5EEE0eQhA3pimiBLgokom4JXgIsnLwTR5CEM9wpgCM +Az2ABCGADzgAAABBKMIEmh6CEAQhgg8AAADwLLoluEV4z3KAAOTYEqYLCN5HEoKMuBKiUyHOAkgS +gwDXouC70SHihwfdAvQI3c9wgAC82SmgmhKBAOiQBLnleSiw3LAygi2gfw3REc9xpgCMA72BBCWB +HwEAAAAwuU4aQgCpoE4SgAAc6FkLUQNRCB9GFNjPcaAAyB8eoRDYDqEB2BUZGIAK3VEgAMbKJeIR +USMAwMolIhLzDZCSFfAlDpQTz3CAAOQvA4CEEAAAFQiEA89woAAwEAiACQ4BEAfdA/AI3Yfl5PTP +doAA5NhOFoAQgODe8s9ypgDUBCwSAYA0EhKAOBIPgMsSEAZKcMa46XKGIv0PBrpFeEpyhiL9DwS6 +RXgEIYIPAgAAACe6RXhEJwIcDbpFeOlyhiLzDwQhgQ84AAAADroluUV4JXhEJ4EQFLkleIi4RCcB +EkEpwYBSIEAFEqZYHkIQyiGCDwAA///KIYEPAAAQHzpxN4ZAHkQQBCKBL/8DAP8ouTem9grv+ADa +rB4AEHMPnhRIFoMQMoag49Eh4YIx8gQhgo8AAAABB/JEIQ0GI70B5RcNlRAEIY0PAAAAJEMNgB8A +AAAkBCGNDwYAAAAxvS8N1RATDZEQE+pEIQ0GI70B5R8NkRAE6szjC/ZXhjJyyiKODwEAiA3MII6A +zfcXDgVwAQCIDc9xgAAsSRyBAeAcoQjdMvCGIf8JQSnNAM9wgACoOyCAAeVgeQbYLQhEA89wgADk +LwOACIAEIL6PAAYAAADZyiFiABKGBCCADwAAAAgruBMJBQDyDAAACHWU4Mol4hMK8M9woAAwEAiA +N4YQcQfdyiViElgWghDPcYAAvNkIkQe6iLpFeAixF4YwGQAEHLEShuuhDaGsFgAQKBmABB2xCw3R +EWYIAAAIdYDlyiUhEIDl6Aqi/8ogQgMA2M9xoADUCxChz3CAAHDZDYgRCB4Az3CgAIgkHoALGhww +kg5AAAzMhiD5jwr0hOXMJeKQBvQA2I+4DBocMDLZz3CgAMgcKqDdA6/zosDxwIYLj/PPcKAA1AsY +gEIgAAhIIAAAz3GAADA2JYGB4YohmQ4I9M9xgADkLyOBPoGAIZkOEHEA3colbRRzDREQz3aAAOTY +WBaAEIDgyiAiACH0DBIBNyUJ3gANzFMgfoAM8uu4F4YG8qDgAdjAeAnwjuAB2MB4BfAlCV8BANjP +cYAA5C8jgSmBPXlSIQEAwLkkeAjoH4aRuB+mC/AXhurxWgwAAFgWgBCA4DQLAQCA5XQCAgDPdYAA +5NhYFYAQFOgC2c9woAD0JiOgz3GAAHS9ANgBocDZmRWAEIC4mR0CEChwA/BC2M9xoADEJ78ZGIAA +2AwZAIAB2BAZGIAfhfG4EgICABKFN4VmCO/4ANqsHQAQH4W1CN4Cz3CAAOQvQ4BIFYEQFIIkeEQg +AwFEIQAMQigEAYBzz3CAAJgwwbtoYIm4HKVwFY4Q9IJNFYAQxH+GJv8TBH9Evt9nz3aAAJxz9CbP +E2IdxBPPd4AAvDNrZ4m7faV0gnQVjxDke4Yn/xMEe0S/+2P0JsMQZB3EEHKFeqVUgnulRHkkeM9x +gACsc4Bw9CECAM9xgADUc/QhAACOHYQQkB2EEJIdBBCUHQQQANhOHQIQmfBOFYEQz3CAAHRGAIDA +uKkJEACA4ADbyiAiAAv0coVIFYAQBCODDwAAAAh7e8K4ACCOD4AAjDAwjtiOx3CAALgzz3eAAIC9 +SIhlftylcBWOEGV5w77cfvQnjhNlehCIYh2EEwV7faV0FYAQw7gcePQnABA6pc9xgACQvWQdBBBo +FYAQw7gcePQhAwBbpY4dxBDPc4AA2L30IwAAkh0EEGwVgBDDuBx49CEBAJAdRBD0IwAAPfCA4ADY +BfRIFYAQw7gceM9xgACIMAlhz3KAAIC9PKVwFYEQw7k8efQiQQBiHUQQz3GAAKwzCGEdpXQVgBDD +uBx49CIAAM9xgACQvVKFZB0EEEgVgBDDuBx49CEDAFqlz3GAANi99CEAAI4dxBBbpZAdxBCSHQQQ +lB0EEBoPwADPcIAA5C8DgAiADwjeAk4VgBCA4HQKggRYFYAQBehuCQ//A/AiDQAACHXJAK/zqXDg +ePHA4cXPcaAAxCcVEQOGBNgTGRiAG9gWGRiAA9rPcKAA1AtRoOB44HjgeOB44HjgeOB44HjgeOB4 +4HjgeOB44HjgeOB4UaDku8olohUp9FIRAIbguMol4RUj8gsIXgALC94AEt0d8AHZz3CAAIQuz3KA +AOTYtBIDACCoBoMB4AajH4IRCJ4Dz3CAAIwGIKAI8A0I3gPPcIAAkAYgoBXdiiAEDHYKr/oA2SkA +r/OpcOB4wdgUGgIwz3GAAOQvA4EYiAHbz3KAAOTYhuAXgsIjwQAM4BggwABmGgQAZhIAAQPgBCCA +DwAA/P+duJ+47HMAowXI7HMAowOBGIg3gobgAdjCIAEAGCEBAOxwIKDgfuB48cBKD0/zz3CAAOTY +MoAnCV4Cz3GAAOQvI4FIEIIANIFEeVEhgIBI2soigQ8AAJAAAvAO2gDfz3GgAKggJ4GsEA0AWWGx +ccIlRRDKJeYSsHh+CC/7CtnPcIAAFEIAkM92oADEJwsIHgGMJQOSA/cA3Rnwzg0gAQDYz3CrAKD/ ++qD6D6/9ANgZFgCWBegC2BAeGJDPcYAALEkbgWq9uGAU3RuhGRYAlojoUSEAxngOIQTKIGEA/QZv +86lw4Hjhxc9xgAC82UGJwNsUGsIwz3OAAOQvY4MSakfgBCCADwAA/P9pgyq7wLsXu8dzAA4AAGV4 +7HMAowXI7HMAo0okwHMA26ggwAHwIc0A7HCgoAHjHQp0AADZz3CAALzY8CBDAOxwYKAB4fEJhIAA +2c9woADUCy2gC8wB4BB4BCCADwAA/7+PuAsaHDDPcaAAiCQeoeB/wcXgePHA9g1P8893gADk2ECX +CHZIcYYh/ANCKQUBRCIIA4wXARFCKIgQQNjPdaAA0A8KI0CAEB0YkMojYgCsFwAQQCuGBc9zgAC8 +2S8kCAAdszgTBwFALAQEBScAAQwdGJBhiwK7SOMQHdiQZhcDEXlhMHlmH0QQDQqfAg6XUyDAgBHy +z3CAAOQvA4AJgFEgAIA92MAo4gXKIKEHwCghBgnwQCgAEaBwz3KAACQvCGIXuAPhBCGBDwAA/P8F +IIABJXiduJ+4DB0YkAvMAeAQeAQggA8AAP+/j7gLGhwwDh2YkyAVAJbPcIAA5C8DgAiAIQjeAh0O +HxFCD2AEyXDPcIAA+Nmg2cTaPdsqCCABF7tRBU/z8cDhxc9wgACYBwCQz3GAAIDHqNoB3YAgRAsQ +eJ4JL/upc4DgyiHBD8oiwQfKIIEPAAC1FMojgQ8AAMwAyiQhACwDofTKJQEBpghAAM9wgADYOw0F +b/O0oPHAggsgAQDYlgiP91YKD/76Dk/7qg2v/QDY/9nPcKsAoP85oDig0cDgfuB48cDhxc9xgADk +L/AhAgBKJEAAwxIBBg94MiKCDwAAHwMEIYMPAAYAAIDjAdvAewQhjQ9AAAAA13VAAAAAwiQCAQIJ +r/vAuZUET/PgePHAGgxP88oPoAEIdc9xgADk2B+BsLgfoc9wnwC4/1gYwAjPc58AuP9YGwAIz3Kg +ANAPEILPdqAAxCcWo89wgAAwNgaAFqMZFgCWANkE6ALYEB4YkBgaWIDGD4AAEg6gAgHYBe1KDwAA +BfAqDwAAig3P+hkWAJYF6ALYEB4YkAkET/PgePHAz3CfALj/WBgACM9wnwC4/1gYQAjPcIAAkCKW +CO/6I9nGDE//0cDgfuB48cBaCiABAdgA2c9wgACwSC6gvgyv9RnY0cDgfvHAQgtP86LBi3ZeDi/6 +yXAKJQCQGfTPcIAA5NjPcaAADCQ7gVeAMHLKJSISIIYNCR4EAtmMGEQABCWCXwAAcMc/gEV5P6CA +5cQDAgAAwOm41vLPdYAAvDsAhYohCADkkM92oADEJxMeWJDPcYAA5Ng/gTp3hiH8I4UJXgRBKQEh +w7nPcoAA6Hk2eiCCQHkIdRkWAJYE6ALYEB4YkM9wAAD/fxMeGJAb2BYeGJAD2c9woADUCzGg4Hjg +eOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB44HgxoM9wgABYoxmAgOAQD8IAmuUkAwIAz3CAAEDy +igjgAgDdFQMAAMoLb/8qcBpwAIWOCy//KnEmDC//CHeI58wn4pXKJcETK/IbCBAg9gogAIHACiUA +kBz0Kgzv/wHAGPAD2c9woADUCzGg4HjgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB44HgxoADd +Dw+RFs9wgABA8g4IwAKA5ZgCAgCiDgABz3CAAOTYH4ARCJ4DAdnPcIAAjAYgoAnwDwjeAwHZz3CA +AJAGIKARFgCWAN1BwDEInwC6DC/6gcAKJQCQEPQEFAUwHQ2fAAohwA/rcgrYjLiKI8cKAQCv9Iok +gw+A5TQCAgAE2BMeGJAb2BYeGJDPcIAAWKMZgIDg/A3CABUCAADguMbyz3aAAOTYEoaGIDoAjCAE +gggOBQHPcaAADCQ8gReGInhkuBB4ih4EEEQiAFMXCBECH4YPCF8EUSVA0QHYBfQA2APw7gpP/5we +ABAu6JYND/8KJQCQ3PQNzCEI3gEfhh0IngEvIIcKjCAChgj0z3GAAOTYH4GYuB+hngkgAIHACiUA +kMb0z3aAAOTYH4YrCB4EqBYBENTYzg+gAMlyB+i2CQAEC/D6Dg//sfDPcYAAqEkegQHgHqEB389w +gACELrQWARDgqAaBAeAGoR+G87ikD0L6D4aA4LAOQvofhhEIngMB2c9wgACMBiCgCfAPCN4DAdnP +cIAAkAYgoADYz3GgAMgcB6Ew2AqhTgrv/wHAiiCEDfYKb/oBwR+GKQgeBhDYDBocMM9wgABA8lIO +gAINyAAggQ+AABDYH4bgqbi4H6YAloYg/ACMIAKAG/R6CA/6l+gD2c9woADUCzGg4HjgeOB44Hjg +eOB44HjgeOB44HjgeOB44HjgeOB44HgxoACWcg9v/DSWRPBBwBXfCQjfAOl1IPAI2M92oADEJxMe +GJBiCM//CHUtCBAFAtg8HgCQIRYBls9wgAB0vSGgERYAltEIn4CiCi/6gcAKJQCQ4vM9DVEVz3Cg +AJAjHoAEFAQwUSCAgMohwQ/KIsEHyiBhAs8gIQPKI4EPAADkBNQFYfTKJSEA7g6v/4hwCHWpcJUH +L/OiwPHAOg8P86HBCHYA2EDAAKZCCi/6i3AKJQCQhfTPcKAABCUigACGBCGBD/8AX/8FIQIAQKZT +IYIAUyCDAGV6pQrRAc9wgADk2B+AeQqeU7cInwYEIL6PAB4AAAT0AIYJ8AEKn0AAhgsKHkCFuACm +z3KAAOTYP4IRCV4GiLiLuI64AKZB8CkJ3gZPIAECibmNuYu5jrkgph6CBCCADwIAAABSIEAEKrgl +eACmLfD8ucUggg8AAAAF5PWFIBwAAKYj8PW4AIYf8oYgHACFIBgAAKYBCh9BAIYvCt5AhrgAphPw +UyEDAFMgAgAFI76AyiXhFQnyhiF/D4Ygfw8FIT6AyiWhFM9wgABw2QyIxLhAKAEGAIYleFEggMQA +pvgN4gPKICIIqXCBBi/zocDgePHA4cUA3QXYC7iGD6/6qXH+CE/0z3CAAOTYH4AVCN8CxQ0VEcEI +X0WfCB9FAeVO8ADZnLnPcKAA0BswoAHZz3CkAJhAPKAF2AfwPgkAAM4N4AMF2AHYxg3AA2MNFREE +IL7PMAAAAAHlyiUiEC0LH0AJCF5FRwmeQzMIH0fZCN7F1Qmew89wqgAABAGAhiA/CwDduwjRgBPw +7ggAAM9xgACwSA6BAeAOoQnwANmcuc9woADQGzCg0ggAAADZz3CkAJhAPKAQ8ADdDQsfQE4N4AMB +2KjxsggAAM9xgACwSA6BAeAOoZ0FD/PhxQzMRCA+ikjyVwjeAIDYDBocMA3Mz3GAADRIz3Kg/lgB +z3OfALj/AN0RCN4CHYEB4B2hSHAH8BWBAeAVoUAiAA0Wow3MDwjfAM9woAAsIK+gDcyGIIICDRoc +MB7wPQheAYogBAAMGhwwz3GAADRIFIEB4BShDcwA2UYggAINGhwwz3CgACwgL6DPcaD+uAHPcJ8A +uP82oOB/wcXxwHoL4AAB2GYJb/MD2CYIAABqC+AAAdjRwOB+8cDmD8//Xg7P/0IOj/rRwOB+4Hjx +wFoMD/PPcaAA/EQFgQDevLgFoTYL4ADJcAPdIglv86lwz3GgADAQoqHPcIAAMDaioZUEL/PGoPHA +z3CgALQPN4DPcIAAMDYGgA0JAQC2D8//BPCaD8//0cDgfvHA8gsv8wDZB9gacTpwAN5AKAAhFHjH +cIAAgMcVII0DAJWMIAKNAN+E9owghYLJ9v/YALWKIBEDfg4v+v/ZAZ0LCFMPjCA/gUf24bWKIBED +Zg4v+gDZAebPfrkOEpNCIUAgQCBBIKcIdYAveeUDD/PxwI4LD/MA3c9wgAC4vOoL7/m0qBLoCN6A +5cwlopDMJSKRzCVikbwNYv7KIEIDYb7pDnWQAeUd8IokAXHPcYAAiNeoIIABBBlQA+B4ANlKJABy +z3KAADTXqCDAAhYiQABikM9wgAAA2DR4AeFgsM91gADkL892gAD8vEAlABckbnYPIAEG2kAlABVA +JoESag8gAQbaQCUAF0AmARRaDyABBtosFYAQIQgRAYogDwqaDS/6iiFbBTwVgBAGC2/+LYXKCI/5 +DoUXCF4BiiCHDnoNL/qKIdsIsg8AAioLz/mA4IwOwv/PcQAA///PcIAAhO8soAoN7/kroAEDD/Px +wJIKL/MU2c91gADcM9jcHgiv9AIlABPPcIAAKDYSCK/0FNnPdoAA5C9AJgAVAKbA3AIlABMBpgDd +qXCpcYoLr/MG2gHYqXF+C6/zBtoAhkokgHCpcQKmA6aoIMAFFSZCEGCCiiDGDQ2zAIIB4amgAIKp +oACCwBhYAwCCwRhYAwCCwhhYAxvZz3CAAHDjcQIv8yyo8cDmCQ/zGnA6cUh2vgnv+ZpzCHUEJoAf +AAYAAIDgSiJAIMIigiQEJo4fQAAAANd2QAAAAEojQCDCI8Ikz3CAAKwGxIgA36oI4ADpcIztA94v +IQcELyJHBMlwSnN+Di/7CiTABMlw6g4v+4pxhO1WCEACBPCGCEACz3CAADA2BIAhCJ4Az3CAAKxG +AICK6DnYhgnv+Yu4DQhRAN4Mz/8N8ADZnrnPcKAA/EQhoOB44aA+COAAANiFAQ/z4HjxwD4JD/Oj +wQh2z3CAAOQv8CCDA4onCxYtk/1jPHoocIYh8Q/Cuke5JHqGIP4DRLgfCYAACiHAD+tyg9iNuIoj +0g1KJAAAgQcv9AolAAFIg39nO7pTIgKAQK9Nk8C6Qa0L8veThif/GUO/5613k4Yj/gdFu2itHOrP +coAAtEYVIgMAAIs1egKtAYvPcaqqqqoDrQKLBK0DiwWtA4oGrV4LL/qKINAPHg9gAAKNi3CpcVIJ +L/MM2gDAAcF2DS/0AsKLcKlxPgkv8wzaAMABwcoML/QCws9xgABIBwCh5gugA8lwxQAv86PA8cBa +CC/zV9jPdYAA5C8jhc9ygABMB3eRAKILCx4AX9gAogsLngCFuACiCwteAIe4AKKKJgsWy2HZYQDa +gOPKIIEAz3KlAOgPBqIAic9xoACkMIDgAYHPIOIA0CDhAAGhBgwP9wOFz3GgAMgcT4AC4Eihugzg +AMhgA4UOCW/9DoBFAA/z4cXPcIAA5C8DgCmARCGDgADaJPSJChUEACKND4AAJC8AjaC4AK2AFYAQ +oLiAHQIQQBWAEKC4QB0CEBCNoLgQrZAVgBCguJAdAhBQFYAQoLhQHQIQAeLg8UUKFQQAIo0PgAAk +LwCNgLgArYAVgBCAuIAdAhBAFYAQgLhAHQIQEI2AuBCtkBWAEIC4kB0CEFAVgBCAuFAdAhAB4uDx +IwmeAc9ygAAkLwiKgLgIqogSgACAuIgaAgBIEoAAgLgQ8JLrz3KAACQvCIqguAiqiBKAAKC4iBoC +AEgSgACguEgaAgAA2D8JHgBKJAB04HioIAAGKwieAAAggw+AACQvIBOBAIC5IBtCAKATgQCAuaAb +QgBgE4EAgLlgG0IAAeAc8EokAHTgeKggAAYrCJ4AACCDD4AAJC8gE4IAoLogG4IAoBOCAKC6oBuC +AGATggCgumAbggAB4OB/wcXxwHYOz/LPdoAA5C8acAsIUQAAhgLwAYbEEAAGFSYNFEwgAKAB3yW4 +UyAFACCFwH9AIQAGxBEBBhsJXwEKIcAP63KB2I24iiOND7kEL/QKJAAEiiILDVlgABYDQFhgYKAA +FgBAAaEAFoBACKkAFoBACanPcIAAMDYFgBEIUQBAhQAWAEEPsgTwABYAQQAWgEAKqQAWgEALqQAW +gEAMqQAWgEAAFgBBB7EAFgBBCLEAFgBA9g4P/QCFyBAABoYgf45H9PAmwBPIEAAGhiB/jkH0iiDT +AWIIL/qKIQ4HCnCmDS/4AdkCDW/8LyAHBKoKoAMKcM9wgAAsMyyQHpYNCQAAigsP+UsIAQQAhcQQ +AQYKcCW5wLlKDO/0ANoCD4AAiegLyAUggA8AAAA8CxoYMPIOgACJ6AvIBSCADwAAANQLGhgwC8iQ +uAsaGDCuCw/z3gzP94kFz/LgePHA/gzv8gDZCiQAoKHByiFhABTyz3CAADA2EBAFAB0NnwAKIcAP +63J+2I24iiMIDXkDL/QKJAAFz3WAAOQvFSUOFQCGFSVSECQQFQAAEgEgIBAWACgQFwFBLU8hKYEa +EBgBwL8luVMhEwD+CiADDdmKIIkAinE2Du/76XLaCi/+inAAhgmAJbhTIBAAinCeDC/4ANlMJACg +AAnB/58IECAN7wohwA/rcn/YjbiKI4kHSiQAAPUCL/S4c4ogUA8iD+/5N5V+DgABsgzv9wHYAIYI +gBEIHgAsFYAQhOAD2AP0Bdg6cDULESB+Dg/7Dg4P+4ogkAXqDu/5iiHJDs9wgACw2AOIiuiKIBAO +1g7v+YohCQ9KDyAAANgsFYAQGQgRAYogjw66Du/5iiEKAIDYvgtv+wHZSiMAIE3wig9v/4pwOgzv +9wDYLBWAEBsIEQGKII8Ojg7v+YohygOA2I4Lb/sA2SEMESACDg/7+g0P+84Oz/YqDI/5gOBsD8L2 +ANgf8GIPz/YWDI/5hOjGD4ADFvDPcIAALDMIiIngzCDigfD1z3CAAOhvAIAE2b3aHttAwItwqg5g +ABi7Adh6cACGCIAPCB4ALBWAEITgBNgC9AbYOnAAhiiAFJAEIY+PAAYAAAV/B/L2ucInohDAJ6EQ +KnCKcXoOL/XpcoDgyiBCBGgOIvXKIcIDDQsQIMoKz/ef8H4Lj/kE2c9wgAAwNjIML/0koCCGyBEA +BoYgf45B9GIKb/yKcAoIoAOKcAASACDIEAAGhiB/jkD0z3CAACwzLJAelQ8JAADeCA/5bQgBBYpw +CnGmCe/0Adp/2RG5z3CgALAfNKCyDI/5SgyAAIjoC8gFIIAPAAAAPAsaGDA6DIAAiOgLyAUggA8A +AADUCxoYMAvIkLgLGhgw9ggP8wzwJBlABSCGIBmABSCGKBnEBSCGGhkEBsoKj/kJ6ADYCwwRIHoO +gAMD8F4OgAMB3S4MYAGpcM9wgABQLooLYAGgqCkMUSDPcIAALDMIiIngzCDigQP0EQgRIBEIEQKS +Co/5BOjSCk/0qgpP+boJz/cEypDgzCCCjwAAswAO8gohwA/rcgESBDaS2I24iiONBm0AL/QKJQAF +bgsgAQDY+QHv8qHA8cDKCc/yz3aAAOAGAIZKIAAggOCcDIIBz3CAAPwhA4AA3xDoz3KfALj/HaLP +cYAAaC4EgQHgs7i1uLi4BKEWogzMgQgeAM9zoADIH7ATAADPcoAA5C9DggLgRhIBAWG5CCBBAD6j +ENgOowHYFRsYgM9wgABA7gMaGDDPcIAACO8GCWACBBoYMM9xoAD8RAWBSiFAILy4BaEMzIYg/4HP +cIAAoAYAgMIhQSSA4EwIgv0EII5PMAAAAM91oADIHwrwMQhfA891oADIHwp2CiEAJM9wgACILhCA +z3GAACxJ7KEAgA6h0/DPdaAAyB8A38/wPgzP/s9xoAD8RAWBvLgFoc9wgACwSA6AjCACjYf3Ygsv +9RnYsg9gAADYDMzPdaAAyB+rCN6DBNgGGhgwH4WA4IogDADKIIIPAAAAAg6lA9gVuBIdGJAAhoDg +NAuCAc9wgABoLgCABCC+jwAADzgA2QXyz3CfALj/PaDBAM/yHoUMEgE3YwheRQbIhiDxjy30z3WA +ADxHiBUAFgQhvo8AAABQAeCIHRgQBPIE2AwaHDCOC+/+AN/PcKAA/EQlgLy5JaBrFQAWZQiFDwAA +tADPcIAAaC4AgA8I3gLPcJ8AuP/9oEogQCAMzFUIHwGLCJ8BhiD/hcXyUSMAwLDyUSBAxaz0DMzP +dYAANEhRIMCA6fKA2AwaHDANzOu4ovIdhQHgHaVKIAAgn/BWCi/1GdiqDmAA6XB1AiAASiBAIA3M +UyBAgFvzBMgDEgE2AxoYMEoPIAIEGlgwz3CgAPxEJYDPdaAAyB8A37y5JaDPcIAAoAYAgBXob/Ai +DyACAN/PcKAA/EQlgLy5JaDPcIAAoAYAgM91oADIH78IEQAGyAQgvo8DgOhTbfVRIEDFa/VKDE/6 +NwkQIN+FoBUAEAkmABDk4Mv2z3CAADTXAIAPCF4A/qUuCGAAENjk5sf3QBUBFjB5Fglv+hDYiiAI +AKAdwBMOpR+FheiKIAQADqW2C4AAL9iVuBIdGJDPcAEAwPwVHRiQKgwAAs9xgAB8RACBh+DQ8s9w +oAA4LgWABCCAD8AAAADXcMAAAAC/8vXYBbjPcp8AuP8aogfYG6Jp2Bi4GaIB2LLwug1P/aPxAN+o +8BWFAeAVpc9wgABw4xGIUSAAgMwIIgLKIGIABe4chQHgHKUMzADfrwjeAQ3MBCCEDwAAABhnDIAP +AAAACOYPj/cNzH0I3gDPcaAALCAFgSaBCuBfCQQAAxIBNgLYDBocMFDYXgov/pgRAQDSDQACz3Cg +APxEJYDPdaAAyB+8uSWgR/GKIAQADBocMBSFAeAUpUnuG4UB4BulxfFeDe/4CnAPCB4ACNibuAYa +GDBQ8M91oADIHwTYBhoYMEPxA8igEAAA8LjpcBryJgpP+ADYlrgU8DEIHgJ+Ci/8iiAEAEYPr/fp +dQPIoBAAAPC4qXAG8v4JT/gA2JW4QglAAwTY1vHPcaAAyB8TCF4C5glv+AHYANiQuPLxBCC+jwAA +AFAK8hELHkCKIAQADqEE2AYaGDANzB0I3gNAEQIGz3GAAFzZL5ENCkQAr7gNGhwwz3WgAMgf7wXP +/wDYCQhRAAfYAKHPcIAA4AYAgIDgyA9CAc9xgAAsSQyBTYEIIgAADaHPcIAAiC4QgE+BYIAOgQJ7 +AMoIIsIAT6EZCBECA9nPcKAAQC0woF8E7/8AGsIzAeBXBO//ABoCMOB44H7geOB+4HjgfuB48cDh +xRS4JXjPdaAAOC4GpQXwYgmv+YogXAgGhfcI3ocZBY/y8cCeDI/yz3Gg/pwDAN/PcJ8AuP82oM92 +oADAL6Ue2JMP3Qi9BfAqCa/5iiCcAqMWAJakeIwgEID38xQe2JMG8A4Jr/mKINwEoxYAlgsgQIP4 +9bUEj/LgeJTgyiIFAIX3CHKAIsIEz3GgAGgs8CGBAADbz3KgAMQsZ6Joogy4nbifuCV4BqLgfvHA +GgyP8gh2cg/v/yh1yXBGD+//qXFxBI/y4HjhxTDbAN3PcKAAyBxpoAPaz3GgAMwXIRmYgE6hp6Bq +oOB/wcXxwNYLr/IA2c9woAAMJFiAz3WAAOTYrXBBKoYHhiD3D5gVgxApuHZ5wHHHcYAAMO0VeQAR +hADPcIAAvCUggEAszgDVftBh2WFEII+AUyCOAAQigA8AIAAAzCAigAb0gOfMICGAANgD9AHYz3eg +AMQnQCsFBoYj/Q9SI8MBswwzBEW7gObMICKAU/LPcIAA1HrwIIcDQC6GAwUmxgEFJYABBXtBH9iQ +UQ6REB+FENqauB+lCNhPHQIQz3CgAMgcSaAHgc9yoADwFwaiBoEGogWBBqIEgQaiANgKoooVABFo +uBB4ih0EEACVhiD/jCj0AdgdoibwThWAEKLoihUAEUylZLgQeIodBBAE2U8dQhAbDtEQKxcBlmS4 +EHiKHQQQDNgtpU8dAhDyDi/5iHAI8AUjQwFBH9iQH4WzuB+lAQOP8hDaz3GgAMgcSaEB289xoADw +F2qhpBACAE0K3gIC2l2hz3OAAAjjRINGoUODRqFCg0ahQYNGoXAQAAEc4FMgwIAE9EAjAAgE8EAj +AAxAgFOhTGhAglOh+BACglOh/BAAgBOhD/BckIYi/4wD9H2hSIBGoUeARqFGgEahBYAGoeB+4cUv +gM9zoADwF89yoAD8FyijQBABASqyMYAoo0gQAQEqsjOAKKNQEAEBKrI8kIYh8w+MIQyAB/Q2gCij +XBABASqycBABAbyQCOGosr2QqLJUEA0BqLJgEA0BqLK5gKejuoCno7uAp6NyEAABOGAQeAiyz3Cg +APQHJ6AC2c9woADIHCeg4H/BxfHA/ggP+WIMD/nRwOB+4HjgfuB48cB6CY/yz3WAAOTYF4XPdoAA +0O0LCBAGWBWAEAToGoVbhQTwHIVdhc9xgAB0RiCBEwkfADKFBCGBDwAAABAleCV6z3H+//8/JHgB +pgDf4qZEeS2mDtiSCW/5DqYH6M9xgAAcM/INYAAB2M9xgAD4L+YNYAAA2BeFDwgRBQHYAa4xHgIQ +BPDhrjEewhNVAY/yocHxwNoIj/I6cQh2SHf6C+/6AN2B4MogQiML9M9wgAA8LgCQgeAB2MB4QCgQ +A8lwhiD8AIwgAoUj9M9wgADk2JgQgADnuMogIgAK9AK4FnjPcYAASOUAYS24wLjPcYAAdAcggVEh +gIDPcYAAXNkUeQTyINqtkQrwmNqrkQbwz3CAACDZs5AO2gGXQCUBFREJAwCieEggAAAQeAPwANha +cADYKnGpc7INYAOYcAohAKAE9K4JQAM6cEwhAKAA2E30BSCAIw1xALENcQAZhAQjhw1wIKAolw1w +ILCKIIUAygqv+clxjCYClRTyjCYDkR7yjCYDlSPyCiHAD+tyE9iMuM9zAACUCookgw9pBq/zuHPP +cIAA5Ni0EAEAD4EB4A+hxgkgAOlwE/DPcIAA5Ni0EAEADoEB4A6hCfDPcIAA5Ni0EAEADYEB4A2h +z3GgAPQHANgEoQHYGnDPcaAAyB/4EQIAQnUCJYAQSCAAAF+BEHg7CIQAQ4fPcIAAdL1CoKDYD6EA +2B+hz3CAAOTYHJBiuEJwH6EC2BUZGIAPCRAgUSBAxiDYAvKA2A6hjCYDlQf0z3CAAOTYHJAI8Iwm +A5EJ9M9wgABc2Q+Qzggv+gDZ/glP/wzMhiD5jxH0jCYDkcogIQDPIKEDCfJMIgCgANjPICIDyiAh +AQwaHDAKcAjcPwdP8uB48cDmDk/yocEId/oJ7/oA3RUIUQDPcIAAPC4AkAHdgeDAfQy9z3CAALzu +BIDPcoAAsL0EIIAPAAAAEEUgQQNAwSDAw7gcePQiAwDPcKAALCAPgHC7FQjkAADe8Hhwe+4PYAMU +2gkIHgbJcDjwA9jPcaAA9AcFoYUlAxkNcKCwDXDAsIoi/w8NcECgz3IAAP//DXBAsAPIz3OAAEjl +z3KAAOQvEIgCuBZ4AGMtuMC48CIAAKCADXCgoAPIEIgCuBZ4AGMtuMC48CIAAEKQDXBAsMShHg8A +AwHYdQZv8qHA4HjxwP4NT/IacM9xgADovQCJFejBgaKBz3CAAHQHAhERAeCAz3GAACxJC4E0vwHg +C6Ez8IYKb/mKIAsIz3GgAMQnEREAhgDf7wiegWQRAoZkGdiDAtgTGRiALyiBAE4ggQcS6s9wgABI +sTZ4wIChgM9wgADIsfQgUQDPcIAA6LHwIE8AC/DPcYAALEkKgel16XY6dwHgCqEEEAEgDXAgoAgQ +ASENcCCwz3GAAJzZAIEH6EKBDXBAoADYAKHPcIAA5C8DgAiA67jKIIIDyiFCA8oiwgPgCKIDyiNC +BFMhwCDPcYAAdAcggRS/DLjleBUJngCCuA1xAKENcMCgDXCgoB7wDXEAoUokAHSoIMACRCaBEA+5 +UyYAECV4DXEAoSK+SiQAdKggAANEJYEQD7lTJQAQJXgNcQChIr0lBU/y8cDODE/yCHYodShwSHFe +CCAAaHKB4MoggQMQCCEAyiFBAxkFT/LgeCK5BvDscmCiBOBhufkJtYBggM9woADUC22gA9nPcKAA +RB01oOB+4HhBKYGACfIvJElwqCDAAQQQAgTscUCh4H7xwF4MT/KhwQh3z3agAKwvGYYEIIAPcAAA +ANdwIAAAAAHYwHgvJgfwKHUachP0iiDJA+4Ob/mKIcwFOYbiDm/5iiCJA4ogiQPWDm/5qXEA2C3w +C8wAHEQzTyDBAwIcRDAB4BB4BCCADwAA/7+PuAsaHDDPcKAA1As4gEIhAQhIIQEAQCcAEhBx9A0F +AwfnBCePHwAA/P8FJwAUnbifuOxxAKEAwexwIKAB2BkEb/KhwPHA4cXKDq/6AN2B4MogQgMJ9M9w +gAA8LgCQgeAB2MB4DLiFIAMBA9rPcaAA9AdFoQ1yALIDyADbXZANcECwA8hRgA1wQKADyEgQAgEN +cECwZKHZA0/y4HjxwF4LT/LPdYAA3KLgFQAQAN6A4ND3RC4+FwAhQHMc2cXaHttuDu//GLvgFQAQ +AebnDgSQANiVA2/y4B0AEOB48cAeC0/yIYAKJgCQEInDuMohwQ/KIsEHyiChBsojgQ8AAKoAzyAh +AznygOHKIcEPyiLBB8og4QbKI4EPAACrAM8gIQMr8gK4z3GAAEjlFngAYc9xgAAsBy24wLgMqSOG +IJGGIfwAjCECgAz0z3GAAOQv8CEBAL8RAAaBuL8ZGAABhqKABe0BhQPoAIWM6AohwA/rchzYjLi5 +20okQAAFAa/zuHMLCJ9BngwAAAzoiiDOAiYNb/nA2QCFgNkooAGFQHgf8AGGIJAUyBBxyiHND8oi +zQcd2MojjQ8AAMYAvgft/88gLQNuCC/5yXACCyAAAYXPcIAALAeqCCADDIiNAk/y4HjxwKPBANlg +wQEcAjADHEIwAhxCMAHZz3CgALAfOaDPcYAAiC4MgQCAhNpCwAiBAIAM2R7bQcCLcBYN7/8Yu6PA +0cDgfs9wgACUvCiAz3CfALj/ANo2oAjZ7HAgoAPZz3CgABQEJaAByOxxAKHPcKAA1AtNoOB+4Hjx +wJ4JT/KlwQh3KHaKIJkGSgxv+VrZANnPcKAALCCwgEDGBthBwELBQ8FEwQHYHtnpcgDbmHO4cwAl +hx8AAAB96gigANhzwQFv8qXACMiHuAgaGDAJyJu4CRoYMArIChoYMAvIh7gLGhgwDMgMGhgw4H7g +eM9xgADoowCBgbjgfwCh4HjPcYAA6KPgfwOx4Hjhxc9yoACsLwDZqujPcKAAtA88oBiCwQifBhWC +uQgeABqCtQgeAM9zgACALkCDAWoPCFEAAd3PcKAAyByxoM91gABHaM9woADsJ6agQKOJChEAz3Cg +AMgcMaA+8BiCbwifBhWCZwgeABqCYwgeAM9zgACALkCDAWoPCFEAAd3PcKAAyByxoM91gABGaM9w +oADsJ6agQKPgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB44HiF6s9woADI +HDGgAdnPcKAAtA88oOB/wcXPcoAAHEcVeiCi6QJv+Yogkg7gePHAmHAKIcAP63IKJcAHz3AAAKIZ +lQZv81bb4HjPcoAA+EYVeiCiuQJv+Yog0g7gePHAmHAKIcAP63IKJcAHz3AAAKMZZQZv817b4HjP +coAAMEcVeiCiiQJv+YogEg/gePHAmHAKIcAP63IKJcAHz3AAAKQZNQZv82bb4HjxwKQQAQANCV8G +6gzP+AfwINnPcKAAyBwpoAPZz3CgABAUJaDRwOB+4cUDuDV4z3GAANhrAmFKJAB0ANmoIMACFiJA +AKGAYIAp2BK4AeF1eKCg4H/BxeB4z3CAAKwGAIChwSaAnhEABoa4nhkYAOB/ocDgeOB+4HjPcYAA +LAfgfwSh4HjxwCIPD/LPcoAA5C8jgjiJHQkRAQohwA/rcoogjA6KIwYCSiQAAIUFb/O4cyCCxBEB +Bo0JXgHPdoAA/GQghkIhAYDKIWIAvOmO6AohwA/rcoogzA6KI4YDSiQAAE0Fb/MKJQABJoYjgc93 +gACILqCBJIcggdW5PWXPcYAAsO0lgWG4BSk+ACd1iiCJC1IJb/mpcQSHIICKIIkLRglv+Ta5yXAe +CyABQiWBEs9wgAAYZQAlgR8AAIgTBgsAAc0GD/LgfwDY4H8A2CCAB7ngfyCg8cBWDg/yz3WAAHwH +zI0NjcK+wrgWfs9+Egwv/Q3YBriBuBC+xXjPcaAA7CcGoQSFz3GlAOgPBqEFhQehhQYP8vHAEg4P +8s92pQDoDyaGp4bPcIAAfAcA3ySgpaDOCy/9DdgGuIG4z3GgAOwnBqHmpkUlzR+npkUGD/LgeM9x +gAAQM89wgADYBgCQR4krCgEAz3CAANoGAJBBiR8KAQDPcIAA3AYAiCaJDwkBAM9wgACIOwCAAvAA +2OB+4HjhxeHGAN0zCdAHCwnTBwsJEwAA2BPwGQnzBx/eTiH8B+B4qCCAAQ8ljRNhvgkITgCleAPw +pngAogHYwcbgf8HF8cChwQDaQMK6D+//i3IAwKHA0cDgfuB48cA+DS/yKNgeCY/5z3WAAKQ7QIUI +dgQghA8AAPD/ANhgekEsAQFAhQHYRCYEE2B6QSyBAECFAthgelMmQRDqCK/5ANhAhQh3QSgBAgPY +YHrAuUCFQS9BEgTYYHrAuc9xAABUx89wgACgOyCgz3ABAAy5AKXPcf7KAgCCDy/5iiCSDyUFD/Lg +ePHA9g+P/JILj/zPcQAAfMfPcIAAqDuCDC/8IKDPcQEAPLnPcIAArDsgoM9x/soBAEIPL/mKIJIP +0cDgfvHAfgwv8lDYWgiP+c91gAC0O0CFCHYA2GB6UyZBEECFAdjJcWB6hiH9D89xAACgx89wgACw +OyCgz3ABAGy5AKXPcf7KAwDyDi/5iiCSD50ED/LgePHA4cUaC2/6B9ieDW/8CHWeD8//2gnP/DIK +b/qpcIEED/LgeOB+4HjgfuB4BQAAAPHA9gsv8ghzCHaGI/4DRLsId4Yn8R9Hv0QggQM8ec91gABw +4y2tBCCEDwAAAAxCLIACE60EJoQfAAAAMEIsAAMUrQQmhB8AAABAUyG+gEIsgAOxHQIQDvQKIcAP +63LV2AW4WtuKJMMPFQJv80olAADPcIAAsNgEiIHgzCAigMwgIoEG9FNpJXpPrU6tgOPMICKBBfJT +a2V6Tq2A58wgIoEE8hNv5XgPrRNpJXgQrQ6NDK2eDWABANilAy/y37XgeOB+4HjgfuB44H7geOB+ +4HjxwCYLL/IA26HBBLjPcoAA0O0UeB1ikN4aYgGCGL7IpYomBBLPcv7//z/JpQR6gOFAwsolwQAL +8giBBCCADwAAADBCIAWAyiViAE0NEADPcIAAeNcAEAQAyIEEJIYPAAcAAAQmjh8AAAAwLL5hvkEu +BgZAJoATDyICAEDChQ6PAwohwA/rcj7YjLiKI4oOIQFv87h2z3CAALDYB4iB4M8ioQMv8s9zgAB4 +1892gADk2JoWgRADiwshAIAh8kwWgRAA21MhTgBEIQ8DDyODA0K/AN4PJs4ThiH/AwQmDpAA30S5 +BHsPJ08Q5HjKJgEQgOPKI4EDDrtlegPwAYMFekDCz3CAAHjXIICLcoYh/gMkuUApgwMgggQhjg8B +AADACybAkBby13YAAABAzCaCnwAAAIDMJoKfAQAAAAT0AYAD8AKArrmvubC5JXgAogAUBDAEJIGP +AQAAwAr0CiHAD+tyRtiMuEkAb/OKI4sJCIUuuUApAgYEHQARRXgIpYogBQYJpc9wgAA42QSIgOCK +IAUOyiCBDwAA2AEJpalwANoB3sIOb/3Jc8Ct5QEv8qHA4HgKJQCA8cAR8icNkAApDdAACiHAD+ty +iiDNDoojBAXhBy/ziiSDDz4MAADRwOB+0gsAAP3xagsAAPnx4HjxwDYJD/IIdc9wgACEQgmAiejP +cIAAFEIpgAzg8CBOAALwAd6KIP8PAKXPcYAA5C8AgcQQAAZpCF8BfghP+wCloguv+alwgODKJeIR +ovRmCc/4hugAhYwg/48N9M9wgACoOyCAYHkB2IHgBd3KJSIRkPDPcYAAxCUhkc9zgADYB0CDPOE6 +YiGDZOIU4VlhMHAB3cIlThOzfcG9fPADgRiIKQgRAdoPD/sApc9xgADEJSGRz3OAANgHQIM84Tpi +IYNk4hThWWHl8c9wgAD8ZACAz3eAAFSuQiAQgO4OL/vKIGIgAKUBhw8IhQMKDi/4yXEIds9wgACI +LgSAz3GAALDtAIAlgUlu1bgFKb4AJ3BquCCFSCAAADBwyiBGAET3AKVKIEAgz3GAAMQlYZHPcYAA +2AdAgSGBPOMB3XpiZOIU4TpiUHDCJU4Ts31TJU2QIvJBCFEgz3CAAPxkDgzAAM9wgAAYZQIMwADP +cIAAwGX6C8AAz3CAANxl7gvAACGHEQmlA8lwFgggAAHZBPCOCM//CQAv8qlw4HjxwKIP7/G4cQon +AJDKIcEPyiLBB8oggQ8AAEsDyiPhDsokIQAEBiHzyiUBAc9wgABQZQaAA4AAgM9xgACILiSBSW/A +gc9xgACw7VMmTRUlgR1lBSm+ACd1AiUCEIwiF4c2vv5mSffPcIAAVK4BgAUofgAndR5mIw0QAH0N +UADVDZAACiHAD+tyiiCNDpDbnQUv84okgw96D4/4FOjPcIAALDMskM9wgADkLx6QFQkAAM9wgABQ +ZQIlgR8AAAAMB/DPcIAAUGVCJQEVdgvAAM9wgABsZQAlgR8AAIgTYgvAAIogSQx6CS/5QiUBFYog +SQzJcWLwGg+P+M9xgADAZRLoz3CAACwzTJDPcIAA5C8ekBEKAAAocAIlgR8AAAAMBfAocEIlgRca +C8AAz3CAANxlACWBHwAAiBMGC8AAiiAJDR4JL/lCJYEXiiAJDclxNPC+Do/4z3GAAIhlEujPcIAA +LDNMkM9wgADkLx6QEQoAAChwAiWBHwAAAAwF8ChwQiUBFb4K4ADJvs9wgACkZQAlgR8AAIgTqgrA +AM9wgABUrsOgiiDJDboIL/lCJQEViiDJDelxqggP+c9xgACw7QaBgbhJBu/xBqHxwNoNz/HPd4AA +NGX6CeAA6XDPcIAAYEIggM9wgABkQgCAz3agACwgCSEBAM9wgABs1giACSENADCG6XA6CuAAuWEw +hoogCgBOCC/5uWEwhoogCgxCCC/5uWHpBc/x4HjxwOHFz3CAAFSuAYANCFEAz3CAABRCB4DPcYAA +iGUggUIhAYDKIWIAm+nPcYAA3NYsgZfpz3GAAMTW+gov+COBCHWKIMkD8g/v+LHZiiDJA+YP7/ip +calwgg3v/wLZlQXP8eB48cAaDc/xz3CAAIguBICggM9wgAD8ZACAQiAAgMogYgA2vYfoz3CAABhl +GgnAAM9wgADE1iGIz3CAAFBlz3aAAFSuiukggEIhAYDKIWIABOkghq3p7gjAAM9wgABsZeYIwAAB +hmoKL/gIcSGGD3gdCQUACiHAD+tyiiANA9fbSiQAAB0DL/O4c89xgACIZSCBQiEBgMohYgAG6R1l +I4bJvQsNQBDSDO//ANndBM/x4HjxwD4Mz/FacBpx2nD6cTpyenMA2JpwbyVDEAh2SiDANztwCHe6 +cOlwqnEKD+/xAdoAIECDASGBA/oO7/ELckIgWLDKc0MhGTDyccwgwYAK9wAnT5MBJZUjAiYWoAMn +VyCpcMlx+g7v8QHaBSB+gAh1KHbb9elwqnHpchIP7/GqcwIiEqDpcAMgUCCqcaYO7/EB2gUiPqQI +dSh2EPIFJb6TDPIqcADZSnLiDu/xCnOpcvoO7/HJc5pwKnAA2elyzg7v8apzACQCILUD7/EAG4Ag +4cXhxqsKEABAIsMDJLvDugLwANqVChUEMyaCcIAAgG5AJ41yVH0gfcCIARmSAwHgARCCBAEZkgAB +EIIEARmSAAEQggQBGZIAARCCBAEZkgABEIIEARmSAAEQggQBGZIAARCCBAEZkgABEIIEARmSAAEQ +ggQBGZIAARCCBAEZkgABEIIEARmSAAEQggQBGZIAARCCBAEZkgABEIIEARmSAAEQggQBGZIAQiND +gLP1wcbgf8HF4cXhxiPqY2oiu8G6AvAA2jUKFQEzJoJwgAB8bkAnjXJUfSB9wIAEGZADBOAEEAIE +BBmQAAQQAgQEGZAABBACBAQZkABCI0OA4/XBxuB/wcXxwJYK7/FTIUIATiINAc9yoAAUBMmCANsO +JoIfAAAABlBxyiHGD8oixgfKIIYPAADGIsojhg8AAJsCyiRmANwAJvPKJcYAgOHKJE1wyiLNAOgg +LQJOYM9xoAA4BAHiyKkdDVAQEQ2QEB0N0RDPcKAAOARoqM9woAA4BGioz3CgADgEaKh9As/x8cDq +Cc/xGnB6cfpyunMKIgAhCiRAIch1CiHAIQohQIPPcoAAVuXKIWIAEmkWeAhiTCMAoAS4CHeGJ/4T +JX/KIcwPyiLMB8ogjA8AAMEhyiOMDwAA7gDKJGwAOAAs88olzAQfCJ5Bz3CAAJS8gNkooAzABOhA +eI3wwg9P/4nwTCBAoIogSgPKIIIPAACOAjoM7/gA2c92gADUZgGGANkWDy/zONoAhhzZIKABhhjZ +ILDPcYAA5C8VIVYDABYBIFOBDcHwqM93gAAwCSgYQARFeaS5IaAA2TMYQgDpcSKgCiFAgzEYwgQy +GMIENBjEBcohYgByDu/3DOCF7c9xgAD8vATwz3GAABy9I6bPcAAASBEAsRjYAqYNCFAgiiAFAgCx +DMCF6M9wAQBctwGnABYAILkQAAYtCB4AQYYa2ACyAqYAkYe4ALEA2AuxAYKtuAGiEQ0QIM9wgAAY +RASAMxoCACkKECAhhgGBmLgBoQOBn7gDoc9xgABgBwAWACAAGQQFQIABgEGhAqFqDW//yXClAM/x +4HjxwFYIz/G6cHpx+nIKIgAhCiFAIch1CiTAIQogQIPPcoAAVuXKIGIACHECuBZ4CGJMIwCgBLiG +IP4DBSBQAMohzA/KIswHyiCMDwAAvyHKI4wPAACWAMokbACkBuzyyiXMBAzAjOgKIcAP63KH2Aa4 +l9tKJAAAiQbv8rhzFQieQc9wgACUvIDZKKAMwEB4Z/DPdoAA1GYBhgDf6XGCDS/zONoAhhzZIKAB +hhDZILDPcYAA5C8VIVYDABYBIDOBMxjCA893gAA4CRAYAgSkuY25mbkhoOlxIqAKIUCDKBgABTEY +wgQyGMIENBjEBcohYgDeDO/3DOCG7c9xgAD8vAXwz3GAABy9I6ak2ACxENgCpgsNUSCk2Iy4ALHP +cIAA5C8ZkI64j7gBsQzAAacpChAgIYYBgZi4AaEDgZ+4A6HPcYAAYAcAFgAgABlEBECAAYBBoQKh +Cgxv/8lwRQeP8eB48cDhxc91gABMSgCNjCDDjw/0z3KAAOBkBoIDgCCAx3EPAACgjgugAEhw/tgA +rWEHj/HgePHA5g6v8QDYz3WAAAjoSiQAdIDeqCAABQhxAeBPIMIBFiVDEEeriiIIAAK5NnnHcYAA +SOVAoQDaQrHGqcDYfx0CEM91gADQB8Ctz3CAAMjkgNk6DC/zKHLBrc9wgABIM9moz3CAADgw6Qav +8cWo4HjxwHIOj/GhwQh30g/v8xjYz3aAADxHIIYBhoDhzCAhgCv0z3CgANQLGIAA3UIgAAiA4Mog +TAOMIAiFSPfBFgAWAeDBHhgQHPCd2AAcBDALzOlxAhwEMAHgEHgEIIAPAAD/v4+4CxocMADAHtoq +CCAAGLqhpgTwBOhhuAGmFggAAADYmgzv+UAmARJRBq/xocDgfuB48cDWDY/xCHcacTpyz3aAAOQv +A4bPdYAAPEcUkBC41g1v+AKlgODKICIgz3CAAHAHAICL6IUhCCRPIUAnn7jscQCh7HDgoAOGCIAN +CB4AAoWBuAKlz3CAANwGAIiE6AKFg7gCpc9woAAsIBCAz3OAAMRIch0YEEokwHAA2KggwAXPcYAA +tAYgiYDhDNrKIiEARCi+A89xgABg8ydyMyGCAEAjAQMZYQHgQKlAJQ4Siggv9MlwDwgQICKFANiA +uSKlA/CKIP8Pz3GAAHAHIIFnFQ8WaBUEFpTpANsI8OxyIKIEeQQeUBAB44wjgoAghrj3z3KgANQL +LaIkeACmZx3YE2gdGBEA2DEFr/HcHQAQ4HhdBu//ANjgePHAz3KAAOAGAoIliAHYB+kI2SoO7/gr +ogfwz3GAAFw25gqv8gCh0cDgfuB48cCaDK/x2HA6CCAAAN3JaCsOEhD4cKl3MiaAAxUIEgwRCJMO +gguP9TJvOHgFfQHnQidHAOUPdYBhvskEr/GpcAhyA/AB4CCI/ungf0J44HjxwE4Mj/HPdaAA/EQd +hTmF0gxgAgDeANieuAGl4HjBpcWlmQSP8eB4z3Gqqru7z3CfALj/NqA2oDagNqDPcaAAyDsOgYi4 +DqFpIEAA/vHgePHAz3CAAOQvA4AYiB0IEQEKIcAP63KKIAwOiiOFCkokAABhAu/yuHOKIAoLig6v ++IohRQsuDe/zA9jPcIAAbNYAEAQAGQwRAAohwA/rcoogTA6KIwUMLQLv8rhzz3CAADwuAJCB4AHY +wHgMuCsIgQ8AAAAQz3CgACwgEIDPcYAAhEICoQLYA6HPcQEAVDXSCW//AdgH8IogCgseDq/4iiGF +DtHA4H7gePHATguP8c91gADc1i+FSiAAIIDhyiHBD8oiwQfKIIEPAAC+IcojgQ8AAEgAyiQBBKgB +4fLKJcEAz3CAAD4uQIjPcIAAlLxgeUigPB0AFG4M7/MC2F0Dj/HxwP4Kj/GGD2AACHXPcaAAyB9F +hQzobhEOBgKAZIXEekV7bhnYACKFAKEL8G4RAAZEeG4ZGAAc2Bi4FRkYgC0Dj/HgeIDgAdnAec9w +gABISuB/IKDxwKYKj/HPcIAAoDsggKLBYHkE2IDgqgIBAM9xgACALgCBAeAAoRcIUQAB2c9woADI +HDGgggpgAihwZgnv+QXYz3aAABBGDqbPcYAAgC4AgQHgAKEVCFEAAdnPcKAAyBwxoFYKYAIocAPY +Agmv8slxBNj6CK/yIm4F2PIIr/IkbgvY6giv8iZuD9jiCK/yQCYBEjbY1giv8kAmgRI32M4Ir/JA +JgETONjCCK/yQCaBE893pwAUSAiHz3GnAJhHBKYNh89yqwCg/wWmDofPdaAA7CcGphyBB6YXhwim +FocJphiCC6YZggymGoINps9wBQDGAwalxtiQuAalz3AsAAIBBqXPcFoAQgEGpYogiwAGpc9wQACH +DQalz3DRAMINBqXPcMAABw4Gpc9wgACALgCAz3KAAIAuQiBAgACiBvTPcqAAyBwA2BGiAdgIpwDY +DacOp89wUAD/AByhAdgXpwDYFqf82c9wqwCg/zigc9k5oBqAz3GrAKD/gbgaoc9wKgACDgali3A2 +DCAAgcEAwc9wgACUpTWmMqABwS+gz3AaAAIOBqWLcBYMIACBwQDBz3CAAJSlNqYzoAHBMKDPcCYA +Ag4GpYtw9gsgAIHBAMHPcIAAlKU0oDemAcExoM9wgACALgCAAeDPcYAAgC4AoRUIUQDPcaAAyBwB +2BGhughAAgGWELiFIIQABqUClhC4hSCFAAalA5YQuIUgiwAGpQSWELiFII8ABqUFlhC4BSCADwAA +gg0GpQaWELgFIIAPAADCDQalB5YQuAUggA8AAAIOBqXPcIAAgC4AgM9xgACALkIgQIAAoQf0z3Gg +AMgcANgRoQSGK4YIpwWGDacGhg6nCIYXpwmGFqfPcKsAoP84oCyGOaAthjqgMg6v+Q6Gz3CAAIAu +z3GAAIAuAIBCIECAAKEH9M9xoADIHADYEaFRAK/xosDxwOYPT/F+CAAAz3aAALBp9g2v9wCGCHUA +hhkNABBWCK/7qXDqCO/7oKYmCi/0EdgqCA/3z3CgACwgMIDPcIAAbAcRAK/xIKDxwLoP7/+hwc9w +gABQSgCABNli2h7bQMCLcLoKL/8Yu6HA0cDgfuB48cDaCO/zFtgA2NHA4H7gePHAYg9v8QfYUg6P ++Qh3z3CgALQP3IBCDi//ANjPcaAALCAwgfoJr/iKIJEFlg7P+891gABQSiIKL/wApUCFz3GAAARn +AKHPcYAAsEhKoX4I7/wLoQIOL//PeC4Nr/npcM9wgABQLgCIQwhRAECFiiBEBM91gABALiOFGmI4 +YBByAdjCIAUADOiKIBELkgmv+ADZ8ghv9QTYAIUG8NYIb/UE2AKFMgsgAgOlIQdP8eB48cDPcIAA +SEoAgJzokg/v+BbYmOjPcIAAoDsggGB5BNgQ6M9wgACQO2CAz3EBALzRC9hgewTaGgnv8xbY0cDg +fs9xgADkLwCBxBAABg8IXwEBgcQQAAYVCF4Bxggv9BPYvggv9BHY7PHq8eB48cDPcIAAzCkAgM9x +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 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAHAAAAAAAAAAcAAAAJDREUCg0TFxkZ +GRkJCQAArLeAANiCAACUvIAAAAAAAJS8gAAAAAAA3wAAABkBAABiAQAAvgEAADICAADDAgAAewMA +AGIEAACEBQAA8gYAAL4IAAACCwAAAQAAAAAAAAAwgAAAAAAAADGAAACZuViFMoAAAADKmrgzgAAA +AFAAUDSAAAAAUAAANYAAAABQAFA2gAAAAFAAUDeAAAAAAABQOIAAAAAAAAA5gAAAAFAAUDqAAAAA +UABQO4AAAABQAFA8gAAAAFAAAD2AAACZyQpQPoAAAFW4iMk/gAAAAAAAgjCAAAAAAAAAMYAAAJm5 +WIUygAAAAMqauDOAAAAAUABQNIAAAABQAAA1gAAAAFAAUDaAAAAAUABQN4AAAAAAAFA4gAAAAAAA +ADmAAAAAUABQOoAAAABQAFA7gAAAAFAAUDyAAAAAUAAAPYAAAJnJClA+gAAAVbiIyT+AAAAAAACC +MIAAAAAAAAAxgAAAAAAAADKAAAAAAAAAM4AAAAAAAAA0gAAAmkUAADWAAACqyqrKNoAAAAAgACA3 +gAAAACAAIDiAAAAAIAAAOYAAAAAgACA6gAAAqsqqKjuAAAAAEJbKPIAAAAAAAAA9gAAAAAAAAD6A +AAAAAAAAP4AAAAAAAAAwgAAAAAAAADGAAAAAAAAAMoAAAAAAAAAzgAAAAAAAADSAAACaRQAANYAA +AKrKqso2gAAAACAAIDeAAAAAIAAgOIAAAAAgAAA5gAAAACAAIDqAAACqyqoqO4AAAAAQlso8gAAA +AAAAAD2AAAAAAAAAPoAAAAAAAAA/gAAAAAAAAP//AAClAQEAuQHfADsCLQCxABsAFgEbAK8AGwAU +ARsAbACgANEAoABvAIMAcQCDAHMAMwDUAQYA0AEAAHgASQB5AGoA3gBqAKgAAAANAQAApgA/AKcA +AQALAT8ADAEBAAQACACcAcwAnQHMANUBzADWAcwAtAAgABkBIACPAIgA9ACIAJAAIgD1ACIAkQAE +APYABACFAAAAhgAAAIcAVQCIAAAAiQCqAIoAAACLAN0AjAAAAIUAAQCGAAEAhwBVAIgAAACJAKoA +igAAAIsA3QCMAAAAhQACAIYAAwCHAFUAiAAAAIkAqgCKAAAAiwDdAIwAAACFAAMAhgAHAIcAVQCI +AAAAiQCqAIoAAACLAN0AjAAAAPv/AAD//wAAuQHfADsCLQCxABsAFgEbAK8AGwAUARsAbACgANEA +oABvAIMAcQCDAHMAMwDUAQYA0AEAAHgASQB5AGoA3gBqAKgAAAANAQAApgA/AKcAAQALAT8ADAEB +AAQACACcAcwAnQHMANUBzADWAcwAtAAgABkBIACPAIgA9ACIAJAAIgD1ACIAkQAEAPYABACoAAwA +DQEMAIUAAACGAAAAhwCZAIgAAACJAKoAigAAAIsA3QCMAAAAhQABAIYAAQCHAJkAiAAAAIkAqgCK +AAAAiwDdAIwAAACFAAIAhgADAIcAmQCIAAAAiQCqAIoAAACLAN0AjAAAAIUAAwCGAAcAhwCZAIgA +AACJAKoAigAAAIsA3QCMAAAA+/8AAP//AAC5Ad8AsQAbABYBGwCvABsAFAEbAGwAoADRAKAAbwCD +AHEAgwB2AIMAcwAzAG4AMwBwADMAcgAzANcAMwDUAQYA0AEAAH4APADjADwAeABJAN0ASQB/AFoA +5ABaAKoAPwCrAAEADwE/ABABAQB5AGoA3gBqAKgAAAANAQAApgA3AKcAAQALATcADAEBAAQACACc +AcwAnQHMANUBzADWAcwAtAAgABkBIAAxAgwAMgIMADMCvQA2AgwANwIMADgCvQCgAIgABQGIAKEA +1QAGAdUAogAEAAcBBACPAIgA9ACIAJAAIgD1ACIAkQAEAPYABACfAAwA+wAMAJQAAACVAAAAnACX +AJ0A0ACaAI0AmAARAJYAMwCXAHcAlAABAJUAAQCcAJcAnQDQAJoAjQCYABEAlgAzAJcAdwCUAAIA +lQADAJwAlwCdANAAmgCNAJgAEQCWADMAlwB3AJQAAwCVAAcAnACXAJ0A0ACaAI0AmAARAJYAMwCX +AHcA+gAAAPkAAAACAZcAAwHQAAABjQD+ABEA/AAzAP0AdwD6AAEA+QABAAIBlwADAdAAAAGNAP4A +EQD8ADMA/QB3APoAAgD5AAMAAgGXAAMB0AAAAY0A/gARAPwAMwD9AHcA+gADAPkABwACAZcAAwHQ +AAABjQD+ABEA/AAzAP0AdwCFAAAAhgAAAIcAVQCIAAAAiQCnAIoAAACLAN4AjAAAAIUAAQCGAAEA +hwBVAIgAAACJAKcAigAAAIsA3gCMAAAAhQACAIYAAwCHAFUAiAAAAIkApwCKAAAAiwDeAIwAAACF +AAMAhgAHAIcAVQCIAAAAiQCnAIoAAACLAN4AjAAAAOsAAADqAAAA7ABVAO0AAADuAKcA7wAAAPAA +3gDxAAAA6wABAOoAAQDsAFUA7QAAAO4ApwDvAAAA8ADeAPEAAADrAAIA6gADAOwAVQDtAAAA7gCn +AO8AAADwAN4A8QAAAOsAAwDqAAcA7ABVAO0AAADuAKcA7wAAAPAA3gDxAAAApAGAAKEBQAD7/wAA +//8AAKUBAQC5Ad8AsQAbABYBGwCvABsAFAEbAGwAoADRAKAAbwCDAHEAgwB2AIMAcwAzAG4AMwBw +ADMAcgAzANcAMwDUAQYA0AEAAH4APADjADwAeABJAN0ASQB/AFoA5ABaAKoAPwCrAAEADwE/ABAB +AQB5AGoA3gBqAKgAAAANAQAApgA3AKcAAQALATcADAEBAAQACACcAcwAnQHMANUBzADWAcwAtAAg +ABkBIAAxAgwAMgIMADMCvQA2AgwANwIMADgCvQCgAIgABQGIAKEA1QAGAdUAogAEAAcBBACPAIgA +9ACIAJAAIgD1ACIAkQAEAPYABACfAAwA+wAMAJQAAACVAAAAnACXAJ0A0ACaAI0AmAARAJYAMwCX +AHcAlAABAJUAAQCcAJcAnQDQAJoAjQCYABEAlgAzAJcAdwCUAAIAlQADAJwAlwCdANAAmgCNAJgA +EQCWADMAlwB3AJQAAwCVAAcAnACXAJ0A0ACaAI0AmAARAJYAMwCXAHcA+gAAAPkAAAACAZcAAwHQ +AAABjQD+ABEA/AAzAP0AdwD6AAEA+QABAAIBlwADAdAAAAGNAP4AEQD8ADMA/QB3APoAAgD5AAMA +AgGXAAMB0AAAAY0A/gARAPwAMwD9AHcA+gADAPkABwACAZcAAwHQAAABjQD+ABEA/AAzAP0AdwCF +AAAAhgAAAIcAVQCIAAAAiQCnAIoAAACLAN4AjAAAAIUAAQCGAAEAhwBVAIgAAACJAKcAigAAAIsA +3gCMAAAAhQACAIYAAwCHAFUAiAAAAIkApwCKAAAAiwDeAIwAAACFAAMAhgAHAIcAVQCIAAAAiQCn +AIoAAACLAN4AjAAAAOsAAADqAAAA7ABVAO0AAADuAKcA7wAAAPAA3gDxAAAA6wABAOoAAQDsAFUA +7QAAAO4ApwDvAAAA8ADeAPEAAADrAAIA6gADAOwAVQDtAAAA7gCnAO8AAADwAN4A8QAAAOsAAwDq +AAcA7ABVAO0AAADuAKcA7wAAAPAA3gDxAAAApAGAAKEBQAD7/wAA//8AALkBwQDUAQMA0AEEAHgA +PADdADwAeQBqAN4AagCoAAEADQEBAAQACACcAcwAnQHMANUBzADWAcwAtAAgABkBIACPAIgA9ACI +AJAAAAD1AAAAkQAGAPYABgCFAAQA6wAEAKQBgABdAjMASgIOAEwCDgBNAgEArQEHALMBBAC4AQAA +uwFWAFACCwBRAgMAUgIBAFMCAABUAgsAVQIDAFYCAQBXAgAAZgIGAGgCBwBqAgcAbAIHAG4CBQBw +AgwAfQIGAH8CBwCBAgcAgwIHAIUCBQCHAgwAtQAhABoBIQBLAgEAoQFAALMAAAAYAQAAlAILAJUC +AwCWAgEAlwIAAJgCCwCZAgMAmgIBAJsCAACyADAAFwEwAJwCDwChAg8AoAKIAJ8CiACeAogAnQKI +AKUCiACkAogAowKIAKICiAD7/wAA//8AALkBwQDUAQMA0AEAAHgAPADdADwAeQBqAN4AagCoAAEA +DQEBAAQACACcAcwAnQHMANUBzADWAcwAtAAgABkBIACPAIgA9ACIAJAAAAD1AAAAkQAGAPYABgCF +AAQA6wAEAKQBgABdAjYASgINAEwCDwBNAgEArQEGALMBBAC4AQAAuwFWAFACCwBRAgMAUgIBAFMC +AABUAgsAVQIDAFYCAQBXAgAAZgIGAGgCBwBqAgcAbAIHAG4CBQBwAgwAfQIGAH8CBwCBAgcAgwIH +AIUCBQCHAgwAtQAhABoBIQChAUAA+/8AAP//AAC5AcEA1AEDANABBAB4ADwA3QA8AHkAagDeAGoA +qAABAA0BAQAEAAgAnAHMAJ0BzADVAcwA1gHMALQAIAAZASAAjwCIAPQAiACQAAAA9QAAAJEABgD2 +AAYAhQAEAOsABACkAYAAXQIzAEoCDgBMAg4ATQIBAK0BBwCzAQQAuAEAALsBVgBQAgsAUQIDAFIC +AQBTAgAAVAILAFUCAwBWAgEAVwIAAJQCCwCVAgMAlgIBAJcCAACYAgsAmQIDAJoCAQCbAgAAZgIG +AGgCBwBqAgYAbAIHAG4CBQBwAgwAfQIGAH8CBwCBAgYAgwIHAIUCBQCHAgwAsgAwABcBMACzAAAA +GAEAAJwCDwChAg8AoAKIAJ8CiACeAogAnQKIAKUCiACkAogAowKIAKICiAC1ACEAGgEhAKEBQABL +AgEA+/8AAP//AAC5AcEA1AEDANABAAB4ADwA3QA8AHkAagDeAGoAqAABAA0BAQAEAAgAnAHMAJ0B +zADVAcwA1gHMALQAIAAZASAAjwCIAPQAiACQAAAA9QAAAJEABgD2AAYAhQAEAOsABACkAYAAXQI2 +AEoCDQBMAg8ATQIBAK0BBgCzAQQAuAEAALsBVgBQAgsAUQIDAFICAQBTAgAAVAILAFUCAwBWAgEA +VwIAAGYCBgBoAgcAagIGAGwCBwBuAgUAcAIMAH0CBgB/AgcAgQIGAIMCBwCFAgUAhwIMALUAIQAa +ASEAoQFAAPv/AAAAAAAAAgAAAA3SEtIT0hTSDNIV0gvSAtIR0gRDABAUEAkQERABQBvSHNIA0goA +CwAEAA4AtQAaAQ8AQgC8AMMAIQEoAbYAtwC4ALkAvQC+AL8AwAAbARwBHQEeASIBIwEkASUBCgAA +AAsAAAC2AAAAtwAAALgAAAC5AAAAGwEAABwBAAAdAQAAHgEAAL0AAAC+AAAAvwAAAMAAAAAiAQAA +IwEAACQBAAAlAQAAEtIAABPSAAAAAAEAAgADACwAZAB0AIAAjAChAAcAAAAAAAEAAgADAAAAAAAA +AAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAHAAAAAAAAAAMA +AAAEAAAAAwAAAAAAAAD/AwAAAwAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAsAAEAAAAB +AAEAAQAAAAAAAAAAAAEAAQACAAIAAgADAAMABAAEAAUABQAGAAYABwAHAAgACAAJAAkACgAKAAsA +CwAMAAwADQANAA4ADgAPAAAAAQACAAAAC9IO0g3SCNIJ0grSEtIT0hTSEdIQ0gLSAdID0gCABdIE +QxvSHNIE0gBFMNIx0gAAtQAaAYEBBQAEAA8AEAAKAAsADABOAAAAAAABAAIAAAAN0hHSENIC0gHS +A9Ib0gvSAIAF0hLSE9IU0gRDCNIJ0grSHNIG0gfScNIAALUAGgGBAQQADwCDAOgATgGSAPcAXQEG +AAgACQAKAAsADAAFAAAAAAAAAAAACgAAAAEAAAAAAAAAAAAAAAAAAAADAAAABAAAAAMAAAAAAAAA +AwAAAAAAAAAAAAAAAAAAAAAAAAD/AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +ACwAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQAAAATSDdIR0hDSAtIB0gPSG9IAgAXSC9IS0hPS +FNIEQ3DSAAAAAAEAAAABAAAAAQAAAAEAAAADAAAAAgAAAAMAAAADAAAAAAAAAAEAAAAAAAAAAAAA +AAAAAAD/AwAAAAAAALUAGgGBAQQADwAGAAgACQAKAAsADAAAAAAAAAAAACwAAQAVABUAFQABAAEA +AQAAAAAAAQACAAAAHNIN0hHSENIC0gHSA9Ib0gvSAIAF0hLSE9IU0gRDBtIH0gTScNIAALUAGgGB +AQUABAAGAAgACQAKAAsADACDAJIA6AD3AE4BXQEPAAAAAAC3EyIAuBQjALkVJAC7FiUAvBcmAL0Y +JwDAGSgAxBopAAcbAAAIHAEACx0CAAweAwAQHwQAIiEFACQiBgAmIwcAKCQIAColCQAsJgoALicL +ADAoDAA0KQ0AOCoOADwrDwBALBAAZC4RAGgvEgBsMBMAcDEUAHQyFQB4MxYAfDQXAIA1GACENhkA +iDcaAIw4GwCROhwAlTsdAJk8HgCdPR8AoT4gAKU/IQAkSQYCLEoKAjRLDQE8TA8BZE0RAWxOEwF0 +TxUBfFAXAYRRGQGVUh0BnVMfAQEEAAACBQEAAwYCAAQHAwAFCAQABgkFAAcKBgAICwcACQwIAAoN +CQALDgoADA8LAA0QDAAOEQ0AAUAABAJBAQQDQgIEBEMDBAVEBAQGRQUEB0YGBAhHBwQJSAgEAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGAIYAhgCGAIYAhgCGAIYA +hgCGAIYAhgCGAIYAhwCIAAQABQAGAAYABwAIAAgACQAJAAoACwAMAAwAJAAlACUAJgAnACgAKABE +AEUARgBGAEcASABIAEkASgBKAEsATABoAGgAaQBqAGsAbABtAG0AbgBvAG8AcABxAHEAcgByAHIA +cgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAAoAPwCGAIYAhgCGAIYAhgCGAIYAhgCG +AIYAhgCGAIYAhwCIAAQABQAGAAYABwAIAAgACQAJAAoACwAMAAwAJAAlACUAJgAnACgAKABEAEUA +RgBGAEcASABIAEkASgBKAEsATABoAGgAaQBqAGsAbABtAG0AbgBvAG8AcABxAHEAcgByAHIAcgBy +AHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAAoAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAcAABEHAAA +TBwAAMgbAADMGwAANAygAEAMoAAcHKAAQCCgACgkoABsEKAAGCSgAHgkoAB8JKAAgCSgAIQkoABQ +EKAAVBCgAEgmoABgEKAATCagAGQQoABoEKAAXBCgAFgQoAAwEKAAPBCgADQQoAAsDKAAAIGkAAGB +pAADgaQAiCSgAIwkoACQJKAAlCSgAJgkoACcJKAAoCSgAKQkoAAAAAAAAAAAAAAAAAAAAAAAAQAC +AAIAAwAEAAQABQAGAAYABwAIAAgACQAKAAoACwAMAAwADQAOAA4ADwAmACcAKAApACoARgBGAEcA +SABIAEkASgBKAEsATABoAGkAagBqAGsAbABsAG0AbgBuAG8AcABwAHEAcgByAHMAcwB0AHQAdAB0 +AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AAoAPwAAAAAAAAAAAAAAAAAAAAAAAQABAAIA +AwADAAQABQAFAAYABwAHAAgACQAJAAoACwALAAwADAANAA4AIwAkACUAJgAnACgAKQBEAEUARgBG +AEcARwBIAEgASQBJAEoASwBoAGgAaQBqAGsAbABtAG0AbgBvAG8AcABxAHEAcgByAHMAcwBzAHMA +cwBzAHMAcwBzAHMAcwBzAHMAcwBzAHMAcwBzAAoAPwAAAAAAAAAAAAAAAAAAAAAAAQACAAIAAwAE +AAQABQAGAAYABwAIAAgACQAKAAoACwAMAAwADQAOAA4ADwAmACcAKAApACoARgBGAEcASABIAEkA +SgBKAEsATABoAGkAagBqAGsAbABsAG0AbgBuAG8AcABwAHEAcgByAHMAcwB0AHQAdAB0AHQAdAB0 +AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AAoAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEA +AgADAAMABAAFAAUABgAHAAcACAAJAAkACgAKAAsAJAAlACUAJgAnACgAKABEAEUARgBGAEcASABI +AEkASgBKAEsATABoAGgAaQBqAGsAbABtAG0AbgBvAG8AcABxAHEAcgByAHIAcgByAHIAcgByAHIA +cgByAHIAcgByAHIAcgByAHIAcgByAAoAPwCAf4AAAAAAALIMLAH/////////AAH//wID////BP// +////////////////////Bf8G/wf/CP8J/wr/C/8M////Df///w7///8P////EP////////////// +////////////////////////////////Ef///xL///8T////FP///xX///8W////F////xj///8Z +////Gv///xv/////HP///x3///8e////H////yD///8h//////////////////////8iIyT/JSYn +//8o////Kf////////////////////////////////////////////////////////////////// +////////////AAEAAQEAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAQAAAAAAAABANAEA +AAAAAPR6AAABAAAA3M0BAAIAAAA0zQEAAwAAAGAdAgAEAAAAQDQBAAUAAABwIAEABgAAAEzyAAAH +AAAA+CABAAgAAADwMQAACQAAAKRUAAAKAAAANM8AAAsAAADILgAADAAAAGQdAgANAAAAfOkAAA4A +AAAo6gAADwAAAAjpAAAQAAAACOoAABEAAADAQQEAEgAAAGjmAQATAAAAnCYAABQAAAB0bAEAFQAA +AFxXAQAWAAAA9GYBABcAAABgzAEAGAAAAMiVAQAZAAAAhA4BABoAAAA8NAEAGwAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////wAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAATJ0AAEydAABMnQAATIkAAEydAABMnQAAsIkAAEydAABMnQAATJ0AAEydAABMnQAATJ0AAEyd +AABMnQAATJ0AABiSAABgkQAAUJEAAICQAACIkQAAPJAAAEydAABMnQAALJQAAPyWAAAUmQAATJ0A +AEydAABMnQAAtJwAADCTAABokwAA1JIAAEydAABMnQAATJ0AAHCcAABMnQAAtJIAAEydAABMnQAA +TJ0AAEydAABMnQAATJ0AAEydAABMnQAATJ0AAEydAABMnQAATJ0AAEydAABMnQAATJ0AAEydAABM +nQAATJ0AAEydAABMnQAATJ0AAEydAABMnQAATJ0AAEydAABMnQAATJ0AAEydAABMnQAATJ0AAEyd +AABMnQAAdIoAAEydAABMnQAATJ0AAEydAABMnQAA1JkAAEydAABMnQAATJ0AAEydAABMnQAAwI0A +AEydAADQjQAAzI0AAMSNAADIjQAA/IYAAEydAAC0hgAATJ0AAEydAABMnQAATJ0AAEydAABMnQAA +TJ0AAEydAAA4hgAATJ0AAEydAABMnQAATJ0AAEydAABMnQAATJ0AAEydAABMnQAATJ0AAEydAADY +iwAAUIsAAEydAAD0iwAATJ0AAJSKAAAAkAAATJ0AAEydAAA4kgAATJ0AAEydAABMnQAATJ0AAEyd +AACEkgAAaJIAAEydAABMnQAATJ0AAEydAABMnQAATJ0AAEydAABMnQAATJ0AAEydAABMnQAA1I0A +AEydAABMnQAATJ0AANCZAABMnQAATJ0AAEydAAAInAAATJ0AAGicAABwmQAATJ0AAEydAABIhQAA +MJkAAEydAABMnQAAiJAAAKCQAABMnQAATJ0AAHyNAABMhwAATJ0AAEydAABMnQAAcJMAACSQAABM +nQAATJ0AAEydAABMnQAATJ0AAEydAABkjwAATJ0AAHSdAAAAngAA4J0AABieAACsnQAAlJ0AACCe +AABwnQAATJ0AAEydAABMnQAATJ0AAEydAABMnQAATJ0AAEydAACEjQAATJ0AAEydAABMnQAATJ0A +AEydAABMnQAATJ0AALCeAAC8nwAAYIUAAKyFAABMnQAATJ0AAEydAABMnQAATJ0AAHyHAABMnQAA +TJ0AAEydAABMnQAATJ0AAEydAABMnQAATJ0AAEydAABMnQAATJ0AAEydAABMnQAATJ0AAEydAABM +nQAATJ0AAEydAABMnQAATJ0AAEydAABMnQAATJ0AAEydAABMnQAATJ0AAEydAABMnQAAgIcAAJyI +AAAMiAAAJJ4AAMSFAAAkiQAAvIkAAEydAABMnQAATJ0AAEydAACoiQAArIkAAEydAABMnQAAUIkA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAANCrAAD8qQAAPK0AAECsAABQrgAAAAABAP////8AAAAA//////////8B +AAAAeBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAADQ/gAAAAAAAAAAAAAAABgg +oAAgIKAAQCGgAEghoAAcIKAAJCCgAEQhoABMIaAAKCCgADAgoABoIaAAcCGgACwgoAA0IKAAbCGg +AHQhoAA4IKAAPCCgAHghoAB8IaAAMBAAAAD/AwDQEAAAAP8FAHQQAAAA/y0AUBAAAAD/PQDsDwAA +AP8EABQQAAAA/yUA+M8AAAD/3QCYEAAAEBBMAAAAAAAAAAAAAAEBADw8PDw8PDw8PDw8PDw8PDw8 +PDw8PDw8PDw8PDw8PDw8FRUVFTw8PDwVFRUVPDw8PAAAAAAAAAAAAAAAAAAAAAA8PDw8PDw8PDw8 +PDw8PDw8PDw8PDw8PDw8PDw8PDw8PBUVFRU8PDw8FRUVFTw8PDwAAAAAAAAAAAAAAAAAAAAAPDw8 +PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDwVFRUVPDw8PBUVFRU8PDw8AAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAA/wAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0BIA +AAQaAABIFgAAsBMAAMQbAABQFwAA9BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwHgAA8vYAAGAAAAPy8gAAAAAAAAAAAAAAA +AAAAAAAAzAsBAIy6AAAIJAAAjLoAAIy6AACMugAAOAoAAGjeAQDc2QAAjLoAAIy6AAAYKgAAGCoA +ABgqAAAYKgAAGCoAABgqAAAYKgAAjLoAAIy6AACMugAAjLoAADBLAACMugAAjLoAAIy6AACMugAA +jLoAAMDZAACMugAAjLoAADjPAAAAAAAAwPUAAMT1AAC0AgAAoAIAAJRAAQBgxwAA+LgBAIjHAAAo +uQEArMcAAFi5AQCARIAAKLKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMIQAAlCEAAEDA +gAAAAgAAAAAAAJwDAQBsAwEAQMKAAEAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAwEAVD0B +ANDIgABUAAAAAAAAAJwDAQAoPAEAgMeAAFABAAAAAAAAnAMBAFA2AQCAB4AACAAAAAEAAACcAwEA +aAIBAAAAAABQAQAAAAAAAJwDAQDcNgEAGD2AAAIAAAAAAAAAnAMBAOg1AQB8B4AABAAAAAAAAACk +AwEAbAMBACTJgAAqAAAAAAAAAJwDAQBsAwEAVEqAAAgAAAAAAAAAAAAAAHQDAQAAAAAAAAAAAAEA +AAAAAAAAiAMBAAAAAAAAAAAAAAAAAAAAAABwAwEAAAAAAAAAAAAAAAAAnAMBABy7AQAAAAAAAAAA +AAAAAACcAwEA3LoBAIgHgAAEAAAAAAAAAG4AbgBpAMAAoABQAIAAvgBQAX0APgABAAEAAQBYAigA +5gEtAFUDPADcAWMAAABuAG4AaQDAAKAAUACAAL4AUAF9AD4AAQABAAEAWAIoAOYBLQBVAzwA3AFj +AAAAAAAAAAEBAADECgEAFdIAAAAAAAD/AwAAxAoBAAzSAAAAAAAA/wEAAMQKAQAV0gAACgAAAAD8 +DwDECgEADNIAAAkAAAAA/gMAxAoBABXSAAAUAAAAAADwP8QKAQAM0gAAEgAAAAAA/AfECgEABtIA +AAAAAAD/AQAAxAoBAAfSAAAAAAAA/wMAAMQKAQAG0gAACQAAAAD+AwDECgEAB9IAAAoAAAAA/A8A +xAoBAAbSAAASAAAAAAD8B8QKAQAH0gAAFAAAAAAA8D8AAAAAAAAAAAAAAAABAAAAAQAAAAoAAAAF +AAAABQAAAAYAAAAKAAAACgAAAAYAAAAEAAAABQAAAAYAAAAFAAAABQAAAAYAAAAGAAAABgAAAAYA +AAAHAAAABwAAAAcAAAAIAAAACAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAQAA +AAIAAAABAAAAAQAAAAMAAAADAAAAAgAAAAEAAAAEAAAAAAAAAAAAAAACAAAAAQAAAAEAAAAAAAAA +AAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAsAQAAXgEAAAEA +AAABAAAAAQAAAAEAAAADAAAAAAAAAAAAAAA4GQEAxB4BAHQdAQBIHwEAwB4BAKAcAQBEHwEAmBoB +AJQaAQBg4xYAINYTAAAAAAAQAAAAAIAAAAAAoAAQJwAA6AMAAOgDAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAIAAAACAAAAAQAAAAEAAAACAAAABQAAAAIAAAACAAAABQAAAAIAAAACAAAAAQAAAAEA +AAAFAAAABQAAAAIAAAAFAAAABQAAAAAAAAAFAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAFAAAABQAA +AAAAAAAFAAAAAgAAAAIAAAAFAAAABQAAAAUAAAAAAAAABQAAAAIAAAAFAAAAAQAAAAEAAAACAAAA +AgAAAAIAAAAFAAAABQAAAAIAAAAFAAAAAQAAAAEAAAACAAAAAgAAAAIAAAAFAAAABQAAAAIAAAAC +AAAABQAAAAEAAAACAAAABQAAAAIAAAAFAAAABQAAAAQAAAAFAAAABQAAAAEAAAAFAAAABQAAAAUA +AAACAAAAAgAAAAUAAAAFAAAABQAAAAEAAAAFAAAABQAAAAUAAAACAAAAAgAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAARAAAQAAAAKAAAFCAAYCEAACIAAA +A8AAAUMABgMQAALAAAADwAABQwAGBBAAAkAAAAKAAAFEAAYFEQAAQAAAA8AAAUUABgYRAADgAAAD +wAABRQAGBxEAAQAAAAKAAAFGAAYIEQACIAAAA8AAAUcABgkRAALAAAADwAABRwAGChEAAkAAAAKA +AAFIAAYLEgAAQAAAA8AAAUkABgwSAADgAAADwAABSQAGDRIAAQAAAAKAAAFKAAYOEgACAAAAAoAA +AUwABgF4ADAAAABQAAAEtjwGAngARAAAAFAAAAS5PAYDeQAIAAAAUAAABLs8BgR5ABwAAABQAAAE +vjwGBXkAMAAAAFAAAATAPAYGeQBEAAAAUAAABMM8Bgd6AAgAAABQAAAExTwGCHoAHAAAAFAAAATI +PAYJegAwAAAAUAAABMo8Bgp6AEQAAABQAAAEzTwGC3sACAAAAFAAAATPPAYMewAcAAAAUAAABNI8 +Bg17ADAAAABQAAAE1DwGDnwAEAAAAFAAAATaPgYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgEBAAIBAAECAgIAAQEAAgECAQIA +AgABAgOAgICAgICAgAGAAoCAgICAwACQANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAAAAAAAIwKjAoAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAQAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5NkBABUA +AAADAAAACGaAAAAAAAAAAAAAAAAAAIjZAQAFAAAAAwAAAAhmgAAAAAAAAAAAAAAAAAB82QEACgAA +AAMAAAAIZoAAAAAAAAAAAAAAAAAATNYBAAoAAAAAAAAAKGaAAAAAAAAAAAAAAAAAACTYAQAKAAAA +AAAAAChmgAAAAAAAAAAAAAAAAAAk2AEACgAAAAAAAAAoZoAAAAAAAAAAAAAAAAAAJNgBAAoAAAAA +AAAAKGaAAAAAAAAAAAAAAAAAACTYAQAKAAAAAAAAAChmgAAAAAAAAAAAAAAAAAAk2AEACgAAAAAA +AAAoZoAAAAAAAAAAAAAAAAAAJNgBAAoAAAAAAAAAKGaAAAAAAAAAAAAAAAAAACTYAQAKAAAAAAAA +AChmgAAAAAAAAAAAAAAAAAAk2AEACgAAAAAAAAAoZoAAAAAAAAAAAAAAAAAAJNgBAAoAAAAAAAAA +KGaAAAAAAAAAAAAAAAAAACTYAQAKAAAAAAAAAChmgAAAAAAAAAAAAAAAAAAk2AEACgAAAAAAAAAo +ZoAAAAAAAAAAAAAAAAAAJNgBAAoAAAAAAAAAKGaAAAAAAAAAAAAAAAAAAIzbAQAGAAAAAAAAAChm +gAAAAAAAAAAAAAAAAADg2gEABQAAAAMAAAAIZoAAAAAAAAAAAAAAAAAAPNUBAAoAAAAAAAAAKGaA +AAAAAAAAAAAAAAAAANzVAQAKAAAAAAAAAChmgAAAAAAAAAAAAAAAAAAI5QEACgAAAAMAAAAIZoAA +AAAAAAAAAAAAAAAAmNYBAAoAAAAAAAAAKGaAAAAAAAAAAAAAAAAAAHzXAQAKAAAAAAAAAChmgAAA +AAAAAAAAAAAAAAAo2AEACgAAAAAAAAAoZoAAAAAAAAAAAAAAAAAA5NgBAAoAAAAAAAAAKGaAAAAA +AAAAAAAAAAAAAOjZAQAKAAAAAAAAAChmgAAAAAAAAAAAAAAAAACI2gEACgAAAAAAAAAoZoAAAAAA +AAAAAAAAAAAAAAAAAAhmgAAIZoAAuCCgAGwgoAAAgAEA/3/8/wAAAAAAAAAAKGaAAChmgACkIKAA +OCCgAAEAAAD8////AAAAAAAAAABIZoAASGaAAKggoAA8IKAAEAAAAMf///8AAAAAAAAAAGhmgABo +ZoAArCCgAHghoABAAQAAP/7//wAAAAAAAAAAiGaAAIhmgACwIKAAfCGgAAAMAAD/8f//AAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAkNYBABUAAAADAAAACGaAAAAAAAAAAAAAAAAAACwHgAA8vYAAGAAA +APy8gAAAAAAAAAAAAAAAAAB/AAAAAAAAAAB/AAAAAAAAAAAAAAAAAAAAAAAAOAAAAGgAAAB0AAAA +gAAAAIwAAACdAAAABwAAAAAAAAD/////AAAAAC0BAADdAQAAWgIAALoCAAAKAwAATQMAAIcDAAC6 +AwAA6AMAABEEAAA3BAAAWQQAAHoEAACYBAAAtAQAAM4EAADnBAAA/gQAABUFAAAqBQAAPgUAAFEF +AABkBQAAdQUAAIYFAACXBQAApwUAALYFAADFBQAA0wUAAOEFAADuBQAA+wUAAAgGAAAUBgAAIAYA +ACsGAAA3BgAAQgYAAEwGAABXBgAAYQYAAGsGAAB1BgAAfgYAAIgGAACRBgAAmgYAAKIGAACrBgAA +tAYAALwGAADEBgAAzAYAANQGAADbBgAA4wYAAOoGAADyBgAA+QYAAAAHAAAHBwAADgcAABQHAAAb +BwAAIgcAACgHAAAuBwAANQcAADsHAABBBwAARwcAAE0HAABTBwAAWAcAAF4HAABkBwAAaQcAAG8H +AAB0BwAAeQcAAH8HAACEBwAAiQcAAI4HAACTBwAAmAcAAJ0HAACiBwAApwcAAKsHAACwBwAAtQcA +ALkHAAC+BwAAwgcAAMcHAADLBwAA0AcAANQHAADYBwAA3AcAAOEHAADlBwAA6QcAAO0HAADxBwAA +9QcAAPkHAAD9BwAAAQgAAAUIAAAICAAADAgAABAIAAAUCAAAFwgAABsIAAAfCAAAIggAACYIAAAp +CAAALQgAADAIAAA0CAAANwgAADsIAAA+CAAAQQgAAEUIAABICAAASwgAAE8IAABSCAAAVQgAAFgI +AABbCAAAXwgAAGIIAABlCAAAaAgAAGsIAABuCAAAcQgAAHQIAAB3CAAAeggAAH0IAACACAAAgggA +AIUIAACICAAAiwgAAI4IAACRCAAAkwgAAJYIAACZCAAAAAAAAAEAAAAAAAAABwAAAAAAAAAAAAAA +AAAAAAABAgMEBAQEBAUGBwgICAgICQoLDA0AAG47aDtiO1w7bjpoOmI6XDpuOWg5YjlcOW4raCti +K1wrbipoKmIqXCpuKWgpYilcKW4oaChiKFwobidoJ2InXCduJmgmYiZcJm4laCViJVwlbiRoJGIk +XCRuI2gjYiNcI24iaCJiIlwibiFoIWIhXCFuIGggYiBcIGITXBNuEmgSYhJcEm4RaBFiEVwRbhBo +EGIQXBBuAmgCYgJcAm4BaAFiAVwBbgBoAFQAAABuO2g7YjtcO246aDpiOlw6bjloOWI5XDluK2gr +YitcK24qaCpiKlwqbiloKWIpXCluKGgoYihcKG4naCdiJ1wnbiZoJmImXCZuJWglYiVcJW4kaCRi +JFwkbiNoI2IjXCNuImgiYiJcIm4haCFiIVwhbiBoIGIgXCBuEmgSYhJcEm4RaBFiEVwRbhBoEGIQ +XBBXEFIQTRBJEG4BaAFiAVwBbgBoAGIAXABUAAAAAAAAAAAAAAAdAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAgwAAAJIAAACDAAAAkgAAAOgAAAD3AAAA6AAAAPcAAAAAAAAACQAAAAAAAAAKAAAA +OAAAAGgAAAB0AAAAgAAAAIwAAACdAAAABwAAAAAAAAAHAAAABwAAAAcAAAAAAAAAAAAAAAAAAAAA +AAAAEGEBAAgAAAADAAAACGaAAHgJgAD4CYAAeAqAAPgKgAAKDREUCg0RFBkZGRkKCgAAAAAAAAYG +BgYJCQkJAAYAAAAFBgcIDQ4PEBUWFxgZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAPGqysJS+srKysrKWsfpFOQwybNgAAADcAmpKPSAAADwAgaDcAAAARAD46IBEAAAIlAAAMLwAA +Ai85OQAKJTy3R2+KAAcUJ2IuAAACABcAAAUQCiAwQAAABgYKDSMbIyEAAAAMEBQYIAgEAAA8ODQw +LCgkIBwYFBAMCAQACwcDADs3My8rJyMfGxcTDwsHAzEyOjExOjM4AAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAACIAAAAQAAAAHQAAADcAAABvAAAAoAAAAHAAAAAFAAAA9gAA +AFoAAABpAAAAAAAAAGkAAAACAAAAHwAAAEgAAAAgAAAASAAAAAgAAAABAAAAMwAAAH8AAAA0AAAA +fwAAADcAAAABAAAAOAAAAE8AAAA7AAAAfwAAADwAAAB/AAAAMQAAAAAAAAAyAAAAAAAAADUAAAAA +AAAANgAAAAAAAAA5AAAAAAAAADoAAAAAAAAADQAAACoAAAAOAAAAegAAAA8AAAAQAAAA8wAAAEgA +AAD0AAAASAAAAAAAAAABAQEBAQEBAQICAgICAgICAwMDAwMDAwMBAgAAAAAAAAAAAAAEAAAABQAA +AKEDDh7hAAAAoQMOHuEAAAAAAAAACgAAABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAKEDDh7hAAAAFfZj9rD2/PZG95D32Pcf+GX4qfjt+C/5cPmw+e75K/pn+qL63PoU+0v7 +gfu2++r7HPxN/H38q/zZ/AX9MP1Z/YL9qf3P/fT9F/45/lr+ev6Y/rb+0v7t/gb/Hv81/0v/YP9z +/4X/lv+m/7T/wf/N/9j/4f/p//D/9v/6//3//////////f/6//b/8P/p/+H/2P/N/8H/tP+m/5b/ +hf9z/2D/S/81/x7/Bv/t/tL+tv6Y/nr+Wv45/hf+9P3P/an9gv1Z/TD9Bf3Z/Kv8ffxN/Bz86vu2 ++4H7S/sU+9z6ovpn+iv67vmw+XD5L/nt+Kn4Zfgf+Nj3kPdG9/z2sPZj9nC5g7qWu6q8vr3Svue/ +/MARwifDPcRTxWrGgMeXyK/Jxsrey/bMD84nz0DQWdFy0ozTptS/1drW9NcO2SnaRNtf3Hrdlt6x +383g6eEF4yHkPuVa5nfnk+iw6c3q6usH7STuQu9f8H3xmvK489X08/UR9y/4TPlq+oj7pvzE/eL+ +AAAeATwCWgN4BJYFtAbRB+8IDQorC0gMZg2DDqEPvhDcEfkSFhQzFVAWbReJGKYZwhrfG/scFx4z +H08gaiGGIqEjvCTXJfImDCgmKUEqWit0LI4tpy7AL9kw8TEKMyI0OjVRNmk3gDiWOa06wzvZPO89 +BD8ZQC5BQkJWQ2pEfUX///8A////Af8CA////wQF/wn/BwoGCAsAAQECAQICAwEBAQEBAQEBAgIC +AgICAgIDAwMDAwMDAwQEBAQEBAQEAQICAgICAgMDAwMDAwMDAwMDAwMDBAQEBAQEBAQEBAQEBAQE +BAQEBAQEBAQEAAAAOgECAdUA3wDaAKIAdQB/AIoFKgM5AagBigXKAtkASAEBAw8HChQ3bmoBGgHZ +AOgACgG6AHkAiADKAUoB4gD5AMoB6gCCAJkAdNFFF+iiiy4ABQcBAwQABQEFAAAABQYAAgQABQAF +AAABAgECAwQAAAUGBwgJCgAACQAAAAAAAAABAAAAAgAAAAMAAAAAAAAABAAAAAIAAAAFAAAABwcH +BwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBgYG +BgYFBQUFBQQEBAQEAwMDAwMCAgICAgEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAKAAwACwALAAoADwANABAADwAjABsAFgASAD0ALAA +f/8HDx8/AQMwAAAANgAAAAwAAAASAAAAGAAAACQAAAAGAAAACQAAAAUABwIDBAYGQAOABsAJAA2A +EwAaQB2AIIAGAA2AEwAaACcANIA6AEHACYATQB0AJ4A6AE7AV4BhmQMzB9kKcw6mFeYcgCAZJDMH +cw6mFeYcWSvMOQBBM0jZCqYVgCBZKwBBplaAYVlsndiJnU7sxE40SIM0J3ZiJxqkQRoTO7ETERiB +EQ/8wA9O7MROJ3ZiJxqkQRoTO7ETDdIgDYmd2AkIjMAIB37gBzRIgzQapEEaERiBEQ3SIA0IjMAI +BmmQBrCy1QUFVEAFJ3ZiJxM7sRMN0iANiZ3YCQZpkAbETuwEBEZgBAM/8AOqqqqqGqRBGhM7sRMP +/MAPERiBEQ3SIA0KqIAKEzuxEw/8wA8P/MAPDdIgDQu0QAsLtEALiZ3YCQ3SIA0KqIAKCqiACgiM +wAgHeIAHB3iABwZpkAYP/MAPDdIgDQu0QAsN0iANC7RAC4md2AkIjMAIiZ3YCQiMwAgHfuAHB37g +B8EsKQcKqIAKCIzACAd4gAcIjMAIB3iABwZpkAawstUFBmmQBrCy1QUFVEAFBVRABdYdxgQBBw8f +P3///2bmAAAFBgECAwQAAFQAVABsAGAAXABUAIwAeAANDwUHCQsBAygAKAA0ADAALAAsAEQAPAAs +ACwAPAA0ADAALABUAEQAVVVVAUtoLwFVVVUF4ziOA6qqqgJxHMcBqqqqCsdxHAcABAAAZAAAAAAA +AAAPAD8AAQAAAA8APwABAAAADwA/AAEAAAAPAD8AAQAAAA8APwABAAAADwA/AAEAAAAPAD8AAgAA +AA8APwABAAAAIhYAAIAAAAMAAAFZAAAkFgABAAAAAwAAAVoAACYWAAIAAAAEAAABWgAAKBYAAgAA +AAMAAAFbAAAqFgACgAAAAwAAAVwAACwXAAAAAAAEAAABXAAALhcAAIAAAAMAAAFdAAAwFwABAAAA +AwAAAV4AADQXAAIAAAADAAABXwAANhcAAoAAAAMAAAFgAAA4GAAAAAAABAAAAWAAADwYAAEAAAAD +AAABYgAAPhgAAgAAAAQAAAFiAABAGAACAAAAAwAAAWMAAGQbAAIAAAADAAABbwABZhsAAoAAAAMA +AAFwAAFoHAAAAAAABAAAAXAAAWwcAAEAAAADAAABcgABbhwAAgAAAAQAAAFyAAFwHAACAAAAAwAA +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 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAYAAAAEAAAALAEAAAcAAAAAAAAAEgAAAAQAAAALAAAACAAAAAQAAACYS4AACQAA +AAQAAAAQGAAACgAAAAQAAAAES4AACwAAAAQAAAD0SoAADAAAAAQAAAAQGAAADQAAAAQAAABgSoAA +DgAAAAAAAAAPAAAABAAAABYAAAA= +==== diff --git a/sys/dev/ahci/ahci.c b/sys/dev/ahci/ahci.c index 7c29bf1..e45bc50 100644 --- a/sys/dev/ahci/ahci.c +++ b/sys/dev/ahci/ahci.c @@ -229,6 +229,7 @@ static struct { {0x91301b4b, 0x00, "Marvell 88SE9130", AHCI_Q_NOBSYRES|AHCI_Q_ALTSIG}, {0x91721b4b, 0x00, "Marvell 88SE9172", AHCI_Q_NOBSYRES}, {0x91821b4b, 0x00, "Marvell 88SE9182", AHCI_Q_NOBSYRES}, + {0x91831b4b, 0x00, "Marvell 88SS9183", AHCI_Q_NOBSYRES}, {0x91a01b4b, 0x00, "Marvell 88SE91Ax", AHCI_Q_NOBSYRES}, {0x92151b4b, 0x00, "Marvell 88SE9215", AHCI_Q_NOBSYRES}, {0x92201b4b, 0x00, "Marvell 88SE9220", AHCI_Q_NOBSYRES|AHCI_Q_ALTSIG}, diff --git a/sys/dev/ath/if_ath.c b/sys/dev/ath/if_ath.c index 3c47585..b4df1d6 100644 --- a/sys/dev/ath/if_ath.c +++ b/sys/dev/ath/if_ath.c @@ -4581,17 +4581,8 @@ ath_tx_freebuf(struct ath_softc *sc, struct ath_buf *bf, int status) /* Free the buffer, it's not needed any longer */ ath_freebuf(sc, bf); - if (ni != NULL) { - /* - * Do any callback and reclaim the node reference. - */ - if (m0->m_flags & M_TXCB) - ieee80211_process_callback(ni, m0, status); - ieee80211_free_node(ni); - } - - /* Finally, we don't need this mbuf any longer */ - m_freem(m0); + /* Pass the buffer back to net80211 - completing it */ + ieee80211_tx_complete(ni, m0, status); } static struct ath_buf * diff --git a/sys/dev/cxgbe/adapter.h b/sys/dev/cxgbe/adapter.h index 2d118c4..89358d2 100644 --- a/sys/dev/cxgbe/adapter.h +++ b/sys/dev/cxgbe/adapter.h @@ -128,9 +128,9 @@ enum { RX_FL_ESIZE = EQ_ESIZE, /* 8 64bit addresses */ #if MJUMPAGESIZE != MCLBYTES - FL_BUF_SIZES = 4, /* cluster, jumbop, jumbo9k, jumbo16k */ + FL_BUF_SIZES_MAX = 5, /* cluster, jumbop, jumbo9k, jumbo16k, extra */ #else - FL_BUF_SIZES = 3, /* cluster, jumbo9k, jumbo16k */ + FL_BUF_SIZES_MAX = 4, /* cluster, jumbo9k, jumbo16k, extra */ #endif CTRL_EQ_QSIZE = 128, @@ -165,6 +165,7 @@ enum { MASTER_PF = (1 << 3), ADAP_SYSCTL_CTX = (1 << 4), TOM_INIT_DONE = (1 << 5), + BUF_PACKING_OK = (1 << 6), CXGBE_BUSY = (1 << 9), @@ -232,12 +233,11 @@ struct port_info { }; struct fl_sdesc { - struct mbuf *m; bus_dmamap_t map; caddr_t cl; - uint8_t tag_idx; /* the sc->fl_tag this map comes from */ + uint8_t tag_idx; /* the fl->tag entry this map comes from */ #ifdef INVARIANTS - __be64 ba_tag; + __be64 ba_hwtag; #endif }; @@ -359,9 +359,22 @@ struct sge_eq { uint32_t unstalled; /* recovered from stall */ }; +struct fl_buf_info { + u_int size; + int type; + int hwtag:4; /* tag in low 4 bits of the pa. */ + uma_zone_t zone; +}; +#define FL_BUF_SIZES(sc) (sc->sge.fl_buf_sizes) +#define FL_BUF_SIZE(sc, x) (sc->sge.fl_buf_info[x].size) +#define FL_BUF_TYPE(sc, x) (sc->sge.fl_buf_info[x].type) +#define FL_BUF_HWTAG(sc, x) (sc->sge.fl_buf_info[x].hwtag) +#define FL_BUF_ZONE(sc, x) (sc->sge.fl_buf_info[x].zone) + enum { FL_STARVING = (1 << 0), /* on the adapter's list of starving fl's */ FL_DOOMED = (1 << 1), /* about to be destroyed */ + FL_BUF_PACKING = (1 << 2), /* buffer packing enabled */ }; #define FL_RUNNING_LOW(fl) (fl->cap - fl->needed <= fl->lowat) @@ -370,7 +383,8 @@ enum { struct sge_fl { bus_dma_tag_t desc_tag; bus_dmamap_t desc_map; - bus_dma_tag_t tag[FL_BUF_SIZES]; + bus_dma_tag_t tag[FL_BUF_SIZES_MAX]; /* only first FL_BUF_SIZES(sc) are + valid */ uint8_t tag_idx; struct mtx fl_lock; char lockname[16]; @@ -383,11 +397,13 @@ struct sge_fl { uint16_t qsize; /* size (# of entries) of the queue */ uint16_t cntxt_id; /* SGE context id for the freelist */ uint32_t cidx; /* consumer idx (buffer idx, NOT hw desc idx) */ + uint32_t rx_offset; /* offset in fl buf (when buffer packing) */ uint32_t pidx; /* producer idx (buffer idx, NOT hw desc idx) */ uint32_t needed; /* # of buffers needed to fill up fl. */ uint32_t lowat; /* # of buffers <= this means fl needs help */ uint32_t pending; /* # of bufs allocated since last doorbell */ - unsigned int dmamap_failed; + u_int dmamap_failed; + struct mbuf *mstash[8]; TAILQ_ENTRY(sge_fl) link; /* All starving freelists */ }; @@ -519,6 +535,9 @@ struct sge { int eq_start; struct sge_iq **iqmap; /* iq->cntxt_id to iq mapping */ struct sge_eq **eqmap; /* eq->cntxt_id to eq mapping */ + + u_int fl_buf_sizes __aligned(CACHE_LINE_SIZE); + struct fl_buf_info fl_buf_info[FL_BUF_SIZES_MAX]; }; struct rss_header; @@ -559,6 +578,7 @@ struct adapter { bus_dma_tag_t dmat; /* Parent DMA tag */ struct sge sge; + int lro_timeout; struct taskqueue *tq[NCHAN]; /* taskqueues that flush data out */ struct port_info *port[MAX_NPORTS]; @@ -567,6 +587,7 @@ struct adapter { #ifdef TCP_OFFLOAD void *tom_softc; /* (struct tom_data *) */ struct tom_tunables tt; + void *iwarp_softc; /* (struct c4iw_dev *) */ #endif struct l2t_data *l2t; /* L2 table */ struct tid_info tids; diff --git a/sys/dev/cxgbe/offload.h b/sys/dev/cxgbe/offload.h index 7f4b38e..8d3cf66 100644 --- a/sys/dev/cxgbe/offload.h +++ b/sys/dev/cxgbe/offload.h @@ -123,6 +123,7 @@ struct t4_virt_res { /* virtualized HW resources */ #ifdef TCP_OFFLOAD enum { ULD_TOM = 1, + ULD_IWARP = 2, }; struct adapter; diff --git a/sys/dev/cxgbe/osdep.h b/sys/dev/cxgbe/osdep.h index 5575f61..403b535 100644 --- a/sys/dev/cxgbe/osdep.h +++ b/sys/dev/cxgbe/osdep.h @@ -45,6 +45,7 @@ #define CH_ALERT(adap, fmt, ...) log(LOG_ALERT, fmt, ##__VA_ARGS__) #define CH_WARN_RATELIMIT(adap, fmt, ...) log(LOG_WARNING, fmt, ##__VA_ARGS__) +#ifndef LINUX_TYPES_DEFINED typedef int8_t s8; typedef int16_t s16; typedef int32_t s32; @@ -156,5 +157,6 @@ strstrip(char *s) return (r); } +#endif /* LINUX_TYPES_DEFINED */ #endif diff --git a/sys/dev/cxgbe/t4_main.c b/sys/dev/cxgbe/t4_main.c index a16b32f..d905cd5 100644 --- a/sys/dev/cxgbe/t4_main.c +++ b/sys/dev/cxgbe/t4_main.c @@ -160,10 +160,10 @@ MALLOC_DEFINE(M_CXGBE, "cxgbe", "Chelsio T4/T5 Ethernet driver and services"); * Correct lock order when you need to acquire multiple locks is t4_list_lock, * then ADAPTER_LOCK, then t4_uld_list_lock. */ -static struct mtx t4_list_lock; +static struct sx t4_list_lock; static SLIST_HEAD(, adapter) t4_list; #ifdef TCP_OFFLOAD -static struct mtx t4_uld_list_lock; +static struct sx t4_uld_list_lock; static SLIST_HEAD(, uld_info) t4_uld_list; #endif @@ -568,9 +568,9 @@ t4_attach(device_t dev) snprintf(sc->lockname, sizeof(sc->lockname), "%s", device_get_nameunit(dev)); mtx_init(&sc->sc_lock, sc->lockname, 0, MTX_DEF); - mtx_lock(&t4_list_lock); + sx_xlock(&t4_list_lock); SLIST_INSERT_HEAD(&t4_list, sc, link); - mtx_unlock(&t4_list_lock); + sx_xunlock(&t4_list_lock); mtx_init(&sc->sfl_lock, "starving freelists", 0, MTX_DEF); TAILQ_INIT(&sc->sfl); @@ -600,7 +600,6 @@ t4_attach(device_t dev) t4_register_cpl_handler(sc, CPL_TRACE_PKT_T5, t5_trace_pkt); t4_init_sge_cpl_handlers(sc); - /* Prepare the adapter for operation */ rc = -t4_prep_adapter(sc); if (rc != 0) { @@ -918,9 +917,9 @@ t4_detach(device_t dev) free(sc->tids.ftid_tab, M_CXGBE); t4_destroy_dma_tag(sc); if (mtx_initialized(&sc->sc_lock)) { - mtx_lock(&t4_list_lock); + sx_xlock(&t4_list_lock); SLIST_REMOVE(&t4_list, sc, adapter, link); - mtx_unlock(&t4_list_lock); + sx_xunlock(&t4_list_lock); mtx_destroy(&sc->sc_lock); } @@ -2492,7 +2491,7 @@ get_params__post_init(struct adapter *sc) param[3] = FW_PARAM_PFVF(CQ_END); param[4] = FW_PARAM_PFVF(OCQ_START); param[5] = FW_PARAM_PFVF(OCQ_END); - rc = -t4_query_params(sc, 0, 0, 0, 6, param, val); + rc = -t4_query_params(sc, sc->mbox, sc->pf, 0, 6, param, val); if (rc != 0) { device_printf(sc->dev, "failed to query RDMA parameters(2): %d.\n", rc); @@ -4230,6 +4229,10 @@ t4_sysctls(struct adapter *sc) t4_sge_sysctls(sc, ctx, children); + sc->lro_timeout = 100; + SYSCTL_ADD_INT(ctx, children, OID_AUTO, "lro_timeout", CTLFLAG_RW, + &sc->lro_timeout, 0, "lro inactive-flush timeout (in us)"); + #ifdef SBUF_DRAIN /* * dev.t4nex.X.misc. Marked CTLFLAG_SKIP to avoid information overload. @@ -7342,7 +7345,7 @@ t4_iterate(void (*func)(struct adapter *, void *), void *arg) { struct adapter *sc; - mtx_lock(&t4_list_lock); + sx_slock(&t4_list_lock); SLIST_FOREACH(sc, &t4_list, link) { /* * func should not make any assumptions about what state sc is @@ -7350,7 +7353,7 @@ t4_iterate(void (*func)(struct adapter *, void *), void *arg) */ func(sc, arg); } - mtx_unlock(&t4_list_lock); + sx_sunlock(&t4_list_lock); } static int @@ -7578,7 +7581,7 @@ t4_register_uld(struct uld_info *ui) int rc = 0; struct uld_info *u; - mtx_lock(&t4_uld_list_lock); + sx_xlock(&t4_uld_list_lock); SLIST_FOREACH(u, &t4_uld_list, link) { if (u->uld_id == ui->uld_id) { rc = EEXIST; @@ -7589,7 +7592,7 @@ t4_register_uld(struct uld_info *ui) SLIST_INSERT_HEAD(&t4_uld_list, ui, link); ui->refcount = 0; done: - mtx_unlock(&t4_uld_list_lock); + sx_xunlock(&t4_uld_list_lock); return (rc); } @@ -7599,7 +7602,7 @@ t4_unregister_uld(struct uld_info *ui) int rc = EINVAL; struct uld_info *u; - mtx_lock(&t4_uld_list_lock); + sx_xlock(&t4_uld_list_lock); SLIST_FOREACH(u, &t4_uld_list, link) { if (u == ui) { @@ -7614,7 +7617,7 @@ t4_unregister_uld(struct uld_info *ui) } } done: - mtx_unlock(&t4_uld_list_lock); + sx_xunlock(&t4_uld_list_lock); return (rc); } @@ -7626,7 +7629,7 @@ t4_activate_uld(struct adapter *sc, int id) ASSERT_SYNCHRONIZED_OP(sc); - mtx_lock(&t4_uld_list_lock); + sx_slock(&t4_uld_list_lock); SLIST_FOREACH(ui, &t4_uld_list, link) { if (ui->uld_id == id) { @@ -7637,7 +7640,7 @@ t4_activate_uld(struct adapter *sc, int id) } } done: - mtx_unlock(&t4_uld_list_lock); + sx_sunlock(&t4_uld_list_lock); return (rc); } @@ -7650,7 +7653,7 @@ t4_deactivate_uld(struct adapter *sc, int id) ASSERT_SYNCHRONIZED_OP(sc); - mtx_lock(&t4_uld_list_lock); + sx_slock(&t4_uld_list_lock); SLIST_FOREACH(ui, &t4_uld_list, link) { if (ui->uld_id == id) { @@ -7661,7 +7664,7 @@ t4_deactivate_uld(struct adapter *sc, int id) } } done: - mtx_unlock(&t4_uld_list_lock); + sx_sunlock(&t4_uld_list_lock); return (rc); } @@ -7742,10 +7745,10 @@ mod_event(module_t mod, int cmd, void *arg) if (atomic_fetchadd_int(&loaded, 1)) break; t4_sge_modload(); - mtx_init(&t4_list_lock, "T4 adapters", 0, MTX_DEF); + sx_init(&t4_list_lock, "T4/T5 adapters"); SLIST_INIT(&t4_list); #ifdef TCP_OFFLOAD - mtx_init(&t4_uld_list_lock, "T4 ULDs", 0, MTX_DEF); + sx_init(&t4_uld_list_lock, "T4/T5 ULDs"); SLIST_INIT(&t4_uld_list); #endif t4_tracer_modload(); @@ -7757,23 +7760,23 @@ mod_event(module_t mod, int cmd, void *arg) break; t4_tracer_modunload(); #ifdef TCP_OFFLOAD - mtx_lock(&t4_uld_list_lock); + sx_slock(&t4_uld_list_lock); if (!SLIST_EMPTY(&t4_uld_list)) { rc = EBUSY; - mtx_unlock(&t4_uld_list_lock); + sx_sunlock(&t4_uld_list_lock); break; } - mtx_unlock(&t4_uld_list_lock); - mtx_destroy(&t4_uld_list_lock); + sx_sunlock(&t4_uld_list_lock); + sx_destroy(&t4_uld_list_lock); #endif - mtx_lock(&t4_list_lock); + sx_slock(&t4_list_lock); if (!SLIST_EMPTY(&t4_list)) { rc = EBUSY; - mtx_unlock(&t4_list_lock); + sx_sunlock(&t4_list_lock); break; } - mtx_unlock(&t4_list_lock); - mtx_destroy(&t4_list_lock); + sx_sunlock(&t4_list_lock); + sx_destroy(&t4_list_lock); break; } diff --git a/sys/dev/cxgbe/t4_sge.c b/sys/dev/cxgbe/t4_sge.c index 2ab1810..776b6c5 100644 --- a/sys/dev/cxgbe/t4_sge.c +++ b/sys/dev/cxgbe/t4_sge.c @@ -39,6 +39,7 @@ __FBSDID("$FreeBSD$"); #include <sys/malloc.h> #include <sys/queue.h> #include <sys/taskqueue.h> +#include <sys/time.h> #include <sys/sysctl.h> #include <sys/smp.h> #include <net/bpf.h> @@ -55,19 +56,6 @@ __FBSDID("$FreeBSD$"); #include "common/t4_regs_values.h" #include "common/t4_msg.h" -struct fl_buf_info { - int size; - int type; - uma_zone_t zone; -}; - -/* Filled up by t4_sge_modload */ -static struct fl_buf_info fl_buf_info[FL_BUF_SIZES]; - -#define FL_BUF_SIZE(x) (fl_buf_info[x].size) -#define FL_BUF_TYPE(x) (fl_buf_info[x].type) -#define FL_BUF_ZONE(x) (fl_buf_info[x].zone) - #ifdef T4_PKT_TIMESTAMP #define RX_COPY_THRESHOLD (MINCLSIZE - 8) #else @@ -84,7 +72,8 @@ TUNABLE_INT("hw.cxgbe.fl_pktshift", &fl_pktshift); /* * Pad ethernet payload up to this boundary. * -1: driver should figure out a good value. - * Any power of 2, from 32 to 4096 (both inclusive) is a valid value. + * 0: disable padding. + * Any power of 2 from 32 to 4096 (both inclusive) is also a valid value. */ static int fl_pad = -1; TUNABLE_INT("hw.cxgbe.fl_pad", &fl_pad); @@ -106,6 +95,33 @@ TUNABLE_INT("hw.cxgbe.spg_len", &spg_len); static int cong_drop = 0; TUNABLE_INT("hw.cxgbe.cong_drop", &cong_drop); +/* + * Deliver multiple frames in the same free list buffer if they fit. + * -1: let the driver decide whether to enable buffer packing or not. + * 0: disable buffer packing. + * 1: enable buffer packing. + */ +static int buffer_packing = -1; +TUNABLE_INT("hw.cxgbe.buffer_packing", &buffer_packing); + +/* + * Start next frame in a packed buffer at this boundary. + * -1: driver should figure out a good value. + * T4: + * --- + * if fl_pad != 0 + * value specified here will be overridden by fl_pad. + * else + * power of 2 from 32 to 4096 (both inclusive) is a valid value here. + * T5: + * --- + * 16, or a power of 2 from 64 to 4096 (both inclusive) is a valid value. + */ +static int fl_pack = -1; +static int t4_fl_pack; +static int t5_fl_pack; +TUNABLE_INT("hw.cxgbe.fl_pack", &fl_pack); + /* Used to track coalesced tx work request */ struct txpkts { uint64_t *flitp; /* ptr to flit where next pkt should start */ @@ -122,12 +138,15 @@ struct sgl { }; static int service_iq(struct sge_iq *, int); -static struct mbuf *get_fl_payload(struct adapter *, struct sge_fl *, uint32_t, +static struct mbuf *get_fl_payload1(struct adapter *, struct sge_fl *, uint32_t, + int *); +static struct mbuf *get_fl_payload2(struct adapter *, struct sge_fl *, uint32_t, int *); static int t4_eth_rx(struct sge_iq *, const struct rss_header *, struct mbuf *); static inline void init_iq(struct sge_iq *, struct adapter *, int, int, int, int); -static inline void init_fl(struct sge_fl *, int, int, char *); +static inline void init_fl(struct adapter *, struct sge_fl *, int, int, int, + char *); static inline void init_eq(struct sge_eq *, int, int, uint8_t, uint16_t, char *); static int alloc_ring(struct adapter *, size_t, bus_dma_tag_t *, bus_dmamap_t *, @@ -169,8 +188,8 @@ static inline void ring_fl_db(struct adapter *, struct sge_fl *); static int refill_fl(struct adapter *, struct sge_fl *, int); static void refill_sfl(void *); static int alloc_fl_sdesc(struct sge_fl *); -static void free_fl_sdesc(struct sge_fl *); -static void set_fl_tag_idx(struct sge_fl *, int); +static void free_fl_sdesc(struct adapter *, struct sge_fl *); +static void set_fl_tag_idx(struct adapter *, struct sge_fl *, int); static void add_fl_to_sfl(struct adapter *, struct sge_fl *); static int get_pkt_sgl(struct sge_txq *, struct mbuf **, struct sgl *, int); @@ -201,27 +220,20 @@ extern u_int cpu_clflush_line_size; #endif /* - * Called on MOD_LOAD. Fills up fl_buf_info[] and validates/calculates the SGE - * tunables. + * Called on MOD_LOAD. Validates and calculates the SGE tunables. */ void t4_sge_modload(void) { - int i; - int bufsize[FL_BUF_SIZES] = { - MCLBYTES, -#if MJUMPAGESIZE != MCLBYTES - MJUMPAGESIZE, -#endif - MJUM9BYTES, - MJUM16BYTES - }; + int pad; - for (i = 0; i < FL_BUF_SIZES; i++) { - FL_BUF_SIZE(i) = bufsize[i]; - FL_BUF_TYPE(i) = m_gettype(bufsize[i]); - FL_BUF_ZONE(i) = m_getzone(bufsize[i]); - } + /* set pad to a reasonable powerof2 between 16 and 4096 (inclusive) */ +#if defined(__i386__) || defined(__amd64__) + pad = max(cpu_clflush_line_size, 16); +#else + pad = max(CACHE_LINE_SIZE, 16); +#endif + pad = min(pad, 4096); if (fl_pktshift < 0 || fl_pktshift > 7) { printf("Invalid hw.cxgbe.fl_pktshift value (%d)," @@ -229,23 +241,35 @@ t4_sge_modload(void) fl_pktshift = 2; } - if (fl_pad < 32 || fl_pad > 4096 || !powerof2(fl_pad)) { - int pad; - -#if defined(__i386__) || defined(__amd64__) - pad = max(cpu_clflush_line_size, 32); -#else - pad = max(CACHE_LINE_SIZE, 32); -#endif - pad = min(pad, 4096); + if (fl_pad != 0 && + (fl_pad < 32 || fl_pad > 4096 || !powerof2(fl_pad))) { if (fl_pad != -1) { printf("Invalid hw.cxgbe.fl_pad value (%d)," - " using %d instead.\n", fl_pad, pad); + " using %d instead.\n", fl_pad, max(pad, 32)); } - fl_pad = pad; + fl_pad = max(pad, 32); } + /* + * T4 has the same pad and pack boundary. If a pad boundary is set, + * pack boundary must be set to the same value. Otherwise take the + * specified value or auto-calculate something reasonable. + */ + if (fl_pad) + t4_fl_pack = fl_pad; + else if (fl_pack < 32 || fl_pack > 4096 || !powerof2(fl_pack)) + t4_fl_pack = max(pad, 32); + else + t4_fl_pack = fl_pack; + + /* T5's pack boundary is independent of the pad boundary. */ + if (fl_pack < 16 || fl_pack == 32 || fl_pack > 4096 || + !powerof2(fl_pack)) + t5_fl_pack = max(pad, 64); + else + t5_fl_pack = fl_pack; + if (spg_len != 64 && spg_len != 128) { int len; @@ -291,17 +315,41 @@ t4_tweak_chip_settings(struct adapter *sc) int timer_max = M_TIMERVALUE0 * 1000 / sc->params.vpd.cclk; int intr_pktcount[SGE_NCOUNTERS] = {1, 8, 16, 32}; /* 63 max */ uint16_t indsz = min(RX_COPY_THRESHOLD - 1, M_INDICATESIZE); + int sw_flbuf_sizes[] = { + MCLBYTES, +#if MJUMPAGESIZE != MCLBYTES + MJUMPAGESIZE, +#endif + MJUM9BYTES, + MJUM16BYTES, + MJUMPAGESIZE - MSIZE + }; KASSERT(sc->flags & MASTER_PF, ("%s: trying to change chip settings when not master.", __func__)); - m = V_PKTSHIFT(M_PKTSHIFT) | F_RXPKTCPLMODE | - V_INGPADBOUNDARY(M_INGPADBOUNDARY) | F_EGRSTATUSPAGESIZE; + m = V_PKTSHIFT(M_PKTSHIFT) | F_RXPKTCPLMODE | F_EGRSTATUSPAGESIZE; v = V_PKTSHIFT(fl_pktshift) | F_RXPKTCPLMODE | - V_INGPADBOUNDARY(ilog2(fl_pad) - 5) | V_EGRSTATUSPAGESIZE(spg_len == 128); + if (is_t4(sc) && (fl_pad || buffer_packing)) { + /* t4_fl_pack has the correct value even when fl_pad = 0 */ + m |= V_INGPADBOUNDARY(M_INGPADBOUNDARY); + v |= V_INGPADBOUNDARY(ilog2(t4_fl_pack) - 5); + } else if (is_t5(sc) && fl_pad) { + m |= V_INGPADBOUNDARY(M_INGPADBOUNDARY); + v |= V_INGPADBOUNDARY(ilog2(fl_pad) - 5); + } t4_set_reg_field(sc, A_SGE_CONTROL, m, v); + if (is_t5(sc) && buffer_packing) { + m = V_INGPACKBOUNDARY(M_INGPACKBOUNDARY); + if (t5_fl_pack == 16) + v = V_INGPACKBOUNDARY(0); + else + v = V_INGPACKBOUNDARY(ilog2(t5_fl_pack) - 5); + t4_set_reg_field(sc, A_SGE_CONTROL2, m, v); + } + v = V_HOSTPAGESIZEPF0(PAGE_SHIFT - 10) | V_HOSTPAGESIZEPF1(PAGE_SHIFT - 10) | V_HOSTPAGESIZEPF2(PAGE_SHIFT - 10) | @@ -312,9 +360,9 @@ t4_tweak_chip_settings(struct adapter *sc) V_HOSTPAGESIZEPF7(PAGE_SHIFT - 10); t4_write_reg(sc, A_SGE_HOST_PAGE_SIZE, v); - for (i = 0; i < FL_BUF_SIZES; i++) { + for (i = 0; i < min(nitems(sw_flbuf_sizes), 16); i++) { t4_write_reg(sc, A_SGE_FL_BUFFER_SIZE0 + (4 * i), - FL_BUF_SIZE(i)); + sw_flbuf_sizes[i]); } v = V_THRESHOLD_0(intr_pktcount[0]) | V_THRESHOLD_1(intr_pktcount[1]) | @@ -375,21 +423,48 @@ int t4_read_chip_settings(struct adapter *sc) { struct sge *s = &sc->sge; - int i, rc = 0; + int i, j, n, rc = 0; uint32_t m, v, r; uint16_t indsz = min(RX_COPY_THRESHOLD - 1, M_INDICATESIZE); + uint32_t sge_flbuf_sizes[16], sw_flbuf_sizes[] = { + MCLBYTES, +#if MJUMPAGESIZE != MCLBYTES + MJUMPAGESIZE, +#endif + MJUM9BYTES, + MJUM16BYTES + }; - m = V_PKTSHIFT(M_PKTSHIFT) | F_RXPKTCPLMODE | - V_INGPADBOUNDARY(M_INGPADBOUNDARY) | F_EGRSTATUSPAGESIZE; + m = V_PKTSHIFT(M_PKTSHIFT) | F_RXPKTCPLMODE | F_EGRSTATUSPAGESIZE; v = V_PKTSHIFT(fl_pktshift) | F_RXPKTCPLMODE | - V_INGPADBOUNDARY(ilog2(fl_pad) - 5) | V_EGRSTATUSPAGESIZE(spg_len == 128); + if (is_t4(sc) && (fl_pad || buffer_packing)) { + m |= V_INGPADBOUNDARY(M_INGPADBOUNDARY); + v |= V_INGPADBOUNDARY(ilog2(t4_fl_pack) - 5); + } else if (is_t5(sc) && fl_pad) { + m |= V_INGPADBOUNDARY(M_INGPADBOUNDARY); + v |= V_INGPADBOUNDARY(ilog2(fl_pad) - 5); + } r = t4_read_reg(sc, A_SGE_CONTROL); if ((r & m) != v) { device_printf(sc->dev, "invalid SGE_CONTROL(0x%x)\n", r); rc = EINVAL; } + if (is_t5(sc) && buffer_packing) { + m = V_INGPACKBOUNDARY(M_INGPACKBOUNDARY); + if (t5_fl_pack == 16) + v = V_INGPACKBOUNDARY(0); + else + v = V_INGPACKBOUNDARY(ilog2(t5_fl_pack) - 5); + r = t4_read_reg(sc, A_SGE_CONTROL2); + if ((r & m) != v) { + device_printf(sc->dev, + "invalid SGE_CONTROL2(0x%x)\n", r); + rc = EINVAL; + } + } + v = V_HOSTPAGESIZEPF0(PAGE_SHIFT - 10) | V_HOSTPAGESIZEPF1(PAGE_SHIFT - 10) | V_HOSTPAGESIZEPF2(PAGE_SHIFT - 10) | @@ -404,14 +479,45 @@ t4_read_chip_settings(struct adapter *sc) rc = EINVAL; } - for (i = 0; i < FL_BUF_SIZES; i++) { - v = t4_read_reg(sc, A_SGE_FL_BUFFER_SIZE0 + (4 * i)); - if (v != FL_BUF_SIZE(i)) { - device_printf(sc->dev, - "invalid SGE_FL_BUFFER_SIZE[%d](0x%x)\n", i, v); - rc = EINVAL; + /* + * Make a list of SGE FL buffer sizes programmed in the chip and tally + * it with the FL buffer sizes that we'd like to use. + */ + n = 0; + for (i = 0; i < nitems(sge_flbuf_sizes); i++) { + r = t4_read_reg(sc, A_SGE_FL_BUFFER_SIZE0 + (4 * i)); + sge_flbuf_sizes[i] = r; + if (r == MJUMPAGESIZE - MSIZE && + (sc->flags & BUF_PACKING_OK) == 0) { + sc->flags |= BUF_PACKING_OK; + FL_BUF_HWTAG(sc, n) = i; + FL_BUF_SIZE(sc, n) = MJUMPAGESIZE - MSIZE; + FL_BUF_TYPE(sc, n) = m_gettype(MJUMPAGESIZE); + FL_BUF_ZONE(sc, n) = m_getzone(MJUMPAGESIZE); + n++; + } + } + for (i = 0; i < nitems(sw_flbuf_sizes); i++) { + for (j = 0; j < nitems(sge_flbuf_sizes); j++) { + if (sw_flbuf_sizes[i] != sge_flbuf_sizes[j]) + continue; + FL_BUF_HWTAG(sc, n) = j; + FL_BUF_SIZE(sc, n) = sw_flbuf_sizes[i]; + FL_BUF_TYPE(sc, n) = m_gettype(sw_flbuf_sizes[i]); + FL_BUF_ZONE(sc, n) = m_getzone(sw_flbuf_sizes[i]); + n++; + break; } } + if (n == 0) { + device_printf(sc->dev, "no usable SGE FL buffer size.\n"); + rc = EINVAL; + } else if (n == 1 && (sc->flags & BUF_PACKING_OK)) { + device_printf(sc->dev, + "no usable SGE FL buffer size when not packing buffers.\n"); + rc = EINVAL; + } + FL_BUF_SIZES(sc) = n; r = t4_read_reg(sc, A_SGE_INGRESS_RX_THRESHOLD); s->counter_val[0] = G_THRESHOLD_0(r); @@ -498,6 +604,17 @@ t4_create_dma_tag(struct adapter *sc) return (rc); } +static inline int +enable_buffer_packing(struct adapter *sc) +{ + + if (sc->flags & BUF_PACKING_OK && + ((is_t5(sc) && buffer_packing) || /* 1 or -1 both ok for T5 */ + (is_t4(sc) && buffer_packing == 1))) + return (1); + return (0); +} + void t4_sge_sysctls(struct adapter *sc, struct sysctl_ctx_list *ctx, struct sysctl_oid_list *children) @@ -514,6 +631,14 @@ t4_sge_sysctls(struct adapter *sc, struct sysctl_ctx_list *ctx, SYSCTL_ADD_INT(ctx, children, OID_AUTO, "cong_drop", CTLFLAG_RD, NULL, cong_drop, "congestion drop setting"); + + SYSCTL_ADD_INT(ctx, children, OID_AUTO, "buffer_packing", CTLFLAG_RD, + NULL, enable_buffer_packing(sc), + "pack multiple frames in one fl buffer"); + + SYSCTL_ADD_INT(ctx, children, OID_AUTO, "fl_pack", CTLFLAG_RD, + NULL, is_t5(sc) ? t5_fl_pack : t4_fl_pack, + "payload pack boundary (bytes)"); } int @@ -705,7 +830,7 @@ t4_setup_port_queues(struct port_info *pi) struct ifnet *ifp = pi->ifp; struct sysctl_oid *oid = device_get_sysctl_tree(pi->dev); struct sysctl_oid_list *children = SYSCTL_CHILDREN(oid); - int bufsize; + int bufsize, pack; oid = SYSCTL_ADD_NODE(&pi->ctx, children, OID_AUTO, "rxq", CTLFLAG_RD, NULL, "rx queues"); @@ -727,6 +852,7 @@ t4_setup_port_queues(struct port_info *pi) * b) allocate queue iff it will take direct interrupts. */ bufsize = mtu_to_bufsize(ifp->if_mtu); + pack = enable_buffer_packing(sc); for_each_rxq(pi, i, rxq) { init_iq(&rxq->iq, sc, pi->tmr_idx, pi->pktc_idx, pi->qsize_rxq, @@ -734,7 +860,7 @@ t4_setup_port_queues(struct port_info *pi) snprintf(name, sizeof(name), "%s rxq%d-fl", device_get_nameunit(pi->dev), i); - init_fl(&rxq->fl, pi->qsize_rxq / 8, bufsize, name); + init_fl(sc, &rxq->fl, pi->qsize_rxq / 8, bufsize, pack, name); if (sc->flags & INTR_DIRECT #ifdef TCP_OFFLOAD @@ -751,6 +877,7 @@ t4_setup_port_queues(struct port_info *pi) #ifdef TCP_OFFLOAD bufsize = mtu_to_bufsize_toe(sc, ifp->if_mtu); + pack = 0; /* XXX: think about this some more */ for_each_ofld_rxq(pi, i, ofld_rxq) { init_iq(&ofld_rxq->iq, sc, pi->tmr_idx, pi->pktc_idx, @@ -758,7 +885,8 @@ t4_setup_port_queues(struct port_info *pi) snprintf(name, sizeof(name), "%s ofld_rxq%d-fl", device_get_nameunit(pi->dev), i); - init_fl(&ofld_rxq->fl, pi->qsize_rxq / 8, bufsize, name); + init_fl(sc, &ofld_rxq->fl, pi->qsize_rxq / 8, bufsize, pack, + name); if (sc->flags & INTR_DIRECT || (sc->intr_count > 1 && pi->nofldrxq > pi->nrxq)) { @@ -1006,6 +1134,9 @@ service_iq(struct sge_iq *iq, int budget) uint32_t lq; struct mbuf *m0; STAILQ_HEAD(, sge_iq) iql = STAILQ_HEAD_INITIALIZER(iql); +#if defined(INET) || defined(INET6) + const struct timeval lro_timeout = {0, sc->lro_timeout}; +#endif limit = budget ? budget : iq->qsize / 8; @@ -1032,7 +1163,12 @@ service_iq(struct sge_iq *iq, int budget) ("%s: data for an iq (%p) with no freelist", __func__, iq)); - m0 = get_fl_payload(sc, fl, lq, &fl_bufs_used); + m0 = fl->flags & FL_BUF_PACKING ? + get_fl_payload1(sc, fl, lq, &fl_bufs_used) : + get_fl_payload2(sc, fl, lq, &fl_bufs_used); + + if (__predict_false(m0 == NULL)) + goto process_iql; #ifdef T4_PKT_TIMESTAMP /* * 60 bit timestamp for the payload is @@ -1069,6 +1205,17 @@ service_iq(struct sge_iq *iq, int budget) ("%s: budget %u, rsp_type %u", __func__, budget, rsp_type)); + /* + * There are 1K interrupt-capable queues (qids 0 + * through 1023). A response type indicating a + * forwarded interrupt with a qid >= 1K is an + * iWARP async notification. + */ + if (lq >= 1024) { + sc->an_handler(iq, ctrl); + break; + } + q = sc->sge.iqmap[lq - sc->sge.iq_start]; if (atomic_cmpset_int(&q->state, IQS_IDLE, IQS_BUSY)) { @@ -1083,7 +1230,12 @@ service_iq(struct sge_iq *iq, int budget) break; default: - sc->an_handler(iq, ctrl); + KASSERT(0, + ("%s: illegal response type %d on iq %p", + __func__, rsp_type, iq)); + log(LOG_ERR, + "%s: illegal response type %d on iq %p", + device_get_nameunit(sc->dev), rsp_type, iq); break; } @@ -1095,6 +1247,14 @@ service_iq(struct sge_iq *iq, int budget) V_SEINTARM(V_QINTR_TIMER_IDX(X_TIMERREG_UPDATE_CIDX))); ndescs = 0; +#if defined(INET) || defined(INET6) + if (iq->flags & IQ_LRO_ENABLED && + sc->lro_timeout != 0) { + tcp_lro_flush_inactive(&rxq->lro, + &lro_timeout); + } +#endif + if (fl_bufs_used > 0) { FL_LOCK(fl); fl->needed += fl_bufs_used; @@ -1108,6 +1268,7 @@ service_iq(struct sge_iq *iq, int budget) } } +process_iql: if (STAILQ_EMPTY(&iql)) break; @@ -1153,13 +1314,102 @@ service_iq(struct sge_iq *iq, int budget) return (0); } +static int +fill_mbuf_stash(struct sge_fl *fl) +{ + int i; + + for (i = 0; i < nitems(fl->mstash); i++) { + if (fl->mstash[i] == NULL) { + struct mbuf *m; + if ((m = m_get(M_NOWAIT, MT_NOINIT)) == NULL) + return (ENOBUFS); + fl->mstash[i] = m; + } + } + return (0); +} + static struct mbuf * -get_fl_payload(struct adapter *sc, struct sge_fl *fl, uint32_t len_newbuf, +get_mbuf_from_stash(struct sge_fl *fl) +{ + int i; + + for (i = 0; i < nitems(fl->mstash); i++) { + if (fl->mstash[i] != NULL) { + struct mbuf *m; + + m = fl->mstash[i]; + fl->mstash[i] = NULL; + return (m); + } else + fl->mstash[i] = m_get(M_NOWAIT, MT_NOINIT); + } + + return (m_get(M_NOWAIT, MT_NOINIT)); +} + +static void +return_mbuf_to_stash(struct sge_fl *fl, struct mbuf *m) +{ + int i; + + if (m == NULL) + return; + + for (i = 0; i < nitems(fl->mstash); i++) { + if (fl->mstash[i] == NULL) { + fl->mstash[i] = m; + return; + } + } + m_init(m, NULL, 0, M_NOWAIT, MT_DATA, 0); + m_free(m); +} + +/* buf can be any address within the buffer */ +static inline u_int * +find_buf_refcnt(caddr_t buf) +{ + uintptr_t ptr = (uintptr_t)buf; + + return ((u_int *)((ptr & ~(MJUMPAGESIZE - 1)) + MSIZE - sizeof(u_int))); +} + +static inline struct mbuf * +find_buf_mbuf(caddr_t buf) +{ + uintptr_t ptr = (uintptr_t)buf; + + return ((struct mbuf *)(ptr & ~(MJUMPAGESIZE - 1))); +} + +static int +rxb_free(struct mbuf *m, void *arg1, void *arg2) +{ + uma_zone_t zone = arg1; + caddr_t cl = arg2; +#ifdef INVARIANTS + u_int refcount; + + refcount = *find_buf_refcnt(cl); + KASSERT(refcount == 0, ("%s: cl %p refcount is %u", __func__, + cl - MSIZE, refcount)); +#endif + cl -= MSIZE; + uma_zfree(zone, cl); + + return (EXT_FREE_OK); +} + +static struct mbuf * +get_fl_payload1(struct adapter *sc, struct sge_fl *fl, uint32_t len_newbuf, int *fl_bufs_used) { struct mbuf *m0, *m; struct fl_sdesc *sd = &fl->sdesc[fl->cidx]; unsigned int nbuf, len; + int pack_boundary = is_t4(sc) ? t4_fl_pack : t5_fl_pack; /* * No assertion for the fl lock because we don't need it. This routine @@ -1170,29 +1420,194 @@ get_fl_payload(struct adapter *sc, struct sge_fl *fl, uint32_t len_newbuf, * lock but this routine does not). */ + KASSERT(fl->flags & FL_BUF_PACKING, + ("%s: buffer packing disabled for fl %p", __func__, fl)); + + len = G_RSPD_LEN(len_newbuf); + + if ((len_newbuf & F_RSPD_NEWBUF) == 0) { + KASSERT(fl->rx_offset > 0, + ("%s: packed frame but driver at offset=0", __func__)); + + /* A packed frame is guaranteed to fit entirely in this buf. */ + KASSERT(FL_BUF_SIZE(sc, sd->tag_idx) - fl->rx_offset >= len, + ("%s: packing error. bufsz=%u, offset=%u, len=%u", + __func__, FL_BUF_SIZE(sc, sd->tag_idx), fl->rx_offset, + len)); + + m0 = get_mbuf_from_stash(fl); + if (m0 == NULL || + m_init(m0, NULL, 0, M_NOWAIT, MT_DATA, M_PKTHDR) != 0) { + return_mbuf_to_stash(fl, m0); + return (NULL); + } + + bus_dmamap_sync(fl->tag[sd->tag_idx], sd->map, + BUS_DMASYNC_POSTREAD); + if (len < RX_COPY_THRESHOLD) { +#ifdef T4_PKT_TIMESTAMP + /* Leave room for a timestamp */ + m0->m_data += 8; +#endif + bcopy(sd->cl + fl->rx_offset, mtod(m0, caddr_t), len); + m0->m_pkthdr.len = len; + m0->m_len = len; + } else { + m0->m_pkthdr.len = len; + m0->m_len = len; + m_extaddref(m0, sd->cl + fl->rx_offset, + roundup2(m0->m_len, fl_pad), + find_buf_refcnt(sd->cl), rxb_free, + FL_BUF_ZONE(sc, sd->tag_idx), sd->cl); + } + fl->rx_offset += len; + fl->rx_offset = roundup2(fl->rx_offset, fl_pad); + fl->rx_offset = roundup2(fl->rx_offset, pack_boundary); + if (fl->rx_offset >= FL_BUF_SIZE(sc, sd->tag_idx)) { + fl->rx_offset = 0; + (*fl_bufs_used) += 1; + if (__predict_false(++fl->cidx == fl->cap)) + fl->cidx = 0; + } + + return (m0); + } + + KASSERT(len_newbuf & F_RSPD_NEWBUF, + ("%s: only new buffer handled here", __func__)); + + nbuf = 0; + + /* + * Move to the start of the next buffer if we are still in the middle of + * some buffer. This is the case where there was some room left in the + * previous buffer but not enough to fit this frame in its entirety. + */ + if (fl->rx_offset > 0) { + KASSERT(roundup2(len, fl_pad) > FL_BUF_SIZE(sc, sd->tag_idx) - + fl->rx_offset, ("%s: frame (%u bytes) should have fit at " + "cidx %u offset %u bufsize %u", __func__, len, fl->cidx, + fl->rx_offset, FL_BUF_SIZE(sc, sd->tag_idx))); + nbuf++; + fl->rx_offset = 0; + sd++; + if (__predict_false(++fl->cidx == fl->cap)) { + sd = fl->sdesc; + fl->cidx = 0; + } + } + + m0 = find_buf_mbuf(sd->cl); + if (m_init(m0, NULL, 0, M_NOWAIT, MT_DATA, M_PKTHDR | M_NOFREE)) + goto done; + bus_dmamap_sync(fl->tag[sd->tag_idx], sd->map, BUS_DMASYNC_POSTREAD); + m0->m_len = min(len, FL_BUF_SIZE(sc, sd->tag_idx)); + m_extaddref(m0, sd->cl, roundup2(m0->m_len, fl_pad), + find_buf_refcnt(sd->cl), rxb_free, FL_BUF_ZONE(sc, sd->tag_idx), + sd->cl); + m0->m_pkthdr.len = len; + + fl->rx_offset = roundup2(m0->m_len, fl_pad); + fl->rx_offset = roundup2(fl->rx_offset, pack_boundary); + if (fl->rx_offset >= FL_BUF_SIZE(sc, sd->tag_idx)) { + fl->rx_offset = 0; + nbuf++; + sd++; + if (__predict_false(++fl->cidx == fl->cap)) { + sd = fl->sdesc; + fl->cidx = 0; + } + } + + m = m0; + len -= m->m_len; + + while (len > 0) { + m->m_next = find_buf_mbuf(sd->cl); + m = m->m_next; + + bus_dmamap_sync(fl->tag[sd->tag_idx], sd->map, + BUS_DMASYNC_POSTREAD); + + /* m_init for !M_PKTHDR can't fail so don't bother */ + m_init(m, NULL, 0, M_NOWAIT, MT_DATA, M_NOFREE); + m->m_len = min(len, FL_BUF_SIZE(sc, sd->tag_idx)); + m_extaddref(m, sd->cl, roundup2(m->m_len, fl_pad), + find_buf_refcnt(sd->cl), rxb_free, + FL_BUF_ZONE(sc, sd->tag_idx), sd->cl); + + fl->rx_offset = roundup2(m->m_len, fl_pad); + fl->rx_offset = roundup2(fl->rx_offset, pack_boundary); + if (fl->rx_offset >= FL_BUF_SIZE(sc, sd->tag_idx)) { + fl->rx_offset = 0; + nbuf++; + sd++; + if (__predict_false(++fl->cidx == fl->cap)) { + sd = fl->sdesc; + fl->cidx = 0; + } + } + + len -= m->m_len; + } +done: + (*fl_bufs_used) += nbuf; + return (m0); +} + +static struct mbuf * +get_fl_payload2(struct adapter *sc, struct sge_fl *fl, uint32_t len_newbuf, + int *fl_bufs_used) +{ + struct mbuf *m0, *m; + struct fl_sdesc *sd = &fl->sdesc[fl->cidx]; + unsigned int nbuf, len; + + /* + * No assertion for the fl lock because we don't need it. This routine + * is called only from the rx interrupt handler and it only updates + * fl->cidx. (Contrast that with fl->pidx/fl->needed which could be + * updated in the rx interrupt handler or the starvation helper routine. + * That's why code that manipulates fl->pidx/fl->needed needs the fl + * lock but this routine does not). + */ + + KASSERT((fl->flags & FL_BUF_PACKING) == 0, + ("%s: buffer packing enabled for fl %p", __func__, fl)); if (__predict_false((len_newbuf & F_RSPD_NEWBUF) == 0)) panic("%s: cannot handle packed frames", __func__); len = G_RSPD_LEN(len_newbuf); - m0 = sd->m; - sd->m = NULL; /* consumed */ + /* + * We never want to run out of mbufs in between a frame when a frame + * spans multiple fl buffers. If the fl's mbuf stash isn't full and + * can't be filled up to the brim then fail early. + */ + if (len > FL_BUF_SIZE(sc, sd->tag_idx) && fill_mbuf_stash(fl) != 0) + return (NULL); + + m0 = get_mbuf_from_stash(fl); + if (m0 == NULL || + m_init(m0, NULL, 0, M_NOWAIT, MT_DATA, M_PKTHDR) != 0) { + return_mbuf_to_stash(fl, m0); + return (NULL); + } bus_dmamap_sync(fl->tag[sd->tag_idx], sd->map, BUS_DMASYNC_POSTREAD); - m_init(m0, NULL, 0, M_NOWAIT, MT_DATA, M_PKTHDR); -#ifdef T4_PKT_TIMESTAMP - /* Leave room for a timestamp */ - m0->m_data += 8; -#endif if (len < RX_COPY_THRESHOLD) { +#ifdef T4_PKT_TIMESTAMP + /* Leave room for a timestamp */ + m0->m_data += 8; +#endif /* copy data to mbuf, buffer will be recycled */ bcopy(sd->cl, mtod(m0, caddr_t), len); m0->m_len = len; } else { bus_dmamap_unload(fl->tag[sd->tag_idx], sd->map); - m_cljset(m0, sd->cl, FL_BUF_TYPE(sd->tag_idx)); + m_cljset(m0, sd->cl, FL_BUF_TYPE(sc, sd->tag_idx)); sd->cl = NULL; /* consumed */ - m0->m_len = min(len, FL_BUF_SIZE(sd->tag_idx)); + m0->m_len = min(len, FL_BUF_SIZE(sc, sd->tag_idx)); } m0->m_pkthdr.len = len; @@ -1207,23 +1622,23 @@ get_fl_payload(struct adapter *sc, struct sge_fl *fl, uint32_t len_newbuf, nbuf = 1; /* # of fl buffers used */ while (len > 0) { - m->m_next = sd->m; - sd->m = NULL; /* consumed */ + /* Can't fail, we checked earlier that the stash was full. */ + m->m_next = get_mbuf_from_stash(fl); m = m->m_next; bus_dmamap_sync(fl->tag[sd->tag_idx], sd->map, BUS_DMASYNC_POSTREAD); + /* m_init for !M_PKTHDR can't fail so don't bother */ m_init(m, NULL, 0, M_NOWAIT, MT_DATA, 0); if (len <= MLEN) { bcopy(sd->cl, mtod(m, caddr_t), len); m->m_len = len; } else { - bus_dmamap_unload(fl->tag[sd->tag_idx], - sd->map); - m_cljset(m, sd->cl, FL_BUF_TYPE(sd->tag_idx)); + bus_dmamap_unload(fl->tag[sd->tag_idx], sd->map); + m_cljset(m, sd->cl, FL_BUF_TYPE(sc, sd->tag_idx)); sd->cl = NULL; /* consumed */ - m->m_len = min(len, FL_BUF_SIZE(sd->tag_idx)); + m->m_len = min(len, FL_BUF_SIZE(sc, sd->tag_idx)); } sd++; @@ -1588,6 +2003,7 @@ void t4_update_fl_bufsize(struct ifnet *ifp) { struct port_info *pi = ifp->if_softc; + struct adapter *sc = pi->adapter; struct sge_rxq *rxq; #ifdef TCP_OFFLOAD struct sge_ofld_rxq *ofld_rxq; @@ -1600,7 +2016,7 @@ t4_update_fl_bufsize(struct ifnet *ifp) fl = &rxq->fl; FL_LOCK(fl); - set_fl_tag_idx(fl, bufsize); + set_fl_tag_idx(sc, fl, bufsize); FL_UNLOCK(fl); } #ifdef TCP_OFFLOAD @@ -1609,7 +2025,7 @@ t4_update_fl_bufsize(struct ifnet *ifp) fl = &ofld_rxq->fl; FL_LOCK(fl); - set_fl_tag_idx(fl, bufsize); + set_fl_tag_idx(sc, fl, bufsize); FL_UNLOCK(fl); } #endif @@ -1643,11 +2059,15 @@ init_iq(struct sge_iq *iq, struct adapter *sc, int tmr_idx, int pktc_idx, } static inline void -init_fl(struct sge_fl *fl, int qsize, int bufsize, char *name) +init_fl(struct adapter *sc, struct sge_fl *fl, int qsize, int bufsize, int pack, + char *name) { + fl->qsize = qsize; strlcpy(fl->lockname, name, sizeof(fl->lockname)); - set_fl_tag_idx(fl, bufsize); + if (pack) + fl->flags |= FL_BUF_PACKING; + set_fl_tag_idx(sc, fl, bufsize); } static inline void @@ -1776,7 +2196,7 @@ alloc_iq_fl(struct port_info *pi, struct sge_iq *iq, struct sge_fl *fl, if (fl) { mtx_init(&fl->fl_lock, fl->lockname, NULL, MTX_DEF); - for (i = 0; i < FL_BUF_SIZES; i++) { + for (i = 0; i < FL_BUF_SIZES(sc); i++) { /* * A freelist buffer must be 16 byte aligned as the SGE @@ -1785,8 +2205,8 @@ alloc_iq_fl(struct port_info *pi, struct sge_iq *iq, struct sge_fl *fl, */ rc = bus_dma_tag_create(sc->dmat, 16, 0, BUS_SPACE_MAXADDR, BUS_SPACE_MAXADDR, NULL, NULL, - FL_BUF_SIZE(i), 1, FL_BUF_SIZE(i), BUS_DMA_ALLOCNOW, - NULL, NULL, &fl->tag[i]); + FL_BUF_SIZE(sc, i), 1, FL_BUF_SIZE(sc, i), + BUS_DMA_ALLOCNOW, NULL, NULL, &fl->tag[i]); if (rc != 0) { device_printf(sc->dev, "failed to create fl DMA tag[%d]: %d\n", @@ -1815,7 +2235,9 @@ alloc_iq_fl(struct port_info *pi, struct sge_iq *iq, struct sge_fl *fl, c.iqns_to_fl0congen |= htobe32(V_FW_IQ_CMD_FL0HOSTFCMODE(X_HOSTFCMODE_NONE) | F_FW_IQ_CMD_FL0FETCHRO | F_FW_IQ_CMD_FL0DATARO | - F_FW_IQ_CMD_FL0PADEN); + (fl_pad ? F_FW_IQ_CMD_FL0PADEN : 0) | + (fl->flags & FL_BUF_PACKING ? F_FW_IQ_CMD_FL0PACKEN : + 0)); if (cong >= 0) { c.iqns_to_fl0congen |= htobe32(V_FW_IQ_CMD_FL0CNGCHMAP(cong) | @@ -1936,12 +2358,21 @@ free_iq_fl(struct port_info *pi, struct sge_iq *iq, struct sge_fl *fl) fl->desc); if (fl->sdesc) - free_fl_sdesc(fl); + free_fl_sdesc(sc, fl); + + for (i = 0; i < nitems(fl->mstash); i++) { + struct mbuf *m = fl->mstash[i]; + + if (m != NULL) { + m_init(m, NULL, 0, M_NOWAIT, MT_DATA, 0); + m_free(m); + } + } if (mtx_initialized(&fl->fl_lock)) mtx_destroy(&fl->fl_lock); - for (i = 0; i < FL_BUF_SIZES; i++) { + for (i = 0; i < FL_BUF_SIZES(sc); i++) { if (fl->tag[i]) bus_dma_tag_destroy(fl->tag[i]); } @@ -2102,6 +2533,10 @@ alloc_rxq(struct port_info *pi, struct sge_rxq *rxq, int intr_idx, int idx, "SGE context id of the queue"); SYSCTL_ADD_UINT(&pi->ctx, children, OID_AUTO, "cidx", CTLFLAG_RD, &rxq->fl.cidx, 0, "consumer index"); + if (rxq->fl.flags & FL_BUF_PACKING) { + SYSCTL_ADD_UINT(&pi->ctx, children, OID_AUTO, "rx_offset", + CTLFLAG_RD, &rxq->fl.rx_offset, 0, "packing rx offset"); + } SYSCTL_ADD_UINT(&pi->ctx, children, OID_AUTO, "pidx", CTLFLAG_RD, &rxq->fl.pidx, 0, "producer index"); @@ -2663,6 +3098,12 @@ refill_fl(struct adapter *sc, struct sge_fl *fl, int nbufs) int rc; FL_LOCK_ASSERT_OWNED(fl); +#ifdef INVARIANTS + if (fl->flags & FL_BUF_PACKING) + KASSERT(sd->tag_idx == 0, + ("%s: expected tag 0 but found tag %d at pidx %u instead", + __func__, sd->tag_idx, fl->pidx)); +#endif if (nbufs > fl->needed) nbufs = fl->needed; @@ -2671,24 +3112,34 @@ refill_fl(struct adapter *sc, struct sge_fl *fl, int nbufs) if (sd->cl != NULL) { - /* - * This happens when a frame small enough to fit - * entirely in an mbuf was received in cl last time. - * We'd held on to cl and can reuse it now. Note that - * we reuse a cluster of the old size if fl->tag_idx is - * no longer the same as sd->tag_idx. - */ - - KASSERT(*d == sd->ba_tag, + KASSERT(*d == sd->ba_hwtag, ("%s: recyling problem at pidx %d", __func__, fl->pidx)); - d++; - goto recycled; - } + if (fl->flags & FL_BUF_PACKING) { + u_int *refcount = find_buf_refcnt(sd->cl); + if (atomic_fetchadd_int(refcount, -1) == 1) { + *refcount = 1; /* reinstate */ + d++; + goto recycled; + } + sd->cl = NULL; /* gave up my reference */ + } else { + /* + * This happens when a frame small enough to fit + * entirely in an mbuf was received in cl last + * time. We'd held on to cl and can reuse it + * now. Note that we reuse a cluster of the old + * size if fl->tag_idx is no longer the same as + * sd->tag_idx. + */ + d++; + goto recycled; + } + } - if (fl->tag_idx != sd->tag_idx) { + if (__predict_false(fl->tag_idx != sd->tag_idx)) { bus_dmamap_t map; bus_dma_tag_t newtag = fl->tag[fl->tag_idx]; bus_dma_tag_t oldtag = fl->tag[sd->tag_idx]; @@ -2708,33 +3159,32 @@ refill_fl(struct adapter *sc, struct sge_fl *fl, int nbufs) tag = fl->tag[sd->tag_idx]; - cl = m_cljget(NULL, M_NOWAIT, FL_BUF_SIZE(sd->tag_idx)); + cl = uma_zalloc(FL_BUF_ZONE(sc, sd->tag_idx), M_NOWAIT); if (cl == NULL) break; + if (fl->flags & FL_BUF_PACKING) { + *find_buf_refcnt(cl) = 1; + cl += MSIZE; + } - rc = bus_dmamap_load(tag, sd->map, cl, FL_BUF_SIZE(sd->tag_idx), - oneseg_dma_callback, &pa, 0); + rc = bus_dmamap_load(tag, sd->map, cl, + FL_BUF_SIZE(sc, sd->tag_idx), oneseg_dma_callback, &pa, 0); if (rc != 0 || pa == 0) { fl->dmamap_failed++; - uma_zfree(FL_BUF_ZONE(sd->tag_idx), cl); + if (fl->flags & FL_BUF_PACKING) + cl -= MSIZE; + uma_zfree(FL_BUF_ZONE(sc, sd->tag_idx), cl); break; } sd->cl = cl; - *d++ = htobe64(pa | sd->tag_idx); + *d++ = htobe64(pa | FL_BUF_HWTAG(sc, sd->tag_idx)); #ifdef INVARIANTS - sd->ba_tag = htobe64(pa | sd->tag_idx); + sd->ba_hwtag = htobe64(pa | FL_BUF_HWTAG(sc, sd->tag_idx)); #endif recycled: - /* sd->m is never recycled, should always be NULL */ - KASSERT(sd->m == NULL, ("%s: stray mbuf", __func__)); - - sd->m = m_gethdr(M_NOWAIT, MT_NOINIT); - if (sd->m == NULL) - break; - fl->pending++; fl->needed--; sd++; @@ -2801,11 +3251,6 @@ failed: while (--i >= 0) { sd--; bus_dmamap_destroy(tag, sd->map); - if (sd->m) { - m_init(sd->m, NULL, 0, M_NOWAIT, MT_DATA, 0); - m_free(sd->m); - sd->m = NULL; - } } KASSERT(sd == fl->sdesc, ("%s: EDOOFUS", __func__)); @@ -2816,7 +3261,7 @@ failed: } static void -free_fl_sdesc(struct sge_fl *fl) +free_fl_sdesc(struct adapter *sc, struct sge_fl *fl) { struct fl_sdesc *sd; int i; @@ -2824,15 +3269,9 @@ free_fl_sdesc(struct sge_fl *fl) sd = fl->sdesc; for (i = 0; i < fl->cap; i++, sd++) { - if (sd->m) { - m_init(sd->m, NULL, 0, M_NOWAIT, MT_DATA, 0); - m_free(sd->m); - sd->m = NULL; - } - if (sd->cl) { bus_dmamap_unload(fl->tag[sd->tag_idx], sd->map); - uma_zfree(FL_BUF_ZONE(sd->tag_idx), sd->cl); + uma_zfree(FL_BUF_ZONE(sc, sd->tag_idx), sd->cl); sd->cl = NULL; } @@ -3687,17 +4126,52 @@ get_flit(bus_dma_segment_t *sgl, int nsegs, int idx) return (0); } +/* + * Find an SGE FL buffer size to use for the given bufsize. Look for the the + * smallest size that is large enough to hold bufsize or pick the largest size + * if all sizes are less than bufsize. + */ static void -set_fl_tag_idx(struct sge_fl *fl, int bufsize) +set_fl_tag_idx(struct adapter *sc, struct sge_fl *fl, int bufsize) { - int i; + int i, largest, best, delta, start; - for (i = 0; i < FL_BUF_SIZES - 1; i++) { - if (FL_BUF_SIZE(i) >= bufsize) - break; + if (fl->flags & FL_BUF_PACKING) { + fl->tag_idx = 0; /* first tag is the one for packing */ + return; + } + + start = sc->flags & BUF_PACKING_OK ? 1 : 0; + delta = FL_BUF_SIZE(sc, start) - bufsize; + if (delta == 0) { + fl->tag_idx = start; /* ideal fit, look no further */ + return; } + best = start; + largest = start; - fl->tag_idx = i; + for (i = start + 1; i < FL_BUF_SIZES(sc); i++) { + int d, fl_buf_size; + + fl_buf_size = FL_BUF_SIZE(sc, i); + d = fl_buf_size - bufsize; + + if (d == 0) { + fl->tag_idx = i; /* ideal fit, look no further */ + return; + } + if (fl_buf_size > FL_BUF_SIZE(sc, largest)) + largest = i; + if (d > 0 && (delta < 0 || delta > d)) { + delta = d; + best = i; + } + } + + if (delta > 0) + fl->tag_idx = best; /* Found a buf bigger than bufsize */ + else + fl->tag_idx = largest; /* No buf large enough for bufsize */ } static void diff --git a/sys/dev/cxgbe/t4_tracer.c b/sys/dev/cxgbe/t4_tracer.c index 04f64e3..e9727f5 100644 --- a/sys/dev/cxgbe/t4_tracer.c +++ b/sys/dev/cxgbe/t4_tracer.c @@ -121,14 +121,13 @@ match_name(struct adapter *sc, void *arg) static int t4_cloner_match(struct if_clone *ifc, const char *name) { - struct match_rr mrr; - mrr.name = name; - mrr.lock = 0; - mrr.sc = NULL; - t4_iterate(match_name, &mrr); - - return (mrr.sc != NULL); + if (strncmp(name, "t4nex", 5) != 0 && + strncmp(name, "t5nex", 5) != 0) + return (0); + if (name[5] < '0' || name[5] > '9') + return (0); + return (1); } static int @@ -466,7 +465,7 @@ tracer_ioctl(struct ifnet *ifp, unsigned long cmd, caddr_t data) switch (cmd) { case SIOCSIFMTU: case SIOCSIFFLAGS: - case SIOCADDMULTI: + case SIOCADDMULTI: case SIOCDELMULTI: case SIOCSIFCAP: break; diff --git a/sys/dev/cxgbe/tom/t4_cpl_io.c b/sys/dev/cxgbe/tom/t4_cpl_io.c index 8bb90f5..99e9db4 100644 --- a/sys/dev/cxgbe/tom/t4_cpl_io.c +++ b/sys/dev/cxgbe/tom/t4_cpl_io.c @@ -548,9 +548,10 @@ t4_push_frames(struct adapter *sc, struct toepcb *toep) KASSERT(toep->flags & TPF_FLOWC_WR_SENT, ("%s: flowc_wr not sent for tid %u.", __func__, toep->tid)); - if (__predict_false(toep->ulp_mode != ULP_MODE_NONE && - toep->ulp_mode != ULP_MODE_TCPDDP)) - CXGBE_UNIMPLEMENTED("ulp_mode"); + KASSERT(toep->ulp_mode == ULP_MODE_NONE || + toep->ulp_mode == ULP_MODE_TCPDDP || + toep->ulp_mode == ULP_MODE_RDMA, + ("%s: ulp_mode %u for toep %p", __func__, toep->ulp_mode, toep)); /* * This function doesn't resume by itself. Someone else must clear the @@ -843,9 +844,11 @@ do_peer_close(struct sge_iq *iq, const struct rss_header *rss, struct mbuf *m) } socantrcvmore_locked(so); /* unlocks the sockbuf */ - KASSERT(tp->rcv_nxt == be32toh(cpl->rcv_nxt), - ("%s: rcv_nxt mismatch: %u %u", __func__, tp->rcv_nxt, - be32toh(cpl->rcv_nxt))); + if (toep->ulp_mode != ULP_MODE_RDMA) { + KASSERT(tp->rcv_nxt == be32toh(cpl->rcv_nxt), + ("%s: rcv_nxt mismatch: %u %u", __func__, tp->rcv_nxt, + be32toh(cpl->rcv_nxt))); + } switch (tp->t_state) { case TCPS_SYN_RECEIVED: diff --git a/sys/dev/cxgbe/tom/t4_tom.c b/sys/dev/cxgbe/tom/t4_tom.c index 671174d..c9f4baa 100644 --- a/sys/dev/cxgbe/tom/t4_tom.c +++ b/sys/dev/cxgbe/tom/t4_tom.c @@ -1064,14 +1064,14 @@ t4_tom_mod_load(void) static void tom_uninit(struct adapter *sc, void *arg __unused) { - if (begin_synchronized_op(sc, NULL, HOLD_LOCK, "t4tomun")) + if (begin_synchronized_op(sc, NULL, SLEEP_OK | INTR_OK, "t4tomun")) return; /* Try to free resources (works only if no port has IFCAP_TOE) */ if (sc->flags & TOM_INIT_DONE) t4_deactivate_uld(sc, ULD_TOM); - end_synchronized_op(sc, LOCK_HELD); + end_synchronized_op(sc, 0); } static int diff --git a/sys/dev/drm2/drmP.h b/sys/dev/drm2/drmP.h index c9997d7..25765c4 100644 --- a/sys/dev/drm2/drmP.h +++ b/sys/dev/drm2/drmP.h @@ -961,7 +961,7 @@ struct drm_device { drm_agp_head_t *agp; drm_sg_mem_t *sg; /* Scatter gather memory */ - atomic_t *ctx_bitmap; + unsigned long *ctx_bitmap; void *dev_private; unsigned int agp_buffer_token; drm_local_map_t *agp_buffer_map; diff --git a/sys/dev/drm2/drm_atomic.h b/sys/dev/drm2/drm_atomic.h index b901341..eb86373 100644 --- a/sys/dev/drm2/drm_atomic.h +++ b/sys/dev/drm2/drm_atomic.h @@ -7,6 +7,7 @@ /*- * Copyright 2004 Eric Anholt + * Copyright 2013 Jung-uk Kim <jkim@FreeBSD.org> * All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a @@ -32,13 +33,14 @@ #include <sys/cdefs.h> __FBSDID("$FreeBSD$"); -typedef uint32_t atomic_t; +typedef u_int atomic_t; typedef uint64_t atomic64_t; -#define BITS_TO_LONGS(x) howmany(x, sizeof(long) * NBBY) +#define BITS_PER_LONG (sizeof(long) * NBBY) +#define BITS_TO_LONGS(x) howmany(x, BITS_PER_LONG) -#define atomic_set(p, v) atomic_store_rel_int(p, v) -#define atomic_read(p) atomic_load_acq_int(p) +#define atomic_read(p) (*(volatile u_int *)(p)) +#define atomic_set(p, v) do { *(u_int *)(p) = (v); } while (0) #define atomic_add(v, p) atomic_add_int(p, v) #define atomic_sub(v, p) atomic_subtract_int(p, v) @@ -58,25 +60,27 @@ typedef uint64_t atomic64_t; #define atomic_xchg(p, v) atomic_swap_int(p, v) #define atomic64_xchg(p, v) atomic_swap_64(p, v) +#define __bit_word(b) ((b) / BITS_PER_LONG) +#define __bit_mask(b) (1UL << (b) % BITS_PER_LONG) +#define __bit_addr(p, b) ((volatile u_long *)(p) + __bit_word(b)) + #define clear_bit(b, p) \ - atomic_clear_int((volatile u_int *)(p) + (b) / 32, 1 << (b) % 32) + atomic_clear_long(__bit_addr(p, b), __bit_mask(b)) #define set_bit(b, p) \ - atomic_set_int((volatile u_int *)(p) + (b) / 32, 1 << (b) % 32) + atomic_set_long(__bit_addr(p, b), __bit_mask(b)) #define test_bit(b, p) \ - (atomic_load_acq_int((volatile u_int *)(p) + (b) / 32) & (1 << (b) % 32)) -#define test_and_set_bit(b, p) \ - atomic_testandset_int((volatile u_int *)(p) + (b) / 32, b) + ((*__bit_addr(p, b) & __bit_mask(b)) != 0) -static __inline int -find_first_zero_bit(volatile void *p, int max) +static __inline u_long +find_first_zero_bit(const u_long *p, u_long max) { - volatile int *np = p; - int i, n; + u_long i, n; - for (i = 0; i < max / (NBBY * sizeof(int)); i++) { - n = ~np[i]; + KASSERT(max % BITS_PER_LONG == 0, ("invalid bitmap size %lu", max)); + for (i = 0; i < max / BITS_PER_LONG; i++) { + n = ~p[i]; if (n != 0) - return (i * NBBY * sizeof(int) + ffs(n) - 1); + return (i * BITS_PER_LONG + ffsl(n) - 1); } return (max); } diff --git a/sys/dev/drm2/drm_context.c b/sys/dev/drm2/drm_context.c index c844a39..9ca941e 100644 --- a/sys/dev/drm2/drm_context.c +++ b/sys/dev/drm2/drm_context.c @@ -182,7 +182,7 @@ bad: int drm_context_switch(struct drm_device *dev, int old, int new) { - if (test_and_set_bit(0, &dev->context_flag)) { + if (atomic_xchg(&dev->context_flag, 1) != 0) { DRM_ERROR("Reentering -- FIXME\n"); return EBUSY; } @@ -190,7 +190,7 @@ int drm_context_switch(struct drm_device *dev, int old, int new) DRM_DEBUG("Context switch from %d to %d\n", old, new); if (new == dev->last_context) { - clear_bit(0, &dev->context_flag); + atomic_xchg(&dev->context_flag, 0); return 0; } @@ -208,7 +208,7 @@ int drm_context_switch_complete(struct drm_device *dev, int new) /* If a context switch is ever initiated when the kernel holds the lock, release that lock here. */ - clear_bit(0, &dev->context_flag); + atomic_xchg(&dev->context_flag, 0); return 0; } diff --git a/sys/dev/drm2/drm_irq.c b/sys/dev/drm2/drm_irq.c index 130c20f..3a60fa9 100644 --- a/sys/dev/drm2/drm_irq.c +++ b/sys/dev/drm2/drm_irq.c @@ -210,7 +210,7 @@ struct timeval ns_to_timeval(const int64_t nsec) { struct timeval tv; - uint32_t rem; + long rem; if (nsec == 0) { tv.tv_sec = 0; diff --git a/sys/dev/drm2/drm_sysctl.c b/sys/dev/drm2/drm_sysctl.c index 33048c7..a30c7ab 100644 --- a/sys/dev/drm2/drm_sysctl.c +++ b/sys/dev/drm2/drm_sysctl.c @@ -177,7 +177,15 @@ static int drm_vm_info DRM_SYSCTL_HANDLER_ARGS { struct drm_device *dev = arg1; drm_local_map_t *map, *tempmaps; - const char *types[] = { "FB", "REG", "SHM", "AGP", "SG" }; + const char *types[] = { + [_DRM_FRAME_BUFFER] = "FB", + [_DRM_REGISTERS] = "REG", + [_DRM_SHM] = "SHM", + [_DRM_AGP] = "AGP", + [_DRM_SCATTER_GATHER] = "SG", + [_DRM_CONSISTENT] = "CONS", + [_DRM_GEM] = "GEM" + }; const char *type, *yesno; int i, mapcount; char buf[128]; @@ -211,10 +219,20 @@ static int drm_vm_info DRM_SYSCTL_HANDLER_ARGS for (i = 0; i < mapcount; i++) { map = &tempmaps[i]; - if (map->type < 0 || map->type > 4) + switch(map->type) { + default: type = "??"; - else + break; + case _DRM_FRAME_BUFFER: + case _DRM_REGISTERS: + case _DRM_SHM: + case _DRM_AGP: + case _DRM_SCATTER_GATHER: + case _DRM_CONSISTENT: + case _DRM_GEM: type = types[map->type]; + break; + } if (!map->mtrr) yesno = "no"; diff --git a/sys/dev/drm2/i915/i915_gem.c b/sys/dev/drm2/i915/i915_gem.c index 7204778..5afea4e 100644 --- a/sys/dev/drm2/i915/i915_gem.c +++ b/sys/dev/drm2/i915/i915_gem.c @@ -141,7 +141,7 @@ i915_gem_wait_for_error(struct drm_device *dev) } mtx_unlock(&dev_priv->error_completion_lock); - if (atomic_read(&dev_priv->mm.wedged)) { + if (atomic_load_acq_int(&dev_priv->mm.wedged)) { mtx_lock(&dev_priv->error_completion_lock); dev_priv->error_completion++; mtx_unlock(&dev_priv->error_completion_lock); @@ -743,7 +743,7 @@ i915_gem_ring_throttle(struct drm_device *dev, struct drm_file *file) int ret; dev_priv = dev->dev_private; - if (atomic_read(&dev_priv->mm.wedged)) + if (atomic_load_acq_int(&dev_priv->mm.wedged)) return (-EIO); file_priv = file->driver_priv; @@ -768,15 +768,15 @@ i915_gem_ring_throttle(struct drm_device *dev, struct drm_file *file) if (ring->irq_get(ring)) { while (ret == 0 && !(i915_seqno_passed(ring->get_seqno(ring), seqno) || - atomic_read(&dev_priv->mm.wedged))) + atomic_load_acq_int(&dev_priv->mm.wedged))) ret = -msleep(ring, &ring->irq_lock, PCATCH, "915thr", 0); ring->irq_put(ring); - if (ret == 0 && atomic_read(&dev_priv->mm.wedged)) + if (ret == 0 && atomic_load_acq_int(&dev_priv->mm.wedged)) ret = -EIO; } else if (_intel_wait_for(dev, i915_seqno_passed(ring->get_seqno(ring), seqno) || - atomic_read(&dev_priv->mm.wedged), 3000, 0, "915rtr")) { + atomic_load_acq_int(&dev_priv->mm.wedged), 3000, 0, "915rtr")) { ret = -EBUSY; } } diff --git a/sys/dev/drm2/i915/i915_gem_execbuffer.c b/sys/dev/drm2/i915/i915_gem_execbuffer.c index dbd5c4e..21e331f 100644 --- a/sys/dev/drm2/i915/i915_gem_execbuffer.c +++ b/sys/dev/drm2/i915/i915_gem_execbuffer.c @@ -192,7 +192,7 @@ i915_gem_object_set_to_gpu_domain(struct drm_i915_gem_object *obj, i915_gem_clflush_object(obj); if (obj->base.pending_write_domain) - cd->flips |= atomic_read(&obj->pending_flip); + cd->flips |= atomic_load_acq_int(&obj->pending_flip); /* The actual obj->write_domain will be updated with * pending_write_domain after we emit the accumulated flush for all diff --git a/sys/dev/drm2/i915/intel_display.c b/sys/dev/drm2/i915/intel_display.c index 461d779..ccff1e4 100644 --- a/sys/dev/drm2/i915/intel_display.c +++ b/sys/dev/drm2/i915/intel_display.c @@ -2261,8 +2261,8 @@ intel_finish_fb(struct drm_framebuffer *old_fb) int ret; mtx_lock(&dev->event_lock); - while (!atomic_read(&dev_priv->mm.wedged) && - atomic_read(&obj->pending_flip) != 0) { + while (!atomic_load_acq_int(&dev_priv->mm.wedged) && + atomic_load_acq_int(&obj->pending_flip) != 0) { msleep(&obj->pending_flip, &dev->event_lock, 0, "915flp", 0); } @@ -2948,7 +2948,7 @@ static void intel_crtc_wait_for_pending_flips(struct drm_crtc *crtc) dev = crtc->dev; dev_priv = dev->dev_private; mtx_lock(&dev->event_lock); - while (atomic_read(&obj->pending_flip) != 0) + while (atomic_load_acq_int(&obj->pending_flip) != 0) msleep(&obj->pending_flip, &dev->event_lock, 0, "915wfl", 0); mtx_unlock(&dev->event_lock); } @@ -7333,7 +7333,7 @@ static void do_intel_finish_page_flip(struct drm_device *dev, obj = work->old_fb_obj; atomic_clear_int(&obj->pending_flip, 1 << intel_crtc->plane); - if (atomic_read(&obj->pending_flip) == 0) + if (atomic_load_acq_int(&obj->pending_flip) == 0) wakeup(&obj->pending_flip); mtx_unlock(&dev->event_lock); @@ -7640,7 +7640,7 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc, return 0; cleanup_pending: - atomic_sub(1 << intel_crtc->plane, &work->old_fb_obj->pending_flip); + atomic_clear_int(&work->old_fb_obj->pending_flip, 1 << intel_crtc->plane); drm_gem_object_unreference(&work->old_fb_obj->base); drm_gem_object_unreference(&obj->base); DRM_UNLOCK(dev); diff --git a/sys/dev/drm2/ttm/ttm_bo.c b/sys/dev/drm2/ttm/ttm_bo.c index f598748..3b13540 100644 --- a/sys/dev/drm2/ttm/ttm_bo.c +++ b/sys/dev/drm2/ttm/ttm_bo.c @@ -1723,8 +1723,7 @@ int ttm_bo_wait(struct ttm_buffer_object *bo, if (driver->sync_obj_signaled(bo->sync_obj)) { void *tmp_obj = bo->sync_obj; bo->sync_obj = NULL; - atomic_clear_long(&bo->priv_flags, - 1UL << TTM_BO_PRIV_FLAG_MOVING); + clear_bit(TTM_BO_PRIV_FLAG_MOVING, &bo->priv_flags); mtx_unlock(&bdev->fence_lock); driver->sync_obj_unref(&tmp_obj); mtx_lock(&bdev->fence_lock); @@ -1747,8 +1746,8 @@ int ttm_bo_wait(struct ttm_buffer_object *bo, if (likely(bo->sync_obj == sync_obj)) { void *tmp_obj = bo->sync_obj; bo->sync_obj = NULL; - atomic_clear_long(&bo->priv_flags, - 1UL << TTM_BO_PRIV_FLAG_MOVING); + clear_bit(TTM_BO_PRIV_FLAG_MOVING, + &bo->priv_flags); mtx_unlock(&bdev->fence_lock); driver->sync_obj_unref(&sync_obj); driver->sync_obj_unref(&tmp_obj); diff --git a/sys/dev/drm2/ttm/ttm_bo_util.c b/sys/dev/drm2/ttm/ttm_bo_util.c index 15b4d48..aed8e0e 100644 --- a/sys/dev/drm2/ttm/ttm_bo_util.c +++ b/sys/dev/drm2/ttm/ttm_bo_util.c @@ -637,8 +637,7 @@ int ttm_bo_move_accel_cleanup(struct ttm_buffer_object *bo, * operation has completed. */ - atomic_set_long(&bo->priv_flags, - 1UL << TTM_BO_PRIV_FLAG_MOVING); + set_bit(TTM_BO_PRIV_FLAG_MOVING, &bo->priv_flags); mtx_unlock(&bdev->fence_lock); if (tmp_obj) driver->sync_obj_unref(&tmp_obj); diff --git a/sys/dev/drm2/ttm/ttm_bo_vm.c b/sys/dev/drm2/ttm/ttm_bo_vm.c index 8c64181..b87380c 100644 --- a/sys/dev/drm2/ttm/ttm_bo_vm.c +++ b/sys/dev/drm2/ttm/ttm_bo_vm.c @@ -153,8 +153,7 @@ reserve: */ mtx_lock(&bdev->fence_lock); - if ((atomic_load_acq_long(&bo->priv_flags) & - (1UL << TTM_BO_PRIV_FLAG_MOVING)) != 0) { + if (test_bit(TTM_BO_PRIV_FLAG_MOVING, &bo->priv_flags)) { /* * Here, the behavior differs between Linux and FreeBSD. * diff --git a/sys/dev/fb/vesa.c b/sys/dev/fb/vesa.c index 82fbeac..48067b6 100644 --- a/sys/dev/fb/vesa.c +++ b/sys/dev/fb/vesa.c @@ -1,6 +1,6 @@ /*- * Copyright (c) 1998 Kazutaka YOKOTA and Michael Smith - * Copyright (c) 2009-2012 Jung-uk Kim <jkim@FreeBSD.org> + * Copyright (c) 2009-2013 Jung-uk Kim <jkim@FreeBSD.org> * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -83,7 +83,7 @@ static struct mtx vesa_lock; static int vesa_state; static void *vesa_state_buf; static uint32_t vesa_state_buf_offs; -static ssize_t vesa_state_buf_size; +static size_t vesa_state_buf_size; static u_char *vesa_palette; static uint32_t vesa_palette_offs; @@ -207,7 +207,7 @@ static int vesa_bios_load_palette2(int start, int colors, u_char *r, u_char *g, #define STATE_SIZE 0 #define STATE_SAVE 1 #define STATE_LOAD 2 -static ssize_t vesa_bios_state_buf_size(int); +static size_t vesa_bios_state_buf_size(int); static int vesa_bios_save_restore(int code, void *p); #ifdef MODE_TABLE_BROKEN static int vesa_bios_get_line_length(void); @@ -505,7 +505,7 @@ vesa_bios_load_palette2(int start, int colors, u_char *r, u_char *g, u_char *b, return (regs.R_AX != 0x004f); } -static ssize_t +static size_t vesa_bios_state_buf_size(int state) { x86regs_t regs; @@ -1463,7 +1463,7 @@ vesa_set_border(video_adapter_t *adp, int color) static int vesa_save_state(video_adapter_t *adp, void *p, size_t size) { - vm_offset_t buf; + void *buf; size_t bsize; if (adp != vesa_adp || (size == 0 && vesa_state_buf_size == 0)) @@ -1475,19 +1475,19 @@ vesa_save_state(video_adapter_t *adp, void *p, size_t size) if (vesa_state_buf_size > 0 && size < bsize) return (EINVAL); - if (VESA_MODE(adp->va_mode) && adp->va_buffer != 0) { - buf = adp->va_buffer; - bsize = adp->va_buffer_size; - } else { - buf = adp->va_window; - bsize = adp->va_window_size; - } - if (buf != 0) { - vesa_vmem_buf = malloc(bsize, M_DEVBUF, M_NOWAIT); - if (vesa_vmem_buf != NULL) - bcopy((void *)buf, vesa_vmem_buf, bsize); - } else + if (vesa_vmem_buf != NULL) { + free(vesa_vmem_buf, M_DEVBUF); vesa_vmem_buf = NULL; + } + if (VESA_MODE(adp->va_mode)) { + buf = (void *)adp->va_buffer; + if (buf != NULL) { + bsize = adp->va_buffer_size; + vesa_vmem_buf = malloc(bsize, M_DEVBUF, M_NOWAIT); + if (vesa_vmem_buf != NULL) + bcopy(buf, vesa_vmem_buf, bsize); + } + } if (vesa_state_buf_size == 0) return ((*prevvidsw->save_state)(adp, p, size)); ((adp_state_t *)p)->sig = V_STATE_SIG; @@ -1497,7 +1497,7 @@ vesa_save_state(video_adapter_t *adp, void *p, size_t size) static int vesa_load_state(video_adapter_t *adp, void *p) { - vm_offset_t buf; + void *buf; size_t bsize; int error, mode; @@ -1506,24 +1506,20 @@ vesa_load_state(video_adapter_t *adp, void *p) /* Try BIOS POST to restore a sane state. */ (void)vesa_bios_post(); + bsize = adp->va_buffer_size; mode = adp->va_mode; error = vesa_set_mode(adp, adp->va_initial_mode); if (mode != adp->va_initial_mode) error = vesa_set_mode(adp, mode); if (vesa_vmem_buf != NULL) { - if (error == 0) { - if (VESA_MODE(mode) && adp->va_buffer != 0) { - buf = adp->va_buffer; - bsize = adp->va_buffer_size; - } else { - buf = adp->va_window; - bsize = adp->va_window_size; - } - if (buf != 0) - bcopy(vesa_vmem_buf, (void *)buf, bsize); + if (error == 0 && VESA_MODE(mode)) { + buf = (void *)adp->va_buffer; + if (buf != NULL) + bcopy(vesa_vmem_buf, buf, bsize); } free(vesa_vmem_buf, M_DEVBUF); + vesa_vmem_buf = NULL; } if (((adp_state_t *)p)->sig != V_STATE_SIG) return ((*prevvidsw->load_state)(adp, p)); diff --git a/sys/dev/fdc/fdc.c b/sys/dev/fdc/fdc.c index 4de5e81..9fe1e7e 100644 --- a/sys/dev/fdc/fdc.c +++ b/sys/dev/fdc/fdc.c @@ -761,10 +761,13 @@ fdc_worker(struct fdc_data *fdc) int i, nsect; int st0, st3, cyl, mfm, steptrac, cylinder, descyl, sec; int head; + int override_error; static int need_recal; struct fdc_readid *idp; struct fd_formb *finfo; + override_error = 0; + /* Have we exhausted our retries ? */ bp = fdc->bp; fd = fdc->fd; @@ -1090,7 +1093,10 @@ fdc_worker(struct fdc_data *fdc) fdc->status[3], fdc->status[4], fdc->status[5]); } retry_line = __LINE__; - return (1); + if (fd->options & FDOPT_NOERROR) + override_error = 1; + else + return (1); } /* All OK */ switch(bp->bio_cmd) { @@ -1111,10 +1117,16 @@ fdc_worker(struct fdc_data *fdc) bp->bio_resid -= fd->fd_iosize; bp->bio_completed += fd->fd_iosize; fd->fd_ioptr += fd->fd_iosize; - /* Since we managed to get something done, reset the retry */ - fdc->retry = 0; - if (bp->bio_resid > 0) - return (0); + if (override_error) { + if ((debugflags & 4)) + printf("FDOPT_NOERROR: returning bad data\n"); + } else { + /* Since we managed to get something done, + * reset the retry */ + fdc->retry = 0; + if (bp->bio_resid > 0) + return (0); + } break; case BIO_FMT: break; @@ -1406,6 +1418,7 @@ fd_access(struct g_provider *pp, int r, int w, int e) ae = e + pp->ace; if (ar == 0 && aw == 0 && ae == 0) { + fd->options &= ~(FDOPT_NORETRY | FDOPT_NOERRLOG | FDOPT_NOERROR); device_unbusy(fd->dev); return (0); } diff --git a/sys/dev/flash/mx25l.c b/sys/dev/flash/mx25l.c index 8956c30..24c9323 100644 --- a/sys/dev/flash/mx25l.c +++ b/sys/dev/flash/mx25l.c @@ -104,9 +104,9 @@ struct mx25l_flash_ident flash_devices[] = { { "mx25ll32", 0xc2, 0x2016, 64 * 1024, 64, FL_NONE }, { "mx25ll64", 0xc2, 0x2017, 64 * 1024, 128, FL_NONE }, { "mx25ll128", 0xc2, 0x2018, 64 * 1024, 256, FL_ERASE_4K | FL_ERASE_32K }, + { "s25fl032", 0x01, 0x0215, 64 * 1024, 64, FL_NONE }, + { "s25fl064", 0x01, 0x0216, 64 * 1024, 128, FL_NONE }, { "s25fl128", 0x01, 0x2018, 64 * 1024, 256, FL_NONE }, - { "s25s1032", 0x01, 0x0215, 64 * 1024, 64, FL_NONE }, - { "s25sl064a", 0x01, 0x0216, 64 * 1024, 128, FL_NONE }, { "SST25VF032B", 0xbf, 0x254a, 64 * 1024, 64, FL_ERASE_4K | FL_ERASE_32K }, /* Winbond -- w25x "blocks" are 64K, "sectors" are 4KiB */ diff --git a/sys/dev/gpio/gpiobus.c b/sys/dev/gpio/gpiobus.c index c4a62f7..d61f7aa 100644 --- a/sys/dev/gpio/gpiobus.c +++ b/sys/dev/gpio/gpiobus.c @@ -151,6 +151,7 @@ gpiobus_parse_pins(struct gpiobus_softc *sc, device_t child, int mask) if (i >= sc->sc_npins) { device_printf(child, "invalid pin %d, max: %d\n", i, sc->sc_npins - 1); + free(devi->pins, M_DEVBUF); return (EINVAL); } @@ -161,6 +162,7 @@ gpiobus_parse_pins(struct gpiobus_softc *sc, device_t child, int mask) if (sc->sc_pins_mapped[i]) { device_printf(child, "warning: pin %d is already mapped\n", i); + free(devi->pins, M_DEVBUF); return (EINVAL); } sc->sc_pins_mapped[i] = 1; @@ -218,9 +220,12 @@ gpiobus_attach(device_t dev) static int gpiobus_detach(device_t dev) { - struct gpiobus_softc *sc = GPIOBUS_SOFTC(dev); - int err; + struct gpiobus_softc *sc; + struct gpiobus_ivar *devi; + device_t *devlist; + int i, err, ndevs; + sc = GPIOBUS_SOFTC(dev); KASSERT(mtx_initialized(&sc->sc_mtx), ("gpiobus mutex not initialized")); GPIOBUS_LOCK_DESTROY(sc); @@ -228,8 +233,17 @@ gpiobus_detach(device_t dev) if ((err = bus_generic_detach(dev)) != 0) return (err); - /* detach and delete all children */ - device_delete_children(dev); + if ((err = device_get_children(dev, &devlist, &ndevs)) != 0) + return (err); + for (i = 0; i < ndevs; i++) { + device_delete_child(dev, devlist[i]); + devi = GPIOBUS_IVAR(devlist[i]); + if (devi->pins) { + free(devi->pins, M_DEVBUF); + devi->pins = NULL; + } + } + free(devlist, M_TEMP); if (sc->sc_pins_mapped) { free(sc->sc_pins_mapped, M_DEVBUF); diff --git a/sys/dev/hwpmc/pmc_events.h b/sys/dev/hwpmc/pmc_events.h index e91b9c7..ac933fe 100644 --- a/sys/dev/hwpmc/pmc_events.h +++ b/sys/dev/hwpmc/pmc_events.h @@ -3547,13 +3547,12 @@ __PMC_EV_ALIAS("MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_NONE", \ IAP_EVENT_D2H_08H) \ __PMC_EV_ALIAS("MEM_LOAD_UOPS_LLC_HIT_RETIRED.ALL", \ IAP_EVENT_D2H_0FH) \ -__PMC_EV_ALIAS("MEM_LOAD_UOPS_MISC_RETIRED.LLC_MISS", \ - IAP_EVENT_D4H_02H) \ __PMC_EV_ALIAS("MEM_LOAD_UOPS_LLC_MISS_RETIRED.LOCAL_DRAM", \ IAP_EVENT_D3H_01H) \ __PMC_EV_ALIAS("MEM_LOAD_UOPS_LLC_MISS_RETIRED.REMOTE_DRAM", \ IAP_EVENT_D3H_04H) \ -__PMC_EV_ALIAS("MEM_LOAD_UOPS_MISC_RETIRED.LLC_MISS", IAP_EVENT_D4H_02H)\ +__PMC_EV_ALIAS("MEM_LOAD_UOPS_MISC_RETIRED.LLC_MISS", \ + IAP_EVENT_D4H_02H) \ __PMC_EV_ALIAS("BACLEARS.ANY", IAP_EVENT_E6H_01H) \ __PMC_EV_ALIAS("L2_TRANS.DEMAND_DATA_RD", IAP_EVENT_F0H_01H) \ __PMC_EV_ALIAS("L2_TRANS.RFO", IAP_EVENT_F0H_02H) \ diff --git a/sys/dev/iwn/if_iwn.c b/sys/dev/iwn/if_iwn.c index 90a602a..14fb002 100644 --- a/sys/dev/iwn/if_iwn.c +++ b/sys/dev/iwn/if_iwn.c @@ -2668,11 +2668,7 @@ iwn_rx_compressed_ba(struct iwn_softc *sc, struct iwn_rx_desc *desc, KASSERT(ni != NULL, ("no node")); KASSERT(m != NULL, ("no mbuf")); - if (m->m_flags & M_TXCB) - ieee80211_process_callback(ni, m, 1); - - m_freem(m); - ieee80211_free_node(ni); + ieee80211_tx_complete(ni, m, 1); txq->queued--; txq->read = (txq->read + 1) % IWN_TX_RING_COUNT; @@ -2934,29 +2930,6 @@ iwn_tx_done(struct iwn_softc *sc, struct iwn_rx_desc *desc, int ackfailcnt, ni = data->ni, data->ni = NULL; vap = ni->ni_vap; - if (m->m_flags & M_TXCB) { - /* - * Channels marked for "radar" require traffic to be received - * to unlock before we can transmit. Until traffic is seen - * any attempt to transmit is returned immediately with status - * set to IWN_TX_FAIL_TX_LOCKED. Unfortunately this can easily - * happen on first authenticate after scanning. To workaround - * this we ignore a failure of this sort in AUTH state so the - * 802.11 layer will fall back to using a timeout to wait for - * the AUTH reply. This allows the firmware time to see - * traffic so a subsequent retry of AUTH succeeds. It's - * unclear why the firmware does not maintain state for - * channels recently visited as this would allow immediate - * use of the channel after a scan (where we see traffic). - */ - if (status == IWN_TX_FAIL_TX_LOCKED && - ni->ni_vap->iv_state == IEEE80211_S_AUTH) - ieee80211_process_callback(ni, m, 0); - else - ieee80211_process_callback(ni, m, - (status & IWN_TX_FAIL) != 0); - } - /* * Update rate control statistics for the node. */ @@ -2969,8 +2942,27 @@ iwn_tx_done(struct iwn_softc *sc, struct iwn_rx_desc *desc, int ackfailcnt, ieee80211_ratectl_tx_complete(vap, ni, IEEE80211_RATECTL_TX_SUCCESS, &ackfailcnt, NULL); } - m_freem(m); - ieee80211_free_node(ni); + + /* + * Channels marked for "radar" require traffic to be received + * to unlock before we can transmit. Until traffic is seen + * any attempt to transmit is returned immediately with status + * set to IWN_TX_FAIL_TX_LOCKED. Unfortunately this can easily + * happen on first authenticate after scanning. To workaround + * this we ignore a failure of this sort in AUTH state so the + * 802.11 layer will fall back to using a timeout to wait for + * the AUTH reply. This allows the firmware time to see + * traffic so a subsequent retry of AUTH succeeds. It's + * unclear why the firmware does not maintain state for + * channels recently visited as this would allow immediate + * use of the channel after a scan (where we see traffic). + */ + if (status == IWN_TX_FAIL_TX_LOCKED && + ni->ni_vap->iv_state == IEEE80211_S_AUTH) + ieee80211_tx_complete(ni, m, 0); + else + ieee80211_tx_complete(ni, m, + (status & IWN_TX_FAIL) != 0); sc->sc_tx_timer = 0; if (--ring->queued < IWN_TX_RING_LOMARK) { @@ -3091,11 +3083,7 @@ iwn_ampdu_tx_done(struct iwn_softc *sc, int qid, int idx, int nframes, KASSERT(ni != NULL, ("no node")); KASSERT(m != NULL, ("no mbuf")); - if (m->m_flags & M_TXCB) - ieee80211_process_callback(ni, m, 1); - - m_freem(m); - ieee80211_free_node(ni); + ieee80211_tx_complete(ni, m, 1); ring->queued--; ring->read = (ring->read + 1) % IWN_TX_RING_COUNT; diff --git a/sys/dev/qlxgbe/ql_misc.c b/sys/dev/qlxgbe/ql_misc.c index 6c7292f..ef0f4a7 100644 --- a/sys/dev/qlxgbe/ql_misc.c +++ b/sys/dev/qlxgbe/ql_misc.c @@ -321,7 +321,7 @@ qla_get_fdt(qla_host_t *ha) } while ((count < 10000) && (data32 != 0x6)); - if (count == 0 && data32 != 0x6) { + if (data32 != 0x6) { qla_sem_unlock(ha, Q8_FLASH_UNLOCK); device_printf(ha->pci_dev, "%s: Poll Q8_FLASH_STATUS failed\n", @@ -401,7 +401,7 @@ qla_flash_write_enable(qla_host_t *ha, int enable) } while ((count < 10000) && (data32 != 0x6)); - if (count == 0 && data32 != 0x6) { + if (data32 != 0x6) { device_printf(ha->pci_dev, "%s: Poll Q8_FLASH_STATUS failed\n", __func__); @@ -432,7 +432,7 @@ qla_erase_flash_sector(qla_host_t *ha, uint32_t start) } while (((count++) < 1000) && (data32 != 0x6)); - if (count == 0 && data32 != 0x6) { + if (data32 != 0x6) { device_printf(ha->pci_dev, "%s: Poll Q8_FLASH_STATUS failed\n", __func__); @@ -479,7 +479,7 @@ qla_erase_flash_sector(qla_host_t *ha, uint32_t start) } while (((count++) < 1000) && (data32 != 0x6)); - if (count == 0 && data32 != 0x6) { + if (data32 != 0x6) { device_printf(ha->pci_dev, "%s: Poll Q8_FLASH_STATUS failed\n", __func__); @@ -575,7 +575,7 @@ qla_wr_flash32(qla_host_t *ha, uint32_t off, uint32_t *data) } while ((count < 10000) && (data32 != 0x6)); - if (count == 0 && data32 != 0x6) { + if (data32 != 0x6) { device_printf(ha->pci_dev, "%s: Poll Q8_FLASH_STATUS failed\n", __func__); diff --git a/sys/dev/qlxgbe/ql_os.c b/sys/dev/qlxgbe/ql_os.c index c6fcae3..700c4a8 100644 --- a/sys/dev/qlxgbe/ql_os.c +++ b/sys/dev/qlxgbe/ql_os.c @@ -1642,8 +1642,6 @@ qla_error_recovery(void *context, int pending) QLA_UNLOCK(ha, __func__); - ql_minidump(ha); - if ((ha->pci_func & 0x1) == 0) { if (!ha->msg_from_peer) { @@ -1656,6 +1654,8 @@ qla_error_recovery(void *context, int pending) ha->msg_from_peer = 0; + ql_minidump(ha); + (void) ql_init_hw(ha); qla_free_xmt_bufs(ha); qla_free_rcv_bufs(ha); diff --git a/sys/dev/uart/uart_dev_ns8250.c b/sys/dev/uart/uart_dev_ns8250.c index 1c337ca..2fad76c 100644 --- a/sys/dev/uart/uart_dev_ns8250.c +++ b/sys/dev/uart/uart_dev_ns8250.c @@ -453,7 +453,19 @@ ns8250_bus_attach(struct uart_softc *sc) ns8250->ier |= ns8250->ier_rxbits; uart_setreg(bas, REG_IER, ns8250->ier); uart_barrier(bas); - + + /* + * Timing of the H/W access was changed with r253161 of uart_core.c + * It has been observed that an ITE IT8513E would signal a break + * condition with pretty much every character it received, unless + * it had enough time to settle between ns8250_bus_attach() and + * ns8250_bus_ipend() -- which it accidentally had before r253161. + * It's not understood why the UART chip behaves this way and it + * could very well be that the DELAY make the H/W work in the same + * accidental manner as before. More analysis is warranted, but + * at least now we fixed a known regression. + */ + DELAY(150); return (0); } diff --git a/sys/dev/vmware/vmxnet3/if_vmx.c b/sys/dev/vmware/vmxnet3/if_vmx.c index c9168d4..1cab2d5 100644 --- a/sys/dev/vmware/vmxnet3/if_vmx.c +++ b/sys/dev/vmware/vmxnet3/if_vmx.c @@ -199,6 +199,8 @@ static int vmxnet3_dma_malloc(struct vmxnet3_softc *, bus_size_t, bus_size_t, struct vmxnet3_dma_alloc *); static void vmxnet3_dma_free(struct vmxnet3_softc *, struct vmxnet3_dma_alloc *); +static int vmxnet3_tunable_int(struct vmxnet3_softc *, + const char *, int); typedef enum { VMXNET3_BARRIER_RD, @@ -208,6 +210,12 @@ typedef enum { static void vmxnet3_barrier(struct vmxnet3_softc *, vmxnet3_barrier_t); +/* Tunables. */ +static int vmxnet3_default_txndesc = VMXNET3_DEF_TX_NDESC; +TUNABLE_INT("hw.vmx.txndesc", &vmxnet3_default_txndesc); +static int vmxnet3_default_rxndesc = VMXNET3_DEF_RX_NDESC; +TUNABLE_INT("hw.vmx.rxndesc", &vmxnet3_default_rxndesc); + static device_method_t vmxnet3_methods[] = { /* Device interface. */ DEVMETHOD(device_probe, vmxnet3_probe), @@ -437,15 +445,15 @@ vmxnet3_check_version(struct vmxnet3_softc *sc) device_printf(dev, "unsupported hardware version %#x\n", version); return (ENOTSUP); - } else - vmxnet3_write_bar1(sc, VMXNET3_BAR1_VRRS, 1); + } + vmxnet3_write_bar1(sc, VMXNET3_BAR1_VRRS, 1); version = vmxnet3_read_bar1(sc, VMXNET3_BAR1_UVRS); if ((version & 0x01) == 0) { device_printf(dev, "unsupported UPT version %#x\n", version); return (ENOTSUP); - } else - vmxnet3_write_bar1(sc, VMXNET3_BAR1_UVRS, 1); + } + vmxnet3_write_bar1(sc, VMXNET3_BAR1_UVRS, 1); return (0); } @@ -453,11 +461,28 @@ vmxnet3_check_version(struct vmxnet3_softc *sc) static void vmxnet3_initial_config(struct vmxnet3_softc *sc) { + int ndesc; - sc->vmx_ntxqueues = 1; - sc->vmx_nrxqueues = 1; - sc->vmx_ntxdescs = VMXNET3_MAX_TX_NDESC; - sc->vmx_nrxdescs = VMXNET3_MAX_RX_NDESC; + /* + * BMV Much of the work is already done, but this driver does + * not support multiqueue yet. + */ + sc->vmx_ntxqueues = VMXNET3_TX_QUEUES; + sc->vmx_nrxqueues = VMXNET3_RX_QUEUES; + + ndesc = vmxnet3_tunable_int(sc, "txd", vmxnet3_default_txndesc); + if (ndesc > VMXNET3_MAX_TX_NDESC || ndesc < VMXNET3_MIN_TX_NDESC) + ndesc = VMXNET3_DEF_TX_NDESC; + if (ndesc & VMXNET3_MASK_TX_NDESC) + ndesc &= ~VMXNET3_MASK_TX_NDESC; + sc->vmx_ntxdescs = ndesc; + + ndesc = vmxnet3_tunable_int(sc, "rxd", vmxnet3_default_rxndesc); + if (ndesc > VMXNET3_MAX_RX_NDESC || ndesc < VMXNET3_MIN_RX_NDESC) + ndesc = VMXNET3_DEF_RX_NDESC; + if (ndesc & VMXNET3_MASK_RX_NDESC) + ndesc &= ~VMXNET3_MASK_RX_NDESC; + sc->vmx_nrxdescs = ndesc; sc->vmx_max_rxsegs = VMXNET3_MAX_RX_SEGS; } @@ -781,10 +806,9 @@ vmxnet3_init_rxq(struct vmxnet3_softc *sc, int q) sizeof(struct vmxnet3_rxbuf), M_DEVBUF, M_NOWAIT | M_ZERO); if (rxr->vxrxr_rxbuf == NULL) return (ENOMEM); - } - rxq->vxrxq_comp_ring.vxcr_ndesc = - sc->vmx_nrxdescs * VMXNET3_RXRINGS_PERQ; + rxq->vxrxq_comp_ring.vxcr_ndesc += sc->vmx_nrxdescs; + } return (0); } @@ -1240,8 +1264,11 @@ static void vmxnet3_free_queue_data(struct vmxnet3_softc *sc) { - vmxnet3_free_rxq_data(sc); - vmxnet3_free_txq_data(sc); + if (sc->vmx_rxq != NULL) + vmxnet3_free_rxq_data(sc); + + if (sc->vmx_txq != NULL) + vmxnet3_free_txq_data(sc); } static int @@ -1325,9 +1352,9 @@ vmxnet3_init_shared_data(struct vmxnet3_softc *sc) txs = txq->vxtxq_ts; txs->cmd_ring = txq->vxtxq_cmd_ring.vxtxr_dma.dma_paddr; - txs->cmd_ring_len = sc->vmx_ntxdescs; + txs->cmd_ring_len = txq->vxtxq_cmd_ring.vxtxr_ndesc; txs->comp_ring = txq->vxtxq_comp_ring.vxcr_dma.dma_paddr; - txs->comp_ring_len = sc->vmx_ntxdescs; + txs->comp_ring_len = txq->vxtxq_comp_ring.vxcr_ndesc; txs->driver_data = vtophys(txq); txs->driver_data_len = sizeof(struct vmxnet3_txqueue); } @@ -1342,8 +1369,7 @@ vmxnet3_init_shared_data(struct vmxnet3_softc *sc) rxs->cmd_ring[1] = rxq->vxrxq_cmd_ring[1].vxrxr_dma.dma_paddr; rxs->cmd_ring_len[1] = rxq->vxrxq_cmd_ring[1].vxrxr_ndesc; rxs->comp_ring = rxq->vxrxq_comp_ring.vxcr_dma.dma_paddr; - rxs->comp_ring_len = rxq->vxrxq_cmd_ring[0].vxrxr_ndesc + - rxq->vxrxq_cmd_ring[1].vxrxr_ndesc; + rxs->comp_ring_len = rxq->vxrxq_comp_ring.vxcr_ndesc; rxs->driver_data = vtophys(rxq); rxs->driver_data_len = sizeof(struct vmxnet3_rxqueue); } @@ -1381,10 +1407,10 @@ vmxnet3_reinit_shared_data(struct vmxnet3_softc *sc) ds = sc->vmx_ds; ds->upt_features = 0; - if (ifp->if_capenable & IFCAP_VLAN_HWTAGGING) - ds->upt_features |= UPT1_F_VLAN; if (ifp->if_capenable & (IFCAP_RXCSUM | IFCAP_RXCSUM_IPV6)) ds->upt_features |= UPT1_F_CSUM; + if (ifp->if_capenable & IFCAP_VLAN_HWTAGGING) + ds->upt_features |= UPT1_F_VLAN; if (ifp->if_capenable & IFCAP_LRO) ds->upt_features |= UPT1_F_LRO; @@ -1463,18 +1489,13 @@ vmxnet3_setup_interface(struct vmxnet3_softc *sc) ifp->if_capabilities |= IFCAP_RXCSUM | IFCAP_TXCSUM; ifp->if_capabilities |= IFCAP_RXCSUM_IPV6 | IFCAP_TXCSUM_IPV6; ifp->if_capabilities |= IFCAP_TSO4 | IFCAP_TSO6; - ifp->if_capabilities |= IFCAP_VLAN_MTU | IFCAP_VLAN_HWTAGGING; - ifp->if_hwassist |= VMXNET3_CSUM_ALL_OFFLOAD; - + ifp->if_capabilities |= IFCAP_VLAN_MTU | IFCAP_VLAN_HWTAGGING | + IFCAP_VLAN_HWCSUM; ifp->if_capenable = ifp->if_capabilities; - /* - * Capabilities after here are not enabled by default. - */ + /* These capabilities are not enabled by default. */ + ifp->if_capabilities |= IFCAP_LRO | IFCAP_VLAN_HWFILTER; - ifp->if_capabilities |= IFCAP_LRO; - - ifp->if_capabilities |= IFCAP_VLAN_HWFILTER; sc->vmx_vlan_attach = EVENTHANDLER_REGISTER(vlan_config, vmxnet3_register_vlan, sc, EVENTHANDLER_PRI_FIRST); sc->vmx_vlan_detach = EVENTHANDLER_REGISTER(vlan_config, @@ -1558,6 +1579,7 @@ vmxnet3_txq_eof(struct vmxnet3_txqueue *txq) txcd = &txc->vxcr_u.txcd[txc->vxcr_next]; if (txcd->gen != txc->vxcr_gen) break; + vmxnet3_barrier(sc, VMXNET3_BARRIER_RD); if (++txc->vxcr_next == txc->vxcr_ndesc) { txc->vxcr_next = 0; @@ -1647,7 +1669,7 @@ vmxnet3_newbuf(struct vmxnet3_softc *sc, struct vmxnet3_rxring *rxr) BUS_DMA_NOWAIT); if (error) { m_freem(m); - sc->vmx_stats.vmst_mbuf_load_failed++;; + sc->vmx_stats.vmst_mbuf_load_failed++; return (error); } KASSERT(nsegs == 1, @@ -2119,19 +2141,19 @@ vmxnet3_rxinit(struct vmxnet3_softc *sc, struct vmxnet3_rxqueue *rxq) int i, populate, idx, frame_size, error; ifp = sc->vmx_ifp; - frame_size = ifp->if_mtu + sizeof(struct ether_vlan_header); + frame_size = ETHER_ALIGN + sizeof(struct ether_vlan_header) + + ifp->if_mtu; /* - * If the MTU causes us to exceed what a regular sized cluster - * can handle, we allocate a second MJUMPAGESIZE cluster after - * it in ring 0. If in use, ring 1 always contains MJUMPAGESIZE - * clusters. + * If the MTU causes us to exceed what a regular sized cluster can + * handle, we allocate a second MJUMPAGESIZE cluster after it in + * ring 0. If in use, ring 1 always contains MJUMPAGESIZE clusters. * - * Keep rx_max_chain a divisor of the maximum Rx ring size to - * to make our life easier. We do not support changing the ring - * size after the attach. + * Keep rx_max_chain a divisor of the maximum Rx ring size to make + * our life easier. We do not support changing the ring size after + * the attach. */ - if (frame_size <= MCLBYTES - ETHER_ALIGN) + if (frame_size <= MCLBYTES) sc->vmx_rx_max_chain = 1; else sc->vmx_rx_max_chain = 2; @@ -2515,7 +2537,7 @@ vmxnet3_start_locked(struct ifnet *ifp) struct vmxnet3_txqueue *txq; struct vmxnet3_txring *txr; struct mbuf *m_head; - int tx; + int tx, avail; sc = ifp->if_softc; txq = &sc->vmx_txq[0]; @@ -2528,11 +2550,20 @@ vmxnet3_start_locked(struct ifnet *ifp) sc->vmx_link_active == 0) return; - while (VMXNET3_TXRING_AVAIL(txr) > 0) { + while (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) { + if ((avail = VMXNET3_TXRING_AVAIL(txr)) < 2) + break; + IFQ_DRV_DEQUEUE(&ifp->if_snd, m_head); if (m_head == NULL) break; + /* Assume worse case if this mbuf is the head of a chain. */ + if (m_head->m_next != NULL && avail < VMXNET3_TX_MAXSEGS) { + IFQ_DRV_PREPEND(&ifp->if_snd, m_head); + break; + } + if (vmxnet3_txq_encap(txq, &m_head) != 0) { if (m_head != NULL) IFQ_DRV_PREPEND(&ifp->if_snd, m_head); @@ -2750,8 +2781,8 @@ vmxnet3_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) ifp->if_capenable ^= IFCAP_TSO6; if (mask & (IFCAP_RXCSUM | IFCAP_RXCSUM_IPV6 | IFCAP_LRO | - IFCAP_VLAN_HWFILTER)) { - /* These Rx features require us to renegotiate. */ + IFCAP_VLAN_HWTAGGING | IFCAP_VLAN_HWFILTER)) { + /* Changing these features requires us to reinit. */ reinit = 1; if (mask & IFCAP_RXCSUM) @@ -2760,6 +2791,8 @@ vmxnet3_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) ifp->if_capenable ^= IFCAP_RXCSUM_IPV6; if (mask & IFCAP_LRO) ifp->if_capenable ^= IFCAP_LRO; + if (mask & IFCAP_VLAN_HWTAGGING) + ifp->if_capenable ^= IFCAP_VLAN_HWTAGGING; if (mask & IFCAP_VLAN_HWFILTER) ifp->if_capenable ^= IFCAP_VLAN_HWFILTER; } else @@ -2767,8 +2800,6 @@ vmxnet3_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) if (mask & IFCAP_VLAN_HWTSO) ifp->if_capenable ^= IFCAP_VLAN_HWTSO; - if (mask & IFCAP_VLAN_HWTAGGING) - ifp->if_capenable ^= IFCAP_VLAN_HWTAGGING; if (reinit && (ifp->if_drv_flags & IFF_DRV_RUNNING)) { ifp->if_drv_flags &= ~IFF_DRV_RUNNING; @@ -3280,6 +3311,18 @@ vmxnet3_dma_free(struct vmxnet3_softc *sc, struct vmxnet3_dma_alloc *dma) bzero(dma, sizeof(struct vmxnet3_dma_alloc)); } +static int +vmxnet3_tunable_int(struct vmxnet3_softc *sc, const char *knob, int def) +{ + char path[64]; + + snprintf(path, sizeof(path), + "hw.vmx.%d.%s", device_get_unit(sc->vmx_dev), knob); + TUNABLE_INT_FETCH(path, &def); + + return (def); +} + /* * Since this is a purely paravirtualized device, we do not have * to worry about DMA coherency. But at times, we must make sure diff --git a/sys/dev/vmware/vmxnet3/if_vmxvar.h b/sys/dev/vmware/vmxnet3/if_vmxvar.h index 90fe761..bbe5a4a 100644 --- a/sys/dev/vmware/vmxnet3/if_vmxvar.h +++ b/sys/dev/vmware/vmxnet3/if_vmxvar.h @@ -42,21 +42,21 @@ struct vmxnet3_dma_alloc { #define VMXNET3_RXRINGS_PERQ 2 /* - * The maximum number of descriptors in each Rx/Tx ring. + * The number of descriptors in each Rx/Tx ring. */ -#define VMXNET3_MAX_TX_NDESC 512 -#define VMXNET3_MAX_RX_NDESC 256 +#define VMXNET3_DEF_TX_NDESC 512 +#define VMXNET3_MAX_TX_NDESC 4096 +#define VMXNET3_MIN_TX_NDESC 32 +#define VMXNET3_MASK_TX_NDESC 0x1F +#define VMXNET3_DEF_RX_NDESC 256 +#define VMXNET3_MAX_RX_NDESC 2048 +#define VMXNET3_MIN_RX_NDESC 32 +#define VMXNET3_MASK_RX_NDESC 0x1F + #define VMXNET3_MAX_TX_NCOMPDESC VMXNET3_MAX_TX_NDESC #define VMXNET3_MAX_RX_NCOMPDESC \ (VMXNET3_MAX_RX_NDESC * VMXNET3_RXRINGS_PERQ) -/* - * The maximum number of Rx segments we accept. When LRO is enabled, - * this allows us to receive the maximum sized frame with one MCLBYTES - * cluster followed by 16 MJUMPAGESIZE clusters. - */ -#define VMXNET3_MAX_RX_SEGS 17 - struct vmxnet3_txbuf { bus_dmamap_t vtxb_dmamap; struct mbuf *vtxb_m; @@ -272,6 +272,13 @@ struct vmxnet3_softc { #define VMXNET3_TX_MAXSEGSIZE (1 << 14) /* + * The maximum number of Rx segments we accept. When LRO is enabled, + * this allows us to receive the maximum sized frame with one MCLBYTES + * cluster followed by 16 MJUMPAGESIZE clusters. + */ +#define VMXNET3_MAX_RX_SEGS 17 + +/* * Predetermined size of the multicast MACs filter table. If the * number of multicast addresses exceeds this size, then the * ALL_MULTI mode is use instead. diff --git a/sys/dev/xen/balloon/balloon.c b/sys/dev/xen/balloon/balloon.c index d4f94ab..9021abb 100644 --- a/sys/dev/xen/balloon/balloon.c +++ b/sys/dev/xen/balloon/balloon.c @@ -40,14 +40,15 @@ __FBSDID("$FreeBSD$"); #include <sys/mutex.h> #include <sys/sysctl.h> -#include <machine/xen/xen-os.h> -#include <machine/xen/xenvar.h> -#include <machine/xen/xenfunc.h> +#include <vm/vm.h> +#include <vm/vm_page.h> + +#include <xen/xen-os.h> #include <xen/hypervisor.h> +#include <xen/features.h> #include <xen/xenstore/xenstorevar.h> -#include <vm/vm.h> -#include <vm/vm_page.h> +#include <machine/xen/xenvar.h> static MALLOC_DEFINE(M_BALLOON, "Balloon", "Xen Balloon Driver"); diff --git a/sys/dev/xen/blkback/blkback.c b/sys/dev/xen/blkback/blkback.c index 4208702..33f6faf 100644 --- a/sys/dev/xen/blkback/blkback.c +++ b/sys/dev/xen/blkback/blkback.c @@ -70,14 +70,13 @@ __FBSDID("$FreeBSD$"); #include <geom/geom.h> #include <machine/_inttypes.h> -#include <machine/xen/xen-os.h> #include <vm/vm.h> #include <vm/vm_extern.h> #include <vm/vm_kern.h> +#include <xen/xen-os.h> #include <xen/blkif.h> -#include <xen/evtchn.h> #include <xen/gnttab.h> #include <xen/xen_intr.h> @@ -682,7 +681,7 @@ struct xbb_softc { blkif_back_rings_t rings; /** IRQ mapping for the communication ring event channel. */ - int irq; + xen_intr_handle_t xen_intr_handle; /** * \brief Backend access mode flags (e.g. write, or read-only). @@ -1347,7 +1346,7 @@ xbb_send_response(struct xbb_softc *xbb, struct xbb_xen_req *req, int status) taskqueue_enqueue(xbb->io_taskqueue, &xbb->io_task); if (notify) - notify_remote_via_irq(xbb->irq); + xen_intr_signal(xbb->xen_intr_handle); } /** @@ -1616,8 +1615,8 @@ xbb_dispatch_io(struct xbb_softc *xbb, struct xbb_xen_reqlist *reqlist) sg = NULL; /* Check that number of segments is sane. */ - if (unlikely(nseg == 0) - || unlikely(nseg > xbb->max_request_segments)) { + if (__predict_false(nseg == 0) + || __predict_false(nseg > xbb->max_request_segments)) { DPRINTF("Bad number of segments in request (%d)\n", nseg); reqlist->status = BLKIF_RSP_ERROR; @@ -1734,7 +1733,7 @@ xbb_dispatch_io(struct xbb_softc *xbb, struct xbb_xen_reqlist *reqlist) for (seg_idx = 0, map = xbb->maps; seg_idx < reqlist->nr_segments; seg_idx++, map++){ - if (unlikely(map->status != 0)) { + if (__predict_false(map->status != 0)) { DPRINTF("invalid buffer -- could not remap " "it (%d)\n", map->status); DPRINTF("Mapping(%d): Host Addr 0x%lx, flags " @@ -2026,14 +2025,16 @@ xbb_run_queue(void *context, int pending) * \param arg Callback argument registerd during event channel * binding - the xbb_softc for this instance. */ -static void -xbb_intr(void *arg) +static int +xbb_filter(void *arg) { struct xbb_softc *xbb; - /* Defer to kernel thread. */ + /* Defer to taskqueue thread. */ xbb = (struct xbb_softc *)arg; taskqueue_enqueue(xbb->io_taskqueue, &xbb->io_task); + + return (FILTER_HANDLED); } SDT_PROVIDER_DEFINE(xbb); @@ -2081,7 +2082,7 @@ xbb_dispatch_dev(struct xbb_softc *xbb, struct xbb_xen_reqlist *reqlist, if (operation == BIO_FLUSH) { nreq = STAILQ_FIRST(&reqlist->contig_req_list); bio = g_new_bio(); - if (unlikely(bio == NULL)) { + if (__predict_false(bio == NULL)) { DPRINTF("Unable to allocate bio for BIO_FLUSH\n"); error = ENOMEM; return (error); @@ -2143,7 +2144,7 @@ xbb_dispatch_dev(struct xbb_softc *xbb, struct xbb_xen_reqlist *reqlist, } bio = bios[nbio++] = g_new_bio(); - if (unlikely(bio == NULL)) { + if (__predict_false(bio == NULL)) { error = ENOMEM; goto fail_free_bios; } @@ -2811,10 +2812,7 @@ xbb_disconnect(struct xbb_softc *xbb) if ((xbb->flags & XBBF_RING_CONNECTED) == 0) return (0); - if (xbb->irq != 0) { - unbind_from_irqhandler(xbb->irq); - xbb->irq = 0; - } + xen_intr_unbind(&xbb->xen_intr_handle); mtx_unlock(&xbb->lock); taskqueue_drain(xbb->io_taskqueue, &xbb->io_task); @@ -2966,13 +2964,14 @@ xbb_connect_ring(struct xbb_softc *xbb) xbb->flags |= XBBF_RING_CONNECTED; - error = - bind_interdomain_evtchn_to_irqhandler(xbb->otherend_id, - xbb->ring_config.evtchn, - device_get_nameunit(xbb->dev), - xbb_intr, /*arg*/xbb, - INTR_TYPE_BIO | INTR_MPSAFE, - &xbb->irq); + error = xen_intr_bind_remote_port(xbb->dev, + xbb->otherend_id, + xbb->ring_config.evtchn, + xbb_filter, + /*ithread_handler*/NULL, + /*arg*/xbb, + INTR_TYPE_BIO | INTR_MPSAFE, + &xbb->xen_intr_handle); if (error) { (void)xbb_disconnect(xbb); xenbus_dev_fatal(xbb->dev, error, "binding event channel"); @@ -3791,9 +3790,10 @@ xbb_attach(device_t dev) * Create a taskqueue for doing work that must occur from a * thread context. */ - xbb->io_taskqueue = taskqueue_create(device_get_nameunit(dev), M_NOWAIT, - taskqueue_thread_enqueue, - /*context*/&xbb->io_taskqueue); + xbb->io_taskqueue = taskqueue_create_fast(device_get_nameunit(dev), + M_NOWAIT, + taskqueue_thread_enqueue, + /*contxt*/&xbb->io_taskqueue); if (xbb->io_taskqueue == NULL) { xbb_attach_failed(xbb, error, "Unable to create taskqueue"); return (ENOMEM); diff --git a/sys/dev/xen/blkfront/blkfront.c b/sys/dev/xen/blkfront/blkfront.c index 9f1b082..feb79a1 100644 --- a/sys/dev/xen/blkfront/blkfront.c +++ b/sys/dev/xen/blkfront/blkfront.c @@ -51,19 +51,17 @@ __FBSDID("$FreeBSD$"); #include <machine/vmparam.h> #include <sys/bus_dma.h> -#include <machine/_inttypes.h> -#include <machine/xen/xen-os.h> -#include <machine/xen/xenvar.h> -#include <machine/xen/xenfunc.h> - +#include <xen/xen-os.h> #include <xen/hypervisor.h> #include <xen/xen_intr.h> -#include <xen/evtchn.h> #include <xen/gnttab.h> #include <xen/interface/grant_table.h> #include <xen/interface/io/protocols.h> #include <xen/xenbus/xenbusvar.h> +#include <machine/_inttypes.h> +#include <machine/xen/xenvar.h> + #include <geom/geom_disk.h> #include <dev/xen/blkfront/block.h> @@ -139,7 +137,7 @@ xbd_flush_requests(struct xbd_softc *sc) RING_PUSH_REQUESTS_AND_CHECK_NOTIFY(&sc->xbd_ring, notify); if (notify) - notify_remote_via_irq(sc->xbd_irq); + xen_intr_signal(sc->xen_intr_handle); } static void @@ -310,7 +308,7 @@ xbd_bio_command(struct xbd_softc *sc) struct xbd_command *cm; struct bio *bp; - if (unlikely(sc->xbd_state != XBD_STATE_CONNECTED)) + if (__predict_false(sc->xbd_state != XBD_STATE_CONNECTED)) return (NULL); bp = xbd_dequeue_bio(sc); @@ -437,7 +435,7 @@ xbd_bio_complete(struct xbd_softc *sc, struct xbd_command *cm) bp = cm->cm_bp; - if (unlikely(cm->cm_status != BLKIF_RSP_OKAY)) { + if (__predict_false(cm->cm_status != BLKIF_RSP_OKAY)) { disk_err(bp, "disk error" , -1, 0); printf(" status: %x\n", cm->cm_status); bp->bio_flags |= BIO_ERROR; @@ -470,7 +468,7 @@ xbd_int(void *xsc) mtx_lock(&sc->xbd_io_lock); - if (unlikely(sc->xbd_state == XBD_STATE_DISCONNECTED)) { + if (__predict_false(sc->xbd_state == XBD_STATE_DISCONNECTED)) { mtx_unlock(&sc->xbd_io_lock); return; } @@ -531,7 +529,7 @@ xbd_int(void *xsc) xbd_startio(sc); - if (unlikely(sc->xbd_state == XBD_STATE_SUSPENDED)) + if (__predict_false(sc->xbd_state == XBD_STATE_SUSPENDED)) wakeup(&sc->xbd_cm_q[XBD_Q_BUSY]); mtx_unlock(&sc->xbd_io_lock); @@ -782,13 +780,12 @@ xbd_alloc_ring(struct xbd_softc *sc) } } - error = bind_listening_port_to_irqhandler( - xenbus_get_otherend_id(sc->xbd_dev), - "xbd", (driver_intr_t *)xbd_int, sc, - INTR_TYPE_BIO | INTR_MPSAFE, &sc->xbd_irq); + error = xen_intr_alloc_and_bind_local_port(sc->xbd_dev, + xenbus_get_otherend_id(sc->xbd_dev), NULL, xbd_int, sc, + INTR_TYPE_BIO | INTR_MPSAFE, &sc->xen_intr_handle); if (error) { xenbus_dev_fatal(sc->xbd_dev, error, - "bind_evtchn_to_irqhandler failed"); + "xen_intr_alloc_and_bind_local_port failed"); return (error); } @@ -878,10 +875,6 @@ xbd_setup_sysctl(struct xbd_softc *xbd) "maximum outstanding requests (negotiated)"); SYSCTL_ADD_UINT(sysctl_ctx, children, OID_AUTO, - "max_requests", CTLFLAG_RD, &xbd->xbd_max_requests, -1, - "maximum outstanding requests (negotiated)"); - - SYSCTL_ADD_UINT(sysctl_ctx, children, OID_AUTO, "max_request_segments", CTLFLAG_RD, &xbd->xbd_max_request_segments, 0, "maximum number of pages per requests (negotiated)"); @@ -1046,10 +1039,8 @@ xbd_free(struct xbd_softc *sc) xbd_initq_cm(sc, XBD_Q_COMPLETE); } - if (sc->xbd_irq) { - unbind_from_irqhandler(sc->xbd_irq); - sc->xbd_irq = 0; - } + xen_intr_unbind(&sc->xen_intr_handle); + } /*--------------------------- State Change Handlers --------------------------*/ @@ -1281,7 +1272,7 @@ xbd_initialize(struct xbd_softc *sc) } error = xs_printf(XST_NIL, node_path, "event-channel", - "%u", irq_to_evtchn_port(sc->xbd_irq)); + "%u", xen_intr_port(sc->xen_intr_handle)); if (error) { xenbus_dev_fatal(sc->xbd_dev, error, "writing %s/event-channel", @@ -1418,6 +1409,9 @@ xbd_attach(device_t dev) /* FIXME: Use dynamic device id if this is not set. */ error = xs_scanf(XST_NIL, xenbus_get_node(dev), "virtual-device", NULL, "%" PRIu32, &vdevice); + if (error) + error = xs_scanf(XST_NIL, xenbus_get_node(dev), + "virtual-device-ext", NULL, "%" PRIu32, &vdevice); if (error) { xenbus_dev_fatal(dev, error, "reading virtual-device"); device_printf(dev, "Couldn't determine virtual device.\n"); diff --git a/sys/dev/xen/blkfront/block.h b/sys/dev/xen/blkfront/block.h index 0f7d6cb..9c803bc 100644 --- a/sys/dev/xen/blkfront/block.h +++ b/sys/dev/xen/blkfront/block.h @@ -179,7 +179,7 @@ struct xbd_softc { uint32_t xbd_max_request_size; grant_ref_t xbd_ring_ref[XBD_MAX_RING_PAGES]; blkif_front_ring_t xbd_ring; - unsigned int xbd_irq; + xen_intr_handle_t xen_intr_handle; struct gnttab_free_callback xbd_callback; xbd_cm_q_t xbd_cm_q[XBD_Q_COUNT]; bus_dma_tag_t xbd_io_dmat; diff --git a/sys/dev/xen/console/console.c b/sys/dev/xen/console/console.c index 6281bf2..65a0e7d 100644 --- a/sys/dev/xen/console/console.c +++ b/sys/dev/xen/console/console.c @@ -15,7 +15,7 @@ __FBSDID("$FreeBSD$"); #include <sys/kernel.h> #include <sys/bus.h> #include <machine/stdarg.h> -#include <machine/xen/xen-os.h> +#include <xen/xen-os.h> #include <xen/hypervisor.h> #include <xen/xen_intr.h> #include <sys/cons.h> @@ -71,6 +71,8 @@ static char rbuf[RBUF_SIZE]; static int rc, rp; static unsigned int cnsl_evt_reg; static unsigned int wc, wp; /* write_cons, write_prod */ +xen_intr_handle_t xen_intr_handle; +device_t xencons_dev; #ifdef KDB static int xc_altbrk; @@ -232,6 +234,7 @@ xc_attach(device_t dev) { int error; + xencons_dev = dev; xccons = tty_alloc(&xc_ttydevsw, NULL); tty_makedev(xccons, NULL, "xc%r", 0); @@ -243,15 +246,10 @@ xc_attach(device_t dev) callout_reset(&xc_callout, XC_POLLTIME, xc_timeout, xccons); if (xen_start_info->flags & SIF_INITDOMAIN) { - error = bind_virq_to_irqhandler( - VIRQ_CONSOLE, - 0, - "console", - NULL, - xencons_priv_interrupt, NULL, - INTR_TYPE_TTY, NULL); - - KASSERT(error >= 0, ("can't register console interrupt")); + error = xen_intr_bind_virq(dev, VIRQ_CONSOLE, 0, NULL, + xencons_priv_interrupt, NULL, + INTR_TYPE_TTY, &xen_intr_handle); + KASSERT(error >= 0, ("can't register console interrupt")); } /* register handler to flush console on shutdown */ diff --git a/sys/dev/xen/console/xencons_ring.c b/sys/dev/xen/console/xencons_ring.c index 077d286..3701551 100644 --- a/sys/dev/xen/console/xencons_ring.c +++ b/sys/dev/xen/console/xencons_ring.c @@ -16,7 +16,8 @@ __FBSDID("$FreeBSD$"); #include <sys/cons.h> #include <machine/stdarg.h> -#include <machine/xen/xen-os.h> + +#include <xen/xen-os.h> #include <xen/hypervisor.h> #include <xen/xen_intr.h> #include <sys/cons.h> @@ -30,9 +31,10 @@ __FBSDID("$FreeBSD$"); #include <xen/interface/io/console.h> #define console_evtchn console.domU.evtchn -static unsigned int console_irq; +xen_intr_handle_t console_handle; extern char *console_page; extern struct mtx cn_mtx; +extern device_t xencons_dev; static inline struct xencons_interface * xencons_interface(void) @@ -74,7 +76,7 @@ xencons_ring_send(const char *data, unsigned len) wmb(); intf->out_prod = prod; - notify_remote_via_evtchn(xen_start_info->console_evtchn); + xen_intr_signal(console_handle); return sent; @@ -106,7 +108,7 @@ xencons_handle_input(void *unused) intf->in_cons = cons; CN_LOCK(cn_mtx); - notify_remote_via_evtchn(xen_start_info->console_evtchn); + xen_intr_signal(console_handle); xencons_tx(); CN_UNLOCK(cn_mtx); @@ -126,9 +128,9 @@ xencons_ring_init(void) if (!xen_start_info->console_evtchn) return 0; - err = bind_caller_port_to_irqhandler(xen_start_info->console_evtchn, - "xencons", xencons_handle_input, NULL, - INTR_TYPE_MISC | INTR_MPSAFE, &console_irq); + err = xen_intr_bind_local_port(xencons_dev, + xen_start_info->console_evtchn, NULL, xencons_handle_input, NULL, + INTR_TYPE_MISC | INTR_MPSAFE, &console_handle); if (err) { return err; } @@ -146,7 +148,7 @@ xencons_suspend(void) if (!xen_start_info->console_evtchn) return; - unbind_from_irqhandler(console_irq); + xen_intr_unbind(&console_handle); } void diff --git a/sys/dev/xen/control/control.c b/sys/dev/xen/control/control.c index 18f42bb..649f281 100644 --- a/sys/dev/xen/control/control.c +++ b/sys/dev/xen/control/control.c @@ -128,12 +128,13 @@ __FBSDID("$FreeBSD$"); #include <geom/geom.h> #include <machine/_inttypes.h> -#include <machine/xen/xen-os.h> +#include <machine/intr_machdep.h> #include <vm/vm.h> #include <vm/vm_extern.h> #include <vm/vm_kern.h> +#include <xen/xen-os.h> #include <xen/blkif.h> #include <xen/evtchn.h> #include <xen/gnttab.h> @@ -144,6 +145,9 @@ __FBSDID("$FreeBSD$"); #include <xen/xenbus/xenbusvar.h> +#include <machine/xen/xenvar.h> +#include <machine/xen/xenfunc.h> + /*--------------------------- Forward Declarations --------------------------*/ /** Function signature for shutdown event handlers. */ typedef void (xctrl_shutdown_handler_t)(void); @@ -242,6 +246,7 @@ xctrl_suspend() xencons_suspend(); gnttab_suspend(); + intr_suspend(); max_pfn = HYPERVISOR_shared_info->arch.max_pfn; @@ -282,7 +287,7 @@ xctrl_suspend() HYPERVISOR_shared_info->arch.max_pfn = max_pfn; gnttab_resume(); - irq_resume(); + intr_resume(); local_irq_enable(); xencons_resume(); @@ -352,13 +357,11 @@ xctrl_suspend() * Prevent any races with evtchn_interrupt() handler. */ disable_intr(); - irq_suspend(); + intr_suspend(); suspend_cancelled = HYPERVISOR_suspend(0); - if (suspend_cancelled) - irq_resume(); - else - xenpci_resume(); + + intr_resume(); /* * Re-enable interrupts and put the scheduler back to normal. diff --git a/sys/dev/xen/netback/netback.c b/sys/dev/xen/netback/netback.c index 9463bad..8f0286c 100644 --- a/sys/dev/xen/netback/netback.c +++ b/sys/dev/xen/netback/netback.c @@ -79,14 +79,15 @@ __FBSDID("$FreeBSD$"); #include <vm/vm_kern.h> #include <machine/_inttypes.h> -#include <machine/xen/xen-os.h> -#include <machine/xen/xenvar.h> -#include <xen/evtchn.h> +#include <xen/xen-os.h> +#include <xen/hypervisor.h> #include <xen/xen_intr.h> #include <xen/interface/io/netif.h> #include <xen/xenbus/xenbusvar.h> +#include <machine/xen/xenvar.h> + /*--------------------------- Compile-time Tunables --------------------------*/ /*---------------------------------- Macros ----------------------------------*/ @@ -433,8 +434,8 @@ struct xnb_softc { /** Xen device handle.*/ long handle; - /** IRQ mapping for the communication ring event channel. */ - int irq; + /** Handle to the communication ring event channel. */ + xen_intr_handle_t xen_intr_handle; /** * \brief Cached value of the front-end's domain id. @@ -647,10 +648,7 @@ xnb_disconnect(struct xnb_softc *xnb) int error; int i; - if (xnb->irq != 0) { - unbind_from_irqhandler(xnb->irq); - xnb->irq = 0; - } + xen_intr_unbind(xnb->xen_intr_handle); /* * We may still have another thread currently processing requests. We @@ -773,13 +771,13 @@ xnb_connect_comms(struct xnb_softc *xnb) xnb->flags |= XNBF_RING_CONNECTED; - error = - bind_interdomain_evtchn_to_irqhandler(xnb->otherend_id, - xnb->evtchn, - device_get_nameunit(xnb->dev), - xnb_intr, /*arg*/xnb, - INTR_TYPE_BIO | INTR_MPSAFE, - &xnb->irq); + error = xen_intr_bind_remote_port(xnb->dev, + xnb->otherend_id, + xnb->evtchn, + /*filter*/NULL, + xnb_intr, /*arg*/xnb, + INTR_TYPE_BIO | INTR_MPSAFE, + &xnb->xen_intr_handle); if (error != 0) { (void)xnb_disconnect(xnb); xenbus_dev_fatal(xnb->dev, error, "binding event channel"); @@ -1448,7 +1446,7 @@ xnb_intr(void *arg) RING_PUSH_RESPONSES_AND_CHECK_NOTIFY(txb, notify); if (notify != 0) - notify_remote_via_irq(xnb->irq); + xen_intr_signal(xnb->xen_intr_handle); txb->sring->req_event = txb->req_cons + 1; xen_mb(); @@ -2361,7 +2359,7 @@ xnb_start_locked(struct ifnet *ifp) RING_PUSH_RESPONSES_AND_CHECK_NOTIFY(rxb, notify); if ((notify != 0) || (out_of_space != 0)) - notify_remote_via_irq(xnb->irq); + xen_intr_signal(xnb->xen_intr_handle); rxb->sring->req_event = req_prod_local + 1; xen_mb(); } while (rxb->sring->req_prod != req_prod_local) ; diff --git a/sys/dev/xen/netfront/netfront.c b/sys/dev/xen/netfront/netfront.c index 68b3bf9..f9c72e6 100644 --- a/sys/dev/xen/netfront/netfront.c +++ b/sys/dev/xen/netfront/netfront.c @@ -76,17 +76,16 @@ __FBSDID("$FreeBSD$"); #include <machine/intr_machdep.h> -#include <machine/xen/xen-os.h> -#include <machine/xen/xenfunc.h> -#include <machine/xen/xenvar.h> +#include <xen/xen-os.h> #include <xen/hypervisor.h> #include <xen/xen_intr.h> -#include <xen/evtchn.h> #include <xen/gnttab.h> #include <xen/interface/memory.h> #include <xen/interface/io/netif.h> #include <xen/xenbus/xenbusvar.h> +#include <machine/xen/xenvar.h> + #include <dev/xen/netfront/mbufq.h> #include "xenbus_if.h" @@ -257,8 +256,7 @@ struct netfront_info { struct mtx rx_lock; struct mtx sc_lock; - u_int handle; - u_int irq; + xen_intr_handle_t xen_intr_handle; u_int copying_receiver; u_int carrier; u_int maxfrags; @@ -547,7 +545,8 @@ talk_to_backend(device_t dev, struct netfront_info *info) goto abort_transaction; } err = xs_printf(xst, node, - "event-channel", "%u", irq_to_evtchn_port(info->irq)); + "event-channel", "%u", + xen_intr_port(info->xen_intr_handle)); if (err) { message = "writing event-channel"; goto abort_transaction; @@ -609,7 +608,6 @@ setup_device(device_t dev, struct netfront_info *info) info->rx_ring_ref = GRANT_REF_INVALID; info->rx.sring = NULL; info->tx.sring = NULL; - info->irq = 0; txs = (netif_tx_sring_t *)malloc(PAGE_SIZE, M_DEVBUF, M_NOWAIT|M_ZERO); if (!txs) { @@ -636,12 +634,13 @@ setup_device(device_t dev, struct netfront_info *info) if (error) goto fail; - error = bind_listening_port_to_irqhandler(xenbus_get_otherend_id(dev), - "xn", xn_intr, info, INTR_TYPE_NET | INTR_MPSAFE, &info->irq); + error = xen_intr_alloc_and_bind_local_port(dev, + xenbus_get_otherend_id(dev), /*filter*/NULL, xn_intr, info, + INTR_TYPE_NET | INTR_MPSAFE | INTR_ENTROPY, &info->xen_intr_handle); if (error) { xenbus_dev_fatal(dev, error, - "bind_evtchn_to_irqhandler failed"); + "xen_intr_alloc_and_bind_local_port failed"); goto fail; } @@ -806,7 +805,7 @@ network_alloc_rx_buffers(struct netfront_info *sc) req_prod = sc->rx.req_prod_pvt; - if (unlikely(sc->carrier == 0)) + if (__predict_false(sc->carrier == 0)) return; /* @@ -946,7 +945,7 @@ refill: /* Zap PTEs and give away pages in one big multicall. */ (void)HYPERVISOR_multicall(sc->rx_mcl, i+1); - if (unlikely(sc->rx_mcl[i].result != i || + if (__predict_false(sc->rx_mcl[i].result != i || HYPERVISOR_memory_op(XENMEM_decrease_reservation, &reservation) != i)) panic("%s: unable to reduce memory " @@ -961,7 +960,7 @@ refill: push: RING_PUSH_REQUESTS_AND_CHECK_NOTIFY(&sc->rx, notify); if (notify) - notify_remote_via_irq(sc->irq); + xen_intr_signal(sc->xen_intr_handle); } static void @@ -1003,7 +1002,7 @@ xn_rxeof(struct netfront_info *np) err = xennet_get_responses(np, &rinfo, rp, &i, &m, &pages_flipped); - if (unlikely(err)) { + if (__predict_false(err)) { if (m) mbufq_tail(&errq, m); np->stats.rx_errors++; @@ -1151,7 +1150,7 @@ xn_txeof(struct netfront_info *np) */ if (!m->m_next) ifp->if_opackets++; - if (unlikely(gnttab_query_foreign_access( + if (__predict_false(gnttab_query_foreign_access( np->grant_tx_ref[id]) != 0)) { panic("%s: grant id %u still in use by the " "backend", __func__, id); @@ -1249,7 +1248,7 @@ xennet_get_extras(struct netfront_info *np, struct mbuf *m; grant_ref_t ref; - if (unlikely(*cons + 1 == rp)) { + if (__predict_false(*cons + 1 == rp)) { #if 0 if (net_ratelimit()) WPRINTK("Missing extra info\n"); @@ -1261,7 +1260,7 @@ xennet_get_extras(struct netfront_info *np, extra = (struct netif_extra_info *) RING_GET_RESPONSE(&np->rx, ++(*cons)); - if (unlikely(!extra->type || + if (__predict_false(!extra->type || extra->type >= XEN_NETIF_EXTRA_TYPE_MAX)) { #if 0 if (net_ratelimit()) @@ -1317,7 +1316,7 @@ xennet_get_responses(struct netfront_info *np, DPRINTK("rx->status=%hd rx->offset=%hu frags=%u\n", rx->status, rx->offset, frags); #endif - if (unlikely(rx->status < 0 || + if (__predict_false(rx->status < 0 || rx->offset + rx->status > PAGE_SIZE)) { #if 0 @@ -1679,7 +1678,7 @@ xn_start_locked(struct ifnet *ifp) RING_PUSH_REQUESTS_AND_CHECK_NOTIFY(&sc->tx, notify); if (notify) - notify_remote_via_irq(sc->irq); + xen_intr_signal(sc->xen_intr_handle); if (RING_FULL(&sc->tx)) { sc->tx_full = 1; @@ -1961,7 +1960,7 @@ network_connect(struct netfront_info *np) * packets. */ netfront_carrier_on(np); - notify_remote_via_irq(np->irq); + xen_intr_signal(np->xen_intr_handle); XN_TX_LOCK(np); xn_txeof(np); XN_TX_UNLOCK(np); @@ -2050,8 +2049,9 @@ xn_configure_features(struct netfront_info *np) return (err); } -/** Create a network device. - * @param handle device handle +/** + * Create a network device. + * @param dev Newbus device representing this virtual NIC. */ int create_netdev(device_t dev) @@ -2198,10 +2198,7 @@ netif_disconnect_backend(struct netfront_info *info) free_ring(&info->tx_ring_ref, &info->tx.sring); free_ring(&info->rx_ring_ref, &info->rx.sring); - if (info->irq) - unbind_from_irqhandler(info->irq); - - info->irq = 0; + xen_intr_unbind(&info->xen_intr_handle); } static void diff --git a/sys/dev/xen/timer/timer.c b/sys/dev/xen/timer/timer.c new file mode 100644 index 0000000..9c8db59 --- /dev/null +++ b/sys/dev/xen/timer/timer.c @@ -0,0 +1,608 @@ +/** + * Copyright (c) 2009 Adrian Chadd + * Copyright (c) 2012 Spectra Logic Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + */ + +/** + * \file dev/xen/timer/timer.c + * \brief A timer driver for the Xen hypervisor's PV clock. + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <sys/param.h> +#include <sys/systm.h> +#include <sys/bus.h> +#include <sys/kernel.h> +#include <sys/module.h> +#include <sys/time.h> +#include <sys/timetc.h> +#include <sys/timeet.h> +#include <sys/smp.h> +#include <sys/limits.h> +#include <sys/clock.h> + +#include <xen/xen-os.h> +#include <xen/features.h> +#include <xen/xen_intr.h> +#include <xen/hypervisor.h> +#include <xen/interface/io/xenbus.h> +#include <xen/interface/vcpu.h> + +#include <machine/cpu.h> +#include <machine/cpufunc.h> +#include <machine/clock.h> +#include <machine/_inttypes.h> + +#include "clock_if.h" + +static devclass_t xentimer_devclass; + +#define NSEC_IN_SEC 1000000000ULL +#define NSEC_IN_USEC 1000ULL +/* 18446744073 = int(2^64 / NSEC_IN_SC) = 1 ns in 64-bit fractions */ +#define FRAC_IN_NSEC 18446744073LL + +/* Xen timers may fire up to 100us off */ +#define XENTIMER_MIN_PERIOD_IN_NSEC 100*NSEC_IN_USEC +#define XENCLOCK_RESOLUTION 10000000 + +#define ETIME 62 /* Xen "bad time" error */ + +#define XENTIMER_QUALITY 950 + +struct xentimer_pcpu_data { + uint64_t timer; + uint64_t last_processed; + void *irq_handle; +}; + +DPCPU_DEFINE(struct xentimer_pcpu_data, xentimer_pcpu); + +DPCPU_DECLARE(struct vcpu_info *, vcpu_info); + +struct xentimer_softc { + device_t dev; + struct timecounter tc; + struct eventtimer et; +}; + +/* Last time; this guarantees a monotonically increasing clock. */ +volatile uint64_t xen_timer_last_time = 0; + +static void +xentimer_identify(driver_t *driver, device_t parent) +{ + if (!xen_domain()) + return; + + /* Handle all Xen PV timers in one device instance. */ + if (devclass_get_device(xentimer_devclass, 0)) + return; + + BUS_ADD_CHILD(parent, 0, "xen_et", 0); +} + +static int +xentimer_probe(device_t dev) +{ + KASSERT((xen_domain()), ("Trying to use Xen timer on bare metal")); + /* + * In order to attach, this driver requires the following: + * - Vector callback support by the hypervisor, in order to deliver + * timer interrupts to the correct CPU for CPUs other than 0. + * - Access to the hypervisor shared info page, in order to look up + * each VCPU's timer information and the Xen wallclock time. + * - The hypervisor must say its PV clock is "safe" to use. + * - The hypervisor must support VCPUOP hypercalls. + * - The maximum number of CPUs supported by FreeBSD must not exceed + * the number of VCPUs supported by the hypervisor. + */ +#define XTREQUIRES(condition, reason...) \ + if (!(condition)) { \ + device_printf(dev, ## reason); \ + device_detach(dev); \ + return (ENXIO); \ + } + + if (xen_hvm_domain()) { + XTREQUIRES(xen_vector_callback_enabled, + "vector callbacks unavailable\n"); + XTREQUIRES(xen_feature(XENFEAT_hvm_safe_pvclock), + "HVM safe pvclock unavailable\n"); + } + XTREQUIRES(HYPERVISOR_shared_info != NULL, + "shared info page unavailable\n"); + XTREQUIRES(HYPERVISOR_vcpu_op(VCPUOP_stop_periodic_timer, 0, NULL) == 0, + "VCPUOPs interface unavailable\n"); +#undef XTREQUIRES + device_set_desc(dev, "Xen PV Clock"); + return (0); +} + +/* + * Scale a 64-bit delta by scaling and multiplying by a 32-bit fraction, + * yielding a 64-bit result. + */ +static inline uint64_t +scale_delta(uint64_t delta, uint32_t mul_frac, int shift) +{ + uint64_t product; + + if (shift < 0) + delta >>= -shift; + else + delta <<= shift; + +#if defined(__i386__) + { + uint32_t tmp1, tmp2; + + /** + * For i386, the formula looks like: + * + * lower = (mul_frac * (delta & UINT_MAX)) >> 32 + * upper = mul_frac * (delta >> 32) + * product = lower + upper + */ + __asm__ ( + "mul %5 ; " + "mov %4,%%eax ; " + "mov %%edx,%4 ; " + "mul %5 ; " + "xor %5,%5 ; " + "add %4,%%eax ; " + "adc %5,%%edx ; " + : "=A" (product), "=r" (tmp1), "=r" (tmp2) + : "a" ((uint32_t)delta), "1" ((uint32_t)(delta >> 32)), + "2" (mul_frac) ); + } +#elif defined(__amd64__) + { + unsigned long tmp; + + __asm__ ( + "mulq %[mul_frac] ; shrd $32, %[hi], %[lo]" + : [lo]"=a" (product), [hi]"=d" (tmp) + : "0" (delta), [mul_frac]"rm"((uint64_t)mul_frac)); + } +#else +#error "xentimer: unsupported architecture" +#endif + + return (product); +} + +static uint64_t +get_nsec_offset(struct vcpu_time_info *tinfo) +{ + + return (scale_delta(rdtsc() - tinfo->tsc_timestamp, + tinfo->tsc_to_system_mul, tinfo->tsc_shift)); +} + +/* + * Read the current hypervisor system uptime value from Xen. + * See <xen/interface/xen.h> for a description of how this works. + */ +static uint32_t +xen_fetch_vcpu_tinfo(struct vcpu_time_info *dst, struct vcpu_time_info *src) +{ + + do { + dst->version = src->version; + rmb(); + dst->tsc_timestamp = src->tsc_timestamp; + dst->system_time = src->system_time; + dst->tsc_to_system_mul = src->tsc_to_system_mul; + dst->tsc_shift = src->tsc_shift; + rmb(); + } while ((src->version & 1) | (dst->version ^ src->version)); + + return (dst->version); +} + +/** + * \brief Get the current time, in nanoseconds, since the hypervisor booted. + * + * \note This function returns the current CPU's idea of this value, unless + * it happens to be less than another CPU's previously determined value. + */ +static uint64_t +xen_fetch_vcpu_time(void) +{ + struct vcpu_time_info dst; + struct vcpu_time_info *src; + uint32_t pre_version; + uint64_t now; + volatile uint64_t last; + struct vcpu_info *vcpu = DPCPU_GET(vcpu_info); + + src = &vcpu->time; + + critical_enter(); + do { + pre_version = xen_fetch_vcpu_tinfo(&dst, src); + barrier(); + now = dst.system_time + get_nsec_offset(&dst); + barrier(); + } while (pre_version != src->version); + + /* + * Enforce a monotonically increasing clock time across all + * VCPUs. If our time is too old, use the last time and return. + * Otherwise, try to update the last time. + */ + do { + last = xen_timer_last_time; + if (last > now) { + now = last; + break; + } + } while (!atomic_cmpset_64(&xen_timer_last_time, last, now)); + + critical_exit(); + + return (now); +} + +static uint32_t +xentimer_get_timecount(struct timecounter *tc) +{ + + return ((uint32_t)xen_fetch_vcpu_time() & UINT_MAX); +} + +/** + * \brief Fetch the hypervisor boot time, known as the "Xen wallclock". + * + * \param ts Timespec to store the current stable value. + * \param version Pointer to store the corresponding wallclock version. + * + * \note This value is updated when Domain-0 shifts its clock to follow + * clock drift, e.g. as detected by NTP. + */ +static void +xen_fetch_wallclock(struct timespec *ts) +{ + shared_info_t *src = HYPERVISOR_shared_info; + uint32_t version = 0; + + do { + version = src->wc_version; + rmb(); + ts->tv_sec = src->wc_sec; + ts->tv_nsec = src->wc_nsec; + rmb(); + } while ((src->wc_version & 1) | (version ^ src->wc_version)); +} + +static void +xen_fetch_uptime(struct timespec *ts) +{ + uint64_t uptime = xen_fetch_vcpu_time(); + ts->tv_sec = uptime / NSEC_IN_SEC; + ts->tv_nsec = uptime % NSEC_IN_SEC; +} + +static int +xentimer_settime(device_t dev __unused, struct timespec *ts) +{ + /* + * Don't return EINVAL here; just silently fail if the domain isn't + * privileged enough to set the TOD. + */ + return(0); +} + +/** + * \brief Return current time according to the Xen Hypervisor wallclock. + * + * \param dev Xentimer device. + * \param ts Pointer to store the wallclock time. + * + * \note The Xen time structures document the hypervisor start time and the + * uptime-since-hypervisor-start (in nsec.) They need to be combined + * in order to calculate a TOD clock. + */ +static int +xentimer_gettime(device_t dev, struct timespec *ts) +{ + struct timespec u_ts; + + timespecclear(ts); + xen_fetch_wallclock(ts); + xen_fetch_uptime(&u_ts); + timespecadd(ts, &u_ts); + + return(0); +} + +/** + * \brief Handle a timer interrupt for the Xen PV timer driver. + * + * \param arg Xen timer driver softc that is expecting the interrupt. + */ +static int +xentimer_intr(void *arg) +{ + struct xentimer_softc *sc = (struct xentimer_softc *)arg; + struct xentimer_pcpu_data *pcpu = DPCPU_PTR(xentimer_pcpu); + + pcpu->last_processed = xen_fetch_vcpu_time(); + if (pcpu->timer != 0 && sc->et.et_active) + sc->et.et_event_cb(&sc->et, sc->et.et_arg); + + return (FILTER_HANDLED); +} + +static int +xentimer_vcpu_start_timer(int vcpu, uint64_t next_time) +{ + struct vcpu_set_singleshot_timer single; + + single.timeout_abs_ns = next_time; + single.flags = VCPU_SSHOTTMR_future; + return (HYPERVISOR_vcpu_op(VCPUOP_set_singleshot_timer, vcpu, &single)); +} + +static int +xentimer_vcpu_stop_timer(int vcpu) +{ + + return (HYPERVISOR_vcpu_op(VCPUOP_stop_singleshot_timer, vcpu, NULL)); +} + +/** + * \brief Set the next oneshot time for the current CPU. + * + * \param et Xen timer driver event timer to schedule on. + * \param first Delta to the next time to schedule the interrupt for. + * \param period Not used. + * + * \note See eventtimers(9) for more information. + * \note + * + * \returns 0 + */ +static int +xentimer_et_start(struct eventtimer *et, + sbintime_t first, sbintime_t period) +{ + int error = 0, i = 0; + struct xentimer_softc *sc = et->et_priv; + int cpu = PCPU_GET(acpi_id); + struct xentimer_pcpu_data *pcpu = DPCPU_PTR(xentimer_pcpu); + uint64_t first_in_ns, next_time; + + /* See sbttots() for this formula. */ + first_in_ns = (((first >> 32) * NSEC_IN_SEC) + + (((uint64_t)NSEC_IN_SEC * (uint32_t)first) >> 32)); + + /* + * Retry any timer scheduling failures, where the hypervisor + * returns -ETIME. Sometimes even a 100us timer period isn't large + * enough, but larger period instances are relatively uncommon. + * + * XXX Remove the panics once et_start() and its consumers are + * equipped to deal with start failures. + */ + do { + if (++i == 60) + panic("can't schedule timer"); + next_time = xen_fetch_vcpu_time() + first_in_ns; + error = xentimer_vcpu_start_timer(cpu, next_time); + } while (error == -ETIME); + + if (error) + panic("%s: Error %d setting singleshot timer to %"PRIu64"\n", + device_get_nameunit(sc->dev), error, next_time); + + pcpu->timer = next_time; + return (error); +} + +/** + * \brief Cancel the event timer's currently running timer, if any. + */ +static int +xentimer_et_stop(struct eventtimer *et) +{ + int cpu = PCPU_GET(acpi_id); + struct xentimer_pcpu_data *pcpu = DPCPU_PTR(xentimer_pcpu); + + pcpu->timer = 0; + return (xentimer_vcpu_stop_timer(cpu)); +} + +/** + * \brief Attach a Xen PV timer driver instance. + * + * \param dev Bus device object to attach. + * + * \note + * \returns EINVAL + */ +static int +xentimer_attach(device_t dev) +{ + struct xentimer_softc *sc = device_get_softc(dev); + int error, i; + + sc->dev = dev; + + /* Bind an event channel to a VIRQ on each VCPU. */ + CPU_FOREACH(i) { + struct xentimer_pcpu_data *pcpu = DPCPU_ID_PTR(i, xentimer_pcpu); + + error = HYPERVISOR_vcpu_op(VCPUOP_stop_periodic_timer, i, NULL); + if (error) { + device_printf(dev, "Error disabling Xen periodic timer " + "on CPU %d\n", i); + return (error); + } + + error = xen_intr_bind_virq(dev, VIRQ_TIMER, i, xentimer_intr, + NULL, sc, INTR_TYPE_CLK, &pcpu->irq_handle); + if (error) { + device_printf(dev, "Error %d binding VIRQ_TIMER " + "to VCPU %d\n", error, i); + return (error); + } + xen_intr_describe(pcpu->irq_handle, "c%d", i); + } + + /* Register the event timer. */ + sc->et.et_name = "XENTIMER"; + sc->et.et_quality = XENTIMER_QUALITY; + sc->et.et_flags = ET_FLAGS_ONESHOT | ET_FLAGS_PERCPU; + sc->et.et_frequency = NSEC_IN_SEC; + /* See tstosbt() for this formula */ + sc->et.et_min_period = (XENTIMER_MIN_PERIOD_IN_NSEC * + (((uint64_t)1 << 63) / 500000000) >> 32); + sc->et.et_max_period = ((sbintime_t)4 << 32); + sc->et.et_start = xentimer_et_start; + sc->et.et_stop = xentimer_et_stop; + sc->et.et_priv = sc; + et_register(&sc->et); + + /* Register the timecounter. */ + sc->tc.tc_name = "XENTIMER"; + sc->tc.tc_quality = XENTIMER_QUALITY; + /* + * The underlying resolution is in nanoseconds, since the timer info + * scales TSC frequencies using a fraction that represents time in + * terms of nanoseconds. + */ + sc->tc.tc_frequency = NSEC_IN_SEC; + sc->tc.tc_counter_mask = ~0u; + sc->tc.tc_get_timecount = xentimer_get_timecount; + sc->tc.tc_priv = sc; + tc_init(&sc->tc); + + /* Register the Hypervisor wall clock */ + clock_register(dev, XENCLOCK_RESOLUTION); + + return (0); +} + +static int +xentimer_detach(device_t dev) +{ + + /* Implement Xen PV clock teardown - XXX see hpet_detach ? */ + /* If possible: + * 1. need to deregister timecounter + * 2. need to deregister event timer + * 3. need to deregister virtual IRQ event channels + */ + return (EBUSY); +} + +/** + * The following device methods are disabled because they wouldn't work + * properly. + */ +#ifdef NOTYET +static int +xentimer_resume(device_t dev) +{ + struct xentimer_softc *sc = device_get_softc(dev); + int error = 0; + int i; + + device_printf(sc->dev, "%s", __func__); + CPU_FOREACH(i) { + struct xentimer_pcpu_data *pcpu = DPCPU_ID_PTR(i, xentimer_pcpu); + + /* Skip inactive timers. */ + if (pcpu->timer == 0) + continue; + + /* + * XXX This won't actually work, because Xen requires that + * singleshot timers be set while running on the given CPU. + */ + error = xentimer_vcpu_start_timer(i, pcpu->timer); + if (error == -ETIME) { + /* Event time has already passed; process. */ + xentimer_intr(sc); + } else if (error != 0) { + panic("%s: error %d restarting vcpu %d\n", + __func__, error, i); + } + } + + return (error); +} + +static int +xentimer_suspend(device_t dev) +{ + struct xentimer_softc *sc = device_get_softc(dev); + int error = 0; + int i; + + device_printf(sc->dev, "%s", __func__); + CPU_FOREACH(i) { + struct xentimer_pcpu_data *pcpu = DPCPU_ID_PTR(i, xentimer_pcpu); + + /* Skip inactive timers. */ + if (pcpu->timer == 0) + continue; + error = xentimer_vcpu_stop_timer(i); + if (error) + panic("Error %d stopping VCPU %d timer\n", error, i); + } + + return (error); +} +#endif + +static device_method_t xentimer_methods[] = { + DEVMETHOD(device_identify, xentimer_identify), + DEVMETHOD(device_probe, xentimer_probe), + DEVMETHOD(device_attach, xentimer_attach), + DEVMETHOD(device_detach, xentimer_detach), +#ifdef NOTYET + DEVMETHOD(device_suspend, xentimer_suspend), + DEVMETHOD(device_resume, xentimer_resume), +#endif + /* clock interface */ + DEVMETHOD(clock_gettime, xentimer_gettime), + DEVMETHOD(clock_settime, xentimer_settime), + DEVMETHOD_END +}; + +static driver_t xentimer_driver = { + "xen_et", + xentimer_methods, + sizeof(struct xentimer_softc), +}; + +DRIVER_MODULE(xentimer, nexus, xentimer_driver, xentimer_devclass, 0, 0); +MODULE_DEPEND(xentimer, nexus, 1, 1, 1); diff --git a/sys/dev/xen/xenpci/evtchn.c b/sys/dev/xen/xenpci/evtchn.c deleted file mode 100644 index 2d9dd6d..0000000 --- a/sys/dev/xen/xenpci/evtchn.c +++ /dev/null @@ -1,467 +0,0 @@ -/****************************************************************************** - * evtchn.c - * - * A simplified event channel for para-drivers in unmodified linux - * - * Copyright (c) 2002-2005, K A Fraser - * Copyright (c) 2005, Intel Corporation <xiaofeng.ling@intel.com> - * - * This file may be distributed separately from the Linux kernel, or - * incorporated into other software packages, subject to the following license: - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this source file (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 <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/bus.h> -#include <sys/malloc.h> -#include <sys/kernel.h> -#include <sys/limits.h> -#include <sys/lock.h> -#include <sys/mutex.h> -#include <sys/interrupt.h> -#include <sys/pcpu.h> - -#include <machine/xen/xen-os.h> -#include <machine/xen/xenvar.h> -#include <xen/hypervisor.h> -#include <xen/xen_intr.h> -#include <xen/evtchn.h> -#include <sys/smp.h> - -#include <dev/xen/xenpci/xenpcivar.h> - -#if defined(__i386__) -#define __ffs(word) (ffs(word) - 1) -#elif defined(__amd64__) -static inline unsigned long __ffs(unsigned long word) -{ - __asm__("bsfq %1,%0" - :"=r" (word) - :"rm" (word)); /* XXXRW: why no "cc"? */ - return word; -} -#else -#error "evtchn: unsupported architecture" -#endif - -#define is_valid_evtchn(x) ((x) != 0) -#define evtchn_from_irq(x) (irq_evtchn[irq].evtchn) - -static struct { - struct mtx lock; - driver_intr_t *handler; - void *arg; - int evtchn; - int close:1; /* close on unbind_from_irqhandler()? */ - int inuse:1; - int in_handler:1; - int mpsafe:1; -} irq_evtchn[256]; -static int evtchn_to_irq[NR_EVENT_CHANNELS] = { - [0 ... NR_EVENT_CHANNELS-1] = -1 }; - -static struct mtx irq_alloc_lock; -static device_t xenpci_device; - -#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0])) - -static unsigned int -alloc_xen_irq(void) -{ - static int warned; - unsigned int irq; - - mtx_lock(&irq_alloc_lock); - - for (irq = 1; irq < ARRAY_SIZE(irq_evtchn); irq++) { - if (irq_evtchn[irq].inuse) - continue; - irq_evtchn[irq].inuse = 1; - mtx_unlock(&irq_alloc_lock); - return irq; - } - - if (!warned) { - warned = 1; - printf("alloc_xen_irq: No available IRQ to bind to: " - "increase irq_evtchn[] size in evtchn.c.\n"); - } - - mtx_unlock(&irq_alloc_lock); - - return -ENOSPC; -} - -static void -free_xen_irq(int irq) -{ - - mtx_lock(&irq_alloc_lock); - irq_evtchn[irq].inuse = 0; - mtx_unlock(&irq_alloc_lock); -} - -int -irq_to_evtchn_port(int irq) -{ - - return irq_evtchn[irq].evtchn; -} - -void -mask_evtchn(int port) -{ - shared_info_t *s = HYPERVISOR_shared_info; - - synch_set_bit(port, &s->evtchn_mask[0]); -} - -void -unmask_evtchn(int port) -{ - evtchn_unmask_t op = { .port = port }; - - HYPERVISOR_event_channel_op(EVTCHNOP_unmask, &op); -} - -int -bind_listening_port_to_irqhandler(unsigned int remote_domain, - const char *devname, driver_intr_t handler, void *arg, - unsigned long irqflags, unsigned int *irqp) -{ - struct evtchn_alloc_unbound alloc_unbound; - unsigned int irq; - int error; - - irq = alloc_xen_irq(); - if (irq < 0) - return irq; - - mtx_lock(&irq_evtchn[irq].lock); - - alloc_unbound.dom = DOMID_SELF; - alloc_unbound.remote_dom = remote_domain; - error = HYPERVISOR_event_channel_op(EVTCHNOP_alloc_unbound, - &alloc_unbound); - if (error) { - mtx_unlock(&irq_evtchn[irq].lock); - free_xen_irq(irq); - return (-error); - } - - irq_evtchn[irq].handler = handler; - irq_evtchn[irq].arg = arg; - irq_evtchn[irq].evtchn = alloc_unbound.port; - irq_evtchn[irq].close = 1; - irq_evtchn[irq].mpsafe = (irqflags & INTR_MPSAFE) != 0; - - evtchn_to_irq[alloc_unbound.port] = irq; - - unmask_evtchn(alloc_unbound.port); - - mtx_unlock(&irq_evtchn[irq].lock); - - if (irqp) - *irqp = irq; - return (0); -} - -int -bind_interdomain_evtchn_to_irqhandler(unsigned int remote_domain, - unsigned int remote_port, const char *devname, driver_intr_t handler, - void *arg, unsigned long irqflags, unsigned int *irqp) -{ - struct evtchn_bind_interdomain bind_interdomain; - unsigned int irq; - int error; - - irq = alloc_xen_irq(); - if (irq < 0) - return irq; - - mtx_lock(&irq_evtchn[irq].lock); - - bind_interdomain.remote_dom = remote_domain; - bind_interdomain.remote_port = remote_port; - error = HYPERVISOR_event_channel_op(EVTCHNOP_bind_interdomain, - &bind_interdomain); - if (error) { - mtx_unlock(&irq_evtchn[irq].lock); - free_xen_irq(irq); - return (-error); - } - - irq_evtchn[irq].handler = handler; - irq_evtchn[irq].arg = arg; - irq_evtchn[irq].evtchn = bind_interdomain.local_port; - irq_evtchn[irq].close = 1; - irq_evtchn[irq].mpsafe = (irqflags & INTR_MPSAFE) != 0; - - evtchn_to_irq[bind_interdomain.local_port] = irq; - - unmask_evtchn(bind_interdomain.local_port); - - mtx_unlock(&irq_evtchn[irq].lock); - - if (irqp) - *irqp = irq; - return (0); -} - - -int -bind_caller_port_to_irqhandler(unsigned int caller_port, - const char *devname, driver_intr_t handler, void *arg, - unsigned long irqflags, unsigned int *irqp) -{ - unsigned int irq; - - irq = alloc_xen_irq(); - if (irq < 0) - return irq; - - mtx_lock(&irq_evtchn[irq].lock); - - irq_evtchn[irq].handler = handler; - irq_evtchn[irq].arg = arg; - irq_evtchn[irq].evtchn = caller_port; - irq_evtchn[irq].close = 0; - irq_evtchn[irq].mpsafe = (irqflags & INTR_MPSAFE) != 0; - - evtchn_to_irq[caller_port] = irq; - - unmask_evtchn(caller_port); - - mtx_unlock(&irq_evtchn[irq].lock); - - if (irqp) - *irqp = irq; - return (0); -} - -void -unbind_from_irqhandler(unsigned int irq) -{ - int evtchn; - - mtx_lock(&irq_evtchn[irq].lock); - - evtchn = evtchn_from_irq(irq); - - if (is_valid_evtchn(evtchn)) { - evtchn_to_irq[evtchn] = -1; - mask_evtchn(evtchn); - if (irq_evtchn[irq].close) { - struct evtchn_close close = { .port = evtchn }; - if (HYPERVISOR_event_channel_op(EVTCHNOP_close, &close)) - panic("EVTCHNOP_close failed"); - } - } - - irq_evtchn[irq].handler = NULL; - irq_evtchn[irq].evtchn = 0; - - mtx_unlock(&irq_evtchn[irq].lock); - - while (irq_evtchn[irq].in_handler) - cpu_relax(); - - free_xen_irq(irq); -} - -void notify_remote_via_irq(int irq) -{ - int evtchn; - - evtchn = evtchn_from_irq(irq); - if (is_valid_evtchn(evtchn)) - notify_remote_via_evtchn(evtchn); -} - -static inline unsigned long active_evtchns(unsigned int cpu, shared_info_t *sh, - unsigned int idx) -{ - return (sh->evtchn_pending[idx] & ~sh->evtchn_mask[idx]); -} - -static void -evtchn_interrupt(void *arg) -{ - unsigned int l1i, l2i, port; - unsigned long masked_l1, masked_l2; - /* XXX: All events are bound to vcpu0 but irq may be redirected. */ - int cpu = 0; /*smp_processor_id();*/ - driver_intr_t *handler; - void *handler_arg; - int irq, handler_mpsafe; - shared_info_t *s = HYPERVISOR_shared_info; - vcpu_info_t *v = &s->vcpu_info[cpu]; - struct pcpu *pc = pcpu_find(cpu); - unsigned long l1, l2; - - v->evtchn_upcall_pending = 0; - -#if 0 -#ifndef CONFIG_X86 /* No need for a barrier -- XCHG is a barrier on x86. */ - /* Clear master flag /before/ clearing selector flag. */ - wmb(); -#endif -#endif - - l1 = atomic_readandclear_long(&v->evtchn_pending_sel); - - l1i = pc->pc_last_processed_l1i; - l2i = pc->pc_last_processed_l2i; - - while (l1 != 0) { - - l1i = (l1i + 1) % LONG_BIT; - masked_l1 = l1 & ((~0UL) << l1i); - - if (masked_l1 == 0) { /* if we masked out all events, wrap around to the beginning */ - l1i = LONG_BIT - 1; - l2i = LONG_BIT - 1; - continue; - } - l1i = __ffs(masked_l1); - - do { - l2 = active_evtchns(cpu, s, l1i); - - l2i = (l2i + 1) % LONG_BIT; - masked_l2 = l2 & ((~0UL) << l2i); - - if (masked_l2 == 0) { /* if we masked out all events, move on */ - l2i = LONG_BIT - 1; - break; - } - l2i = __ffs(masked_l2); - - /* process port */ - port = (l1i * LONG_BIT) + l2i; - synch_clear_bit(port, &s->evtchn_pending[0]); - - irq = evtchn_to_irq[port]; - if (irq < 0) - continue; - - mtx_lock(&irq_evtchn[irq].lock); - handler = irq_evtchn[irq].handler; - handler_arg = irq_evtchn[irq].arg; - handler_mpsafe = irq_evtchn[irq].mpsafe; - if (unlikely(handler == NULL)) { - printf("Xen IRQ%d (port %d) has no handler!\n", - irq, port); - mtx_unlock(&irq_evtchn[irq].lock); - continue; - } - irq_evtchn[irq].in_handler = 1; - mtx_unlock(&irq_evtchn[irq].lock); - - //local_irq_enable(); - if (!handler_mpsafe) - mtx_lock(&Giant); - handler(handler_arg); - if (!handler_mpsafe) - mtx_unlock(&Giant); - //local_irq_disable(); - - mtx_lock(&irq_evtchn[irq].lock); - irq_evtchn[irq].in_handler = 0; - mtx_unlock(&irq_evtchn[irq].lock); - - /* if this is the final port processed, we'll pick up here+1 next time */ - pc->pc_last_processed_l1i = l1i; - pc->pc_last_processed_l2i = l2i; - - } while (l2i != LONG_BIT - 1); - - l2 = active_evtchns(cpu, s, l1i); - if (l2 == 0) /* we handled all ports, so we can clear the selector bit */ - l1 &= ~(1UL << l1i); - } -} - -void -irq_suspend(void) -{ - struct xenpci_softc *scp = device_get_softc(xenpci_device); - - /* - * Take our interrupt handler out of the list of handlers - * that can handle this irq. - */ - if (scp->intr_cookie != NULL) { - if (BUS_TEARDOWN_INTR(device_get_parent(xenpci_device), - xenpci_device, scp->res_irq, scp->intr_cookie) != 0) - printf("intr teardown failed.. continuing\n"); - scp->intr_cookie = NULL; - } -} - -void -irq_resume(void) -{ - struct xenpci_softc *scp = device_get_softc(xenpci_device); - int evtchn, irq; - - for (evtchn = 0; evtchn < NR_EVENT_CHANNELS; evtchn++) { - mask_evtchn(evtchn); - evtchn_to_irq[evtchn] = -1; - } - - for (irq = 0; irq < ARRAY_SIZE(irq_evtchn); irq++) - irq_evtchn[irq].evtchn = 0; - - BUS_SETUP_INTR(device_get_parent(xenpci_device), - xenpci_device, scp->res_irq, INTR_TYPE_MISC, - NULL, evtchn_interrupt, NULL, &scp->intr_cookie); -} - -int -xenpci_irq_init(device_t device, struct xenpci_softc *scp) -{ - int irq, cpu; - int error; - - mtx_init(&irq_alloc_lock, "xen-irq-lock", NULL, MTX_DEF); - - for (irq = 0; irq < ARRAY_SIZE(irq_evtchn); irq++) - mtx_init(&irq_evtchn[irq].lock, "irq-evtchn", NULL, MTX_DEF); - - for (cpu = 0; cpu < mp_ncpus; cpu++) { - pcpu_find(cpu)->pc_last_processed_l1i = LONG_BIT - 1; - pcpu_find(cpu)->pc_last_processed_l2i = LONG_BIT - 1; - } - - error = BUS_SETUP_INTR(device_get_parent(device), device, - scp->res_irq, INTR_MPSAFE|INTR_TYPE_MISC, NULL, evtchn_interrupt, - NULL, &scp->intr_cookie); - if (error) - return (error); - - xenpci_device = device; - - return (0); -} diff --git a/sys/dev/xen/xenpci/xenpci.c b/sys/dev/xen/xenpci/xenpci.c index 2d74676..0b1762d 100644 --- a/sys/dev/xen/xenpci/xenpci.c +++ b/sys/dev/xen/xenpci/xenpci.c @@ -32,40 +32,25 @@ __FBSDID("$FreeBSD$"); #include <sys/kernel.h> #include <sys/malloc.h> #include <sys/module.h> -#include <sys/proc.h> -#include <sys/systm.h> -#include <sys/time.h> #include <machine/bus.h> #include <machine/resource.h> #include <sys/rman.h> #include <machine/stdarg.h> -#include <machine/xen/xen-os.h> + +#include <xen/xen-os.h> #include <xen/features.h> #include <xen/hypervisor.h> -#include <xen/gnttab.h> -#include <xen/xen_intr.h> -#include <xen/interface/memory.h> -#include <xen/interface/hvm/params.h> +#include <xen/hvm.h> #include <dev/pci/pcireg.h> #include <dev/pci/pcivar.h> -#include <vm/vm.h> -#include <vm/vm_extern.h> -#include <vm/vm_kern.h> -#include <vm/pmap.h> - #include <dev/xen/xenpci/xenpcivar.h> -/* - * These variables are used by the rest of the kernel to access the - * hypervisor. - */ -char *hypercall_stubs; -shared_info_t *HYPERVISOR_shared_info; -static vm_paddr_t shared_info_pa; +extern void xen_intr_handle_upcall(struct trapframe *trap_frame); + static device_t nexus; /* @@ -73,103 +58,42 @@ static device_t nexus; */ static devclass_t xenpci_devclass; -/* - * Return the CPUID base address for Xen functions. - */ -static uint32_t -xenpci_cpuid_base(void) +static int +xenpci_intr_filter(void *trap_frame) { - uint32_t base, regs[4]; - - for (base = 0x40000000; base < 0x40010000; base += 0x100) { - do_cpuid(base, regs); - if (!memcmp("XenVMMXenVMM", ®s[1], 12) - && (regs[0] - base) >= 2) - return (base); - } - return (0); + xen_intr_handle_upcall(trap_frame); + return (FILTER_HANDLED); } -/* - * Allocate and fill in the hypcall page. - */ static int -xenpci_init_hypercall_stubs(device_t dev, struct xenpci_softc * scp) +xenpci_irq_init(device_t device, struct xenpci_softc *scp) { - uint32_t base, regs[4]; - int i; - - base = xenpci_cpuid_base(); - if (!base) { - device_printf(dev, "Xen platform device but not Xen VMM\n"); - return (EINVAL); - } + int error; - if (bootverbose) { - do_cpuid(base + 1, regs); - device_printf(dev, "Xen version %d.%d.\n", - regs[0] >> 16, regs[0] & 0xffff); - } + error = BUS_SETUP_INTR(device_get_parent(device), device, + scp->res_irq, INTR_MPSAFE|INTR_TYPE_MISC, + xenpci_intr_filter, NULL, /*trap_frame*/NULL, + &scp->intr_cookie); + if (error) + return error; /* - * Find the hypercall pages. + * When using the PCI event delivery callback we cannot assign + * events to specific vCPUs, so all events are delivered to vCPU#0 by + * Xen. Since the PCI interrupt can fire on any CPU by default, we + * need to bind it to vCPU#0 in order to ensure that + * xen_intr_handle_upcall always gets called on vCPU#0. */ - do_cpuid(base + 2, regs); - - hypercall_stubs = malloc(regs[0] * PAGE_SIZE, M_TEMP, M_WAITOK); - - for (i = 0; i < regs[0]; i++) { - wrmsr(regs[1], vtophys(hypercall_stubs + i * PAGE_SIZE) + i); - } + error = BUS_BIND_INTR(device_get_parent(device), device, + scp->res_irq, 0); + if (error) + return error; + xen_hvm_set_callback(device); return (0); } /* - * After a resume, re-initialise the hypercall page. - */ -static void -xenpci_resume_hypercall_stubs(device_t dev, struct xenpci_softc * scp) -{ - uint32_t base, regs[4]; - int i; - - base = xenpci_cpuid_base(); - - do_cpuid(base + 2, regs); - for (i = 0; i < regs[0]; i++) { - wrmsr(regs[1], vtophys(hypercall_stubs + i * PAGE_SIZE) + i); - } -} - -/* - * Tell the hypervisor how to contact us for event channel callbacks. - */ -static void -xenpci_set_callback(device_t dev) -{ - int irq; - uint64_t callback; - struct xen_hvm_param xhp; - - irq = pci_get_irq(dev); - if (irq < 16) { - callback = irq; - } else { - callback = (pci_get_intpin(dev) - 1) & 3; - callback |= pci_get_slot(dev) << 11; - callback |= 1ull << 56; - } - - xhp.domid = DOMID_SELF; - xhp.index = HVM_PARAM_CALLBACK_IRQ; - xhp.value = callback; - if (HYPERVISOR_hvm_op(HVMOP_set_param, &xhp)) - panic("Can't set evtchn callback"); -} - - -/* * Deallocate anything allocated by xenpci_allocate_resources. */ static int @@ -293,35 +217,6 @@ xenpci_deactivate_resource(device_t dev, device_t child, int type, } /* - * Called very early in the resume sequence - reinitialise the various - * bits of Xen machinery including the hypercall page and the shared - * info page. - */ -void -xenpci_resume() -{ - device_t dev = devclass_get_device(xenpci_devclass, 0); - struct xenpci_softc *scp = device_get_softc(dev); - struct xen_add_to_physmap xatp; - - xenpci_resume_hypercall_stubs(dev, scp); - - xatp.domid = DOMID_SELF; - xatp.idx = 0; - xatp.space = XENMAPSPACE_shared_info; - xatp.gpfn = shared_info_pa >> PAGE_SHIFT; - if (HYPERVISOR_memory_op(XENMEM_add_to_physmap, &xatp)) - panic("HYPERVISOR_memory_op failed"); - - pmap_kenter((vm_offset_t) HYPERVISOR_shared_info, shared_info_pa); - - xenpci_set_callback(dev); - - gnttab_resume(); - irq_resume(); -} - -/* * Probe - just check device ID. */ static int @@ -341,11 +236,9 @@ xenpci_probe(device_t dev) static int xenpci_attach(device_t dev) { - int error; struct xenpci_softc *scp = device_get_softc(dev); - struct xen_add_to_physmap xatp; - vm_offset_t shared_va; devclass_t dc; + int error; /* * Find and record nexus0. Since we are not really on the @@ -365,33 +258,15 @@ xenpci_attach(device_t dev) goto errexit; } - error = xenpci_init_hypercall_stubs(dev, scp); - if (error) { - device_printf(dev, "xenpci_init_hypercall_stubs failed(%d).\n", - error); - goto errexit; - } - - setup_xen_features(); - - xenpci_alloc_space_int(scp, PAGE_SIZE, &shared_info_pa); - - xatp.domid = DOMID_SELF; - xatp.idx = 0; - xatp.space = XENMAPSPACE_shared_info; - xatp.gpfn = shared_info_pa >> PAGE_SHIFT; - if (HYPERVISOR_memory_op(XENMEM_add_to_physmap, &xatp)) - panic("HYPERVISOR_memory_op failed"); - - shared_va = kva_alloc(PAGE_SIZE); - pmap_kenter(shared_va, shared_info_pa); - HYPERVISOR_shared_info = (void *) shared_va; - /* * Hook the irq up to evtchn */ - xenpci_irq_init(dev, scp); - xenpci_set_callback(dev); + error = xenpci_irq_init(dev, scp); + if (error) { + device_printf(dev, "xenpci_irq_init failed(%d).\n", + error); + goto errexit; + } return (bus_generic_attach(dev)); @@ -431,13 +306,42 @@ xenpci_detach(device_t dev) return (xenpci_deallocate_resources(dev)); } +static int +xenpci_suspend(device_t dev) +{ + struct xenpci_softc *scp = device_get_softc(dev); + device_t parent = device_get_parent(dev); + + if (scp->intr_cookie != NULL) { + if (BUS_TEARDOWN_INTR(parent, dev, scp->res_irq, + scp->intr_cookie) != 0) + printf("intr teardown failed.. continuing\n"); + scp->intr_cookie = NULL; + } + + return (bus_generic_suspend(dev)); +} + +static int +xenpci_resume(device_t dev) +{ + struct xenpci_softc *scp = device_get_softc(dev); + device_t parent = device_get_parent(dev); + + BUS_SETUP_INTR(parent, dev, scp->res_irq, + INTR_MPSAFE|INTR_TYPE_MISC, xenpci_intr_filter, NULL, + /*trap_frame*/NULL, &scp->intr_cookie); + xen_hvm_set_callback(dev); + return (bus_generic_resume(dev)); +} + static device_method_t xenpci_methods[] = { /* Device interface */ DEVMETHOD(device_probe, xenpci_probe), DEVMETHOD(device_attach, xenpci_attach), DEVMETHOD(device_detach, xenpci_detach), - DEVMETHOD(device_suspend, bus_generic_suspend), - DEVMETHOD(device_resume, bus_generic_resume), + DEVMETHOD(device_suspend, xenpci_suspend), + DEVMETHOD(device_resume, xenpci_resume), /* Bus interface */ DEVMETHOD(bus_add_child, bus_generic_add_child), diff --git a/sys/dev/xen/xenpci/xenpcivar.h b/sys/dev/xen/xenpci/xenpcivar.h index a57c080..527a291 100644 --- a/sys/dev/xen/xenpci/xenpcivar.h +++ b/sys/dev/xen/xenpci/xenpcivar.h @@ -22,6 +22,8 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. + * + * $FreeBSD$ */ /* @@ -38,7 +40,4 @@ struct xenpci_softc { vm_paddr_t phys_next; /* next page from mem range */ }; -extern int xenpci_irq_init(device_t device, struct xenpci_softc *scp); extern int xenpci_alloc_space(size_t sz, vm_paddr_t *pa); -extern void xenpci_resume(void); -extern void xen_suspend(void); diff --git a/sys/fs/nfs/nfs.h b/sys/fs/nfs/nfs.h index aaa7fb1..5976934 100644 --- a/sys/fs/nfs/nfs.h +++ b/sys/fs/nfs/nfs.h @@ -335,11 +335,6 @@ struct nfsreferral { */ #define NFS_NFSSTATS 1 /* struct: struct nfsstats */ -#define FS_NFS_NAMES { \ - { 0, 0 }, \ - { "nfsstats", CTLTYPE_STRUCT }, \ -} - /* * Here is the definition of the attribute bits array and macros that * manipulate it. diff --git a/sys/fs/tmpfs/tmpfs_subr.c b/sys/fs/tmpfs/tmpfs_subr.c index 94498ff..ec96936 100644 --- a/sys/fs/tmpfs/tmpfs_subr.c +++ b/sys/fs/tmpfs/tmpfs_subr.c @@ -1433,9 +1433,10 @@ tmpfs_chflags(struct vnode *vp, u_long flags, struct ucred *cred, node = VP_TO_TMPFS_NODE(vp); - if ((flags & ~(UF_NODUMP | UF_IMMUTABLE | UF_APPEND | UF_OPAQUE | - UF_NOUNLINK | SF_ARCHIVED | SF_IMMUTABLE | SF_APPEND | - SF_NOUNLINK)) != 0) + if ((flags & ~(SF_APPEND | SF_ARCHIVED | SF_IMMUTABLE | SF_NOUNLINK | + UF_APPEND | UF_ARCHIVE | UF_HIDDEN | UF_IMMUTABLE | UF_NODUMP | + UF_NOUNLINK | UF_OFFLINE | UF_OPAQUE | UF_READONLY | UF_REPARSE | + UF_SPARSE | UF_SYSTEM)) != 0) return (EOPNOTSUPP); /* Disallow this operation if the file system is mounted read-only. */ diff --git a/sys/geom/zero/g_zero.c b/sys/geom/zero/g_zero.c index 1c2c54f..311db54 100644 --- a/sys/geom/zero/g_zero.c +++ b/sys/geom/zero/g_zero.c @@ -41,16 +41,37 @@ __FBSDID("$FreeBSD$"); #define G_ZERO_CLASS_NAME "ZERO" +static int g_zero_clear_sysctl(SYSCTL_HANDLER_ARGS); + SYSCTL_DECL(_kern_geom); static SYSCTL_NODE(_kern_geom, OID_AUTO, zero, CTLFLAG_RW, 0, "GEOM_ZERO stuff"); static int g_zero_clear = 1; -SYSCTL_INT(_kern_geom_zero, OID_AUTO, clear, CTLFLAG_RW, &g_zero_clear, 0, - "Clear read data buffer"); +SYSCTL_PROC(_kern_geom_zero, OID_AUTO, clear, CTLTYPE_INT|CTLFLAG_RW, + &g_zero_clear, 0, g_zero_clear_sysctl, "I", "Clear read data buffer"); static int g_zero_byte = 0; SYSCTL_INT(_kern_geom_zero, OID_AUTO, byte, CTLFLAG_RW, &g_zero_byte, 0, "Byte (octet) value to clear the buffers with"); +static struct g_provider *gpp; + +static int +g_zero_clear_sysctl(SYSCTL_HANDLER_ARGS) +{ + int error; + + error = sysctl_handle_int(oidp, &g_zero_clear, 0, req); + if (error != 0 || req->newptr == NULL) + return (error); + if (gpp == NULL) + return (ENXIO); + if (g_zero_clear) + gpp->flags &= ~G_PF_ACCEPT_UNMAPPED; + else + gpp->flags |= G_PF_ACCEPT_UNMAPPED; + return (0); +} + static void g_zero_start(struct bio *bp) { @@ -58,7 +79,7 @@ g_zero_start(struct bio *bp) switch (bp->bio_cmd) { case BIO_READ: - if (g_zero_clear) + if (g_zero_clear && (bp->bio_flags & BIO_UNMAPPED) == 0) memset(bp->bio_data, g_zero_byte, bp->bio_length); /* FALLTHROUGH */ case BIO_DELETE: @@ -84,7 +105,9 @@ g_zero_init(struct g_class *mp) gp = g_new_geomf(mp, "gzero"); gp->start = g_zero_start; gp->access = g_std_access; - pp = g_new_providerf(gp, "%s", gp->name); + gpp = pp = g_new_providerf(gp, "%s", gp->name); + if (!g_zero_clear) + pp->flags |= G_PF_ACCEPT_UNMAPPED; pp->mediasize = 1152921504606846976LLU; pp->sectorsize = 512; g_error_provider(pp, 0); @@ -104,6 +127,7 @@ g_zero_destroy_geom(struct gctl_req *req __unused, struct g_class *mp __unused, return (0); if (pp->acr > 0 || pp->acw > 0 || pp->ace > 0) return (EBUSY); + gpp = NULL; g_wither_geom(gp, ENXIO); return (0); } diff --git a/sys/i386/i386/apic_vector.s b/sys/i386/i386/apic_vector.s index 618436d..adedbc4 100644 --- a/sys/i386/i386/apic_vector.s +++ b/sys/i386/i386/apic_vector.s @@ -138,6 +138,25 @@ IDTVEC(errorint) MEXITCOUNT jmp doreti +#ifdef XENHVM +/* + * Xen event channel upcall interrupt handler. + * Only used when the hypervisor supports direct vector callbacks. + */ + .text + SUPERALIGN_TEXT +IDTVEC(xen_intr_upcall) + PUSH_FRAME + SET_KERNEL_SREGS + cld + FAKE_MCOUNT(TF_EIP(%esp)) + pushl %esp + call xen_intr_handle_upcall + add $4, %esp + MEXITCOUNT + jmp doreti +#endif + #ifdef SMP /* * Global address space TLB shootdown. diff --git a/sys/i386/i386/machdep.c b/sys/i386/i386/machdep.c index 9a710e5..c430316 100644 --- a/sys/i386/i386/machdep.c +++ b/sys/i386/i386/machdep.c @@ -160,9 +160,8 @@ uint32_t arch_i386_xbox_memsize = 0; #ifdef XEN /* XEN includes */ -#include <machine/xen/xen-os.h> +#include <xen/xen-os.h> #include <xen/hypervisor.h> -#include <machine/xen/xen-os.h> #include <machine/xen/xenvar.h> #include <machine/xen/xenfunc.h> #include <xen/xen_intr.h> @@ -1216,6 +1215,13 @@ cpu_est_clockrate(int cpu_id, uint64_t *rate) #ifdef XEN +static void +idle_block(void) +{ + + HYPERVISOR_sched_op(SCHEDOP_block, 0); +} + void cpu_halt(void) { @@ -1960,6 +1966,9 @@ extern inthand_t #ifdef KDTRACE_HOOKS IDTVEC(dtrace_ret), #endif +#ifdef XENHVM + IDTVEC(xen_intr_upcall), +#endif IDTVEC(lcall_syscall), IDTVEC(int0x80_syscall); #ifdef DDB @@ -2948,6 +2957,10 @@ init386(first) setidt(IDT_DTRACE_RET, &IDTVEC(dtrace_ret), SDT_SYS386TGT, SEL_UPL, GSEL(GCODE_SEL, SEL_KPL)); #endif +#ifdef XENHVM + setidt(IDT_EVTCHN, &IDTVEC(xen_intr_upcall), SDT_SYS386IGT, SEL_UPL, + GSEL(GCODE_SEL, SEL_KPL)); +#endif r_idt.rd_limit = sizeof(idt0) - 1; r_idt.rd_base = (int) idt; diff --git a/sys/i386/i386/mp_machdep.c b/sys/i386/i386/mp_machdep.c index 19e67cf..479168b 100644 --- a/sys/i386/i386/mp_machdep.c +++ b/sys/i386/i386/mp_machdep.c @@ -82,6 +82,10 @@ __FBSDID("$FreeBSD$"); #include <machine/smp.h> #include <machine/specialreg.h> +#ifdef XENHVM +#include <xen/hvm.h> +#endif + #define WARMBOOT_TARGET 0 #define WARMBOOT_OFF (KERNBASE + 0x0467) #define WARMBOOT_SEG (KERNBASE + 0x0469) @@ -747,6 +751,11 @@ init_secondary(void) /* set up SSE registers */ enable_sse(); +#ifdef XENHVM + /* register vcpu_info area */ + xen_hvm_init_cpu(); +#endif + #ifdef PAE /* Enable the PTE no-execute bit. */ if ((amd_feature & AMDID_NX) != 0) { diff --git a/sys/i386/i386/pmap.c b/sys/i386/i386/pmap.c index 8fa9026..f09abee 100644 --- a/sys/i386/i386/pmap.c +++ b/sys/i386/i386/pmap.c @@ -4834,6 +4834,112 @@ out: } /* + * Apply the given advice to the specified range of addresses within the + * given pmap. Depending on the advice, clear the referenced and/or + * modified flags in each mapping and set the mapped page's dirty field. + */ +void +pmap_advise(pmap_t pmap, vm_offset_t sva, vm_offset_t eva, int advice) +{ + pd_entry_t oldpde, *pde; + pt_entry_t *pte; + vm_offset_t pdnxt; + vm_page_t m; + boolean_t anychanged, pv_lists_locked; + + if (advice != MADV_DONTNEED && advice != MADV_FREE) + return; + if (pmap_is_current(pmap)) + pv_lists_locked = FALSE; + else { + pv_lists_locked = TRUE; +resume: + rw_wlock(&pvh_global_lock); + sched_pin(); + } + anychanged = FALSE; + PMAP_LOCK(pmap); + for (; sva < eva; sva = pdnxt) { + pdnxt = (sva + NBPDR) & ~PDRMASK; + if (pdnxt < sva) + pdnxt = eva; + pde = pmap_pde(pmap, sva); + oldpde = *pde; + if ((oldpde & PG_V) == 0) + continue; + else if ((oldpde & PG_PS) != 0) { + if ((oldpde & PG_MANAGED) == 0) + continue; + if (!pv_lists_locked) { + pv_lists_locked = TRUE; + if (!rw_try_wlock(&pvh_global_lock)) { + if (anychanged) + pmap_invalidate_all(pmap); + PMAP_UNLOCK(pmap); + goto resume; + } + sched_pin(); + } + if (!pmap_demote_pde(pmap, pde, sva)) { + /* + * The large page mapping was destroyed. + */ + continue; + } + + /* + * Unless the page mappings are wired, remove the + * mapping to a single page so that a subsequent + * access may repromote. Since the underlying page + * table page is fully populated, this removal never + * frees a page table page. + */ + if ((oldpde & PG_W) == 0) { + pte = pmap_pte_quick(pmap, sva); + KASSERT((*pte & PG_V) != 0, + ("pmap_advise: invalid PTE")); + pmap_remove_pte(pmap, pte, sva, NULL); + anychanged = TRUE; + } + } + if (pdnxt > eva) + pdnxt = eva; + for (pte = pmap_pte_quick(pmap, sva); sva != pdnxt; pte++, + sva += PAGE_SIZE) { + if ((*pte & (PG_MANAGED | PG_V)) != (PG_MANAGED | + PG_V)) + continue; + else if ((*pte & (PG_M | PG_RW)) == (PG_M | PG_RW)) { + if (advice == MADV_DONTNEED) { + /* + * Future calls to pmap_is_modified() + * can be avoided by making the page + * dirty now. + */ + m = PHYS_TO_VM_PAGE(*pte & PG_FRAME); + vm_page_dirty(m); + } + atomic_clear_int((u_int *)pte, PG_M | PG_A); + } else if ((*pte & PG_A) != 0) + atomic_clear_int((u_int *)pte, PG_A); + else + continue; + if ((*pte & PG_G) != 0) + pmap_invalidate_page(pmap, sva); + else + anychanged = TRUE; + } + } + if (anychanged) + pmap_invalidate_all(pmap); + if (pv_lists_locked) { + sched_unpin(); + rw_wunlock(&pvh_global_lock); + } + PMAP_UNLOCK(pmap); +} + +/* * Clear the modify bits on the specified physical page. */ void diff --git a/sys/i386/include/apicvar.h b/sys/i386/include/apicvar.h index a0e622e..5d1f522 100644 --- a/sys/i386/include/apicvar.h +++ b/sys/i386/include/apicvar.h @@ -226,6 +226,7 @@ int lapic_set_lvt_triggermode(u_int apic_id, u_int lvt, enum intr_trigger trigger); void lapic_set_tpr(u_int vector); void lapic_setup(int boot); +void xen_intr_handle_upcall(struct trapframe *frame); #endif /* !LOCORE */ #endif /* _MACHINE_APICVAR_H_ */ diff --git a/sys/i386/include/intr_machdep.h b/sys/i386/include/intr_machdep.h index b3dd122..6bbe378 100644 --- a/sys/i386/include/intr_machdep.h +++ b/sys/i386/include/intr_machdep.h @@ -44,12 +44,30 @@ * allocate IDT vectors. * * The first 255 IRQs (0 - 254) are reserved for ISA IRQs and PCI intline IRQs. - * IRQ values beyond 256 are used by MSI. We leave 255 unused to avoid - * confusion since 255 is used in PCI to indicate an invalid IRQ. + * IRQ values from 256 to 767 are used by MSI. When running under the Xen + * Hypervisor, IRQ values from 768 to 4863 are available for binding to + * event channel events. We leave 255 unused to avoid confusion since 255 is + * used in PCI to indicate an invalid IRQ. */ #define NUM_MSI_INTS 512 #define FIRST_MSI_INT 256 -#define NUM_IO_INTS (FIRST_MSI_INT + NUM_MSI_INTS) +#ifdef XENHVM +#include <xen/xen-os.h> +#define NUM_EVTCHN_INTS NR_EVENT_CHANNELS +#define FIRST_EVTCHN_INT \ + (FIRST_MSI_INT + NUM_MSI_INTS) +#define LAST_EVTCHN_INT \ + (FIRST_EVTCHN_INT + NUM_EVTCHN_INTS - 1) +#elif defined(XEN) +#include <xen/xen-os.h> +#define NUM_EVTCHN_INTS NR_EVENT_CHANNELS +#define FIRST_EVTCHN_INT 0 +#define LAST_EVTCHN_INT \ + (FIRST_EVTCHN_INT + NUM_EVTCHN_INTS - 1) +#else /* !XEN && !XENHVM */ +#define NUM_EVTCHN_INTS 0 +#endif +#define NUM_IO_INTS (FIRST_MSI_INT + NUM_MSI_INTS + NUM_EVTCHN_INTS) /* * Default base address for MSI messages on x86 platforms. diff --git a/sys/i386/include/pcpu.h b/sys/i386/include/pcpu.h index 3606d12..3a684bf 100644 --- a/sys/i386/include/pcpu.h +++ b/sys/i386/include/pcpu.h @@ -71,21 +71,9 @@ struct shadow_time_info { vm_paddr_t *pc_pdir_shadow; \ uint64_t pc_processed_system_time; \ struct shadow_time_info pc_shadow_time; \ - int pc_resched_irq; \ - int pc_callfunc_irq; \ - int pc_virq_to_irq[NR_VIRQS]; \ - int pc_ipi_to_irq[NR_IPIS]; \ - char __pad[77] + char __pad[189] -#elif defined(XENHVM) - -#define PCPU_XEN_FIELDS \ - ; \ - unsigned int pc_last_processed_l1i; \ - unsigned int pc_last_processed_l2i; \ - char __pad[229] - -#else /* !XEN && !XENHVM */ +#else /* !XEN */ #define PCPU_XEN_FIELDS \ ; \ diff --git a/sys/i386/include/pmap.h b/sys/i386/include/pmap.h index 94b63ca..0303c60 100644 --- a/sys/i386/include/pmap.h +++ b/sys/i386/include/pmap.h @@ -213,7 +213,9 @@ extern pd_entry_t *IdlePTD; /* physical address of "Idle" state directory */ #if defined(XEN) #include <sys/param.h> -#include <machine/xen/xen-os.h> + +#include <xen/xen-os.h> + #include <machine/xen/xenvar.h> #include <machine/xen/xenpmap.h> diff --git a/sys/i386/include/xen/xen-os.h b/sys/i386/include/xen/xen-os.h index 257202e..e15d668 100644 --- a/sys/i386/include/xen/xen-os.h +++ b/sys/i386/include/xen/xen-os.h @@ -1,52 +1,64 @@ -/****************************************************************************** - * os.h +/***************************************************************************** + * i386/xen/xen-os.h * - * random collection of macros and definition + * Random collection of macros and definition + * + * Copyright (c) 2003, 2004 Keir Fraser (on behalf of the Xen team) + * All rights reserved. + * + * 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. + * + * $FreeBSD$ */ -#ifndef _XEN_OS_H_ -#define _XEN_OS_H_ -#include <machine/param.h> +#ifndef _MACHINE_XEN_XEN_OS_H_ +#define _MACHINE_XEN_XEN_OS_H_ #ifdef PAE #define CONFIG_X86_PAE #endif -#ifdef LOCORE -#define __ASSEMBLY__ -#endif - -#if !defined(__XEN_INTERFACE_VERSION__) -#define __XEN_INTERFACE_VERSION__ 0x00030208 -#endif - -#define GRANT_REF_INVALID 0xffffffff - -#include <xen/interface/xen.h> - /* Everything below this point is not included by assembler (.S) files. */ #ifndef __ASSEMBLY__ /* Force a proper event-channel callback from Xen. */ void force_evtchn_callback(void); -#define likely(x) __builtin_expect((x),1) -#define unlikely(x) __builtin_expect((x),0) +/* REP NOP (PAUSE) is a good thing to insert into busy-wait loops. */ +static inline void rep_nop(void) +{ + __asm__ __volatile__ ( "rep;nop" : : : "memory" ); +} +#define cpu_relax() rep_nop() -#ifndef vtophys -#include <vm/vm.h> -#include <vm/vm_param.h> -#include <vm/pmap.h> -#endif +#ifndef XENHVM +void xc_printf(const char *fmt, ...); -extern int gdtset; #ifdef SMP +extern int gdtset; + #include <sys/time.h> /* XXX for pcpu.h */ #include <sys/pcpu.h> /* XXX for PCPU_GET */ static inline int smp_processor_id(void) { - if (likely(gdtset)) + if (__predict_true(gdtset)) return PCPU_GET(cpuid); return 0; } @@ -55,50 +67,16 @@ smp_processor_id(void) #define smp_processor_id() 0 #endif -#ifndef NULL -#define NULL (void *)0 -#endif - #ifndef PANIC_IF -#define PANIC_IF(exp) if (unlikely(exp)) {printk("panic - %s: %s:%d\n",#exp, __FILE__, __LINE__); panic("%s: %s:%d", #exp, __FILE__, __LINE__);} -#endif - -extern shared_info_t *HYPERVISOR_shared_info; - -/* Somewhere in the middle of the GCC 2.96 development cycle, we implemented - a mechanism by which the user can annotate likely branch directions and - expect the blocks to be reordered appropriately. Define __builtin_expect - to nothing for earlier compilers. */ - -/* REP NOP (PAUSE) is a good thing to insert into busy-wait loops. */ -static inline void rep_nop(void) -{ - __asm__ __volatile__ ( "rep;nop" : : : "memory" ); -} -#define cpu_relax() rep_nop() - - -#if __GNUC__ == 2 && __GNUC_MINOR__ < 96 -#define __builtin_expect(x, expected_value) (x) +#define PANIC_IF(exp) if (__predict_false(exp)) {printf("panic - %s: %s:%d\n",#exp, __FILE__, __LINE__); panic("%s: %s:%d", #exp, __FILE__, __LINE__);} #endif -#define per_cpu(var, cpu) (pcpu_find((cpu))->pc_ ## var) - -/* crude memory allocator for memory allocation early in - * boot +/* + * Crude memory allocator for memory allocation early in boot. */ void *bootmem_alloc(unsigned int size); void bootmem_free(void *ptr, unsigned int size); -#include <sys/types.h> - -void printk(const char *fmt, ...); - -/* some function prototypes */ -void trap_init(void); - -#ifndef XENHVM - /* * STI/CLI equivalents. These basically set and clear the virtual * event_enable flag in the shared_info structure. Note that when @@ -106,7 +84,6 @@ void trap_init(void); * We may therefore call into do_hypervisor_callback() directly. */ - #define __cli() \ do { \ vcpu_info_t *_vcpu; \ @@ -122,7 +99,7 @@ do { \ _vcpu = &HYPERVISOR_shared_info->vcpu_info[smp_processor_id()]; \ _vcpu->evtchn_upcall_mask = 0; \ barrier(); /* unmask then check (avoid races) */ \ - if ( unlikely(_vcpu->evtchn_upcall_pending) ) \ + if (__predict_false(_vcpu->evtchn_upcall_pending)) \ force_evtchn_callback(); \ } while (0) @@ -133,7 +110,7 @@ do { \ _vcpu = &HYPERVISOR_shared_info->vcpu_info[smp_processor_id()]; \ if ((_vcpu->evtchn_upcall_mask = (x)) == 0) { \ barrier(); /* unmask then check (avoid races) */ \ - if ( unlikely(_vcpu->evtchn_upcall_pending) ) \ + if (__predict_false(_vcpu->evtchn_upcall_pending)) \ force_evtchn_callback(); \ } \ } while (0) @@ -168,31 +145,7 @@ do { \ #define spin_lock_irqsave mtx_lock_irqsave #define spin_unlock_irqrestore mtx_unlock_irqrestore -#endif - -#ifndef xen_mb -#define xen_mb() mb() -#endif -#ifndef xen_rmb -#define xen_rmb() rmb() -#endif -#ifndef xen_wmb -#define xen_wmb() wmb() -#endif -#ifdef SMP -#define smp_mb() mb() -#define smp_rmb() rmb() -#define smp_wmb() wmb() -#define smp_read_barrier_depends() read_barrier_depends() -#define set_mb(var, value) do { xchg(&var, value); } while (0) -#else -#define smp_mb() barrier() -#define smp_rmb() barrier() -#define smp_wmb() barrier() -#define smp_read_barrier_depends() do { } while(0) -#define set_mb(var, value) do { var = value; barrier(); } while (0) -#endif - +#endif /* !XENHVM */ /* This is a barrier for the compiler only, NOT the processor! */ #define barrier() __asm__ __volatile__("": : :"memory") @@ -207,8 +160,6 @@ do { \ */ typedef struct { volatile int counter; } atomic_t; - - #define xen_xchg(ptr,v) \ ((__typeof__(*(ptr)))__xchg((unsigned long)(v),(ptr),sizeof(*(ptr)))) struct __xchg_dummy { unsigned long a[100]; }; @@ -335,33 +286,6 @@ static __inline__ void atomic_inc(atomic_t *v) #define rdtscll(val) \ __asm__ __volatile__("rdtsc" : "=A" (val)) - - -/* - * Kernel pointers have redundant information, so we can use a - * scheme where we can return either an error code or a dentry - * pointer with the same return value. - * - * This should be a per-architecture thing, to allow different - * error and pointer decisions. - */ -#define IS_ERR_VALUE(x) unlikely((x) > (unsigned long)-1000L) - -static inline void *ERR_PTR(long error) -{ - return (void *) error; -} - -static inline long PTR_ERR(const void *ptr) -{ - return (long) ptr; -} - -static inline long IS_ERR(const void *ptr) -{ - return IS_ERR_VALUE((unsigned long)ptr); -} - #endif /* !__ASSEMBLY__ */ -#endif /* _OS_H_ */ +#endif /* _MACHINE_XEN_XEN_OS_H_ */ diff --git a/sys/i386/include/xen/xen_clock_util.h b/sys/i386/include/xen/xen_clock_util.h deleted file mode 100644 index ecb8e2c..0000000 --- a/sys/i386/include/xen/xen_clock_util.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * - * Copyright (c) 2009 Adrian Chadd - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - * $FreeBSD$ - */ - -#ifndef __XEN_CLOCK_UTIL_H__ -#define __XEN_CLOCK_UTIL_H__ - -extern void xen_fetch_wallclock(struct timespec *ts); -extern void xen_fetch_uptime(struct timespec *ts); - -#endif /* __XEN_CLOCK_UTIL_H__ */ diff --git a/sys/i386/include/xen/xenfunc.h b/sys/i386/include/xen/xenfunc.h index 47f0405..f02ee12 100644 --- a/sys/i386/include/xen/xenfunc.h +++ b/sys/i386/include/xen/xenfunc.h @@ -29,10 +29,14 @@ #ifndef _XEN_XENFUNC_H_ #define _XEN_XENFUNC_H_ -#include <machine/xen/xen-os.h> +#include <xen/xen-os.h> #include <xen/hypervisor.h> + +#include <vm/pmap.h> + #include <machine/xen/xenpmap.h> #include <machine/segments.h> + #include <sys/pcpu.h> #define BKPT __asm__("int3"); #define XPQ_CALL_DEPTH 5 diff --git a/sys/i386/include/xen/xenvar.h b/sys/i386/include/xen/xenvar.h index b1a0a4d..2742613 100644 --- a/sys/i386/include/xen/xenvar.h +++ b/sys/i386/include/xen/xenvar.h @@ -37,7 +37,8 @@ #define XPMAP 0x2 extern int xendebug_flags; #ifndef NOXENDEBUG -#define XENPRINTF printk +/* Print directly to the Xen console during debugging. */ +#define XENPRINTF xc_printf #else #define XENPRINTF printf #endif diff --git a/sys/i386/isa/npx.c b/sys/i386/isa/npx.c index 3b86d84..622e5b7 100644 --- a/sys/i386/isa/npx.c +++ b/sys/i386/isa/npx.c @@ -69,7 +69,7 @@ __FBSDID("$FreeBSD$"); #include <machine/intr_machdep.h> #ifdef XEN -#include <machine/xen/xen-os.h> +#include <xen/xen-os.h> #include <xen/hypervisor.h> #endif diff --git a/sys/i386/xen/clock.c b/sys/i386/xen/clock.c index a10b546..075f567 100644 --- a/sys/i386/xen/clock.c +++ b/sys/i386/xen/clock.c @@ -79,16 +79,15 @@ __FBSDID("$FreeBSD$"); #include <x86/isa/isa.h> #include <isa/rtc.h> -#include <xen/xen_intr.h> #include <vm/vm.h> #include <vm/pmap.h> #include <machine/pmap.h> #include <xen/hypervisor.h> -#include <machine/xen/xen-os.h> +#include <xen/xen-os.h> #include <machine/xen/xenfunc.h> #include <xen/interface/vcpu.h> #include <machine/cpu.h> -#include <machine/xen/xen_clock_util.h> +#include <xen/xen_intr.h> /* * 32-bit time_t's can't reach leap years before 1904 or after 2036, so we @@ -117,6 +116,7 @@ struct mtx clock_lock; mtx_init(&clock_lock, "clk", NULL, MTX_SPIN | MTX_NOPROFILE) #define RTC_LOCK mtx_lock_spin(&clock_lock) #define RTC_UNLOCK mtx_unlock_spin(&clock_lock) +#define NS_PER_TICK (1000000000ULL/hz) int adjkerntz; /* local offset from GMT in seconds */ int clkintr_pending; @@ -124,20 +124,10 @@ int pscnt = 1; int psdiv = 1; int wall_cmos_clock; u_int timer_freq = TIMER_FREQ; -static int independent_wallclock; -static int xen_disable_rtc_set; static u_long cyc2ns_scale; -static struct timespec shadow_tv; -static uint32_t shadow_tv_version; /* XXX: lazy locking */ static uint64_t processed_system_time; /* stime (ns) at last processing. */ -static const u_char daysinmonth[] = {31,28,31,30,31,30,31,31,30,31,30,31}; - -SYSCTL_INT(_machdep, OID_AUTO, independent_wallclock, - CTLFLAG_RW, &independent_wallclock, 0, ""); -SYSCTL_INT(_machdep, OID_AUTO, xen_disable_rtc_set, - CTLFLAG_RW, &xen_disable_rtc_set, 1, ""); - +extern volatile uint64_t xen_timer_last_time; #define do_div(n,base) ({ \ unsigned long __upper, __low, __high, __mod, __base; \ @@ -154,12 +144,6 @@ SYSCTL_INT(_machdep, OID_AUTO, xen_disable_rtc_set, }) -#define NS_PER_TICK (1000000000ULL/hz) - -#define rdtscll(val) \ - __asm__ __volatile__("rdtsc" : "=A" (val)) - - /* convert from cycles(64bits) => nanoseconds (64bits) * basic equation: * ns = cycles / (freq / ns_per_sec) @@ -182,201 +166,13 @@ static inline void set_cyc2ns_scale(unsigned long cpu_mhz) static inline unsigned long long cycles_2_ns(unsigned long long cyc) { - return (cyc * cyc2ns_scale) >> CYC2NS_SCALE_FACTOR; -} - -/* - * Scale a 64-bit delta by scaling and multiplying by a 32-bit fraction, - * yielding a 64-bit result. - */ -static inline uint64_t -scale_delta(uint64_t delta, uint32_t mul_frac, int shift) -{ - uint64_t product; - uint32_t tmp1, tmp2; - - if ( shift < 0 ) - delta >>= -shift; - else - delta <<= shift; - - __asm__ ( - "mul %5 ; " - "mov %4,%%eax ; " - "mov %%edx,%4 ; " - "mul %5 ; " - "xor %5,%5 ; " - "add %4,%%eax ; " - "adc %5,%%edx ; " - : "=A" (product), "=r" (tmp1), "=r" (tmp2) - : "a" ((uint32_t)delta), "1" ((uint32_t)(delta >> 32)), "2" (mul_frac) ); - - return product; -} - -static uint64_t -get_nsec_offset(struct shadow_time_info *shadow) -{ - uint64_t now, delta; - rdtscll(now); - delta = now - shadow->tsc_timestamp; - return scale_delta(delta, shadow->tsc_to_nsec_mul, shadow->tsc_shift); -} - -static void update_wallclock(void) -{ - shared_info_t *s = HYPERVISOR_shared_info; - - do { - shadow_tv_version = s->wc_version; - rmb(); - shadow_tv.tv_sec = s->wc_sec; - shadow_tv.tv_nsec = s->wc_nsec; - rmb(); - } - while ((s->wc_version & 1) | (shadow_tv_version ^ s->wc_version)); - -} - -static void -add_uptime_to_wallclock(void) -{ - struct timespec ut; - - xen_fetch_uptime(&ut); - timespecadd(&shadow_tv, &ut); + return ((cyc * cyc2ns_scale) >> CYC2NS_SCALE_FACTOR); } -/* - * Reads a consistent set of time-base values from Xen, into a shadow data - * area. Must be called with the xtime_lock held for writing. - */ -static void __get_time_values_from_xen(void) -{ - shared_info_t *s = HYPERVISOR_shared_info; - struct vcpu_time_info *src; - struct shadow_time_info *dst; - uint32_t pre_version, post_version; - - src = &s->vcpu_info[smp_processor_id()].time; - dst = &per_cpu(shadow_time, smp_processor_id()); - - spinlock_enter(); - do { - pre_version = dst->version = src->version; - rmb(); - dst->tsc_timestamp = src->tsc_timestamp; - dst->system_timestamp = src->system_time; - dst->tsc_to_nsec_mul = src->tsc_to_system_mul; - dst->tsc_shift = src->tsc_shift; - rmb(); - post_version = src->version; - } - while ((pre_version & 1) | (pre_version ^ post_version)); - - dst->tsc_to_usec_mul = dst->tsc_to_nsec_mul / 1000; - spinlock_exit(); -} - - -static inline int time_values_up_to_date(int cpu) -{ - struct vcpu_time_info *src; - struct shadow_time_info *dst; - - src = &HYPERVISOR_shared_info->vcpu_info[cpu].time; - dst = &per_cpu(shadow_time, cpu); - - rmb(); - return (dst->version == src->version); -} - -static unsigned xen_get_timecount(struct timecounter *tc); - -static struct timecounter xen_timecounter = { - xen_get_timecount, /* get_timecount */ - 0, /* no poll_pps */ - ~0u, /* counter_mask */ - 0, /* frequency */ - "ixen", /* name */ - 0 /* quality */ -}; - -static struct eventtimer xen_et; - -struct xen_et_state { - int mode; -#define MODE_STOP 0 -#define MODE_PERIODIC 1 -#define MODE_ONESHOT 2 - int64_t period; - int64_t next; -}; - -static DPCPU_DEFINE(struct xen_et_state, et_state); - -static int -clkintr(void *arg) -{ - int64_t now; - int cpu = smp_processor_id(); - struct shadow_time_info *shadow = &per_cpu(shadow_time, cpu); - struct xen_et_state *state = DPCPU_PTR(et_state); - - do { - __get_time_values_from_xen(); - now = shadow->system_timestamp + get_nsec_offset(shadow); - } while (!time_values_up_to_date(cpu)); - - /* Process elapsed ticks since last call. */ - processed_system_time = now; - if (state->mode == MODE_PERIODIC) { - while (now >= state->next) { - state->next += state->period; - if (xen_et.et_active) - xen_et.et_event_cb(&xen_et, xen_et.et_arg); - } - HYPERVISOR_set_timer_op(state->next + 50000); - } else if (state->mode == MODE_ONESHOT) { - if (xen_et.et_active) - xen_et.et_event_cb(&xen_et, xen_et.et_arg); - } - /* - * Take synchronised time from Xen once a minute if we're not - * synchronised ourselves, and we haven't chosen to keep an independent - * time base. - */ - - if (shadow_tv_version != HYPERVISOR_shared_info->wc_version && - !independent_wallclock) { - printf("[XEN] hypervisor wallclock nudged; nudging TOD.\n"); - update_wallclock(); - add_uptime_to_wallclock(); - tc_setclock(&shadow_tv); - } - - /* XXX TODO */ - return (FILTER_HANDLED); -} static uint32_t getit(void) { - struct shadow_time_info *shadow; - uint64_t time; - uint32_t local_time_version; - - shadow = &per_cpu(shadow_time, smp_processor_id()); - - do { - local_time_version = shadow->version; - barrier(); - time = shadow->system_timestamp + get_nsec_offset(shadow); - if (!time_values_up_to_date(smp_processor_id())) - __get_time_values_from_xen(/*cpu */); - barrier(); - } while (local_time_version != shadow->version); - - return (time); + return (xen_timer_last_time); } @@ -480,39 +276,13 @@ DELAY(int n) #endif } - -/* - * Restore all the timers non-atomically (XXX: should be atomically). - * - * This function is called from pmtimer_resume() to restore all the timers. - * This should not be necessary, but there are broken laptops that do not - * restore all the timers on resume. - */ -void -timer_restore(void) -{ - struct xen_et_state *state = DPCPU_PTR(et_state); - - /* Get timebases for new environment. */ - __get_time_values_from_xen(); - - /* Reset our own concept of passage of system time. */ - processed_system_time = per_cpu(shadow_time, 0).system_timestamp; - state->next = processed_system_time; -} - void startrtclock() { - unsigned long long alarm; uint64_t __cpu_khz; uint32_t cpu_khz; struct vcpu_time_info *info; - /* initialize xen values */ - __get_time_values_from_xen(); - processed_system_time = per_cpu(shadow_time, 0).system_timestamp; - __cpu_khz = 1000000ULL << 32; info = &HYPERVISOR_shared_info->vcpu_info[0].time; @@ -530,12 +300,6 @@ startrtclock() set_cyc2ns_scale(cpu_khz/1000); tsc_freq = cpu_khz * 1000; - - timer_freq = 1000000000LL; - xen_timecounter.tc_frequency = timer_freq >> 9; - tc_init(&xen_timecounter); - - rdtscll(alarm); } /* @@ -594,8 +358,10 @@ domu_resettodr(void) int s; dom0_op_t op; struct shadow_time_info *shadow; + struct pcpu *pc; - shadow = &per_cpu(shadow_time, smp_processor_id()); + pc = pcpu_find(smp_processor_id()); + shadow = &pc->pc_shadow_time; if (xen_disable_rtc_set) return; @@ -767,120 +533,20 @@ resettodr() } #endif -static int -xen_et_start(struct eventtimer *et, sbintime_t first, sbintime_t period) -{ - struct xen_et_state *state = DPCPU_PTR(et_state); - struct shadow_time_info *shadow; - int64_t fperiod; - - __get_time_values_from_xen(); - - if (period != 0) { - state->mode = MODE_PERIODIC; - state->period = (1000000000LLU * period) >> 32; - } else { - state->mode = MODE_ONESHOT; - state->period = 0; - } - if (first != 0) - fperiod = (1000000000LLU * first) >> 32; - else - fperiod = state->period; - - shadow = &per_cpu(shadow_time, smp_processor_id()); - state->next = shadow->system_timestamp + get_nsec_offset(shadow); - state->next += fperiod; - HYPERVISOR_set_timer_op(state->next + 50000); - return (0); -} - -static int -xen_et_stop(struct eventtimer *et) -{ - struct xen_et_state *state = DPCPU_PTR(et_state); - - state->mode = MODE_STOP; - HYPERVISOR_set_timer_op(0); - return (0); -} - /* * Start clocks running. */ void cpu_initclocks(void) { - unsigned int time_irq; - int error; - - HYPERVISOR_vcpu_op(VCPUOP_stop_periodic_timer, 0, NULL); - error = bind_virq_to_irqhandler(VIRQ_TIMER, 0, "cpu0:timer", - clkintr, NULL, NULL, INTR_TYPE_CLK, &time_irq); - if (error) - panic("failed to register clock interrupt\n"); - /* should fast clock be enabled ? */ - - bzero(&xen_et, sizeof(xen_et)); - xen_et.et_name = "ixen"; - xen_et.et_flags = ET_FLAGS_PERIODIC | ET_FLAGS_ONESHOT | - ET_FLAGS_PERCPU; - xen_et.et_quality = 600; - xen_et.et_frequency = 1000000000; - xen_et.et_min_period = 0x00400000LL; - xen_et.et_max_period = (0xfffffffeLLU << 32) / xen_et.et_frequency; - xen_et.et_start = xen_et_start; - xen_et.et_stop = xen_et_stop; - xen_et.et_priv = NULL; - et_register(&xen_et); - cpu_initclocks_bsp(); } -int -ap_cpu_initclocks(int cpu) -{ - char buf[MAXCOMLEN + 1]; - unsigned int time_irq; - int error; - - HYPERVISOR_vcpu_op(VCPUOP_stop_periodic_timer, cpu, NULL); - snprintf(buf, sizeof(buf), "cpu%d:timer", cpu); - error = bind_virq_to_irqhandler(VIRQ_TIMER, cpu, buf, - clkintr, NULL, NULL, INTR_TYPE_CLK, &time_irq); - if (error) - panic("failed to register clock interrupt\n"); - - return (0); -} - -static uint32_t -xen_get_timecount(struct timecounter *tc) -{ - uint64_t clk; - struct shadow_time_info *shadow; - shadow = &per_cpu(shadow_time, smp_processor_id()); - - __get_time_values_from_xen(); - - clk = shadow->system_timestamp + get_nsec_offset(shadow); - - return (uint32_t)(clk >> 9); - -} - /* Return system time offset by ticks */ uint64_t get_system_time(int ticks) { - return processed_system_time + (ticks * NS_PER_TICK); -} - -void -idle_block(void) -{ - - HYPERVISOR_sched_op(SCHEDOP_block, 0); + return (processed_system_time + (ticks * NS_PER_TICK)); } int diff --git a/sys/i386/xen/exception.s b/sys/i386/xen/exception.s index e965ffd..95f1c0e 100644 --- a/sys/i386/xen/exception.s +++ b/sys/i386/xen/exception.s @@ -168,7 +168,7 @@ call_evtchn_upcall: jb critical_region_fixup 10: pushl %esp - call evtchn_do_upcall + call xen_intr_handle_upcall addl $4,%esp /* diff --git a/sys/i386/xen/mp_machdep.c b/sys/i386/xen/mp_machdep.c index 05531cb..c070172 100644 --- a/sys/i386/xen/mp_machdep.c +++ b/sys/i386/xen/mp_machdep.c @@ -87,7 +87,7 @@ __FBSDID("$FreeBSD$"); -#include <machine/xen/xen-os.h> +#include <xen/xen-os.h> #include <xen/evtchn.h> #include <xen/xen_intr.h> #include <xen/hypervisor.h> @@ -102,9 +102,6 @@ extern struct pcpu __pcpu[]; static int bootAP; static union descriptor *bootAPgdt; -static char resched_name[NR_CPUS][15]; -static char callfunc_name[NR_CPUS][15]; - /* Free these after use */ void *bootstacks[MAXCPU]; @@ -157,6 +154,9 @@ extern void Xhypervisor_callback(void); extern void failsafe_callback(void); extern void pmap_lazyfix_action(void); +DPCPU_DEFINE(xen_intr_handle_t, ipi_port[NR_IPIS]); +DPCPU_DEFINE(struct vcpu_info *, vcpu_info); + struct cpu_group * cpu_topo(void) { @@ -461,49 +461,46 @@ cpu_mp_announce(void) } static int -xen_smp_intr_init(unsigned int cpu) +xen_smp_cpu_init(unsigned int cpu) { int rc; - unsigned int irq; - - per_cpu(resched_irq, cpu) = per_cpu(callfunc_irq, cpu) = -1; + xen_intr_handle_t irq_handle; - sprintf(resched_name[cpu], "resched%u", cpu); - rc = bind_ipi_to_irqhandler(RESCHEDULE_VECTOR, - cpu, - resched_name[cpu], - smp_reschedule_interrupt, - INTR_TYPE_TTY, &irq); + DPCPU_ID_SET(cpu, ipi_port[RESCHEDULE_VECTOR], NULL); + DPCPU_ID_SET(cpu, ipi_port[CALL_FUNCTION_VECTOR], NULL); - printf("[XEN] IPI cpu=%d irq=%d vector=RESCHEDULE_VECTOR (%d)\n", - cpu, irq, RESCHEDULE_VECTOR); - - per_cpu(resched_irq, cpu) = irq; - - sprintf(callfunc_name[cpu], "callfunc%u", cpu); - rc = bind_ipi_to_irqhandler(CALL_FUNCTION_VECTOR, - cpu, - callfunc_name[cpu], - smp_call_function_interrupt, - INTR_TYPE_TTY, &irq); + /* + * The PCPU variable pc_device is not initialized on i386 PV, + * so we have to use the root_bus device in order to setup + * the IPIs. + */ + rc = xen_intr_bind_ipi(root_bus, RESCHEDULE_VECTOR, + cpu, smp_reschedule_interrupt, INTR_TYPE_TTY, &irq_handle); if (rc < 0) goto fail; - per_cpu(callfunc_irq, cpu) = irq; + xen_intr_describe(irq_handle, "resched%u", cpu); + DPCPU_ID_SET(cpu, ipi_port[RESCHEDULE_VECTOR], irq_handle); - printf("[XEN] IPI cpu=%d irq=%d vector=CALL_FUNCTION_VECTOR (%d)\n", - cpu, irq, CALL_FUNCTION_VECTOR); + printf("[XEN] IPI cpu=%d port=%d vector=RESCHEDULE_VECTOR (%d)\n", + cpu, xen_intr_port(irq_handle), RESCHEDULE_VECTOR); - - if ((cpu != 0) && ((rc = ap_cpu_initclocks(cpu)) != 0)) + rc = xen_intr_bind_ipi(root_bus, CALL_FUNCTION_VECTOR, + cpu, smp_call_function_interrupt, INTR_TYPE_TTY, &irq_handle); + if (rc < 0) goto fail; + xen_intr_describe(irq_handle, "callfunc%u", cpu); + DPCPU_ID_SET(cpu, ipi_port[CALL_FUNCTION_VECTOR], irq_handle); + + printf("[XEN] IPI cpu=%d port=%d vector=CALL_FUNCTION_VECTOR (%d)\n", + cpu, xen_intr_port(irq_handle), CALL_FUNCTION_VECTOR); return 0; fail: - if (per_cpu(resched_irq, cpu) >= 0) - unbind_from_irqhandler(per_cpu(resched_irq, cpu)); - if (per_cpu(callfunc_irq, cpu) >= 0) - unbind_from_irqhandler(per_cpu(callfunc_irq, cpu)); + xen_intr_unbind(DPCPU_ID_GET(cpu, ipi_port[RESCHEDULE_VECTOR])); + DPCPU_ID_SET(cpu, ipi_port[RESCHEDULE_VECTOR], NULL); + xen_intr_unbind(DPCPU_ID_GET(cpu, ipi_port[CALL_FUNCTION_VECTOR])); + DPCPU_ID_SET(cpu, ipi_port[CALL_FUNCTION_VECTOR], NULL); return rc; } @@ -513,7 +510,17 @@ xen_smp_intr_init_cpus(void *unused) int i; for (i = 0; i < mp_ncpus; i++) - xen_smp_intr_init(i); + xen_smp_cpu_init(i); +} + +static void +xen_smp_intr_setup_cpus(void *unused) +{ + int i; + + for (i = 0; i < mp_ncpus; i++) + DPCPU_ID_SET(i, vcpu_info, + &HYPERVISOR_shared_info->vcpu_info[i]); } #define MTOPSIZE (1<<(14 + PAGE_SHIFT)) @@ -959,6 +966,13 @@ start_ap(int apic_id) return 0; /* return FAILURE */ } +static void +ipi_pcpu(int cpu, u_int ipi) +{ + KASSERT((ipi <= NR_IPIS), ("invalid IPI")); + xen_intr_signal(DPCPU_ID_GET(cpu, ipi_port[ipi])); +} + /* * send an IPI to a specific CPU. */ @@ -1246,5 +1260,6 @@ release_aps(void *dummy __unused) ia32_pause(); } SYSINIT(start_aps, SI_SUB_SMP, SI_ORDER_FIRST, release_aps, NULL); -SYSINIT(start_ipis, SI_SUB_INTR, SI_ORDER_ANY, xen_smp_intr_init_cpus, NULL); +SYSINIT(start_ipis, SI_SUB_SMP, SI_ORDER_ANY, xen_smp_intr_init_cpus, NULL); +SYSINIT(start_cpu, SI_SUB_INTR, SI_ORDER_ANY, xen_smp_intr_setup_cpus, NULL); diff --git a/sys/i386/xen/mptable.c b/sys/i386/xen/mptable.c index 0c1efe8..74cb9ab 100644 --- a/sys/i386/xen/mptable.c +++ b/sys/i386/xen/mptable.c @@ -40,7 +40,7 @@ __FBSDID("$FreeBSD$"); #include <machine/apicvar.h> #include <xen/hypervisor.h> -#include <machine/xen/xen-os.h> +#include <xen/xen-os.h> #include <machine/smp.h> #include <xen/interface/vcpu.h> diff --git a/sys/i386/xen/pmap.c b/sys/i386/xen/pmap.c index c34fe29..3abe7ef 100644 --- a/sys/i386/xen/pmap.c +++ b/sys/i386/xen/pmap.c @@ -3914,6 +3914,72 @@ pmap_ts_referenced(vm_page_t m) } /* + * Apply the given advice to the specified range of addresses within the + * given pmap. Depending on the advice, clear the referenced and/or + * modified flags in each mapping and set the mapped page's dirty field. + */ +void +pmap_advise(pmap_t pmap, vm_offset_t sva, vm_offset_t eva, int advice) +{ + pd_entry_t oldpde; + pt_entry_t *pte; + vm_offset_t pdnxt; + vm_page_t m; + boolean_t anychanged; + + if (advice != MADV_DONTNEED && advice != MADV_FREE) + return; + anychanged = FALSE; + rw_wlock(&pvh_global_lock); + sched_pin(); + PMAP_LOCK(pmap); + for (; sva < eva; sva = pdnxt) { + pdnxt = (sva + NBPDR) & ~PDRMASK; + if (pdnxt < sva) + pdnxt = eva; + oldpde = pmap->pm_pdir[sva >> PDRSHIFT]; + if ((oldpde & (PG_PS | PG_V)) != PG_V) + continue; + if (pdnxt > eva) + pdnxt = eva; + for (pte = pmap_pte_quick(pmap, sva); sva != pdnxt; pte++, + sva += PAGE_SIZE) { + if ((*pte & (PG_MANAGED | PG_V)) != (PG_MANAGED | + PG_V)) + continue; + else if ((*pte & (PG_M | PG_RW)) == (PG_M | PG_RW)) { + if (advice == MADV_DONTNEED) { + /* + * Future calls to pmap_is_modified() + * can be avoided by making the page + * dirty now. + */ + m = PHYS_TO_VM_PAGE(xpmap_mtop(*pte) & + PG_FRAME); + vm_page_dirty(m); + } + PT_SET_VA_MA(pte, *pte & ~(PG_M | PG_A), TRUE); + } else if ((*pte & PG_A) != 0) + PT_SET_VA_MA(pte, *pte & ~PG_A, TRUE); + else + continue; + if ((*pte & PG_G) != 0) + pmap_invalidate_page(pmap, sva); + else + anychanged = TRUE; + } + } + PT_UPDATES_FLUSH(); + if (*PMAP1) + PT_SET_VA_MA(PMAP1, 0, TRUE); + if (anychanged) + pmap_invalidate_all(pmap); + sched_unpin(); + rw_wunlock(&pvh_global_lock); + PMAP_UNLOCK(pmap); +} + +/* * Clear the modify bits on the specified physical page. */ void diff --git a/sys/i386/xen/xen_clock_util.c b/sys/i386/xen/xen_clock_util.c deleted file mode 100644 index c14a627..0000000 --- a/sys/i386/xen/xen_clock_util.c +++ /dev/null @@ -1,101 +0,0 @@ -/*- - * Copyright (c) 2009 Adrian Chadd - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/bus.h> -#include <sys/clock.h> -#include <sys/lock.h> -#include <sys/mutex.h> -#include <sys/kernel.h> -#include <sys/module.h> -#include <sys/time.h> - -#include <xen/xen_intr.h> -#include <vm/vm.h> -#include <vm/pmap.h> -#include <machine/pmap.h> -#include <xen/hypervisor.h> -#include <machine/xen/xen-os.h> -#include <machine/xen/xenfunc.h> -#include <xen/interface/io/xenbus.h> -#include <xen/interface/vcpu.h> -#include <machine/cpu.h> - -#include <machine/xen/xen_clock_util.h> - -/* - * Read the current hypervisor start time (wall clock) from Xen. - */ -void -xen_fetch_wallclock(struct timespec *ts) -{ - shared_info_t *s = HYPERVISOR_shared_info; - uint32_t ts_version; - - do { - ts_version = s->wc_version; - rmb(); - ts->tv_sec = s->wc_sec; - ts->tv_nsec = s->wc_nsec; - rmb(); - } - while ((s->wc_version & 1) | (ts_version ^ s->wc_version)); -} - -/* - * Read the current hypervisor system uptime value from Xen. - */ -void -xen_fetch_uptime(struct timespec *ts) -{ - shared_info_t *s = HYPERVISOR_shared_info; - struct vcpu_time_info *src; - struct shadow_time_info dst; - uint32_t pre_version, post_version; - - src = &s->vcpu_info[smp_processor_id()].time; - - spinlock_enter(); - do { - pre_version = dst.version = src->version; - rmb(); - dst.system_timestamp = src->system_time; - rmb(); - post_version = src->version; - } - while ((pre_version & 1) | (pre_version ^ post_version)); - - spinlock_exit(); - - ts->tv_sec = dst.system_timestamp / 1000000000; - ts->tv_nsec = dst.system_timestamp % 1000000000; -} diff --git a/sys/i386/xen/xen_machdep.c b/sys/i386/xen/xen_machdep.c index 9b5edd3..7049be6 100644 --- a/sys/i386/xen/xen_machdep.c +++ b/sys/i386/xen/xen_machdep.c @@ -47,7 +47,7 @@ __FBSDID("$FreeBSD$"); #include <sys/rwlock.h> #include <sys/sysproto.h> -#include <machine/xen/xen-os.h> +#include <xen/xen-os.h> #include <vm/vm.h> #include <vm/pmap.h> @@ -96,6 +96,8 @@ xen_pfn_t *xen_pfn_to_mfn_frame_list[16]; xen_pfn_t *xen_pfn_to_mfn_frame_list_list; int preemptable, init_first; extern unsigned int avail_space; +int xen_vector_callback_enabled = 0; +enum xen_domain_type xen_domain_type = XEN_PV_DOMAIN; void ni_cli(void); void ni_sti(void); @@ -129,6 +131,12 @@ ni_sti(void) ); } +void +force_evtchn_callback(void) +{ + (void)HYPERVISOR_xen_version(0, NULL); +} + /* * Modify the cmd_line by converting ',' to NULLs so that it is in a format * suitable for the static env vars. @@ -141,7 +149,7 @@ xen_setbootenv(char *cmd_line) /* Skip leading spaces */ for (; *cmd_line == ' '; cmd_line++); - printk("xen_setbootenv(): cmd_line='%s'\n", cmd_line); + xc_printf("xen_setbootenv(): cmd_line='%s'\n", cmd_line); for (cmd_line_next = cmd_line; strsep(&cmd_line_next, ",") != NULL;); return cmd_line; @@ -177,16 +185,16 @@ xen_boothowto(char *envp) return howto; } -#define PRINTK_BUFSIZE 1024 +#define XC_PRINTF_BUFSIZE 1024 void -printk(const char *fmt, ...) +xc_printf(const char *fmt, ...) { __va_list ap; int retval; - static char buf[PRINTK_BUFSIZE]; + static char buf[XC_PRINTF_BUFSIZE]; va_start(ap, fmt); - retval = vsnprintf(buf, PRINTK_BUFSIZE - 1, fmt, ap); + retval = vsnprintf(buf, XC_PRINTF_BUFSIZE - 1, fmt, ap); va_end(ap); buf[retval] = 0; (void)HYPERVISOR_console_write(buf, retval); @@ -239,9 +247,10 @@ xen_dump_queue(void) if (_xpq_idx <= 1) return; - printk("xen_dump_queue(): %u entries\n", _xpq_idx); + xc_printf("xen_dump_queue(): %u entries\n", _xpq_idx); for (i = 0; i < _xpq_idx; i++) { - printk(" val: %llx ptr: %llx\n", XPQ_QUEUE[i].val, XPQ_QUEUE[i].ptr); + xc_printf(" val: %llx ptr: %llx\n", XPQ_QUEUE[i].val, + XPQ_QUEUE[i].ptr); } } #endif @@ -955,9 +964,10 @@ initvalues(start_info_t *startinfo) cur_space = xen_start_info->pt_base + (l3_pages + l2_pages + l1_pages + 1)*PAGE_SIZE; - printk("initvalues(): wooh - availmem=%x,%x\n", avail_space, cur_space); + xc_printf("initvalues(): wooh - availmem=%x,%x\n", avail_space, + cur_space); - printk("KERNBASE=%x,pt_base=%x, VTOPFN(base)=%x, nr_pt_frames=%x\n", + xc_printf("KERNBASE=%x,pt_base=%x, VTOPFN(base)=%x, nr_pt_frames=%x\n", KERNBASE,xen_start_info->pt_base, VTOPFN(xen_start_info->pt_base), xen_start_info->nr_pt_frames); xendebug_flags = 0; /* 0xffffffff; */ @@ -1007,7 +1017,7 @@ initvalues(start_info_t *startinfo) /* Map proc0's KSTACK */ proc0kstack = cur_space; cur_space += (KSTACK_PAGES * PAGE_SIZE); - printk("proc0kstack=%u\n", proc0kstack); + xc_printf("proc0kstack=%u\n", proc0kstack); /* vm86/bios stack */ cur_space += PAGE_SIZE; @@ -1106,18 +1116,18 @@ initvalues(start_info_t *startinfo) shinfo = xen_start_info->shared_info; PT_SET_MA(HYPERVISOR_shared_info, shinfo | PG_KERNEL); - printk("#4\n"); + xc_printf("#4\n"); xen_store_ma = (((vm_paddr_t)xen_start_info->store_mfn) << PAGE_SHIFT); PT_SET_MA(xen_store, xen_store_ma | PG_KERNEL); console_page_ma = (((vm_paddr_t)xen_start_info->console.domU.mfn) << PAGE_SHIFT); PT_SET_MA(console_page, console_page_ma | PG_KERNEL); - printk("#5\n"); + xc_printf("#5\n"); set_iopl.iopl = 1; PANIC_IF(HYPERVISOR_physdev_op(PHYSDEVOP_SET_IOPL, &set_iopl)); - printk("#6\n"); + xc_printf("#6\n"); #if 0 /* add page table for KERNBASE */ xen_queue_pt_update(IdlePTDma + KPTDI*sizeof(vm_paddr_t), @@ -1132,7 +1142,7 @@ initvalues(start_info_t *startinfo) #endif xen_flush_queue(); cur_space += PAGE_SIZE; - printk("#6\n"); + xc_printf("#6\n"); #endif /* 0 */ #ifdef notyet if (xen_start_info->flags & SIF_INITDOMAIN) { @@ -1150,13 +1160,13 @@ initvalues(start_info_t *startinfo) i < (((vm_offset_t)&etext) & ~PAGE_MASK); i += PAGE_SIZE) PT_SET_MA(i, VTOM(i) | PG_V | PG_A); - printk("#7\n"); + xc_printf("#7\n"); physfree = VTOP(cur_space); init_first = physfree >> PAGE_SHIFT; IdlePTD = (pd_entry_t *)VTOP(IdlePTD); IdlePDPT = (pd_entry_t *)VTOP(IdlePDPT); setup_xen_features(); - printk("#8, proc0kstack=%u\n", proc0kstack); + xc_printf("#8, proc0kstack=%u\n", proc0kstack); } @@ -1200,9 +1210,9 @@ HYPERVISOR_multicall(struct multicall_entry * call_list, int nr_calls) /* Check the results of individual hypercalls. */ for (i = 0; i < nr_calls; i++) - if (unlikely(call_list[i].result < 0)) + if (__predict_false(call_list[i].result < 0)) ret++; - if (unlikely(ret > 0)) + if (__predict_false(ret > 0)) panic("%d multicall(s) failed: cpu %d\n", ret, smp_processor_id()); diff --git a/sys/i386/xen/xen_rtc.c b/sys/i386/xen/xen_rtc.c deleted file mode 100644 index 8e1e017..0000000 --- a/sys/i386/xen/xen_rtc.c +++ /dev/null @@ -1,144 +0,0 @@ -/*- - * Copyright (c) 2009 Adrian Chadd - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/bus.h> -#include <sys/clock.h> -#include <sys/lock.h> -#include <sys/mutex.h> -#include <sys/kernel.h> -#include <sys/module.h> -#include <sys/time.h> - -#include <xen/xen_intr.h> -#include <vm/vm.h> -#include <vm/pmap.h> -#include <machine/pmap.h> -#include <xen/hypervisor.h> -#include <machine/xen/xen-os.h> -#include <machine/xen/xenfunc.h> -#include <xen/interface/io/xenbus.h> -#include <xen/interface/vcpu.h> -#include <machine/cpu.h> - -#include <machine/xen/xen_clock_util.h> - -#include "clock_if.h" - -static int -xen_rtc_probe(device_t dev) -{ - device_set_desc(dev, "Xen Hypervisor Clock"); - printf("[XEN] xen_rtc_probe: probing Hypervisor RTC clock\n"); - if (! HYPERVISOR_shared_info) { - device_printf(dev, "No hypervisor shared page found; RTC can not start.\n"); - return (EINVAL); - } - return (0); -} - -static int -xen_rtc_attach(device_t dev) -{ - printf("[XEN] xen_rtc_attach: attaching Hypervisor RTC clock\n"); - clock_register(dev, 1000000); - return(0); -} - -static int -xen_rtc_settime(device_t dev __unused, struct timespec *ts) -{ - device_printf(dev, "[XEN] xen_rtc_settime\n"); - /* - * Don't return EINVAL here; just silently fail if the domain isn't privileged enough - * to set the TOD. - */ - return(0); -} - -/* - * The Xen time structures document the hypervisor start time and the - * uptime-since-hypervisor-start (in nsec.) They need to be combined - * in order to calculate a TOD clock. - */ -static int -xen_rtc_gettime(device_t dev, struct timespec *ts) -{ - struct timespec w_ts, u_ts; - - device_printf(dev, "[XEN] xen_rtc_gettime\n"); - xen_fetch_wallclock(&w_ts); - device_printf(dev, "[XEN] xen_rtc_gettime: wallclock %ld sec; %ld nsec\n", (long int) w_ts.tv_sec, (long int) w_ts.tv_nsec); - xen_fetch_uptime(&u_ts); - device_printf(dev, "[XEN] xen_rtc_gettime: uptime %ld sec; %ld nsec\n", (long int) u_ts.tv_sec, (long int) u_ts.tv_nsec); - - timespecclear(ts); - timespecadd(ts, &w_ts); - timespecadd(ts, &u_ts); - - device_printf(dev, "[XEN] xen_rtc_gettime: TOD %ld sec; %ld nsec\n", (long int) ts->tv_sec, (long int) ts->tv_nsec); - - return(0); -} - -static void -xen_rtc_identify(driver_t *drv, device_t parent) -{ - BUS_ADD_CHILD(parent, 0, "rtc", 0); -} - -static device_method_t xen_rtc_methods[] = { - /* Device interface */ - DEVMETHOD(device_probe, xen_rtc_probe), - DEVMETHOD(device_attach, xen_rtc_attach), - DEVMETHOD(device_identify, xen_rtc_identify), - - DEVMETHOD(device_detach, bus_generic_detach), - DEVMETHOD(device_shutdown, bus_generic_shutdown), - - /* clock interface */ - DEVMETHOD(clock_gettime, xen_rtc_gettime), - DEVMETHOD(clock_settime, xen_rtc_settime), - - { 0, 0 } -}; - - -static driver_t xen_rtc_driver = { - "rtc", - xen_rtc_methods, - 0 -}; - -static devclass_t xen_rtc_devclass; - -DRIVER_MODULE(rtc, nexus, xen_rtc_driver, xen_rtc_devclass, 0, 0); diff --git a/sys/ia64/ia64/pmap.c b/sys/ia64/ia64/pmap.c index b23c77c..442149f 100644 --- a/sys/ia64/ia64/pmap.c +++ b/sys/ia64/ia64/pmap.c @@ -2310,6 +2310,50 @@ pmap_is_referenced(vm_page_t m) } /* + * Apply the given advice to the specified range of addresses within the + * given pmap. Depending on the advice, clear the referenced and/or + * modified flags in each mapping and set the mapped page's dirty field. + */ +void +pmap_advise(pmap_t pmap, vm_offset_t sva, vm_offset_t eva, int advice) +{ + struct ia64_lpte *pte; + pmap_t oldpmap; + vm_page_t m; + + PMAP_LOCK(pmap); + oldpmap = pmap_switch(pmap); + for (; sva < eva; sva += PAGE_SIZE) { + /* If page is invalid, skip this page. */ + pte = pmap_find_vhpt(sva); + if (pte == NULL) + continue; + + /* If it isn't managed, skip it too. */ + if (!pmap_managed(pte)) + continue; + + /* Clear its modified and referenced bits. */ + if (pmap_dirty(pte)) { + if (advice == MADV_DONTNEED) { + /* + * Future calls to pmap_is_modified() can be + * avoided by making the page dirty now. + */ + m = PHYS_TO_VM_PAGE(pmap_ppn(pte)); + vm_page_dirty(m); + } + pmap_clear_dirty(pte); + } else if (!pmap_accessed(pte)) + continue; + pmap_clear_accessed(pte); + pmap_invalidate_page(sva); + } + pmap_switch(oldpmap); + PMAP_UNLOCK(pmap); +} + +/* * Clear the modify bits on the specified physical page. */ void diff --git a/sys/kern/kern_event.c b/sys/kern/kern_event.c index d75ba22..dfd1c46 100644 --- a/sys/kern/kern_event.c +++ b/sys/kern/kern_event.c @@ -565,7 +565,7 @@ filt_timerattach(struct knote *kn) memory_order_relaxed)); kn->kn_flags |= EV_CLEAR; /* automatically set */ - kn->kn_status &= ~KN_DETACHED; /* knlist_add usually sets it */ + kn->kn_status &= ~KN_DETACHED; /* knlist_add clears it */ calloutp = malloc(sizeof(*calloutp), M_KQUEUE, M_WAITOK); callout_init(calloutp, CALLOUT_MPSAFE); kn->kn_hook = calloutp; @@ -587,7 +587,7 @@ filt_timerdetach(struct knote *kn) free(calloutp, M_KQUEUE); old = atomic_fetch_sub_explicit(&kq_ncallouts, 1, memory_order_relaxed); KASSERT(old > 0, ("Number of callouts cannot become negative")); - kn->kn_status |= KN_DETACHED; /* knlist_remove usually clears it */ + kn->kn_status |= KN_DETACHED; /* knlist_remove sets it */ } static int @@ -1467,7 +1467,7 @@ retry: *kevp = kn->kn_kevent; KQ_LOCK(kq); KQ_GLOBAL_UNLOCK(&kq_global, haskqglobal); - if (kn->kn_flags & (EV_CLEAR | EV_DISPATCH)) { + if (kn->kn_flags & (EV_CLEAR | EV_DISPATCH)) { /* * Manually clear knotes who weren't * 'touch'ed. @@ -1859,7 +1859,7 @@ knlist_remove_kq(struct knlist *knl, struct knote *kn, int knlislocked, int kqis } /* - * remove all knotes from a specified klist + * remove knote from the specified knlist */ void knlist_remove(struct knlist *knl, struct knote *kn, int islocked) @@ -1869,7 +1869,7 @@ knlist_remove(struct knlist *knl, struct knote *kn, int islocked) } /* - * remove knote from a specified klist while in f_event handler. + * remove knote from the specified knlist while in f_event handler. */ void knlist_remove_inevent(struct knlist *knl, struct knote *kn) @@ -2002,7 +2002,7 @@ knlist_destroy(struct knlist *knl) #ifdef INVARIANTS /* * if we run across this error, we need to find the offending - * driver and have it call knlist_clear. + * driver and have it call knlist_clear or knlist_delete. */ if (!SLIST_EMPTY(&knl->kl_list)) printf("WARNING: destroying knlist w/ knotes on it!\n"); diff --git a/sys/kern/kern_physio.c b/sys/kern/kern_physio.c index 4e818fc..b37b9f3 100644 --- a/sys/kern/kern_physio.c +++ b/sys/kern/kern_physio.c @@ -58,25 +58,22 @@ physio(struct cdev *dev, struct uio *uio, int ioflag) * If the driver does not want I/O to be split, that means that we * need to reject any requests that will not fit into one buffer. */ - if ((dev->si_flags & SI_NOSPLIT) && - ((uio->uio_resid > dev->si_iosize_max) || - (uio->uio_resid > MAXPHYS) || - (uio->uio_iovcnt > 1))) { + if (dev->si_flags & SI_NOSPLIT && + (uio->uio_resid > dev->si_iosize_max || uio->uio_resid > MAXPHYS || + uio->uio_iovcnt > 1)) { /* * Tell the user why his I/O was rejected. */ if (uio->uio_resid > dev->si_iosize_max) - printf("%s: request size %zd > si_iosize_max=%d, " + uprintf("%s: request size=%zd > si_iosize_max=%d; " "cannot split request\n", devtoname(dev), uio->uio_resid, dev->si_iosize_max); - if (uio->uio_resid > MAXPHYS) - printf("%s: request size %zd > MAXPHYS=%d, " + uprintf("%s: request size=%zd > MAXPHYS=%d; " "cannot split request\n", devtoname(dev), uio->uio_resid, MAXPHYS); - if (uio->uio_iovcnt > 1) - printf("%s: request vectors=%d > 1, " + uprintf("%s: request vectors=%d > 1; " "cannot split request\n", devtoname(dev), uio->uio_iovcnt); @@ -117,8 +114,8 @@ physio(struct cdev *dev, struct uio *uio, int ioflag) * This device does not want I/O to be split. */ if (dev->si_flags & SI_NOSPLIT) { - printf("%s: request ptr %p is not " - "on a page boundary, cannot split " + uprintf("%s: request ptr %p is not " + "on a page boundary; cannot split " "request\n", devtoname(dev), bp->b_data); error = EFBIG; diff --git a/sys/kern/kern_proc.c b/sys/kern/kern_proc.c index 45920c4..3fa7a7f 100644 --- a/sys/kern/kern_proc.c +++ b/sys/kern/kern_proc.c @@ -862,6 +862,7 @@ fill_kinfo_proc_only(struct proc *p, struct kinfo_proc *kp) kp->ki_swtime = (ticks - p->p_swtick) / hz; kp->ki_pid = p->p_pid; kp->ki_nice = p->p_nice; + kp->ki_fibnum = p->p_fibnum; kp->ki_start = p->p_stats->p_start; timevaladd(&kp->ki_start, &boottime); PROC_SLOCK(p); @@ -1160,6 +1161,7 @@ freebsd32_kinfo_proc_out(const struct kinfo_proc *ki, struct kinfo_proc32 *ki32) bcopy(ki->ki_comm, ki32->ki_comm, COMMLEN + 1); bcopy(ki->ki_emul, ki32->ki_emul, KI_EMULNAMELEN + 1); bcopy(ki->ki_loginclass, ki32->ki_loginclass, LOGINCLASSLEN + 1); + CP(*ki, *ki32, ki_fibnum); CP(*ki, *ki32, ki_cr_flags); CP(*ki, *ki32, ki_jid); CP(*ki, *ki32, ki_numthreads); diff --git a/sys/kern/kern_synch.c b/sys/kern/kern_synch.c index 0996f4e..b0e1908 100644 --- a/sys/kern/kern_synch.c +++ b/sys/kern/kern_synch.c @@ -356,10 +356,7 @@ msleep_spin_sbt(void *ident, struct mtx *mtx, const char *wmesg, int pause_sbt(const char *wmesg, sbintime_t sbt, sbintime_t pr, int flags) { - int sbt_sec; - - sbt_sec = sbintime_getsec(sbt); - KASSERT(sbt_sec >= 0, ("pause: timo must be >= 0")); + KASSERT(sbt >= 0, ("pause: timeout must be >= 0")); /* silently convert invalid timeouts */ if (sbt == 0) @@ -370,11 +367,14 @@ pause_sbt(const char *wmesg, sbintime_t sbt, sbintime_t pr, int flags) * We delay one second at a time to avoid overflowing the * system specific DELAY() function(s): */ - while (sbt_sec > 0) { + while (sbt >= SBT_1S) { DELAY(1000000); - sbt_sec--; + sbt -= SBT_1S; } - DELAY((sbt & 0xffffffff) / SBT_1US); + /* Do the delay remainder, if any */ + sbt = (sbt + SBT_1US - 1) / SBT_1US; + if (sbt > 0) + DELAY(sbt); return (0); } return (_sleep(&pause_wchan[curcpu], NULL, 0, wmesg, sbt, pr, flags)); diff --git a/sys/kern/subr_unit.c b/sys/kern/subr_unit.c index 9cf1781..3bf7aaf 100644 --- a/sys/kern/subr_unit.c +++ b/sys/kern/subr_unit.c @@ -68,8 +68,8 @@ */ #include <sys/types.h> -#include <sys/queue.h> #include <sys/bitstring.h> +#include <sys/_unrhdr.h> #ifdef _KERNEL @@ -187,22 +187,6 @@ CTASSERT(sizeof(struct unr) == sizeof(struct unrb)); /* Number of bits in the bitmap */ #define NBITS ((int)sizeof(((struct unrb *)NULL)->map) * 8) -/* Header element for a unr number space. */ - -struct unrhdr { - TAILQ_HEAD(unrhd,unr) head; - u_int low; /* Lowest item */ - u_int high; /* Highest item */ - u_int busy; /* Count of allocated items */ - u_int alloc; /* Count of memory allocations */ - u_int first; /* items in allocated from start */ - u_int last; /* items free at end */ - struct mtx *mtx; - TAILQ_HEAD(unrfr,unr) ppfree; /* Items to be freed after mtx - lock dropped */ -}; - - #if defined(DIAGNOSTIC) || !defined(_KERNEL) /* * Consistency check function. @@ -315,20 +299,12 @@ clean_unrhdr(struct unrhdr *uh) mtx_unlock(uh->mtx); } -/* - * Allocate a new unrheader set. - * - * Highest and lowest valid values given as parameters. - */ - -struct unrhdr * -new_unrhdr(int low, int high, struct mtx *mutex) +void +init_unrhdr(struct unrhdr *uh, int low, int high, struct mtx *mutex) { - struct unrhdr *uh; KASSERT(low >= 0 && low <= high, ("UNR: use error: new_unrhdr(%d, %d)", low, high)); - uh = Malloc(sizeof *uh); if (mutex != NULL) uh->mtx = mutex; else @@ -340,6 +316,21 @@ new_unrhdr(int low, int high, struct mtx *mutex) uh->first = 0; uh->last = 1 + (high - low); check_unrhdr(uh, __LINE__); +} + +/* + * Allocate a new unrheader set. + * + * Highest and lowest valid values given as parameters. + */ + +struct unrhdr * +new_unrhdr(int low, int high, struct mtx *mutex) +{ + struct unrhdr *uh; + + uh = Malloc(sizeof *uh); + init_unrhdr(uh, low, high, mutex); return (uh); } diff --git a/sys/kern/uipc_mbuf.c b/sys/kern/uipc_mbuf.c index 98ec889..8e278a4 100644 --- a/sys/kern/uipc_mbuf.c +++ b/sys/kern/uipc_mbuf.c @@ -85,6 +85,14 @@ SYSCTL_INT(_kern_ipc, OID_AUTO, m_defragrandomfailures, CTLFLAG_RW, #endif /* + * Ensure the correct size of various mbuf parameters. It could be off due + * to compiler-induced padding and alignment artifacts. + */ +CTASSERT(sizeof(struct mbuf) == MSIZE); +CTASSERT(MSIZE - offsetof(struct mbuf, m_dat) == MLEN); +CTASSERT(MSIZE - offsetof(struct mbuf, m_pktdat) == MHLEN); + +/* * m_get2() allocates minimum mbuf that would fit "size" argument. */ struct mbuf * diff --git a/sys/kern/uipc_socket.c b/sys/kern/uipc_socket.c index 4d0eac4..75fd04b 100644 --- a/sys/kern/uipc_socket.c +++ b/sys/kern/uipc_socket.c @@ -2698,17 +2698,12 @@ sosetopt(struct socket *so, struct sockopt *sopt) sizeof tv); if (error) goto bad; - - if (tv.tv_sec < 0 || tv.tv_sec > INT_MAX / hz || - tv.tv_usec < 0 || tv.tv_usec >= 1000000) { + if (tv.tv_sec < 0 || tv.tv_usec < 0 || + tv.tv_usec >= 1000000) { error = EDOM; goto bad; } val = tvtohz(&tv); - if (val == INT_MAX) { - error = EDOM; - goto bad; - } switch (sopt->sopt_name) { case SO_SNDTIMEO: diff --git a/sys/kern/vfs_cluster.c b/sys/kern/vfs_cluster.c index c98db81..9601082 100644 --- a/sys/kern/vfs_cluster.c +++ b/sys/kern/vfs_cluster.c @@ -837,7 +837,9 @@ cluster_wbuild(struct vnode *vp, long size, daddr_t start_lbn, int len, (tbp->b_bcount != tbp->b_bufsize) || (tbp->b_bcount != size) || (len == 1) || - ((bp = getpbuf(&cluster_pbuf_freecnt)) == NULL)) { + ((bp = (vp->v_vflag & VV_MD) != 0 ? + trypbuf(&cluster_pbuf_freecnt) : + getpbuf(&cluster_pbuf_freecnt)) == NULL)) { totalwritten += tbp->b_bufsize; bawrite(tbp); ++start_lbn; diff --git a/sys/mips/atheros/ar71xx_spi.c b/sys/mips/atheros/ar71xx_spi.c index 92cc365..095f930 100644 --- a/sys/mips/atheros/ar71xx_spi.c +++ b/sys/mips/atheros/ar71xx_spi.c @@ -108,7 +108,7 @@ ar71xx_spi_attach(device_t dev) SPI_WRITE(sc, AR71XX_SPI_CTRL, 0x43); SPI_WRITE(sc, AR71XX_SPI_IO_CTRL, SPI_IO_CTRL_CSMASK); - device_add_child(dev, "spibus", 0); + device_add_child(dev, "spibus", -1); return (bus_generic_attach(dev)); } diff --git a/sys/mips/atheros/if_arge.c b/sys/mips/atheros/if_arge.c index 6487ea4..21b945f 100644 --- a/sys/mips/atheros/if_arge.c +++ b/sys/mips/atheros/if_arge.c @@ -1019,7 +1019,8 @@ arge_init_locked(struct arge_softc *sc) ARGE_LOCK_ASSERT(sc); - arge_stop(sc); + if ((ifp->if_flags & IFF_UP) && (ifp->if_drv_flags & IFF_DRV_RUNNING)) + return; /* Init circular RX list. */ if (arge_rx_ring_init(sc) != 0) { diff --git a/sys/mips/conf/ROUTERSTATION.hints b/sys/mips/conf/ROUTERSTATION.hints index be21280..7b35b22 100644 --- a/sys/mips/conf/ROUTERSTATION.hints +++ b/sys/mips/conf/ROUTERSTATION.hints @@ -23,6 +23,24 @@ hint.arge.1.mdio=mdioproxy1 # .. off of the switch mdiobus hint.ukswitch.0.at="mdio0" hint.ukswitch.0.phymask=0x30000 +# Don't flip on anything that isn't already enabled. +# This includes leaving the SPI CS1/CS2 pins as GPIO pins as they're +# not used here. +hint.gpio.0.function_set=0x00000000 +hint.gpio.0.function_clear=0x00000000 + +# These are the GPIO LEDs and buttons which can be software controlled. +hint.gpio.0.pinmask=0x000000ff + +# GPIO 0: Pin 1 +# GPIO 1: Pin 2 +# GPIO 2: RF LED +# GPIO 3: Pin 3 +# GPIO 4: Pin 4 +# GPIO 5: Pin 5 +# GPIO 6: Pin 6 +# GPIO 7: Pin 7 + # RF led hint.gpioled.0.at="gpiobus0" hint.gpioled.0.name="rf" diff --git a/sys/mips/malta/gt_pci.c b/sys/mips/malta/gt_pci.c index 0e2012e..47c3f6f 100644 --- a/sys/mips/malta/gt_pci.c +++ b/sys/mips/malta/gt_pci.c @@ -46,6 +46,7 @@ __FBSDID("$FreeBSD$"); #include <sys/systm.h> #include <sys/bus.h> +#include <sys/endian.h> #include <sys/interrupt.h> #include <sys/malloc.h> #include <sys/kernel.h> @@ -91,6 +92,14 @@ __FBSDID("$FreeBSD$"); #define OCW3_POLL_IRQ(x) ((x) & 0x7f) #define OCW3_POLL_PENDING (1U << 7) +/* + * Galileo controller's registers are LE so convert to then + * to/from native byte order. We rely on boot loader or emulator + * to set "swap bytes" configuration correctly for us + */ +#define GT_PCI_DATA(v) htole32((v)) +#define GT_HOST_DATA(v) le32toh((v)) + struct gt_pci_softc; struct gt_pci_intr_cookie { @@ -266,8 +275,12 @@ gt_pci_attach(device_t dev) sc->sc_io = MIPS_PHYS_TO_KSEG1(MALTA_PCI0_IO_BASE); sc->sc_io_rman.rm_type = RMAN_ARRAY; sc->sc_io_rman.rm_descr = "GT64120 PCI I/O Ports"; + /* + * First 256 bytes are ISA's registers: e.g. i8259's + * So do not use them for general purpose PCI I/O window + */ if (rman_init(&sc->sc_io_rman) != 0 || - rman_manage_region(&sc->sc_io_rman, 0, 0xffff) != 0) { + rman_manage_region(&sc->sc_io_rman, 0x100, 0xffff) != 0) { panic("gt_pci_attach: failed to set up I/O rman"); } @@ -433,20 +446,20 @@ gt_pci_read_config(device_t dev, u_int bus, u_int slot, u_int func, u_int reg, return (uint32_t)(-1); /* Clear cause register bits. */ - GT_REGVAL(GT_INTR_CAUSE) = 0; - - GT_REGVAL(GT_PCI0_CFG_ADDR) = (1 << 31) | addr; - data = GT_REGVAL(GT_PCI0_CFG_DATA); + GT_REGVAL(GT_INTR_CAUSE) = GT_PCI_DATA(0); + GT_REGVAL(GT_PCI0_CFG_ADDR) = GT_PCI_DATA((1 << 31) | addr); + /* + * Galileo system controller is special + */ + if ((bus == 0) && (slot == 0)) + data = GT_PCI_DATA(GT_REGVAL(GT_PCI0_CFG_DATA)); + else + data = GT_REGVAL(GT_PCI0_CFG_DATA); /* Check for master abort. */ - if (GT_REGVAL(GT_INTR_CAUSE) & (GTIC_MASABORT0 | GTIC_TARABORT0)) + if (GT_HOST_DATA(GT_REGVAL(GT_INTR_CAUSE)) & (GTIC_MASABORT0 | GTIC_TARABORT0)) data = (uint32_t) -1; - /* - * XXX: We assume that words readed from GT chip are BE. - * Should we set the mode explicitly during chip - * Initialization? - */ switch(reg % 4) { case 3: @@ -503,11 +516,6 @@ gt_pci_write_config(device_t dev, u_int bus, u_int slot, u_int func, u_int reg, { reg_data = gt_pci_read_config(dev, bus, slot, func, reg, 4); - /* - * XXX: We assume that words readed from GT chip are BE. - * Should we set the mode explicitly during chip - * Initialization? - */ shift = 8 * (reg & 3); switch(bytes) @@ -544,10 +552,23 @@ gt_pci_write_config(device_t dev, u_int bus, u_int slot, u_int func, u_int reg, return; /* Clear cause register bits. */ - GT_REGVAL(GT_INTR_CAUSE) = 0; + GT_REGVAL(GT_INTR_CAUSE) = GT_PCI_DATA(0); + + GT_REGVAL(GT_PCI0_CFG_ADDR) = GT_PCI_DATA((1 << 31) | addr); + + /* + * Galileo system controller is special + */ + if ((bus == 0) && (slot == 0)) + GT_REGVAL(GT_PCI0_CFG_DATA) = GT_PCI_DATA(data); + else + GT_REGVAL(GT_PCI0_CFG_DATA) = data; + +#if 0 + printf("PCICONF_WRITE(%02x:%02x.%02x[%04x] -> %02x(%d)\n", + bus, slot, func, reg, data, bytes); +#endif - GT_REGVAL(GT_PCI0_CFG_ADDR) = (1 << 31) | addr; - GT_REGVAL(GT_PCI0_CFG_DATA) = data; } static int @@ -568,8 +589,10 @@ gt_pci_route_interrupt(device_t pcib, device_t dev, int pin) * PIIX4 IDE adapter. HW IRQ0 */ return 0; + case 11: /* Ethernet */ + return 10; default: - printf("No mapping for %d/%d/%d/%d\n", bus, device, func, pin); + device_printf(pcib, "no IRQ mapping for %d/%d/%d/%d\n", bus, device, func, pin); } return (0); diff --git a/sys/mips/malta/yamon.c b/sys/mips/malta/yamon.c index 4e167cb..e669bfe 100644 --- a/sys/mips/malta/yamon.c +++ b/sys/mips/malta/yamon.c @@ -56,6 +56,7 @@ yamon_getcpufreq(void) uint32_t freq; int ret; + freq = 0; ret = YAMON_SYSCON_READ(SYSCON_BOARD_CPU_CLOCK_FREQ_ID, &freq, sizeof(freq)); if (ret != 0) diff --git a/sys/mips/mips/pmap.c b/sys/mips/mips/pmap.c index fb22a89..90994cc 100644 --- a/sys/mips/mips/pmap.c +++ b/sys/mips/mips/pmap.c @@ -2914,6 +2914,14 @@ pmap_is_prefaultable(pmap_t pmap, vm_offset_t addr) } /* + * This function is advisory. + */ +void +pmap_advise(pmap_t pmap, vm_offset_t sva, vm_offset_t eva, int advice) +{ +} + +/* * Clear the modify bits on the specified physical page. */ void diff --git a/sys/modules/ip6_mroute_mod/Makefile b/sys/modules/ip6_mroute_mod/Makefile index 943f9ab..eb1c823 100644 --- a/sys/modules/ip6_mroute_mod/Makefile +++ b/sys/modules/ip6_mroute_mod/Makefile @@ -7,7 +7,7 @@ KMOD= ip6_mroute SRCS= ip6_mroute.c -SRCS+= opt_inet6.h opt_mrouting.h +SRCS+= opt_inet6.h opt_kdtrace.h opt_mrouting.h .if !defined(KERNBUILDDIR) opt_inet6.h: diff --git a/sys/modules/iwnfw/iwn2000/Makefile b/sys/modules/iwnfw/iwn2000/Makefile new file mode 100644 index 0000000..920ae8d --- /dev/null +++ b/sys/modules/iwnfw/iwn2000/Makefile @@ -0,0 +1,6 @@ +# $FreeBSD$ + +KMOD= iwn2000fw +IMG= iwlwifi-2000-18.168.6.1 + +.include <bsd.kmod.mk> diff --git a/sys/modules/linux/Makefile b/sys/modules/linux/Makefile index 9d8dcf9..7ed6e98 100644 --- a/sys/modules/linux/Makefile +++ b/sys/modules/linux/Makefile @@ -64,7 +64,3 @@ CFLAGS+= -DKTR .endif .include <bsd.kmod.mk> - -# XXX: clang integrated-as doesn't grok .codeNN directives yet -CFLAGS.linux32_locore.s= ${CLANG_NO_IAS} -CFLAGS+= ${CFLAGS.${.IMPSRC:T}} diff --git a/sys/net/if_lagg.c b/sys/net/if_lagg.c index a46e1f3..27bab87 100644 --- a/sys/net/if_lagg.c +++ b/sys/net/if_lagg.c @@ -37,7 +37,7 @@ __FBSDID("$FreeBSD$"); #include <sys/proc.h> #include <sys/hash.h> #include <sys/lock.h> -#include <sys/rwlock.h> +#include <sys/rmlock.h> #include <sys/taskqueue.h> #include <sys/eventhandler.h> @@ -233,16 +233,17 @@ lagg_register_vlan(void *arg, struct ifnet *ifp, u_int16_t vtag) { struct lagg_softc *sc = ifp->if_softc; struct lagg_port *lp; + struct rm_priotracker tracker; if (ifp->if_softc != arg) /* Not our event */ return; - LAGG_RLOCK(sc); + LAGG_RLOCK(sc, &tracker); if (!SLIST_EMPTY(&sc->sc_ports)) { SLIST_FOREACH(lp, &sc->sc_ports, lp_entries) EVENTHANDLER_INVOKE(vlan_config, lp->lp_ifp, vtag); } - LAGG_RUNLOCK(sc); + LAGG_RUNLOCK(sc, &tracker); } /* @@ -254,16 +255,17 @@ lagg_unregister_vlan(void *arg, struct ifnet *ifp, u_int16_t vtag) { struct lagg_softc *sc = ifp->if_softc; struct lagg_port *lp; + struct rm_priotracker tracker; if (ifp->if_softc != arg) /* Not our event */ return; - LAGG_RLOCK(sc); + LAGG_RLOCK(sc, &tracker); if (!SLIST_EMPTY(&sc->sc_ports)) { SLIST_FOREACH(lp, &sc->sc_ports, lp_entries) EVENTHANDLER_INVOKE(vlan_unconfig, lp->lp_ifp, vtag); } - LAGG_RUNLOCK(sc); + LAGG_RUNLOCK(sc, &tracker); } static int @@ -322,9 +324,15 @@ lagg_clone_create(struct if_clone *ifc, int unit, caddr_t params) } } LAGG_LOCK_INIT(sc); + LAGG_CALLOUT_LOCK_INIT(sc); SLIST_INIT(&sc->sc_ports); TASK_INIT(&sc->sc_lladdr_task, 0, lagg_port_setlladdr, sc); - callout_init_rw(&sc->sc_callout, &sc->sc_mtx, CALLOUT_SHAREDLOCK); + + /* + * This uses the callout lock rather than the rmlock; one can't + * hold said rmlock during SWI. + */ + callout_init_mtx(&sc->sc_callout, &sc->sc_call_mtx, 0); /* Initialise pseudo media types */ ifmedia_init(&sc->sc_media, 0, lagg_media_change, @@ -389,7 +397,10 @@ lagg_clone_destroy(struct ifnet *ifp) ether_ifdetach(ifp); if_free(ifp); + /* This grabs sc_callout_mtx, serialising it correctly */ callout_drain(&sc->sc_callout); + + /* At this point it's drained; we can free this */ counter_u64_free(sc->sc_ipackets); counter_u64_free(sc->sc_opackets); counter_u64_free(sc->sc_ibytes); @@ -401,6 +412,7 @@ lagg_clone_destroy(struct ifnet *ifp) taskqueue_drain(taskqueue_swi, &sc->sc_lladdr_task); LAGG_LOCK_DESTROY(sc); + LAGG_CALLOUT_LOCK_DESTROY(sc); free(sc, M_DEVBUF); } @@ -764,6 +776,7 @@ lagg_port_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) struct lagg_softc *sc; struct lagg_port *lp = NULL; int error = 0; + struct rm_priotracker tracker; /* Should be checked by the caller */ if (ifp->if_type != IFT_IEEE8023ADLAG || @@ -778,15 +791,15 @@ lagg_port_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) break; } - LAGG_RLOCK(sc); + LAGG_RLOCK(sc, &tracker); if ((lp = ifp->if_lagg) == NULL || lp->lp_softc != sc) { error = ENOENT; - LAGG_RUNLOCK(sc); + LAGG_RUNLOCK(sc, &tracker); break; } lagg_port2req(lp, rp); - LAGG_RUNLOCK(sc); + LAGG_RUNLOCK(sc, &tracker); break; case SIOCSIFCAP: @@ -955,21 +968,22 @@ lagg_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) struct thread *td = curthread; char *buf, *outbuf; int count, buflen, len, error = 0; + struct rm_priotracker tracker; bzero(&rpbuf, sizeof(rpbuf)); switch (cmd) { case SIOCGLAGG: - LAGG_RLOCK(sc); + LAGG_RLOCK(sc, &tracker); count = 0; SLIST_FOREACH(lp, &sc->sc_ports, lp_entries) count++; buflen = count * sizeof(struct lagg_reqport); - LAGG_RUNLOCK(sc); + LAGG_RUNLOCK(sc, &tracker); outbuf = malloc(buflen, M_TEMP, M_WAITOK | M_ZERO); - LAGG_RLOCK(sc); + LAGG_RLOCK(sc, &tracker); ra->ra_proto = sc->sc_proto; if (sc->sc_req != NULL) (*sc->sc_req)(sc, (caddr_t)&ra->ra_psc); @@ -987,7 +1001,7 @@ lagg_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) buf += sizeof(rpbuf); len -= sizeof(rpbuf); } - LAGG_RUNLOCK(sc); + LAGG_RUNLOCK(sc, &tracker); ra->ra_ports = count; ra->ra_size = count * sizeof(rpbuf); error = copyout(outbuf, ra->ra_port, ra->ra_size); @@ -1065,16 +1079,16 @@ lagg_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) break; } - LAGG_RLOCK(sc); + LAGG_RLOCK(sc, &tracker); if ((lp = (struct lagg_port *)tpif->if_lagg) == NULL || lp->lp_softc != sc) { error = ENOENT; - LAGG_RUNLOCK(sc); + LAGG_RUNLOCK(sc, &tracker); break; } lagg_port2req(lp, rp); - LAGG_RUNLOCK(sc); + LAGG_RUNLOCK(sc, &tracker); break; case SIOCSLAGGPORT: error = priv_check(td, PRIV_NET_LAGG); @@ -1280,14 +1294,15 @@ lagg_transmit(struct ifnet *ifp, struct mbuf *m) { struct lagg_softc *sc = (struct lagg_softc *)ifp->if_softc; int error, len, mcast; + struct rm_priotracker tracker; len = m->m_pkthdr.len; mcast = (m->m_flags & (M_MCAST | M_BCAST)) ? 1 : 0; - LAGG_RLOCK(sc); + LAGG_RLOCK(sc, &tracker); /* We need a Tx algorithm and at least one port */ if (sc->sc_proto == LAGG_PROTO_NONE || sc->sc_count == 0) { - LAGG_RUNLOCK(sc); + LAGG_RUNLOCK(sc, &tracker); m_freem(m); ifp->if_oerrors++; return (ENXIO); @@ -1296,7 +1311,7 @@ lagg_transmit(struct ifnet *ifp, struct mbuf *m) ETHER_BPF_MTAP(ifp, m); error = (*sc->sc_start)(sc, m); - LAGG_RUNLOCK(sc); + LAGG_RUNLOCK(sc, &tracker); if (error == 0) { counter_u64_add(sc->sc_opackets, 1); @@ -1322,12 +1337,13 @@ lagg_input(struct ifnet *ifp, struct mbuf *m) struct lagg_port *lp = ifp->if_lagg; struct lagg_softc *sc = lp->lp_softc; struct ifnet *scifp = sc->sc_ifp; + struct rm_priotracker tracker; - LAGG_RLOCK(sc); + LAGG_RLOCK(sc, &tracker); if ((scifp->if_drv_flags & IFF_DRV_RUNNING) == 0 || (lp->lp_flags & LAGG_PORT_DISABLED) || sc->sc_proto == LAGG_PROTO_NONE) { - LAGG_RUNLOCK(sc); + LAGG_RUNLOCK(sc, &tracker); m_freem(m); return (NULL); } @@ -1346,7 +1362,7 @@ lagg_input(struct ifnet *ifp, struct mbuf *m) } } - LAGG_RUNLOCK(sc); + LAGG_RUNLOCK(sc, &tracker); return (m); } @@ -1367,16 +1383,17 @@ lagg_media_status(struct ifnet *ifp, struct ifmediareq *imr) { struct lagg_softc *sc = (struct lagg_softc *)ifp->if_softc; struct lagg_port *lp; + struct rm_priotracker tracker; imr->ifm_status = IFM_AVALID; imr->ifm_active = IFM_ETHER | IFM_AUTO; - LAGG_RLOCK(sc); + LAGG_RLOCK(sc, &tracker); SLIST_FOREACH(lp, &sc->sc_ports, lp_entries) { if (LAGG_PORTACTIVE(lp)) imr->ifm_status |= IFM_ACTIVE; } - LAGG_RUNLOCK(sc); + LAGG_RUNLOCK(sc, &tracker); } static void diff --git a/sys/net/if_lagg.h b/sys/net/if_lagg.h index a851f44..0db8da8 100644 --- a/sys/net/if_lagg.h +++ b/sys/net/if_lagg.h @@ -187,7 +187,8 @@ struct lagg_llq { struct lagg_softc { struct ifnet *sc_ifp; /* virtual interface */ - struct rwlock sc_mtx; + struct rmlock sc_mtx; + struct mtx sc_call_mtx; int sc_proto; /* lagg protocol */ u_int sc_count; /* number of ports */ u_int sc_active; /* active port count */ @@ -255,14 +256,19 @@ struct lagg_port { SLIST_ENTRY(lagg_port) lp_entries; }; -#define LAGG_LOCK_INIT(_sc) rw_init(&(_sc)->sc_mtx, "if_lagg rwlock") -#define LAGG_LOCK_DESTROY(_sc) rw_destroy(&(_sc)->sc_mtx) -#define LAGG_RLOCK(_sc) rw_rlock(&(_sc)->sc_mtx) -#define LAGG_WLOCK(_sc) rw_wlock(&(_sc)->sc_mtx) -#define LAGG_RUNLOCK(_sc) rw_runlock(&(_sc)->sc_mtx) -#define LAGG_WUNLOCK(_sc) rw_wunlock(&(_sc)->sc_mtx) -#define LAGG_RLOCK_ASSERT(_sc) rw_assert(&(_sc)->sc_mtx, RA_RLOCKED) -#define LAGG_WLOCK_ASSERT(_sc) rw_assert(&(_sc)->sc_mtx, RA_WLOCKED) +#define LAGG_LOCK_INIT(_sc) rm_init(&(_sc)->sc_mtx, "if_lagg rmlock") +#define LAGG_LOCK_DESTROY(_sc) rm_destroy(&(_sc)->sc_mtx) +#define LAGG_RLOCK(_sc, _p) rm_rlock(&(_sc)->sc_mtx, (_p)) +#define LAGG_WLOCK(_sc) rm_wlock(&(_sc)->sc_mtx) +#define LAGG_RUNLOCK(_sc, _p) rm_runlock(&(_sc)->sc_mtx, (_p)) +#define LAGG_WUNLOCK(_sc) rm_wunlock(&(_sc)->sc_mtx) +#define LAGG_RLOCK_ASSERT(_sc) rm_assert(&(_sc)->sc_mtx, RA_RLOCKED) +#define LAGG_WLOCK_ASSERT(_sc) rm_assert(&(_sc)->sc_mtx, RA_WLOCKED) + +#define LAGG_CALLOUT_LOCK_INIT(_sc) \ + mtx_init(&(_sc)->sc_call_mtx, "if_lagg callout mutex", NULL,\ + MTX_DEF) +#define LAGG_CALLOUT_LOCK_DESTROY(_sc) mtx_destroy(&(_sc)->sc_call_mtx) extern struct mbuf *(*lagg_input_p)(struct ifnet *, struct mbuf *); extern void (*lagg_linkstate_p)(struct ifnet *, int ); diff --git a/sys/net/if_llatbl.h b/sys/net/if_llatbl.h index aa3c400..4f21fde 100644 --- a/sys/net/if_llatbl.h +++ b/sys/net/if_llatbl.h @@ -30,8 +30,6 @@ __FBSDID("$FreeBSD$"); #ifndef _NET_IF_LLATBL_H_ #define _NET_IF_LLATBL_H_ -#include "opt_ofed.h" - #include <sys/_rwlock.h> #include <netinet/in.h> diff --git a/sys/net/if_pfsync.h b/sys/net/if_pfsync.h index 29d4b23..7a72bbb 100644 --- a/sys/net/if_pfsync.h +++ b/sys/net/if_pfsync.h @@ -211,11 +211,6 @@ struct pfsync_tdb { #define PFSYNCCTL_STATS 1 /* PFSYNC stats */ #define PFSYNCCTL_MAXID 2 -#define PFSYNCCTL_NAMES { \ - { 0, 0 }, \ - { "stats", CTLTYPE_STRUCT }, \ -} - struct pfsyncstats { u_int64_t pfsyncs_ipackets; /* total input packets, IPv4 */ u_int64_t pfsyncs_ipackets6; /* total input packets, IPv6 */ diff --git a/sys/net80211/ieee80211_output.c b/sys/net80211/ieee80211_output.c index 96bf0ec..a7aa7d9 100644 --- a/sys/net80211/ieee80211_output.c +++ b/sys/net80211/ieee80211_output.c @@ -3353,3 +3353,34 @@ ieee80211_ff_encap1(struct ieee80211vap *vap, struct mbuf *m, mtod(m, struct ether_header *)->ether_type = htons(payload); return m; } + +/* + * Complete an mbuf transmission. + * + * For now, this simply processes a completed frame after the + * driver has completed it's transmission and/or retransmission. + * It assumes the frame is an 802.11 encapsulated frame. + * + * Later on it will grow to become the exit path for a given frame + * from the driver and, depending upon how it's been encapsulated + * and already transmitted, it may end up doing A-MPDU retransmission, + * power save requeuing, etc. + * + * In order for the above to work, the driver entry point to this + * must not hold any driver locks. Thus, the driver needs to delay + * any actual mbuf completion until it can release said locks. + * + * This frees the mbuf and if the mbuf has a node reference, + * the node reference will be freed. + */ +void +ieee80211_tx_complete(struct ieee80211_node *ni, struct mbuf *m, int status) +{ + + if (ni != NULL) { + if (m->m_flags & M_TXCB) + ieee80211_process_callback(ni, m, status); + ieee80211_free_node(ni); + } + m_freem(m); +} diff --git a/sys/net80211/ieee80211_proto.h b/sys/net80211/ieee80211_proto.h index b8f25da..5ec8459 100644 --- a/sys/net80211/ieee80211_proto.h +++ b/sys/net80211/ieee80211_proto.h @@ -127,6 +127,8 @@ int ieee80211_send_probereq(struct ieee80211_node *ni, const uint8_t *ssid, size_t ssidlen); struct mbuf * ieee80211_ff_encap1(struct ieee80211vap *, struct mbuf *, const struct ether_header *); +void ieee80211_tx_complete(struct ieee80211_node *, + struct mbuf *, int); /* * The formation of ProbeResponse frames requires guidance to diff --git a/sys/netinet/icmp_var.h b/sys/netinet/icmp_var.h index 809879d..ae869e6 100644 --- a/sys/netinet/icmp_var.h +++ b/sys/netinet/icmp_var.h @@ -85,13 +85,6 @@ void kmod_icmpstat_inc(int statnum); #define ICMPCTL_ICMPLIM 3 #define ICMPCTL_MAXID 4 -#define ICMPCTL_NAMES { \ - { 0, 0 }, \ - { "maskrepl", CTLTYPE_INT }, \ - { "stats", CTLTYPE_STRUCT }, \ - { "icmplim", CTLTYPE_INT }, \ -} - #ifdef _KERNEL SYSCTL_DECL(_net_inet_icmp); diff --git a/sys/netinet/igmp_var.h b/sys/netinet/igmp_var.h index ca17158..cd10d7f 100644 --- a/sys/netinet/igmp_var.h +++ b/sys/netinet/igmp_var.h @@ -218,8 +218,4 @@ SYSCTL_DECL(_net_inet_igmp); #define IGMPCTL_STATS 1 /* statistics (read-only) */ #define IGMPCTL_MAXID 2 -#define IGMPCTL_NAMES { \ - { 0, 0 }, \ - { "stats", CTLTYPE_STRUCT } \ -} #endif diff --git a/sys/netinet/in.h b/sys/netinet/in.h index 9f3b294..db9a590 100644 --- a/sys/netinet/in.h +++ b/sys/netinet/in.h @@ -699,24 +699,6 @@ int getsourcefilter(int, uint32_t, struct sockaddr *, socklen_t, #define IPCTL_GIF_TTL 16 /* default TTL for gif encap packet */ #define IPCTL_MAXID 17 -#define IPCTL_NAMES { \ - { 0, 0 }, \ - { "forwarding", CTLTYPE_INT }, \ - { "redirect", CTLTYPE_INT }, \ - { "ttl", CTLTYPE_INT }, \ - { "mtu", CTLTYPE_INT }, \ - { "rtexpire", CTLTYPE_INT }, \ - { "rtminexpire", CTLTYPE_INT }, \ - { "rtmaxcache", CTLTYPE_INT }, \ - { "sourceroute", CTLTYPE_INT }, \ - { "directed-broadcast", CTLTYPE_INT }, \ - { "intr-queue-maxlen", CTLTYPE_INT }, \ - { "intr-queue-drops", CTLTYPE_INT }, \ - { "stats", CTLTYPE_STRUCT }, \ - { "accept_sourceroute", CTLTYPE_INT }, \ - { "fastforwarding", CTLTYPE_INT }, \ -} - #endif /* __BSD_VISIBLE */ #ifdef _KERNEL diff --git a/sys/netinet/pim_var.h b/sys/netinet/pim_var.h index 1fdfb10..d082d9a 100644 --- a/sys/netinet/pim_var.h +++ b/sys/netinet/pim_var.h @@ -71,11 +71,6 @@ struct pimstat { #define PIMCTL_STATS 1 /* statistics (read-only) */ #define PIMCTL_MAXID 2 -#define PIMCTL_NAMES { \ - { 0, 0 }, \ - { "stats", CTLTYPE_STRUCT }, \ -} - #ifdef _KERNEL void pim_input(struct mbuf *, int); diff --git a/sys/netinet/tcp_lro.c b/sys/netinet/tcp_lro.c index 032d47c..63a6bba 100644 --- a/sys/netinet/tcp_lro.c +++ b/sys/netinet/tcp_lro.c @@ -194,6 +194,25 @@ tcp_lro_rx_csum_fixup(struct lro_entry *le, void *l3hdr, struct tcphdr *th, #endif void +tcp_lro_flush_inactive(struct lro_ctrl *lc, const struct timeval *timeout) +{ + struct lro_entry *le, *le_tmp; + struct timeval tv; + + if (SLIST_EMPTY(&lc->lro_active)) + return; + + getmicrotime(&tv); + timevalsub(&tv, timeout); + SLIST_FOREACH_SAFE(le, &lc->lro_active, next, le_tmp) { + if (timevalcmp(&tv, &le->mtime, >=)) { + SLIST_REMOVE(&lc->lro_active, le, lro_entry, next); + tcp_lro_flush(lc, le); + } + } +} + +void tcp_lro_flush(struct lro_ctrl *lc, struct lro_entry *le) { @@ -543,7 +562,8 @@ tcp_lro_rx(struct lro_ctrl *lc, struct mbuf *m, uint32_t csum) if (le->p_len > (65535 - lc->ifp->if_mtu)) { SLIST_REMOVE(&lc->lro_active, le, lro_entry, next); tcp_lro_flush(lc, le); - } + } else + getmicrotime(&le->mtime); return (0); } @@ -556,6 +576,7 @@ tcp_lro_rx(struct lro_ctrl *lc, struct mbuf *m, uint32_t csum) le = SLIST_FIRST(&lc->lro_free); SLIST_REMOVE_HEAD(&lc->lro_free, next); SLIST_INSERT_HEAD(&lc->lro_active, le, next); + getmicrotime(&le->mtime); /* Start filling in details. */ switch (eh_type) { diff --git a/sys/netinet/tcp_lro.h b/sys/netinet/tcp_lro.h index b3a5017..ab6d74a 100644 --- a/sys/netinet/tcp_lro.h +++ b/sys/netinet/tcp_lro.h @@ -30,6 +30,8 @@ #ifndef _TCP_LRO_H_ #define _TCP_LRO_H_ +#include <sys/time.h> + struct lro_entry { SLIST_ENTRY(lro_entry) next; @@ -59,6 +61,7 @@ struct lro_entry uint32_t tsecr; uint16_t window; uint16_t timestamp; /* flag, not a TCP hdr field. */ + struct timeval mtime; }; SLIST_HEAD(lro_head, lro_entry); @@ -83,6 +86,7 @@ struct lro_ctrl { int tcp_lro_init(struct lro_ctrl *); void tcp_lro_free(struct lro_ctrl *); +void tcp_lro_flush_inactive(struct lro_ctrl *, const struct timeval *); void tcp_lro_flush(struct lro_ctrl *, struct lro_entry *); int tcp_lro_rx(struct lro_ctrl *, struct mbuf *, uint32_t); diff --git a/sys/netinet/tcp_var.h b/sys/netinet/tcp_var.h index b22713f..aaaa4a4 100644 --- a/sys/netinet/tcp_var.h +++ b/sys/netinet/tcp_var.h @@ -593,24 +593,6 @@ struct xtcpcb { #define TCPCTL_MAXID 16 #define TCPCTL_FINWAIT2_TIMEOUT 17 -#define TCPCTL_NAMES { \ - { 0, 0 }, \ - { "rfc1323", CTLTYPE_INT }, \ - { "mssdflt", CTLTYPE_INT }, \ - { "stats", CTLTYPE_STRUCT }, \ - { "rttdflt", CTLTYPE_INT }, \ - { "keepidle", CTLTYPE_INT }, \ - { "keepintvl", CTLTYPE_INT }, \ - { "sendspace", CTLTYPE_INT }, \ - { "recvspace", CTLTYPE_INT }, \ - { "keepinit", CTLTYPE_INT }, \ - { "pcblist", CTLTYPE_STRUCT }, \ - { "delacktime", CTLTYPE_INT }, \ - { "v6mssdflt", CTLTYPE_INT }, \ - { "maxid", CTLTYPE_INT }, \ -} - - #ifdef _KERNEL #ifdef SYSCTL_DECL SYSCTL_DECL(_net_inet_tcp); diff --git a/sys/netinet/udp_var.h b/sys/netinet/udp_var.h index 461c986..91a98f6 100644 --- a/sys/netinet/udp_var.h +++ b/sys/netinet/udp_var.h @@ -124,15 +124,6 @@ void kmod_udpstat_inc(int statnum); #define UDPCTL_PCBLIST 5 /* list of PCBs for UDP sockets */ #define UDPCTL_MAXID 6 -#define UDPCTL_NAMES { \ - { 0, 0 }, \ - { "checksum", CTLTYPE_INT }, \ - { "stats", CTLTYPE_STRUCT }, \ - { "maxdgram", CTLTYPE_INT }, \ - { "recvspace", CTLTYPE_INT }, \ - { "pcblist", CTLTYPE_STRUCT }, \ -} - #ifdef _KERNEL SYSCTL_DECL(_net_inet_udp); diff --git a/sys/netinet6/pim6_var.h b/sys/netinet6/pim6_var.h index 4157e84..4842208 100644 --- a/sys/netinet6/pim6_var.h +++ b/sys/netinet6/pim6_var.h @@ -61,8 +61,4 @@ int pim6_input(struct mbuf **, int*, int); #define PIM6CTL_STATS 1 /* statistics (read-only) */ #define PIM6CTL_MAXID 2 -#define PIM6CTL_NAMES { \ - { 0, 0 }, \ - { 0, 0 }, \ -} #endif /* _NETINET6_PIM6_VAR_H_ */ diff --git a/sys/netipsec/ipsec.h b/sys/netipsec/ipsec.h index 0b92876..240083a 100644 --- a/sys/netipsec/ipsec.h +++ b/sys/netipsec/ipsec.h @@ -264,40 +264,6 @@ struct ipsecstat { #define IPSECCTL_ESP_RANDPAD 13 #define IPSECCTL_MAXID 14 -#define IPSECCTL_NAMES { \ - { 0, 0 }, \ - { 0, 0 }, \ - { "def_policy", CTLTYPE_INT }, \ - { "esp_trans_deflev", CTLTYPE_INT }, \ - { "esp_net_deflev", CTLTYPE_INT }, \ - { "ah_trans_deflev", CTLTYPE_INT }, \ - { "ah_net_deflev", CTLTYPE_INT }, \ - { 0, 0 }, \ - { "ah_cleartos", CTLTYPE_INT }, \ - { "ah_offsetmask", CTLTYPE_INT }, \ - { "dfbit", CTLTYPE_INT }, \ - { "ecn", CTLTYPE_INT }, \ - { "debug", CTLTYPE_INT }, \ - { "esp_randpad", CTLTYPE_INT }, \ -} - -#define IPSEC6CTL_NAMES { \ - { 0, 0 }, \ - { 0, 0 }, \ - { "def_policy", CTLTYPE_INT }, \ - { "esp_trans_deflev", CTLTYPE_INT }, \ - { "esp_net_deflev", CTLTYPE_INT }, \ - { "ah_trans_deflev", CTLTYPE_INT }, \ - { "ah_net_deflev", CTLTYPE_INT }, \ - { 0, 0 }, \ - { 0, 0 }, \ - { 0, 0 }, \ - { 0, 0 }, \ - { "ecn", CTLTYPE_INT }, \ - { "debug", CTLTYPE_INT }, \ - { "esp_randpad", CTLTYPE_INT }, \ -} - #ifdef _KERNEL #include <sys/counter.h> diff --git a/sys/netipsec/key_var.h b/sys/netipsec/key_var.h index edf232d..2601ece 100644 --- a/sys/netipsec/key_var.h +++ b/sys/netipsec/key_var.h @@ -48,22 +48,6 @@ #define KEYCTL_PREFERED_OLDSA 12 #define KEYCTL_MAXID 13 -#define KEYCTL_NAMES { \ - { 0, 0 }, \ - { "debug", CTLTYPE_INT }, \ - { "spi_try", CTLTYPE_INT }, \ - { "spi_min_value", CTLTYPE_INT }, \ - { "spi_max_value", CTLTYPE_INT }, \ - { "random_int", CTLTYPE_INT }, \ - { "larval_lifetime", CTLTYPE_INT }, \ - { "blockacq_count", CTLTYPE_INT }, \ - { "blockacq_lifetime", CTLTYPE_INT }, \ - { "esp_keymin", CTLTYPE_INT }, \ - { "esp_auth", CTLTYPE_INT }, \ - { "ah_keymin", CTLTYPE_INT }, \ - { "prefered_oldsa", CTLTYPE_INT }, \ -} - #ifdef _KERNEL #define _ARRAYLEN(p) (sizeof(p)/sizeof(p[0])) #define _KEYLEN(key) ((u_int)((key)->bits >> 3)) diff --git a/sys/powerpc/powerpc/mmu_if.m b/sys/powerpc/powerpc/mmu_if.m index 0382bd8..f9f37cb 100644 --- a/sys/powerpc/powerpc/mmu_if.m +++ b/sys/powerpc/powerpc/mmu_if.m @@ -133,6 +133,25 @@ CODE { /** + * @brief Apply the given advice to the specified range of addresses within + * the given pmap. Depending on the advice, clear the referenced and/or + * modified flags in each mapping and set the mapped page's dirty field. + * + * @param _pmap physical map + * @param _start virtual range start + * @param _end virtual range end + * @param _advice advice to apply + */ +METHOD void advise { + mmu_t _mmu; + pmap_t _pmap; + vm_offset_t _start; + vm_offset_t _end; + int _advice; +}; + + +/** * @brief Change the wiring attribute for the page in the given physical * map and virtual address. * diff --git a/sys/powerpc/powerpc/pmap_dispatch.c b/sys/powerpc/powerpc/pmap_dispatch.c index 7fd98f4..24e6076 100644 --- a/sys/powerpc/powerpc/pmap_dispatch.c +++ b/sys/powerpc/powerpc/pmap_dispatch.c @@ -91,6 +91,15 @@ RB_GENERATE(pvo_tree, pvo_entry, pvo_plink, pvo_vaddr_compare); void +pmap_advise(pmap_t pmap, vm_offset_t start, vm_offset_t end, int advice) +{ + + CTR5(KTR_PMAP, "%s(%p, %#x, %#x, %d)", __func__, pmap, start, end, + advice); + MMU_ADVISE(mmu_obj, pmap, start, end, advice); +} + +void pmap_change_wiring(pmap_t pmap, vm_offset_t va, boolean_t wired) { diff --git a/sys/sparc64/sparc64/pmap.c b/sys/sparc64/sparc64/pmap.c index 47f2c49..a84e4c3 100644 --- a/sys/sparc64/sparc64/pmap.c +++ b/sys/sparc64/sparc64/pmap.c @@ -2126,6 +2126,14 @@ pmap_is_referenced(vm_page_t m) return (rv); } +/* + * This function is advisory. + */ +void +pmap_advise(pmap_t pmap, vm_offset_t sva, vm_offset_t eva, int advice) +{ +} + void pmap_clear_modify(vm_page_t m) { diff --git a/sys/sys/_unrhdr.h b/sys/sys/_unrhdr.h new file mode 100644 index 0000000..f3c25d1 --- /dev/null +++ b/sys/sys/_unrhdr.h @@ -0,0 +1,51 @@ +/*- + * Copyright (c) 2004 Poul-Henning Kamp + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _SYS_UNRHDR_H +#define _SYS_UNRHDR_H + +#include <sys/queue.h> + +struct mtx; + +/* Header element for a unr number space. */ + +struct unrhdr { + TAILQ_HEAD(unrhd,unr) head; + u_int low; /* Lowest item */ + u_int high; /* Highest item */ + u_int busy; /* Count of allocated items */ + u_int alloc; /* Count of memory allocations */ + u_int first; /* items in allocated from start */ + u_int last; /* items free at end */ + struct mtx *mtx; + TAILQ_HEAD(unrfr,unr) ppfree; /* Items to be freed after mtx + lock dropped */ +}; + +#endif diff --git a/sys/sys/bitset.h b/sys/sys/bitset.h index dee5542..7c24ecd 100644 --- a/sys/sys/bitset.h +++ b/sys/sys/bitset.h @@ -135,7 +135,14 @@ atomic_set_long(&(p)->__bits[__bitset_word(_s, n)], \ __bitset_mask((_s), n)) -/* Convenience functions catering special cases. */ +/* Convenience functions catering special cases. */ +#define BIT_AND_ATOMIC(_s, d, s) do { \ + __size_t __i; \ + for (__i = 0; __i < __bitset_words((_s)); __i++) \ + atomic_clear_long(&(d)->__bits[__i], \ + ~(s)->__bits[__i]); \ +} while (0) + #define BIT_OR_ATOMIC(_s, d, s) do { \ __size_t __i; \ for (__i = 0; __i < __bitset_words((_s)); __i++) \ diff --git a/sys/sys/cpuset.h b/sys/sys/cpuset.h index fc078d3..e1ee37d 100644 --- a/sys/sys/cpuset.h +++ b/sys/sys/cpuset.h @@ -55,6 +55,7 @@ #define CPU_NAND(d, s) BIT_NAND(CPU_SETSIZE, d, s) #define CPU_CLR_ATOMIC(n, p) BIT_CLR_ATOMIC(CPU_SETSIZE, n, p) #define CPU_SET_ATOMIC(n, p) BIT_SET_ATOMIC(CPU_SETSIZE, n, p) +#define CPU_AND_ATOMIC(n, p) BIT_AND_ATOMIC(CPU_SETSIZE, n, p) #define CPU_OR_ATOMIC(d, s) BIT_OR_ATOMIC(CPU_SETSIZE, d, s) #define CPU_COPY_STORE_REL(f, t) BIT_COPY_STORE_REL(CPU_SETSIZE, f, t) #define CPU_FFS(p) BIT_FFS(CPU_SETSIZE, p) diff --git a/sys/sys/kernel.h b/sys/sys/kernel.h index 687b42c..68e0858 100644 --- a/sys/sys/kernel.h +++ b/sys/sys/kernel.h @@ -96,6 +96,11 @@ enum sysinit_sub_id { SI_SUB_VM = 0x1000000, /* virtual memory system init*/ SI_SUB_KMEM = 0x1800000, /* kernel memory*/ SI_SUB_KVM_RSRC = 0x1A00000, /* kvm operational limits*/ + SI_SUB_HYPERVISOR = 0x1A40000, /* + * Hypervisor detection and + * virtualization support + * setup. + */ SI_SUB_WITNESS = 0x1A80000, /* witness initialization */ SI_SUB_MTX_POOL_DYNAMIC = 0x1AC0000, /* dynamic mutex pool */ SI_SUB_LOCK = 0x1B00000, /* various locks */ diff --git a/sys/sys/mbuf.h b/sys/sys/mbuf.h index ce19715..bc2924a 100644 --- a/sys/sys/mbuf.h +++ b/sys/sys/mbuf.h @@ -53,6 +53,10 @@ * externally and attach it to the mbuf in a way similar to that of mbuf * clusters. * + * NB: These calculation do not take actual compiler-induced alignment and + * padding inside the complete struct mbuf into account. Appropriate + * attention is required when changing members of struct mbuf. + * * MLEN is data length in a normal mbuf. * MHLEN is data length in an mbuf with pktheader. * MINCLSIZE is a smallest amount of data that should be put into cluster. @@ -84,7 +88,7 @@ struct mb_args { /* * Header present at the beginning of every mbuf. - * Size ILP32: 20 + * Size ILP32: 24 * LP64: 32 */ struct m_hdr { @@ -94,6 +98,9 @@ struct m_hdr { int32_t mh_len; /* amount of data in this mbuf */ uint32_t mh_type:8, /* type of data in this mbuf */ mh_flags:24; /* flags; see below */ +#if !defined(__LP64__) + uint32_t mh_pad; /* pad for 64bit alignment */ +#endif }; /* @@ -538,6 +545,28 @@ m_gettype(int size) return (type); } +/* + * Associated an external reference counted buffer with an mbuf. + */ +static __inline void +m_extaddref(struct mbuf *m, caddr_t buf, u_int size, u_int *ref_cnt, + int (*freef)(struct mbuf *, void *, void *), void *arg1, void *arg2) +{ + + KASSERT(ref_cnt != NULL, ("%s: ref_cnt not provided", __func__)); + + atomic_add_int(ref_cnt, 1); + m->m_flags |= M_EXT; + m->m_ext.ext_buf = buf; + m->m_ext.ref_cnt = ref_cnt; + m->m_data = m->m_ext.ext_buf; + m->m_ext.ext_size = size; + m->m_ext.ext_free = freef; + m->m_ext.ext_arg1 = arg1; + m->m_ext.ext_arg2 = arg2; + m->m_ext.ext_type = EXT_EXTREF; +} + static __inline uma_zone_t m_getzone(int size) { @@ -639,18 +668,6 @@ m_getcl(int how, short type, int flags) return (uma_zalloc_arg(zone_pack, &args, how)); } -static __inline struct mbuf * -m_free(struct mbuf *m) -{ - struct mbuf *n = m->m_next; - - if (m->m_flags & M_EXT) - mb_free_ext(m); - else if ((m->m_flags & M_NOFREE) == 0) - uma_zfree(zone_mbuf, m); - return (n); -} - static __inline void m_clget(struct mbuf *m, int how) { @@ -1117,6 +1134,20 @@ m_tag_find(struct mbuf *m, int type, struct m_tag *start) m_tag_locate(m, MTAG_ABI_COMPAT, type, start)); } +static __inline struct mbuf * +m_free(struct mbuf *m) +{ + struct mbuf *n = m->m_next; + + if ((m->m_flags & (M_PKTHDR|M_NOFREE)) == (M_PKTHDR|M_NOFREE)) + m_tag_delete_chain(m, NULL); + if (m->m_flags & M_EXT) + mb_free_ext(m); + else if ((m->m_flags & M_NOFREE) == 0) + uma_zfree(zone_mbuf, m); + return (n); +} + static int inline rt_m_getfib(struct mbuf *m) { diff --git a/sys/sys/socket.h b/sys/sys/socket.h index 014c916..952454a 100644 --- a/sys/sys/socket.h +++ b/sys/sys/socket.h @@ -370,44 +370,6 @@ struct sockproto { */ #define NET_MAXID AF_MAX -#define CTL_NET_NAMES { \ - { 0, 0 }, \ - { "unix", CTLTYPE_NODE }, \ - { "inet", CTLTYPE_NODE }, \ - { "implink", CTLTYPE_NODE }, \ - { "pup", CTLTYPE_NODE }, \ - { "chaos", CTLTYPE_NODE }, \ - { "xerox_ns", CTLTYPE_NODE }, \ - { "iso", CTLTYPE_NODE }, \ - { "emca", CTLTYPE_NODE }, \ - { "datakit", CTLTYPE_NODE }, \ - { "ccitt", CTLTYPE_NODE }, \ - { "ibm_sna", CTLTYPE_NODE }, \ - { "decnet", CTLTYPE_NODE }, \ - { "dec_dli", CTLTYPE_NODE }, \ - { "lat", CTLTYPE_NODE }, \ - { "hylink", CTLTYPE_NODE }, \ - { "appletalk", CTLTYPE_NODE }, \ - { "route", CTLTYPE_NODE }, \ - { "link_layer", CTLTYPE_NODE }, \ - { "xtp", CTLTYPE_NODE }, \ - { "coip", CTLTYPE_NODE }, \ - { "cnt", CTLTYPE_NODE }, \ - { "rtip", CTLTYPE_NODE }, \ - { "ipx", CTLTYPE_NODE }, \ - { "sip", CTLTYPE_NODE }, \ - { "pip", CTLTYPE_NODE }, \ - { "isdn", CTLTYPE_NODE }, \ - { "key", CTLTYPE_NODE }, \ - { "inet6", CTLTYPE_NODE }, \ - { "natm", CTLTYPE_NODE }, \ - { "atm", CTLTYPE_NODE }, \ - { "hdrcomplete", CTLTYPE_NODE }, \ - { "netgraph", CTLTYPE_NODE }, \ - { "snp", CTLTYPE_NODE }, \ - { "scp", CTLTYPE_NODE }, \ -} - /* * PF_ROUTE - Routing table * @@ -424,14 +386,6 @@ struct sockproto { * versions of msghdr structs. */ #define NET_RT_MAXID 6 -#define CTL_NET_RT_NAMES { \ - { 0, 0 }, \ - { "dump", CTLTYPE_STRUCT }, \ - { "flags", CTLTYPE_STRUCT }, \ - { "iflist", CTLTYPE_STRUCT }, \ - { "ifmalist", CTLTYPE_STRUCT }, \ - { "iflistl", CTLTYPE_STRUCT }, \ -} #endif /* __BSD_VISIBLE */ /* diff --git a/sys/sys/sysctl.h b/sys/sys/sysctl.h index 2fdeed2..8b13719 100644 --- a/sys/sys/sysctl.h +++ b/sys/sys/sysctl.h @@ -447,19 +447,6 @@ SYSCTL_ALLOWED_TYPES(UINT64, uint64_t *a; unsigned long long *b; ); #define CTL_P1003_1B 9 /* POSIX 1003.1B */ #define CTL_MAXID 10 /* number of valid top-level ids */ -#define CTL_NAMES { \ - { 0, 0 }, \ - { "kern", CTLTYPE_NODE }, \ - { "vm", CTLTYPE_NODE }, \ - { "vfs", CTLTYPE_NODE }, \ - { "net", CTLTYPE_NODE }, \ - { "debug", CTLTYPE_NODE }, \ - { "hw", CTLTYPE_NODE }, \ - { "machdep", CTLTYPE_NODE }, \ - { "user", CTLTYPE_NODE }, \ - { "p1003_1b", CTLTYPE_NODE }, \ -} - /* * CTL_KERN identifiers */ @@ -502,53 +489,6 @@ SYSCTL_ALLOWED_TYPES(UINT64, uint64_t *a; unsigned long long *b; ); #define KERN_ARND 37 /* int: from arc4rand() */ #define KERN_MAXID 38 /* number of valid kern ids */ -#define CTL_KERN_NAMES { \ - { 0, 0 }, \ - { "ostype", CTLTYPE_STRING }, \ - { "osrelease", CTLTYPE_STRING }, \ - { "osrevision", CTLTYPE_INT }, \ - { "version", CTLTYPE_STRING }, \ - { "maxvnodes", CTLTYPE_INT }, \ - { "maxproc", CTLTYPE_INT }, \ - { "maxfiles", CTLTYPE_INT }, \ - { "argmax", CTLTYPE_INT }, \ - { "securelevel", CTLTYPE_INT }, \ - { "hostname", CTLTYPE_STRING }, \ - { "hostid", CTLTYPE_UINT }, \ - { "clockrate", CTLTYPE_STRUCT }, \ - { "vnode", CTLTYPE_STRUCT }, \ - { "proc", CTLTYPE_STRUCT }, \ - { "file", CTLTYPE_STRUCT }, \ - { "profiling", CTLTYPE_NODE }, \ - { "posix1version", CTLTYPE_INT }, \ - { "ngroups", CTLTYPE_INT }, \ - { "job_control", CTLTYPE_INT }, \ - { "saved_ids", CTLTYPE_INT }, \ - { "boottime", CTLTYPE_STRUCT }, \ - { "nisdomainname", CTLTYPE_STRING }, \ - { "update", CTLTYPE_INT }, \ - { "osreldate", CTLTYPE_INT }, \ - { "ntp_pll", CTLTYPE_NODE }, \ - { "bootfile", CTLTYPE_STRING }, \ - { "maxfilesperproc", CTLTYPE_INT }, \ - { "maxprocperuid", CTLTYPE_INT }, \ - { "ipc", CTLTYPE_NODE }, \ - { "dummy", CTLTYPE_INT }, \ - { "ps_strings", CTLTYPE_INT }, \ - { "usrstack", CTLTYPE_INT }, \ - { "logsigexit", CTLTYPE_INT }, \ - { "iov_max", CTLTYPE_INT }, \ - { "hostuuid", CTLTYPE_STRING }, \ - { "arc4rand", CTLTYPE_OPAQUE }, \ -} - -/* - * CTL_VFS identifiers - */ -#define CTL_VFS_NAMES { \ - { "vfsconf", CTLTYPE_STRUCT }, \ -} - /* * KERN_PROC subtypes */ @@ -611,22 +551,6 @@ SYSCTL_ALLOWED_TYPES(UINT64, uint64_t *a; unsigned long long *b; ); #define HW_REALMEM 12 /* int: 'real' memory */ #define HW_MAXID 13 /* number of valid hw ids */ -#define CTL_HW_NAMES { \ - { 0, 0 }, \ - { "machine", CTLTYPE_STRING }, \ - { "model", CTLTYPE_STRING }, \ - { "ncpu", CTLTYPE_INT }, \ - { "byteorder", CTLTYPE_INT }, \ - { "physmem", CTLTYPE_ULONG }, \ - { "usermem", CTLTYPE_ULONG }, \ - { "pagesize", CTLTYPE_INT }, \ - { "disknames", CTLTYPE_STRUCT }, \ - { "diskstats", CTLTYPE_STRUCT }, \ - { "floatingpoint", CTLTYPE_INT }, \ - { "machine_arch", CTLTYPE_STRING }, \ - { "realmem", CTLTYPE_ULONG }, \ -} - /* * CTL_USER definitions */ @@ -652,30 +576,6 @@ SYSCTL_ALLOWED_TYPES(UINT64, uint64_t *a; unsigned long long *b; ); #define USER_TZNAME_MAX 20 /* int: POSIX2_TZNAME_MAX */ #define USER_MAXID 21 /* number of valid user ids */ -#define CTL_USER_NAMES { \ - { 0, 0 }, \ - { "cs_path", CTLTYPE_STRING }, \ - { "bc_base_max", CTLTYPE_INT }, \ - { "bc_dim_max", CTLTYPE_INT }, \ - { "bc_scale_max", CTLTYPE_INT }, \ - { "bc_string_max", CTLTYPE_INT }, \ - { "coll_weights_max", CTLTYPE_INT }, \ - { "expr_nest_max", CTLTYPE_INT }, \ - { "line_max", CTLTYPE_INT }, \ - { "re_dup_max", CTLTYPE_INT }, \ - { "posix2_version", CTLTYPE_INT }, \ - { "posix2_c_bind", CTLTYPE_INT }, \ - { "posix2_c_dev", CTLTYPE_INT }, \ - { "posix2_char_term", CTLTYPE_INT }, \ - { "posix2_fort_dev", CTLTYPE_INT }, \ - { "posix2_fort_run", CTLTYPE_INT }, \ - { "posix2_localedef", CTLTYPE_INT }, \ - { "posix2_sw_dev", CTLTYPE_INT }, \ - { "posix2_upe", CTLTYPE_INT }, \ - { "stream_max", CTLTYPE_INT }, \ - { "tzname_max", CTLTYPE_INT }, \ -} - #define CTL_P1003_1B_ASYNCHRONOUS_IO 1 /* boolean */ #define CTL_P1003_1B_MAPPED_FILES 2 /* boolean */ #define CTL_P1003_1B_MEMLOCK 3 /* boolean */ @@ -704,35 +604,6 @@ SYSCTL_ALLOWED_TYPES(UINT64, uint64_t *a; unsigned long long *b; ); #define CTL_P1003_1B_MAXID 26 -#define CTL_P1003_1B_NAMES { \ - { 0, 0 }, \ - { "asynchronous_io", CTLTYPE_INT }, \ - { "mapped_files", CTLTYPE_INT }, \ - { "memlock", CTLTYPE_INT }, \ - { "memlock_range", CTLTYPE_INT }, \ - { "memory_protection", CTLTYPE_INT }, \ - { "message_passing", CTLTYPE_INT }, \ - { "prioritized_io", CTLTYPE_INT }, \ - { "priority_scheduling", CTLTYPE_INT }, \ - { "realtime_signals", CTLTYPE_INT }, \ - { "semaphores", CTLTYPE_INT }, \ - { "fsync", CTLTYPE_INT }, \ - { "shared_memory_objects", CTLTYPE_INT }, \ - { "synchronized_io", CTLTYPE_INT }, \ - { "timers", CTLTYPE_INT }, \ - { "aio_listio_max", CTLTYPE_INT }, \ - { "aio_max", CTLTYPE_INT }, \ - { "aio_prio_delta_max", CTLTYPE_INT }, \ - { "delaytimer_max", CTLTYPE_INT }, \ - { "mq_open_max", CTLTYPE_INT }, \ - { "pagesize", CTLTYPE_INT }, \ - { "rtsig_max", CTLTYPE_INT }, \ - { "nsems_max", CTLTYPE_INT }, \ - { "sem_value_max", CTLTYPE_INT }, \ - { "sigqueue_max", CTLTYPE_INT }, \ - { "timer_max", CTLTYPE_INT }, \ -} - #ifdef _KERNEL /* diff --git a/sys/sys/systm.h b/sys/sys/systm.h index 4887d71..e3ea9cf 100644 --- a/sys/sys/systm.h +++ b/sys/sys/systm.h @@ -396,6 +396,7 @@ int root_mounted(void); */ struct unrhdr; struct unrhdr *new_unrhdr(int low, int high, struct mtx *mutex); +void init_unrhdr(struct unrhdr *uh, int low, int high, struct mtx *mutex); void delete_unrhdr(struct unrhdr *uh); void clean_unrhdr(struct unrhdr *uh); void clean_unrhdrl(struct unrhdr *uh); diff --git a/sys/sys/user.h b/sys/sys/user.h index aa81dc9..9389e55 100644 --- a/sys/sys/user.h +++ b/sys/sys/user.h @@ -83,7 +83,7 @@ * it in two places: function fill_kinfo_proc in sys/kern/kern_proc.c and * function kvm_proclist in lib/libkvm/kvm_proc.c . */ -#define KI_NSPARE_INT 9 +#define KI_NSPARE_INT 8 #define KI_NSPARE_LONG 12 #define KI_NSPARE_PTR 6 @@ -186,6 +186,7 @@ struct kinfo_proc { */ char ki_sparestrings[50]; /* spare string space */ int ki_spareints[KI_NSPARE_INT]; /* spare room for growth */ + int ki_fibnum; /* Default FIB number */ u_int ki_cr_flags; /* Credential flags */ int ki_jid; /* Process jail ID */ int ki_numthreads; /* XXXKSE number of threads in total */ diff --git a/sys/ufs/ffs/ffs_alloc.c b/sys/ufs/ffs/ffs_alloc.c index cf1d953..3063ade 100644 --- a/sys/ufs/ffs/ffs_alloc.c +++ b/sys/ufs/ffs/ffs_alloc.c @@ -516,7 +516,13 @@ ffs_reallocblks_ufs1(ap) ip = VTOI(vp); fs = ip->i_fs; ump = ip->i_ump; - if (fs->fs_contigsumsize <= 0) + /* + * If we are not tracking block clusters or if we have less than 2% + * free blocks left, then do not attempt to cluster. Running with + * less than 5% free block reserve is not recommended and those that + * choose to do so do not expect to have good file layout. + */ + if (fs->fs_contigsumsize <= 0 || freespace(fs, 2) < 0) return (ENOSPC); buflist = ap->a_buflist; len = buflist->bs_nchildren; @@ -737,7 +743,13 @@ ffs_reallocblks_ufs2(ap) ip = VTOI(vp); fs = ip->i_fs; ump = ip->i_ump; - if (fs->fs_contigsumsize <= 0) + /* + * If we are not tracking block clusters or if we have less than 2% + * free blocks left, then do not attempt to cluster. Running with + * less than 5% free block reserve is not recommended and those that + * choose to do so do not expect to have good file layout. + */ + if (fs->fs_contigsumsize <= 0 || freespace(fs, 2) < 0) return (ENOSPC); buflist = ap->a_buflist; len = buflist->bs_nchildren; @@ -1174,7 +1186,7 @@ ffs_dirpref(pip) if (fs->fs_contigdirs[cg] < maxcontigdirs) return ((ino_t)(fs->fs_ipg * cg)); } - for (cg = prefcg - 1; cg >= 0; cg--) + for (cg = 0; cg < prefcg; cg++) if (fs->fs_cs(fs, cg).cs_ndir < maxndir && fs->fs_cs(fs, cg).cs_nifree >= minifree && fs->fs_cs(fs, cg).cs_nbfree >= minbfree) { @@ -1187,7 +1199,7 @@ ffs_dirpref(pip) for (cg = prefcg; cg < fs->fs_ncg; cg++) if (fs->fs_cs(fs, cg).cs_nifree >= avgifree) return ((ino_t)(fs->fs_ipg * cg)); - for (cg = prefcg - 1; cg >= 0; cg--) + for (cg = 0; cg < prefcg; cg++) if (fs->fs_cs(fs, cg).cs_nifree >= avgifree) break; return ((ino_t)(fs->fs_ipg * cg)); diff --git a/sys/ufs/ufs/ufs_dirhash.c b/sys/ufs/ufs/ufs_dirhash.c index b51fdff..5c29923 100644 --- a/sys/ufs/ufs/ufs_dirhash.c +++ b/sys/ufs/ufs/ufs_dirhash.c @@ -85,7 +85,7 @@ SYSCTL_INT(_vfs_ufs, OID_AUTO, dirhash_docheck, CTLFLAG_RW, &ufs_dirhashcheck, static int ufs_dirhashlowmemcount = 0; SYSCTL_INT(_vfs_ufs, OID_AUTO, dirhash_lowmemcount, CTLFLAG_RD, &ufs_dirhashlowmemcount, 0, "number of times low memory hook called"); -static int ufs_dirhashreclaimage = 5; +static int ufs_dirhashreclaimage = 60; SYSCTL_INT(_vfs_ufs, OID_AUTO, dirhash_reclaimage, CTLFLAG_RW, &ufs_dirhashreclaimage, 0, "max time in seconds of hash inactivity before deletion in low VM events"); diff --git a/sys/vm/pmap.h b/sys/vm/pmap.h index c0f80a7..911298f 100644 --- a/sys/vm/pmap.h +++ b/sys/vm/pmap.h @@ -98,6 +98,8 @@ struct thread; extern vm_offset_t kernel_vm_end; void pmap_activate(struct thread *td); +void pmap_advise(pmap_t pmap, vm_offset_t sva, vm_offset_t eva, + int advice); void pmap_align_superpage(vm_object_t, vm_ooffset_t, vm_offset_t *, vm_size_t); void pmap_change_wiring(pmap_t, vm_offset_t, boolean_t); diff --git a/sys/vm/vm_map.c b/sys/vm/vm_map.c index 71c44ad..1be62af 100644 --- a/sys/vm/vm_map.c +++ b/sys/vm/vm_map.c @@ -2125,7 +2125,7 @@ vm_map_madvise( (current != &map->header) && (current->start < end); current = current->next ) { - vm_offset_t useStart; + vm_offset_t useEnd, useStart; if (current->eflags & MAP_ENTRY_IS_SUB_MAP) continue; @@ -2133,17 +2133,34 @@ vm_map_madvise( pstart = OFF_TO_IDX(current->offset); pend = pstart + atop(current->end - current->start); useStart = current->start; + useEnd = current->end; if (current->start < start) { pstart += atop(start - current->start); useStart = start; } - if (current->end > end) + if (current->end > end) { pend -= atop(current->end - end); + useEnd = end; + } if (pstart >= pend) continue; + /* + * Perform the pmap_advise() before clearing + * PGA_REFERENCED in vm_page_advise(). Otherwise, a + * concurrent pmap operation, such as pmap_remove(), + * could clear a reference in the pmap and set + * PGA_REFERENCED on the page before the pmap_advise() + * had completed. Consequently, the page would appear + * referenced based upon an old reference that + * occurred before this pmap_advise() ran. + */ + if (behav == MADV_DONTNEED || behav == MADV_FREE) + pmap_advise(map->pmap, useStart, useEnd, + behav); + vm_object_madvise(current->object.vm_object, pstart, pend, behav); if (behav == MADV_WILLNEED) { diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c index 7d8ecfa..7b4b57c 100644 --- a/sys/vm/vm_page.c +++ b/sys/vm/vm_page.c @@ -2634,7 +2634,6 @@ vm_page_advise(vm_page_t m, int advice) * But we do make the page is freeable as we can without * actually taking the step of unmapping it. */ - pmap_clear_modify(m); m->dirty = 0; m->act_count = 0; } else if (advice != MADV_DONTNEED) @@ -2654,15 +2653,7 @@ vm_page_advise(vm_page_t m, int advice) /* * Clear any references to the page. Otherwise, the page daemon will * immediately reactivate the page. - * - * Perform the pmap_clear_reference() first. Otherwise, a concurrent - * pmap operation, such as pmap_remove(), could clear a reference in - * the pmap and set PGA_REFERENCED on the page before the - * pmap_clear_reference() had completed. Consequently, the page would - * appear referenced based upon an old reference that occurred before - * this function ran. */ - pmap_clear_reference(m); vm_page_aflag_clear(m, PGA_REFERENCED); if (advice != MADV_FREE && m->dirty == 0 && pmap_is_modified(m)) diff --git a/sys/x86/include/segments.h b/sys/x86/include/segments.h index 74066ef..0d6a282 100644 --- a/sys/x86/include/segments.h +++ b/sys/x86/include/segments.h @@ -217,6 +217,7 @@ union descriptor { #define IDT_IO_INTS NRSVIDT /* Base of IDT entries for I/O interrupts. */ #define IDT_SYSCALL 0x80 /* System Call Interrupt Vector */ #define IDT_DTRACE_RET 0x92 /* DTrace pid provider Interrupt Vector */ +#define IDT_EVTCHN 0x93 /* Xen HVM Event Channel Interrupt Vector */ #if defined(__i386__) || defined(__ia64__) /* diff --git a/sys/x86/x86/local_apic.c b/sys/x86/x86/local_apic.c index 42ffa48..ac651cd 100644 --- a/sys/x86/x86/local_apic.c +++ b/sys/x86/x86/local_apic.c @@ -91,6 +91,7 @@ CTASSERT(IPI_STOP < APIC_SPURIOUS_INT); #define IRQ_TIMER (NUM_IO_INTS + 1) #define IRQ_SYSCALL (NUM_IO_INTS + 2) #define IRQ_DTRACE_RET (NUM_IO_INTS + 3) +#define IRQ_EVTCHN (NUM_IO_INTS + 4) /* * Support for local APICs. Local APICs manage interrupts on each @@ -313,6 +314,9 @@ lapic_create(u_int apic_id, int boot_cpu) lapics[apic_id].la_ioint_irqs[IDT_DTRACE_RET - APIC_IO_INTS] = IRQ_DTRACE_RET; #endif +#ifdef XENHVM + lapics[apic_id].la_ioint_irqs[IDT_EVTCHN - APIC_IO_INTS] = IRQ_EVTCHN; +#endif #ifdef SMP @@ -1137,6 +1141,10 @@ DB_SHOW_COMMAND(apic, db_show_apic) if (irq == IRQ_DTRACE_RET) continue; #endif +#ifdef XENHVM + if (irq == IRQ_EVTCHN) + continue; +#endif db_printf("vec 0x%2x -> ", i + APIC_IO_INTS); if (irq == IRQ_TIMER) db_printf("lapic timer\n"); diff --git a/sys/x86/xen/hvm.c b/sys/x86/xen/hvm.c new file mode 100644 index 0000000..0730d94 --- /dev/null +++ b/sys/x86/xen/hvm.c @@ -0,0 +1,256 @@ +/* + * Copyright (c) 2008 Citrix Systems, Inc. + * Copyright (c) 2012 Spectra Logic Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <sys/param.h> +#include <sys/bus.h> +#include <sys/kernel.h> +#include <sys/malloc.h> +#include <sys/proc.h> + +#include <dev/pci/pcivar.h> +#include <machine/cpufunc.h> + +#include <xen/xen-os.h> +#include <xen/features.h> +#include <xen/gnttab.h> +#include <xen/hypervisor.h> +#include <xen/hvm.h> +#include <xen/xen_intr.h> + +#include <vm/vm.h> +#include <vm/pmap.h> + +#include <xen/interface/hvm/params.h> +#include <xen/interface/vcpu.h> + +static MALLOC_DEFINE(M_XENHVM, "xen_hvm", "Xen HVM PV Support"); + +DPCPU_DEFINE(struct vcpu_info, vcpu_local_info); +DPCPU_DEFINE(struct vcpu_info *, vcpu_info); + +/*-------------------------------- Global Data -------------------------------*/ +/** + * If non-zero, the hypervisor has been configured to use a direct + * IDT event callback for interrupt injection. + */ +int xen_vector_callback_enabled; + +/*------------------ Hypervisor Access Shared Memory Regions -----------------*/ +/** Hypercall table accessed via HYPERVISOR_*_op() methods. */ +char *hypercall_stubs; +shared_info_t *HYPERVISOR_shared_info; +enum xen_domain_type xen_domain_type = XEN_NATIVE; + +static uint32_t +xen_hvm_cpuid_base(void) +{ + uint32_t base, regs[4]; + + for (base = 0x40000000; base < 0x40010000; base += 0x100) { + do_cpuid(base, regs); + if (!memcmp("XenVMMXenVMM", ®s[1], 12) + && (regs[0] - base) >= 2) + return (base); + } + return (0); +} + +/* + * Allocate and fill in the hypcall page. + */ +static int +xen_hvm_init_hypercall_stubs(void) +{ + uint32_t base, regs[4]; + int i; + + base = xen_hvm_cpuid_base(); + if (!base) + return (ENXIO); + + if (hypercall_stubs == NULL) { + do_cpuid(base + 1, regs); + printf("XEN: Hypervisor version %d.%d detected.\n", + regs[0] >> 16, regs[0] & 0xffff); + } + + /* + * Find the hypercall pages. + */ + do_cpuid(base + 2, regs); + + if (hypercall_stubs == NULL) { + size_t call_region_size; + + call_region_size = regs[0] * PAGE_SIZE; + hypercall_stubs = malloc(call_region_size, M_XENHVM, M_NOWAIT); + if (hypercall_stubs == NULL) + panic("Unable to allocate Xen hypercall region"); + } + + for (i = 0; i < regs[0]; i++) + wrmsr(regs[1], vtophys(hypercall_stubs + i * PAGE_SIZE) + i); + + return (0); +} + +static void +xen_hvm_init_shared_info_page(void) +{ + struct xen_add_to_physmap xatp; + + if (HYPERVISOR_shared_info == NULL) { + HYPERVISOR_shared_info = malloc(PAGE_SIZE, M_XENHVM, M_NOWAIT); + if (HYPERVISOR_shared_info == NULL) + panic("Unable to allocate Xen shared info page"); + } + + xatp.domid = DOMID_SELF; + xatp.idx = 0; + xatp.space = XENMAPSPACE_shared_info; + xatp.gpfn = vtophys(HYPERVISOR_shared_info) >> PAGE_SHIFT; + if (HYPERVISOR_memory_op(XENMEM_add_to_physmap, &xatp)) + panic("HYPERVISOR_memory_op failed"); +} + +/* + * Tell the hypervisor how to contact us for event channel callbacks. + */ +void +xen_hvm_set_callback(device_t dev) +{ + struct xen_hvm_param xhp; + int irq; + + xhp.domid = DOMID_SELF; + xhp.index = HVM_PARAM_CALLBACK_IRQ; + if (xen_feature(XENFEAT_hvm_callback_vector)) { + int error; + + xhp.value = HVM_CALLBACK_VECTOR(IDT_EVTCHN); + error = HYPERVISOR_hvm_op(HVMOP_set_param, &xhp); + if (error == 0) { + xen_vector_callback_enabled = 1; + return; + } + printf("Xen HVM callback vector registration failed (%d). " + "Falling back to emulated device interrupt\n", + error); + } + xen_vector_callback_enabled = 0; + if (dev == NULL) { + /* + * Called from early boot or resume. + * xenpci will invoke us again later. + */ + return; + } + + irq = pci_get_irq(dev); + if (irq < 16) { + xhp.value = HVM_CALLBACK_GSI(irq); + } else { + u_int slot; + u_int pin; + + slot = pci_get_slot(dev); + pin = pci_get_intpin(dev) - 1; + xhp.value = HVM_CALLBACK_PCI_INTX(slot, pin); + } + + if (HYPERVISOR_hvm_op(HVMOP_set_param, &xhp)) + panic("Can't set evtchn callback"); +} + +#define XEN_MAGIC_IOPORT 0x10 +enum { + XMI_MAGIC = 0x49d2, + XMI_UNPLUG_IDE_DISKS = 0x01, + XMI_UNPLUG_NICS = 0x02, + XMI_UNPLUG_IDE_EXCEPT_PRI_MASTER = 0x04 +}; + +static void +xen_hvm_disable_emulated_devices(void) +{ + if (inw(XEN_MAGIC_IOPORT) != XMI_MAGIC) + return; + + if (bootverbose) + printf("XEN: Disabling emulated block and network devices\n"); + outw(XEN_MAGIC_IOPORT, XMI_UNPLUG_IDE_DISKS|XMI_UNPLUG_NICS); +} + +void +xen_hvm_suspend(void) +{ +} + +void +xen_hvm_resume(void) +{ + xen_hvm_init_hypercall_stubs(); + xen_hvm_init_shared_info_page(); +} + +static void +xen_hvm_init(void *dummy __unused) +{ + if (xen_hvm_init_hypercall_stubs() != 0) + return; + + xen_domain_type = XEN_HVM_DOMAIN; + setup_xen_features(); + xen_hvm_init_shared_info_page(); + xen_hvm_set_callback(NULL); + xen_hvm_disable_emulated_devices(); +} + +void xen_hvm_init_cpu(void) +{ + int cpu = PCPU_GET(acpi_id); + struct vcpu_info *vcpu_info; + struct vcpu_register_vcpu_info info; + int rc; + + vcpu_info = DPCPU_PTR(vcpu_local_info); + info.mfn = vtophys(vcpu_info) >> PAGE_SHIFT; + info.offset = vtophys(vcpu_info) - trunc_page(vtophys(vcpu_info)); + + rc = HYPERVISOR_vcpu_op(VCPUOP_register_vcpu_info, cpu, &info); + if (rc) { + DPCPU_SET(vcpu_info, &HYPERVISOR_shared_info->vcpu_info[cpu]); + } else { + DPCPU_SET(vcpu_info, vcpu_info); + } +} + +SYSINIT(xen_hvm_init, SI_SUB_HYPERVISOR, SI_ORDER_FIRST, xen_hvm_init, NULL); +SYSINIT(xen_hvm_init_cpu, SI_SUB_INTR, SI_ORDER_FIRST, xen_hvm_init_cpu, NULL); diff --git a/sys/x86/xen/xen_intr.c b/sys/x86/xen/xen_intr.c new file mode 100644 index 0000000..83bf487 --- /dev/null +++ b/sys/x86/xen/xen_intr.c @@ -0,0 +1,1126 @@ +/****************************************************************************** + * xen_intr.c + * + * Xen event and interrupt services for x86 PV and HVM guests. + * + * Copyright (c) 2002-2005, K A Fraser + * Copyright (c) 2005, Intel Corporation <xiaofeng.ling@intel.com> + * Copyright (c) 2012, Spectra Logic Corporation + * + * This file may be distributed separately from the Linux kernel, or + * incorporated into other software packages, subject to the following license: + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this source file (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 <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <sys/param.h> +#include <sys/systm.h> +#include <sys/bus.h> +#include <sys/malloc.h> +#include <sys/kernel.h> +#include <sys/limits.h> +#include <sys/lock.h> +#include <sys/mutex.h> +#include <sys/interrupt.h> +#include <sys/pcpu.h> +#include <sys/smp.h> + +#include <vm/vm.h> +#include <vm/pmap.h> + +#include <machine/intr_machdep.h> +#include <machine/apicvar.h> +#include <machine/smp.h> +#include <machine/stdarg.h> + +#include <machine/xen/synch_bitops.h> +#include <machine/xen/xen-os.h> +#include <machine/xen/xenvar.h> + +#include <xen/hypervisor.h> +#include <xen/xen_intr.h> +#include <xen/evtchn/evtchnvar.h> + +#include <dev/xen/xenpci/xenpcivar.h> + +static MALLOC_DEFINE(M_XENINTR, "xen_intr", "Xen Interrupt Services"); + +/** + * Per-cpu event channel processing state. + */ +struct xen_intr_pcpu_data { + /** + * The last event channel bitmap section (level one bit) processed. + * This is used to ensure we scan all ports before + * servicing an already servied port again. + */ + u_int last_processed_l1i; + + /** + * The last event channel processed within the event channel + * bitmap being scanned. + */ + u_int last_processed_l2i; + + /** Pointer to this CPU's interrupt statistic counter. */ + u_long *evtchn_intrcnt; + + /** + * A bitmap of ports that can be serviced from this CPU. + * A set bit means interrupt handling is enabled. + */ + u_long evtchn_enabled[sizeof(u_long) * 8]; +}; + +/* + * Start the scan at port 0 by initializing the last scanned + * location as the highest numbered event channel port. + */ +DPCPU_DEFINE(struct xen_intr_pcpu_data, xen_intr_pcpu) = { + .last_processed_l1i = LONG_BIT - 1, + .last_processed_l2i = LONG_BIT - 1 +}; + +DPCPU_DECLARE(struct vcpu_info *, vcpu_info); + +#define is_valid_evtchn(x) ((x) != 0) + +struct xenisrc { + struct intsrc xi_intsrc; + enum evtchn_type xi_type; + int xi_cpu; /* VCPU for delivery. */ + int xi_vector; /* Global isrc vector number. */ + evtchn_port_t xi_port; + int xi_pirq; + int xi_virq; + u_int xi_close:1; /* close on unbind? */ + u_int xi_needs_eoi:1; + u_int xi_shared:1; /* Shared with other domains. */ +}; + +#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0])) + +static void xen_intr_suspend(struct pic *); +static void xen_intr_resume(struct pic *); +static void xen_intr_enable_source(struct intsrc *isrc); +static void xen_intr_disable_source(struct intsrc *isrc, int eoi); +static void xen_intr_eoi_source(struct intsrc *isrc); +static void xen_intr_enable_intr(struct intsrc *isrc); +static void xen_intr_disable_intr(struct intsrc *isrc); +static int xen_intr_vector(struct intsrc *isrc); +static int xen_intr_source_pending(struct intsrc *isrc); +static int xen_intr_config_intr(struct intsrc *isrc, + enum intr_trigger trig, enum intr_polarity pol); +static int xen_intr_assign_cpu(struct intsrc *isrc, u_int apic_id); + +static void xen_intr_pirq_enable_source(struct intsrc *isrc); +static void xen_intr_pirq_disable_source(struct intsrc *isrc, int eoi); +static void xen_intr_pirq_eoi_source(struct intsrc *isrc); +static void xen_intr_pirq_enable_intr(struct intsrc *isrc); + +/** + * PIC interface for all event channel port types except physical IRQs. + */ +struct pic xen_intr_pic = { + .pic_enable_source = xen_intr_enable_source, + .pic_disable_source = xen_intr_disable_source, + .pic_eoi_source = xen_intr_eoi_source, + .pic_enable_intr = xen_intr_enable_intr, + .pic_disable_intr = xen_intr_disable_intr, + .pic_vector = xen_intr_vector, + .pic_source_pending = xen_intr_source_pending, + .pic_suspend = xen_intr_suspend, + .pic_resume = xen_intr_resume, + .pic_config_intr = xen_intr_config_intr, + .pic_assign_cpu = xen_intr_assign_cpu +}; + +/** + * PIC interface for all event channel representing + * physical interrupt sources. + */ +struct pic xen_intr_pirq_pic = { + .pic_enable_source = xen_intr_pirq_enable_source, + .pic_disable_source = xen_intr_pirq_disable_source, + .pic_eoi_source = xen_intr_pirq_eoi_source, + .pic_enable_intr = xen_intr_pirq_enable_intr, + .pic_disable_intr = xen_intr_disable_intr, + .pic_vector = xen_intr_vector, + .pic_source_pending = xen_intr_source_pending, + .pic_suspend = xen_intr_suspend, + .pic_resume = xen_intr_resume, + .pic_config_intr = xen_intr_config_intr, + .pic_assign_cpu = xen_intr_assign_cpu +}; + +static struct mtx xen_intr_isrc_lock; +static int xen_intr_isrc_count; +static struct xenisrc *xen_intr_port_to_isrc[NR_EVENT_CHANNELS]; + +/*------------------------- Private Functions --------------------------------*/ +/** + * Disable signal delivery for an event channel port on the + * specified CPU. + * + * \param port The event channel port to mask. + * + * This API is used to manage the port<=>CPU binding of event + * channel handlers. + * + * \note This operation does not preclude reception of an event + * for this event channel on another CPU. To mask the + * event channel globally, use evtchn_mask(). + */ +static inline void +evtchn_cpu_mask_port(u_int cpu, evtchn_port_t port) +{ + struct xen_intr_pcpu_data *pcpu; + + pcpu = DPCPU_ID_PTR(cpu, xen_intr_pcpu); + clear_bit(port, pcpu->evtchn_enabled); +} + +/** + * Enable signal delivery for an event channel port on the + * specified CPU. + * + * \param port The event channel port to unmask. + * + * This API is used to manage the port<=>CPU binding of event + * channel handlers. + * + * \note This operation does not guarantee that event delivery + * is enabled for this event channel port. The port must + * also be globally enabled. See evtchn_unmask(). + */ +static inline void +evtchn_cpu_unmask_port(u_int cpu, evtchn_port_t port) +{ + struct xen_intr_pcpu_data *pcpu; + + pcpu = DPCPU_ID_PTR(cpu, xen_intr_pcpu); + set_bit(port, pcpu->evtchn_enabled); +} + +/** + * Allocate and register a per-cpu Xen upcall interrupt counter. + * + * \param cpu The cpu for which to register this interrupt count. + */ +static void +xen_intr_intrcnt_add(u_int cpu) +{ + char buf[MAXCOMLEN + 1]; + struct xen_intr_pcpu_data *pcpu; + + pcpu = DPCPU_ID_PTR(cpu, xen_intr_pcpu); + if (pcpu->evtchn_intrcnt != NULL) + return; + + snprintf(buf, sizeof(buf), "cpu%d:xen", cpu); + intrcnt_add(buf, &pcpu->evtchn_intrcnt); +} + +/** + * Search for an already allocated but currently unused Xen interrupt + * source object. + * + * \param type Restrict the search to interrupt sources of the given + * type. + * + * \return A pointer to a free Xen interrupt source object or NULL. + */ +static struct xenisrc * +xen_intr_find_unused_isrc(enum evtchn_type type) +{ + int isrc_idx; + + KASSERT(mtx_owned(&xen_intr_isrc_lock), ("Evtchn isrc lock not held")); + + for (isrc_idx = 0; isrc_idx < xen_intr_isrc_count; isrc_idx ++) { + struct xenisrc *isrc; + u_int vector; + + vector = FIRST_EVTCHN_INT + isrc_idx; + isrc = (struct xenisrc *)intr_lookup_source(vector); + if (isrc != NULL + && isrc->xi_type == EVTCHN_TYPE_UNBOUND) { + KASSERT(isrc->xi_intsrc.is_handlers == 0, + ("Free evtchn still has handlers")); + isrc->xi_type = type; + return (isrc); + } + } + return (NULL); +} + +/** + * Allocate a Xen interrupt source object. + * + * \param type The type of interrupt source to create. + * + * \return A pointer to a newly allocated Xen interrupt source + * object or NULL. + */ +static struct xenisrc * +xen_intr_alloc_isrc(enum evtchn_type type) +{ + static int warned; + struct xenisrc *isrc; + int vector; + + KASSERT(mtx_owned(&xen_intr_isrc_lock), ("Evtchn alloc lock not held")); + + if (xen_intr_isrc_count > NR_EVENT_CHANNELS) { + if (!warned) { + warned = 1; + printf("xen_intr_alloc: Event channels exhausted.\n"); + } + return (NULL); + } + vector = FIRST_EVTCHN_INT + xen_intr_isrc_count; + xen_intr_isrc_count++; + + mtx_unlock(&xen_intr_isrc_lock); + isrc = malloc(sizeof(*isrc), M_XENINTR, M_WAITOK | M_ZERO); + isrc->xi_intsrc.is_pic = &xen_intr_pic; + isrc->xi_vector = vector; + isrc->xi_type = type; + intr_register_source(&isrc->xi_intsrc); + mtx_lock(&xen_intr_isrc_lock); + + return (isrc); +} + +/** + * Attempt to free an active Xen interrupt source object. + * + * \param isrc The interrupt source object to release. + * + * \returns EBUSY if the source is still in use, otherwise 0. + */ +static int +xen_intr_release_isrc(struct xenisrc *isrc) +{ + + mtx_lock(&xen_intr_isrc_lock); + if (isrc->xi_intsrc.is_handlers != 0) { + mtx_unlock(&xen_intr_isrc_lock); + return (EBUSY); + } + evtchn_mask_port(isrc->xi_port); + evtchn_clear_port(isrc->xi_port); + + /* Rebind port to CPU 0. */ + evtchn_cpu_mask_port(isrc->xi_cpu, isrc->xi_port); + evtchn_cpu_unmask_port(0, isrc->xi_port); + + if (isrc->xi_close != 0) { + struct evtchn_close close = { .port = isrc->xi_port }; + if (HYPERVISOR_event_channel_op(EVTCHNOP_close, &close)) + panic("EVTCHNOP_close failed"); + } + + xen_intr_port_to_isrc[isrc->xi_port] = NULL; + isrc->xi_cpu = 0; + isrc->xi_type = EVTCHN_TYPE_UNBOUND; + isrc->xi_port = 0; + mtx_unlock(&xen_intr_isrc_lock); + return (0); +} + +/** + * Associate an interrupt handler with an already allocated local Xen + * event channel port. + * + * \param isrcp The returned Xen interrupt object associated with + * the specified local port. + * \param local_port The event channel to bind. + * \param type The event channel type of local_port. + * \param intr_owner The device making this bind request. + * \param filter An interrupt filter handler. Specify NULL + * to always dispatch to the ithread handler. + * \param handler An interrupt ithread handler. Optional (can + * specify NULL) if all necessary event actions + * are performed by filter. + * \param arg Argument to present to both filter and handler. + * \param irqflags Interrupt handler flags. See sys/bus.h. + * \param handlep Pointer to an opaque handle used to manage this + * registration. + * + * \returns 0 on success, otherwise an errno. + */ +static int +xen_intr_bind_isrc(struct xenisrc **isrcp, evtchn_port_t local_port, + enum evtchn_type type, device_t intr_owner, driver_filter_t filter, + driver_intr_t handler, void *arg, enum intr_type flags, + xen_intr_handle_t *port_handlep) +{ + struct xenisrc *isrc; + int error; + + *isrcp = NULL; + if (port_handlep == NULL) { + device_printf(intr_owner, + "xen_intr_bind_isrc: Bad event handle\n"); + return (EINVAL); + } + + mtx_lock(&xen_intr_isrc_lock); + isrc = xen_intr_find_unused_isrc(type); + if (isrc == NULL) { + isrc = xen_intr_alloc_isrc(type); + if (isrc == NULL) { + mtx_unlock(&xen_intr_isrc_lock); + return (ENOSPC); + } + } + isrc->xi_port = local_port; + xen_intr_port_to_isrc[local_port] = isrc; + mtx_unlock(&xen_intr_isrc_lock); + + error = intr_add_handler(device_get_nameunit(intr_owner), + isrc->xi_vector, filter, handler, arg, + flags|INTR_EXCL, port_handlep); + if (error != 0) { + device_printf(intr_owner, + "xen_intr_bind_irq: intr_add_handler failed\n"); + xen_intr_release_isrc(isrc); + return (error); + } + *isrcp = isrc; + return (0); +} + +/** + * Lookup a Xen interrupt source object given an interrupt binding handle. + * + * \param handle A handle initialized by a previous call to + * xen_intr_bind_isrc(). + * + * \returns A pointer to the Xen interrupt source object associated + * with the given interrupt handle. NULL if no association + * currently exists. + */ +static struct xenisrc * +xen_intr_isrc(xen_intr_handle_t handle) +{ + struct intr_handler *ih; + + ih = handle; + if (ih == NULL || ih->ih_event == NULL) + return (NULL); + + return (ih->ih_event->ie_source); +} + +/** + * Determine the event channel ports at the given section of the + * event port bitmap which have pending events for the given cpu. + * + * \param pcpu The Xen interrupt pcpu data for the cpu being querried. + * \param sh The Xen shared info area. + * \param idx The index of the section of the event channel bitmap to + * inspect. + * + * \returns A u_long with bits set for every event channel with pending + * events. + */ +static inline u_long +xen_intr_active_ports(struct xen_intr_pcpu_data *pcpu, shared_info_t *sh, + u_int idx) +{ + return (sh->evtchn_pending[idx] + & ~sh->evtchn_mask[idx] + & pcpu->evtchn_enabled[idx]); +} + +/** + * Interrupt handler for processing all Xen event channel events. + * + * \param trap_frame The trap frame context for the current interrupt. + */ +void +xen_intr_handle_upcall(struct trapframe *trap_frame) +{ + u_int l1i, l2i, port, cpu; + u_long masked_l1, masked_l2; + struct xenisrc *isrc; + shared_info_t *s; + vcpu_info_t *v; + struct xen_intr_pcpu_data *pc; + u_long l1, l2; + + /* + * Disable preemption in order to always check and fire events + * on the right vCPU + */ + critical_enter(); + + cpu = PCPU_GET(cpuid); + pc = DPCPU_PTR(xen_intr_pcpu); + s = HYPERVISOR_shared_info; + v = DPCPU_GET(vcpu_info); + + if (xen_hvm_domain() && !xen_vector_callback_enabled) { + KASSERT((cpu == 0), ("Fired PCI event callback on wrong CPU")); + } + + v->evtchn_upcall_pending = 0; + +#if 0 +#ifndef CONFIG_X86 /* No need for a barrier -- XCHG is a barrier on x86. */ + /* Clear master flag /before/ clearing selector flag. */ + wmb(); +#endif +#endif + + l1 = atomic_readandclear_long(&v->evtchn_pending_sel); + + l1i = pc->last_processed_l1i; + l2i = pc->last_processed_l2i; + (*pc->evtchn_intrcnt)++; + + while (l1 != 0) { + + l1i = (l1i + 1) % LONG_BIT; + masked_l1 = l1 & ((~0UL) << l1i); + + if (masked_l1 == 0) { + /* + * if we masked out all events, wrap around + * to the beginning. + */ + l1i = LONG_BIT - 1; + l2i = LONG_BIT - 1; + continue; + } + l1i = ffsl(masked_l1) - 1; + + do { + l2 = xen_intr_active_ports(pc, s, l1i); + + l2i = (l2i + 1) % LONG_BIT; + masked_l2 = l2 & ((~0UL) << l2i); + + if (masked_l2 == 0) { + /* if we masked out all events, move on */ + l2i = LONG_BIT - 1; + break; + } + l2i = ffsl(masked_l2) - 1; + + /* process port */ + port = (l1i * LONG_BIT) + l2i; + synch_clear_bit(port, &s->evtchn_pending[0]); + + isrc = xen_intr_port_to_isrc[port]; + if (__predict_false(isrc == NULL)) + continue; + + /* Make sure we are firing on the right vCPU */ + KASSERT((isrc->xi_cpu == PCPU_GET(cpuid)), + ("Received unexpected event on vCPU#%d, event bound to vCPU#%d", + PCPU_GET(cpuid), isrc->xi_cpu)); + + intr_execute_handlers(&isrc->xi_intsrc, trap_frame); + + /* + * If this is the final port processed, + * we'll pick up here+1 next time. + */ + pc->last_processed_l1i = l1i; + pc->last_processed_l2i = l2i; + + } while (l2i != LONG_BIT - 1); + + l2 = xen_intr_active_ports(pc, s, l1i); + if (l2 == 0) { + /* + * We handled all ports, so we can clear the + * selector bit. + */ + l1 &= ~(1UL << l1i); + } + } + critical_exit(); +} + +static int +xen_intr_init(void *dummy __unused) +{ + struct xen_intr_pcpu_data *pcpu; + int i; + + mtx_init(&xen_intr_isrc_lock, "xen-irq-lock", NULL, MTX_DEF); + + /* + * Register interrupt count manually as we aren't + * guaranteed to see a call to xen_intr_assign_cpu() + * before our first interrupt. Also set the per-cpu + * mask of CPU#0 to enable all, since by default + * all event channels are bound to CPU#0. + */ + CPU_FOREACH(i) { + pcpu = DPCPU_ID_PTR(i, xen_intr_pcpu); + memset(pcpu->evtchn_enabled, i == 0 ? ~0 : 0, + sizeof(pcpu->evtchn_enabled)); + xen_intr_intrcnt_add(i); + } + + intr_register_pic(&xen_intr_pic); + + return (0); +} +SYSINIT(xen_intr_init, SI_SUB_INTR, SI_ORDER_MIDDLE, xen_intr_init, NULL); + +/*--------------------------- Common PIC Functions ---------------------------*/ +/** + * Prepare this PIC for system suspension. + */ +static void +xen_intr_suspend(struct pic *unused) +{ +} + +/** + * Return this PIC to service after being suspended. + */ +static void +xen_intr_resume(struct pic *unused) +{ + u_int port; + + /* + * Mask events for all ports. They will be unmasked after + * drivers have re-registered their handlers. + */ + for (port = 0; port < NR_EVENT_CHANNELS; port++) + evtchn_mask_port(port); +} + +/** + * Disable a Xen interrupt source. + * + * \param isrc The interrupt source to disable. + */ +static void +xen_intr_disable_intr(struct intsrc *base_isrc) +{ + struct xenisrc *isrc = (struct xenisrc *)base_isrc; + + evtchn_mask_port(isrc->xi_port); +} + +/** + * Determine the global interrupt vector number for + * a Xen interrupt source. + * + * \param isrc The interrupt source to query. + * + * \return The vector number corresponding to the given interrupt source. + */ +static int +xen_intr_vector(struct intsrc *base_isrc) +{ + struct xenisrc *isrc = (struct xenisrc *)base_isrc; + + return (isrc->xi_vector); +} + +/** + * Determine whether or not interrupt events are pending on the + * the given interrupt source. + * + * \param isrc The interrupt source to query. + * + * \returns 0 if no events are pending, otherwise non-zero. + */ +static int +xen_intr_source_pending(struct intsrc *isrc) +{ + /* + * EventChannels are edge triggered and never masked. + * There can be no pending events. + */ + return (0); +} + +/** + * Perform configuration of an interrupt source. + * + * \param isrc The interrupt source to configure. + * \param trig Edge or level. + * \param pol Active high or low. + * + * \returns 0 if no events are pending, otherwise non-zero. + */ +static int +xen_intr_config_intr(struct intsrc *isrc, enum intr_trigger trig, + enum intr_polarity pol) +{ + /* Configuration is only possible via the evtchn apis. */ + return (ENODEV); +} + +/** + * Configure CPU affinity for interrupt source event delivery. + * + * \param isrc The interrupt source to configure. + * \param apic_id The apic id of the CPU for handling future events. + * + * \returns 0 if successful, otherwise an errno. + */ +static int +xen_intr_assign_cpu(struct intsrc *base_isrc, u_int apic_id) +{ + struct evtchn_bind_vcpu bind_vcpu; + struct xenisrc *isrc; + u_int to_cpu, acpi_id; + int error; + +#ifdef XENHVM + if (xen_vector_callback_enabled == 0) + return (EOPNOTSUPP); +#endif + + to_cpu = apic_cpuid(apic_id); + acpi_id = pcpu_find(to_cpu)->pc_acpi_id; + xen_intr_intrcnt_add(to_cpu); + + mtx_lock(&xen_intr_isrc_lock); + isrc = (struct xenisrc *)base_isrc; + if (!is_valid_evtchn(isrc->xi_port)) { + mtx_unlock(&xen_intr_isrc_lock); + return (EINVAL); + } + + if ((isrc->xi_type == EVTCHN_TYPE_VIRQ) || + (isrc->xi_type == EVTCHN_TYPE_IPI)) { + /* + * Virtual IRQs are associated with a cpu by + * the Hypervisor at evtchn_bind_virq time, so + * all we need to do is update the per-CPU masks. + */ + evtchn_cpu_mask_port(isrc->xi_cpu, isrc->xi_port); + isrc->xi_cpu = to_cpu; + evtchn_cpu_unmask_port(isrc->xi_cpu, isrc->xi_port); + mtx_unlock(&xen_intr_isrc_lock); + return (0); + } + + bind_vcpu.port = isrc->xi_port; + bind_vcpu.vcpu = acpi_id; + + /* + * Allow interrupts to be fielded on the new VCPU before + * we ask the hypervisor to deliver them there. + */ + evtchn_cpu_unmask_port(to_cpu, isrc->xi_port); + error = HYPERVISOR_event_channel_op(EVTCHNOP_bind_vcpu, &bind_vcpu); + if (isrc->xi_cpu != to_cpu) { + if (error == 0) { + /* Commit to new binding by removing the old one. */ + evtchn_cpu_mask_port(isrc->xi_cpu, isrc->xi_port); + isrc->xi_cpu = to_cpu; + } else { + /* Roll-back to previous binding. */ + evtchn_cpu_mask_port(to_cpu, isrc->xi_port); + } + } + mtx_unlock(&xen_intr_isrc_lock); + return (0); +} + +/*------------------- Virtual Interrupt Source PIC Functions -----------------*/ +/* + * Mask a level triggered interrupt source. + * + * \param isrc The interrupt source to mask (if necessary). + * \param eoi If non-zero, perform any necessary end-of-interrupt + * acknowledgements. + */ +static void +xen_intr_disable_source(struct intsrc *isrc, int eoi) +{ +} + +/* + * Unmask a level triggered interrupt source. + * + * \param isrc The interrupt source to unmask (if necessary). + */ +static void +xen_intr_enable_source(struct intsrc *isrc) +{ +} + +/* + * Perform any necessary end-of-interrupt acknowledgements. + * + * \param isrc The interrupt source to EOI. + */ +static void +xen_intr_eoi_source(struct intsrc *isrc) +{ +} + +/* + * Enable and unmask the interrupt source. + * + * \param isrc The interrupt source to enable. + */ +static void +xen_intr_enable_intr(struct intsrc *base_isrc) +{ + struct xenisrc *isrc = (struct xenisrc *)base_isrc; + + evtchn_unmask_port(isrc->xi_port); +} + +/*------------------ Physical Interrupt Source PIC Functions -----------------*/ +/* + * Mask a level triggered interrupt source. + * + * \param isrc The interrupt source to mask (if necessary). + * \param eoi If non-zero, perform any necessary end-of-interrupt + * acknowledgements. + */ +static void +xen_intr_pirq_disable_source(struct intsrc *base_isrc, int eoi) +{ + struct xenisrc *isrc; + + isrc = (struct xenisrc *)base_isrc; + evtchn_mask_port(isrc->xi_port); +} + +/* + * Unmask a level triggered interrupt source. + * + * \param isrc The interrupt source to unmask (if necessary). + */ +static void +xen_intr_pirq_enable_source(struct intsrc *base_isrc) +{ + struct xenisrc *isrc; + + isrc = (struct xenisrc *)base_isrc; + evtchn_unmask_port(isrc->xi_port); +} + +/* + * Perform any necessary end-of-interrupt acknowledgements. + * + * \param isrc The interrupt source to EOI. + */ +static void +xen_intr_pirq_eoi_source(struct intsrc *base_isrc) +{ + struct xenisrc *isrc; + + /* XXX Use shared page of flags for this. */ + isrc = (struct xenisrc *)base_isrc; + if (isrc->xi_needs_eoi != 0) { + struct physdev_eoi eoi = { .irq = isrc->xi_pirq }; + + (void)HYPERVISOR_physdev_op(PHYSDEVOP_eoi, &eoi); + } +} + +/* + * Enable and unmask the interrupt source. + * + * \param isrc The interrupt source to enable. + */ +static void +xen_intr_pirq_enable_intr(struct intsrc *isrc) +{ +} + +/*--------------------------- Public Functions -------------------------------*/ +/*------- API comments for these methods can be found in xen/xenintr.h -------*/ +int +xen_intr_bind_local_port(device_t dev, evtchn_port_t local_port, + driver_filter_t filter, driver_intr_t handler, void *arg, + enum intr_type flags, xen_intr_handle_t *port_handlep) +{ + struct xenisrc *isrc; + int error; + + error = xen_intr_bind_isrc(&isrc, local_port, EVTCHN_TYPE_PORT, dev, + filter, handler, arg, flags, port_handlep); + if (error != 0) + return (error); + + /* + * The Event Channel API didn't open this port, so it is not + * responsible for closing it automatically on unbind. + */ + isrc->xi_close = 0; + return (0); +} + +int +xen_intr_alloc_and_bind_local_port(device_t dev, u_int remote_domain, + driver_filter_t filter, driver_intr_t handler, void *arg, + enum intr_type flags, xen_intr_handle_t *port_handlep) +{ + struct xenisrc *isrc; + struct evtchn_alloc_unbound alloc_unbound; + int error; + + alloc_unbound.dom = DOMID_SELF; + alloc_unbound.remote_dom = remote_domain; + error = HYPERVISOR_event_channel_op(EVTCHNOP_alloc_unbound, + &alloc_unbound); + if (error != 0) { + /* + * XXX Trap Hypercall error code Linuxisms in + * the HYPERCALL layer. + */ + return (-error); + } + + error = xen_intr_bind_isrc(&isrc, alloc_unbound.port, EVTCHN_TYPE_PORT, + dev, filter, handler, arg, flags, + port_handlep); + if (error != 0) { + evtchn_close_t close = { .port = alloc_unbound.port }; + if (HYPERVISOR_event_channel_op(EVTCHNOP_close, &close)) + panic("EVTCHNOP_close failed"); + return (error); + } + + isrc->xi_close = 1; + return (0); +} + +int +xen_intr_bind_remote_port(device_t dev, u_int remote_domain, + u_int remote_port, driver_filter_t filter, driver_intr_t handler, + void *arg, enum intr_type flags, xen_intr_handle_t *port_handlep) +{ + struct xenisrc *isrc; + struct evtchn_bind_interdomain bind_interdomain; + int error; + + bind_interdomain.remote_dom = remote_domain; + bind_interdomain.remote_port = remote_port; + error = HYPERVISOR_event_channel_op(EVTCHNOP_bind_interdomain, + &bind_interdomain); + if (error != 0) { + /* + * XXX Trap Hypercall error code Linuxisms in + * the HYPERCALL layer. + */ + return (-error); + } + + error = xen_intr_bind_isrc(&isrc, bind_interdomain.local_port, + EVTCHN_TYPE_PORT, dev, filter, handler, + arg, flags, port_handlep); + if (error) { + evtchn_close_t close = { .port = bind_interdomain.local_port }; + if (HYPERVISOR_event_channel_op(EVTCHNOP_close, &close)) + panic("EVTCHNOP_close failed"); + return (error); + } + + /* + * The Event Channel API opened this port, so it is + * responsible for closing it automatically on unbind. + */ + isrc->xi_close = 1; + return (0); +} + +int +xen_intr_bind_virq(device_t dev, u_int virq, u_int cpu, + driver_filter_t filter, driver_intr_t handler, void *arg, + enum intr_type flags, xen_intr_handle_t *port_handlep) +{ + int acpi_id = pcpu_find(cpu)->pc_acpi_id; + struct xenisrc *isrc; + struct evtchn_bind_virq bind_virq = { .virq = virq, .vcpu = acpi_id }; + int error; + + /* Ensure the target CPU is ready to handle evtchn interrupts. */ + xen_intr_intrcnt_add(cpu); + + isrc = NULL; + error = HYPERVISOR_event_channel_op(EVTCHNOP_bind_virq, &bind_virq); + if (error != 0) { + /* + * XXX Trap Hypercall error code Linuxisms in + * the HYPERCALL layer. + */ + return (-error); + } + + error = xen_intr_bind_isrc(&isrc, bind_virq.port, EVTCHN_TYPE_VIRQ, dev, + filter, handler, arg, flags, port_handlep); + if (error == 0) + error = intr_event_bind(isrc->xi_intsrc.is_event, cpu); + + if (error != 0) { + evtchn_close_t close = { .port = bind_virq.port }; + + xen_intr_unbind(*port_handlep); + if (HYPERVISOR_event_channel_op(EVTCHNOP_close, &close)) + panic("EVTCHNOP_close failed"); + return (error); + } + + if (isrc->xi_cpu != cpu) { + /* + * Too early in the boot process for the generic interrupt + * code to perform the binding. Update our event channel + * masks manually so events can't fire on the wrong cpu + * during AP startup. + */ + xen_intr_assign_cpu(&isrc->xi_intsrc, cpu_apic_ids[cpu]); + } + + /* + * The Event Channel API opened this port, so it is + * responsible for closing it automatically on unbind. + */ + isrc->xi_close = 1; + return (0); +} + +int +xen_intr_bind_ipi(device_t dev, u_int ipi, u_int cpu, + driver_filter_t filter, enum intr_type flags, + xen_intr_handle_t *port_handlep) +{ + int acpi_id = pcpu_find(cpu)->pc_acpi_id; + struct xenisrc *isrc; + struct evtchn_bind_ipi bind_ipi = { .vcpu = acpi_id }; + int error; + + /* Ensure the target CPU is ready to handle evtchn interrupts. */ + xen_intr_intrcnt_add(cpu); + + isrc = NULL; + error = HYPERVISOR_event_channel_op(EVTCHNOP_bind_ipi, &bind_ipi); + if (error != 0) { + /* + * XXX Trap Hypercall error code Linuxisms in + * the HYPERCALL layer. + */ + return (-error); + } + + error = xen_intr_bind_isrc(&isrc, bind_ipi.port, EVTCHN_TYPE_IPI, + dev, filter, NULL, NULL, flags, + port_handlep); + if (error == 0) + error = intr_event_bind(isrc->xi_intsrc.is_event, cpu); + + if (error != 0) { + evtchn_close_t close = { .port = bind_ipi.port }; + + xen_intr_unbind(*port_handlep); + if (HYPERVISOR_event_channel_op(EVTCHNOP_close, &close)) + panic("EVTCHNOP_close failed"); + return (error); + } + + if (isrc->xi_cpu != cpu) { + /* + * Too early in the boot process for the generic interrupt + * code to perform the binding. Update our event channel + * masks manually so events can't fire on the wrong cpu + * during AP startup. + */ + xen_intr_assign_cpu(&isrc->xi_intsrc, cpu_apic_ids[cpu]); + } + + /* + * The Event Channel API opened this port, so it is + * responsible for closing it automatically on unbind. + */ + isrc->xi_close = 1; + return (0); +} + +int +xen_intr_describe(xen_intr_handle_t port_handle, const char *fmt, ...) +{ + char descr[MAXCOMLEN + 1]; + struct xenisrc *isrc; + va_list ap; + + isrc = xen_intr_isrc(port_handle); + if (isrc == NULL) + return (EINVAL); + + va_start(ap, fmt); + vsnprintf(descr, sizeof(descr), fmt, ap); + va_end(ap); + return (intr_describe(isrc->xi_vector, port_handle, descr)); +} + +void +xen_intr_unbind(xen_intr_handle_t *port_handlep) +{ + struct intr_handler *handler; + struct xenisrc *isrc; + + handler = *port_handlep; + *port_handlep = NULL; + isrc = xen_intr_isrc(handler); + if (isrc == NULL) + return; + + intr_remove_handler(handler); + xen_intr_release_isrc(isrc); +} + +void +xen_intr_signal(xen_intr_handle_t handle) +{ + struct xenisrc *isrc; + + isrc = xen_intr_isrc(handle); + if (isrc != NULL) { + KASSERT(isrc->xi_type == EVTCHN_TYPE_PORT || + isrc->xi_type == EVTCHN_TYPE_IPI, + ("evtchn_signal on something other than a local port")); + struct evtchn_send send = { .port = isrc->xi_port }; + (void)HYPERVISOR_event_channel_op(EVTCHNOP_send, &send); + } +} + +evtchn_port_t +xen_intr_port(xen_intr_handle_t handle) +{ + struct xenisrc *isrc; + + isrc = xen_intr_isrc(handle); + if (isrc == NULL) + return (0); + + return (isrc->xi_port); +} diff --git a/sys/xen/evtchn.h b/sys/xen/evtchn.h index 721742f..00fa67e 100644 --- a/sys/xen/evtchn.h +++ b/sys/xen/evtchn.h @@ -1,94 +1,87 @@ /****************************************************************************** * evtchn.h * - * Communication via Xen event channels. - * Also definitions for the device that demuxes notifications to userspace. + * Interface to /dev/xen/evtchn. * - * Copyright (c) 2004, K A Fraser + * Copyright (c) 2003-2005, K A Fraser + * + * This file may be distributed separately from the Linux kernel, or + * incorporated into other software packages, subject to the following license: + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this source file (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. * * $FreeBSD$ */ -#ifndef __ASM_EVTCHN_H__ -#define __ASM_EVTCHN_H__ -#include <machine/pcpu.h> -#include <xen/hypervisor.h> -#include <machine/xen/synch_bitops.h> -#include <machine/frame.h> +#ifndef __XEN_EVTCHN_H__ +#define __XEN_EVTCHN_H__ /* - * LOW-LEVEL DEFINITIONS + * Bind a fresh port to VIRQ @virq. */ +#define IOCTL_EVTCHN_BIND_VIRQ \ + _IOWR('E', 4, struct ioctl_evtchn_bind_virq) +struct ioctl_evtchn_bind_virq { + unsigned int virq; + unsigned int port; +}; /* - * Unlike notify_remote_via_evtchn(), this is safe to use across - * save/restore. Notifications on a broken connection are silently dropped. + * Bind a fresh port to remote <@remote_domain, @remote_port>. */ -void notify_remote_via_irq(int irq); - - -/* Entry point for notifications into Linux subsystems. */ -void evtchn_do_upcall(struct trapframe *frame); - -/* Entry point for notifications into the userland character device. */ -void evtchn_device_upcall(int port); - -void mask_evtchn(int port); - -void unmask_evtchn(int port); - -#ifdef SMP -void rebind_evtchn_to_cpu(int port, unsigned int cpu); -#else -#define rebind_evtchn_to_cpu(port, cpu) ((void)0) -#endif - -static inline -int test_and_set_evtchn_mask(int port) -{ - shared_info_t *s = HYPERVISOR_shared_info; - return synch_test_and_set_bit(port, s->evtchn_mask); -} - -static inline void -clear_evtchn(int port) -{ - shared_info_t *s = HYPERVISOR_shared_info; - synch_clear_bit(port, &s->evtchn_pending[0]); -} - -static inline void -notify_remote_via_evtchn(int port) -{ - struct evtchn_send send = { .port = port }; - (void)HYPERVISOR_event_channel_op(EVTCHNOP_send, &send); -} +#define IOCTL_EVTCHN_BIND_INTERDOMAIN \ + _IOWR('E', 5, struct ioctl_evtchn_bind_interdomain) +struct ioctl_evtchn_bind_interdomain { + unsigned int remote_domain, remote_port; + unsigned int port; +}; /* - * Use these to access the event channel underlying the IRQ handle returned - * by bind_*_to_irqhandler(). + * Allocate a fresh port for binding to @remote_domain. */ -int irq_to_evtchn_port(int irq); - -void ipi_pcpu(unsigned int cpu, int vector); +#define IOCTL_EVTCHN_BIND_UNBOUND_PORT \ + _IOWR('E', 6, struct ioctl_evtchn_bind_unbound_port) +struct ioctl_evtchn_bind_unbound_port { + unsigned int remote_domain; + unsigned int port; +}; /* - * CHARACTER-DEVICE DEFINITIONS + * Unbind previously allocated @port. */ +#define IOCTL_EVTCHN_UNBIND \ + _IOW('E', 7, struct ioctl_evtchn_unbind) +struct ioctl_evtchn_unbind { + unsigned int port; +}; -#define PORT_NORMAL 0x0000 -#define PORT_EXCEPTION 0x8000 -#define PORTIDX_MASK 0x7fff - -/* /dev/xen/evtchn resides at device number major=10, minor=200 */ -#define EVTCHN_MINOR 200 +/* + * Send event to previously allocated @port. + */ +#define IOCTL_EVTCHN_NOTIFY \ + _IOW('E', 8, struct ioctl_evtchn_notify) +struct ioctl_evtchn_notify { + unsigned int port; +}; -/* /dev/xen/evtchn ioctls: */ -/* EVTCHN_RESET: Clear and reinit the event buffer. Clear error condition. */ -#define EVTCHN_RESET _IO('E', 1) -/* EVTCHN_BIND: Bind to the specified event-channel port. */ -#define EVTCHN_BIND _IO('E', 2) -/* EVTCHN_UNBIND: Unbind from the specified event-channel port. */ -#define EVTCHN_UNBIND _IO('E', 3) +/* Clear and reinitialise the event buffer. Clear error condition. */ +#define IOCTL_EVTCHN_RESET \ + _IO('E', 9) -#endif /* __ASM_EVTCHN_H__ */ +#endif /* __XEN_EVTCHN_H__ */ diff --git a/sys/xen/evtchn/evtchn.c b/sys/xen/evtchn/evtchn.c deleted file mode 100644 index baff9aa..0000000 --- a/sys/xen/evtchn/evtchn.c +++ /dev/null @@ -1,1141 +0,0 @@ -/****************************************************************************** - * evtchn.c - * - * Communication via Xen event channels. - * - * Copyright (c) 2002-2005, K A Fraser - * Copyright (c) 2005-2006 Kip Macy - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/bus.h> -#include <sys/limits.h> -#include <sys/malloc.h> -#include <sys/kernel.h> -#include <sys/lock.h> -#include <sys/mutex.h> -#include <sys/interrupt.h> -#include <sys/pcpu.h> -#include <sys/smp.h> - -#include <machine/cpufunc.h> -#include <machine/intr_machdep.h> - -#include <machine/xen/xen-os.h> -#include <machine/xen/xenvar.h> -#include <xen/xen_intr.h> -#include <machine/xen/synch_bitops.h> -#include <xen/evtchn.h> -#include <xen/hypervisor.h> -#include <sys/smp.h> - -#include <xen/xen_intr.h> -#include <xen/evtchn.h> - -static inline unsigned long __ffs(unsigned long word) -{ - __asm__("bsfl %1,%0" - :"=r" (word) - :"rm" (word)); - return word; -} - -/* - * irq_mapping_update_lock: in order to allow an interrupt to occur in a critical - * section, to set pcpu->ipending (etc...) properly, we - * must be able to get the icu lock, so it can't be - * under witness. - */ -static struct mtx irq_mapping_update_lock; -MTX_SYSINIT(irq_mapping_update_lock, &irq_mapping_update_lock, "xp", MTX_SPIN); - -static struct xenpic *xp; -struct xenpic_intsrc { - struct intsrc xp_intsrc; - void *xp_cookie; - uint8_t xp_vector; - boolean_t xp_masked; -}; - -struct xenpic { - struct pic *xp_dynirq_pic; - struct pic *xp_pirq_pic; - uint16_t xp_numintr; - struct xenpic_intsrc xp_pins[0]; -}; - -#define TODO printf("%s: not implemented!\n", __func__) - -/* IRQ <-> event-channel mappings. */ -static int evtchn_to_irq[NR_EVENT_CHANNELS]; - -/* Packed IRQ information: binding type, sub-type index, and event channel. */ -static uint32_t irq_info[NR_IRQS]; -/* Binding types. */ -enum { - IRQT_UNBOUND, - IRQT_PIRQ, - IRQT_VIRQ, - IRQT_IPI, - IRQT_LOCAL_PORT, - IRQT_CALLER_PORT, - _IRQT_COUNT - -}; - - -#define _IRQT_BITS 4 -#define _EVTCHN_BITS 12 -#define _INDEX_BITS (32 - _IRQT_BITS - _EVTCHN_BITS) - -/* Constructor for packed IRQ information. */ -static inline uint32_t -mk_irq_info(uint32_t type, uint32_t index, uint32_t evtchn) -{ - - return ((type << (32 - _IRQT_BITS)) | (index << _EVTCHN_BITS) | evtchn); -} - -/* Constructor for packed IRQ information. */ - -/* Convenient shorthand for packed representation of an unbound IRQ. */ -#define IRQ_UNBOUND mk_irq_info(IRQT_UNBOUND, 0, 0) - -/* - * Accessors for packed IRQ information. - */ - -static inline unsigned int evtchn_from_irq(int irq) -{ - return irq_info[irq] & ((1U << _EVTCHN_BITS) - 1); -} - -static inline unsigned int index_from_irq(int irq) -{ - return (irq_info[irq] >> _EVTCHN_BITS) & ((1U << _INDEX_BITS) - 1); -} - -static inline unsigned int type_from_irq(int irq) -{ - return irq_info[irq] >> (32 - _IRQT_BITS); -} - - -/* IRQ <-> VIRQ mapping. */ - -/* IRQ <-> IPI mapping. */ -#ifndef NR_IPIS -#ifdef SMP -#error "NR_IPIS not defined" -#endif -#define NR_IPIS 1 -#endif - -/* Bitmap indicating which PIRQs require Xen to be notified on unmask. */ -static unsigned long pirq_needs_unmask_notify[NR_PIRQS/sizeof(unsigned long)]; - -/* Reference counts for bindings to IRQs. */ -static int irq_bindcount[NR_IRQS]; - -#define VALID_EVTCHN(_chn) ((_chn) != 0) - -#ifdef SMP - -static uint8_t cpu_evtchn[NR_EVENT_CHANNELS]; -static unsigned long cpu_evtchn_mask[XEN_LEGACY_MAX_VCPUS][NR_EVENT_CHANNELS/LONG_BIT]; - -#define active_evtchns(cpu,sh,idx) \ - ((sh)->evtchn_pending[idx] & \ - cpu_evtchn_mask[cpu][idx] & \ - ~(sh)->evtchn_mask[idx]) - -static void bind_evtchn_to_cpu(unsigned int chn, unsigned int cpu) -{ - clear_bit(chn, (unsigned long *)cpu_evtchn_mask[cpu_evtchn[chn]]); - set_bit(chn, (unsigned long *)cpu_evtchn_mask[cpu]); - cpu_evtchn[chn] = cpu; -} - -static void init_evtchn_cpu_bindings(void) -{ - /* By default all event channels notify CPU#0. */ - memset(cpu_evtchn, 0, sizeof(cpu_evtchn)); - memset(cpu_evtchn_mask[0], ~0, sizeof(cpu_evtchn_mask[0])); -} - -#define cpu_from_evtchn(evtchn) (cpu_evtchn[evtchn]) - -#else - -#define active_evtchns(cpu,sh,idx) \ - ((sh)->evtchn_pending[idx] & \ - ~(sh)->evtchn_mask[idx]) -#define bind_evtchn_to_cpu(chn,cpu) ((void)0) -#define init_evtchn_cpu_bindings() ((void)0) -#define cpu_from_evtchn(evtchn) (0) - -#endif - - -/* - * Force a proper event-channel callback from Xen after clearing the - * callback mask. We do this in a very simple manner, by making a call - * down into Xen. The pending flag will be checked by Xen on return. - */ -void force_evtchn_callback(void) -{ - (void)HYPERVISOR_xen_version(0, NULL); -} - -void -evtchn_do_upcall(struct trapframe *frame) -{ - unsigned long l1, l2; - unsigned int l1i, l2i, port; - int irq, cpu; - shared_info_t *s; - vcpu_info_t *vcpu_info; - - cpu = PCPU_GET(cpuid); - s = HYPERVISOR_shared_info; - vcpu_info = &s->vcpu_info[cpu]; - - vcpu_info->evtchn_upcall_pending = 0; - - /* NB. No need for a barrier here -- XCHG is a barrier on x86. */ - l1 = xen_xchg(&vcpu_info->evtchn_pending_sel, 0); - - while (l1 != 0) { - l1i = __ffs(l1); - l1 &= ~(1 << l1i); - - while ((l2 = active_evtchns(cpu, s, l1i)) != 0) { - l2i = __ffs(l2); - - port = (l1i * LONG_BIT) + l2i; - if ((irq = evtchn_to_irq[port]) != -1) { - struct intsrc *isrc = intr_lookup_source(irq); - /* - * ack - */ - mask_evtchn(port); - clear_evtchn(port); - - intr_execute_handlers(isrc, frame); - } else { - evtchn_device_upcall(port); - } - } - } -} - -/* - * Send an IPI from the current CPU to the destination CPU. - */ -void -ipi_pcpu(unsigned int cpu, int vector) -{ - int irq; - - irq = pcpu_find(cpu)->pc_ipi_to_irq[vector]; - - notify_remote_via_irq(irq); -} - -static int -find_unbound_irq(void) -{ - int dynirq, irq; - - for (dynirq = 0; dynirq < NR_IRQS; dynirq++) { - irq = dynirq_to_irq(dynirq); - if (irq_bindcount[irq] == 0) - break; - } - - if (irq == NR_IRQS) - panic("No available IRQ to bind to: increase NR_IRQS!\n"); - - return (irq); -} - -static int -bind_caller_port_to_irq(unsigned int caller_port, int * port) -{ - int irq; - - mtx_lock_spin(&irq_mapping_update_lock); - - if ((irq = evtchn_to_irq[caller_port]) == -1) { - if ((irq = find_unbound_irq()) < 0) - goto out; - - evtchn_to_irq[caller_port] = irq; - irq_info[irq] = mk_irq_info(IRQT_CALLER_PORT, 0, caller_port); - } - - irq_bindcount[irq]++; - *port = caller_port; - - out: - mtx_unlock_spin(&irq_mapping_update_lock); - return irq; -} - -static int -bind_local_port_to_irq(unsigned int local_port, int * port) -{ - int irq; - - mtx_lock_spin(&irq_mapping_update_lock); - - KASSERT(evtchn_to_irq[local_port] == -1, - ("evtchn_to_irq inconsistent")); - - if ((irq = find_unbound_irq()) < 0) { - struct evtchn_close close = { .port = local_port }; - HYPERVISOR_event_channel_op(EVTCHNOP_close, &close); - - goto out; - } - - evtchn_to_irq[local_port] = irq; - irq_info[irq] = mk_irq_info(IRQT_LOCAL_PORT, 0, local_port); - irq_bindcount[irq]++; - *port = local_port; - - out: - mtx_unlock_spin(&irq_mapping_update_lock); - return irq; -} - -static int -bind_listening_port_to_irq(unsigned int remote_domain, int * port) -{ - struct evtchn_alloc_unbound alloc_unbound; - int err; - - alloc_unbound.dom = DOMID_SELF; - alloc_unbound.remote_dom = remote_domain; - - err = HYPERVISOR_event_channel_op(EVTCHNOP_alloc_unbound, - &alloc_unbound); - - return err ? : bind_local_port_to_irq(alloc_unbound.port, port); -} - -static int -bind_interdomain_evtchn_to_irq(unsigned int remote_domain, - unsigned int remote_port, int * port) -{ - struct evtchn_bind_interdomain bind_interdomain; - int err; - - bind_interdomain.remote_dom = remote_domain; - bind_interdomain.remote_port = remote_port; - - err = HYPERVISOR_event_channel_op(EVTCHNOP_bind_interdomain, - &bind_interdomain); - - return err ? : bind_local_port_to_irq(bind_interdomain.local_port, port); -} - -static int -bind_virq_to_irq(unsigned int virq, unsigned int cpu, int * port) -{ - struct evtchn_bind_virq bind_virq; - int evtchn = 0, irq; - - mtx_lock_spin(&irq_mapping_update_lock); - - if ((irq = pcpu_find(cpu)->pc_virq_to_irq[virq]) == -1) { - if ((irq = find_unbound_irq()) < 0) - goto out; - - bind_virq.virq = virq; - bind_virq.vcpu = cpu; - HYPERVISOR_event_channel_op(EVTCHNOP_bind_virq, &bind_virq); - - evtchn = bind_virq.port; - - evtchn_to_irq[evtchn] = irq; - irq_info[irq] = mk_irq_info(IRQT_VIRQ, virq, evtchn); - - pcpu_find(cpu)->pc_virq_to_irq[virq] = irq; - - bind_evtchn_to_cpu(evtchn, cpu); - } - - irq_bindcount[irq]++; - *port = evtchn; -out: - mtx_unlock_spin(&irq_mapping_update_lock); - - return irq; -} - - -static int -bind_ipi_to_irq(unsigned int ipi, unsigned int cpu, int * port) -{ - struct evtchn_bind_ipi bind_ipi; - int irq; - int evtchn = 0; - - mtx_lock_spin(&irq_mapping_update_lock); - - if ((irq = pcpu_find(cpu)->pc_ipi_to_irq[ipi]) == -1) { - if ((irq = find_unbound_irq()) < 0) - goto out; - - bind_ipi.vcpu = cpu; - HYPERVISOR_event_channel_op(EVTCHNOP_bind_ipi, &bind_ipi); - evtchn = bind_ipi.port; - - evtchn_to_irq[evtchn] = irq; - irq_info[irq] = mk_irq_info(IRQT_IPI, ipi, evtchn); - - pcpu_find(cpu)->pc_ipi_to_irq[ipi] = irq; - - bind_evtchn_to_cpu(evtchn, cpu); - } - irq_bindcount[irq]++; - *port = evtchn; -out: - - mtx_unlock_spin(&irq_mapping_update_lock); - - return irq; -} - - -static void -unbind_from_irq(int irq) -{ - struct evtchn_close close; - int evtchn = evtchn_from_irq(irq); - int cpu; - - mtx_lock_spin(&irq_mapping_update_lock); - - if ((--irq_bindcount[irq] == 0) && VALID_EVTCHN(evtchn)) { - close.port = evtchn; - HYPERVISOR_event_channel_op(EVTCHNOP_close, &close); - - switch (type_from_irq(irq)) { - case IRQT_VIRQ: - cpu = cpu_from_evtchn(evtchn); - pcpu_find(cpu)->pc_virq_to_irq[index_from_irq(irq)] = -1; - break; - case IRQT_IPI: - cpu = cpu_from_evtchn(evtchn); - pcpu_find(cpu)->pc_ipi_to_irq[index_from_irq(irq)] = -1; - break; - default: - break; - } - - /* Closed ports are implicitly re-bound to VCPU0. */ - bind_evtchn_to_cpu(evtchn, 0); - - evtchn_to_irq[evtchn] = -1; - irq_info[irq] = IRQ_UNBOUND; - } - - mtx_unlock_spin(&irq_mapping_update_lock); -} - -int -bind_caller_port_to_irqhandler(unsigned int caller_port, - const char *devname, driver_intr_t handler, void *arg, - unsigned long irqflags, unsigned int *irqp) -{ - unsigned int irq; - int port = -1; - int error; - - irq = bind_caller_port_to_irq(caller_port, &port); - intr_register_source(&xp->xp_pins[irq].xp_intsrc); - error = intr_add_handler(devname, irq, NULL, handler, arg, irqflags, - &xp->xp_pins[irq].xp_cookie); - - if (error) { - unbind_from_irq(irq); - return (error); - } - if (port != -1) - unmask_evtchn(port); - - if (irqp) - *irqp = irq; - - return (0); -} - -int -bind_listening_port_to_irqhandler(unsigned int remote_domain, - const char *devname, driver_intr_t handler, void *arg, - unsigned long irqflags, unsigned int *irqp) -{ - unsigned int irq; - int port = -1; - int error; - - irq = bind_listening_port_to_irq(remote_domain, &port); - intr_register_source(&xp->xp_pins[irq].xp_intsrc); - error = intr_add_handler(devname, irq, NULL, handler, arg, irqflags, - &xp->xp_pins[irq].xp_cookie); - if (error) { - unbind_from_irq(irq); - return (error); - } - if (port != -1) - unmask_evtchn(port); - if (irqp) - *irqp = irq; - - return (0); -} - -int -bind_interdomain_evtchn_to_irqhandler(unsigned int remote_domain, - unsigned int remote_port, const char *devname, - driver_intr_t handler, void *arg, unsigned long irqflags, - unsigned int *irqp) -{ - unsigned int irq; - int port = -1; - int error; - - irq = bind_interdomain_evtchn_to_irq(remote_domain, remote_port, &port); - intr_register_source(&xp->xp_pins[irq].xp_intsrc); - error = intr_add_handler(devname, irq, NULL, handler, arg, - irqflags, &xp->xp_pins[irq].xp_cookie); - if (error) { - unbind_from_irq(irq); - return (error); - } - if (port != -1) - unmask_evtchn(port); - - if (irqp) - *irqp = irq; - return (0); -} - -int -bind_virq_to_irqhandler(unsigned int virq, unsigned int cpu, - const char *devname, driver_filter_t filter, driver_intr_t handler, - void *arg, unsigned long irqflags, unsigned int *irqp) -{ - unsigned int irq; - int port = -1; - int error; - - irq = bind_virq_to_irq(virq, cpu, &port); - intr_register_source(&xp->xp_pins[irq].xp_intsrc); - error = intr_add_handler(devname, irq, filter, handler, - arg, irqflags, &xp->xp_pins[irq].xp_cookie); - if (error) { - unbind_from_irq(irq); - return (error); - } - if (port != -1) - unmask_evtchn(port); - - if (irqp) - *irqp = irq; - return (0); -} - -int -bind_ipi_to_irqhandler(unsigned int ipi, unsigned int cpu, - const char *devname, driver_filter_t filter, - unsigned long irqflags, unsigned int *irqp) -{ - unsigned int irq; - int port = -1; - int error; - - irq = bind_ipi_to_irq(ipi, cpu, &port); - intr_register_source(&xp->xp_pins[irq].xp_intsrc); - error = intr_add_handler(devname, irq, filter, NULL, - NULL, irqflags, &xp->xp_pins[irq].xp_cookie); - if (error) { - unbind_from_irq(irq); - return (error); - } - if (port != -1) - unmask_evtchn(port); - - if (irqp) - *irqp = irq; - return (0); -} - -void -unbind_from_irqhandler(unsigned int irq) -{ - intr_remove_handler(xp->xp_pins[irq].xp_cookie); - unbind_from_irq(irq); -} - -#if 0 -/* Rebind an evtchn so that it gets delivered to a specific cpu */ -static void -rebind_irq_to_cpu(unsigned irq, unsigned tcpu) -{ - evtchn_op_t op = { .cmd = EVTCHNOP_bind_vcpu }; - int evtchn; - - mtx_lock_spin(&irq_mapping_update_lock); - - evtchn = evtchn_from_irq(irq); - if (!VALID_EVTCHN(evtchn)) { - mtx_unlock_spin(&irq_mapping_update_lock); - return; - } - - /* Send future instances of this interrupt to other vcpu. */ - bind_vcpu.port = evtchn; - bind_vcpu.vcpu = tcpu; - - /* - * If this fails, it usually just indicates that we're dealing with a - * virq or IPI channel, which don't actually need to be rebound. Ignore - * it, but don't do the xenlinux-level rebind in that case. - */ - if (HYPERVISOR_event_channel_op(&op) >= 0) - bind_evtchn_to_cpu(evtchn, tcpu); - - mtx_unlock_spin(&irq_mapping_update_lock); - -} - -static void set_affinity_irq(unsigned irq, cpumask_t dest) -{ - unsigned tcpu = ffs(dest) - 1; - rebind_irq_to_cpu(irq, tcpu); -} -#endif - -/* - * Interface to generic handling in intr_machdep.c - */ - - -/*------------ interrupt handling --------------------------------------*/ -#define TODO printf("%s: not implemented!\n", __func__) - - -static void xenpic_dynirq_enable_source(struct intsrc *isrc); -static void xenpic_dynirq_disable_source(struct intsrc *isrc, int); -static void xenpic_dynirq_eoi_source(struct intsrc *isrc); -static void xenpic_dynirq_enable_intr(struct intsrc *isrc); -static void xenpic_dynirq_disable_intr(struct intsrc *isrc); - -static void xenpic_pirq_enable_source(struct intsrc *isrc); -static void xenpic_pirq_disable_source(struct intsrc *isrc, int); -static void xenpic_pirq_eoi_source(struct intsrc *isrc); -static void xenpic_pirq_enable_intr(struct intsrc *isrc); - - -static int xenpic_vector(struct intsrc *isrc); -static int xenpic_source_pending(struct intsrc *isrc); -static void xenpic_suspend(struct pic* pic); -static void xenpic_resume(struct pic* pic); -static int xenpic_assign_cpu(struct intsrc *, u_int apic_id); - - -struct pic xenpic_dynirq_template = { - .pic_enable_source = xenpic_dynirq_enable_source, - .pic_disable_source = xenpic_dynirq_disable_source, - .pic_eoi_source = xenpic_dynirq_eoi_source, - .pic_enable_intr = xenpic_dynirq_enable_intr, - .pic_disable_intr = xenpic_dynirq_disable_intr, - .pic_vector = xenpic_vector, - .pic_source_pending = xenpic_source_pending, - .pic_suspend = xenpic_suspend, - .pic_resume = xenpic_resume -}; - -struct pic xenpic_pirq_template = { - .pic_enable_source = xenpic_pirq_enable_source, - .pic_disable_source = xenpic_pirq_disable_source, - .pic_eoi_source = xenpic_pirq_eoi_source, - .pic_enable_intr = xenpic_pirq_enable_intr, - .pic_vector = xenpic_vector, - .pic_source_pending = xenpic_source_pending, - .pic_suspend = xenpic_suspend, - .pic_resume = xenpic_resume, - .pic_assign_cpu = xenpic_assign_cpu -}; - - - -void -xenpic_dynirq_enable_source(struct intsrc *isrc) -{ - unsigned int irq; - struct xenpic_intsrc *xp; - - xp = (struct xenpic_intsrc *)isrc; - - mtx_lock_spin(&irq_mapping_update_lock); - if (xp->xp_masked) { - irq = xenpic_vector(isrc); - unmask_evtchn(evtchn_from_irq(irq)); - xp->xp_masked = FALSE; - } - mtx_unlock_spin(&irq_mapping_update_lock); -} - -static void -xenpic_dynirq_disable_source(struct intsrc *isrc, int foo) -{ - unsigned int irq; - struct xenpic_intsrc *xp; - - xp = (struct xenpic_intsrc *)isrc; - - mtx_lock_spin(&irq_mapping_update_lock); - if (!xp->xp_masked) { - irq = xenpic_vector(isrc); - mask_evtchn(evtchn_from_irq(irq)); - xp->xp_masked = TRUE; - } - mtx_unlock_spin(&irq_mapping_update_lock); -} - -static void -xenpic_dynirq_enable_intr(struct intsrc *isrc) -{ - unsigned int irq; - struct xenpic_intsrc *xp; - - xp = (struct xenpic_intsrc *)isrc; - mtx_lock_spin(&irq_mapping_update_lock); - xp->xp_masked = 0; - irq = xenpic_vector(isrc); - unmask_evtchn(evtchn_from_irq(irq)); - mtx_unlock_spin(&irq_mapping_update_lock); -} - -static void -xenpic_dynirq_disable_intr(struct intsrc *isrc) -{ - unsigned int irq; - struct xenpic_intsrc *xp; - - xp = (struct xenpic_intsrc *)isrc; - mtx_lock_spin(&irq_mapping_update_lock); - irq = xenpic_vector(isrc); - mask_evtchn(evtchn_from_irq(irq)); - xp->xp_masked = 1; - mtx_unlock_spin(&irq_mapping_update_lock); -} - -static void -xenpic_dynirq_eoi_source(struct intsrc *isrc) -{ - unsigned int irq; - struct xenpic_intsrc *xp; - - xp = (struct xenpic_intsrc *)isrc; - mtx_lock_spin(&irq_mapping_update_lock); - xp->xp_masked = 0; - irq = xenpic_vector(isrc); - unmask_evtchn(evtchn_from_irq(irq)); - mtx_unlock_spin(&irq_mapping_update_lock); -} - -static int -xenpic_vector(struct intsrc *isrc) -{ - struct xenpic_intsrc *pin; - - pin = (struct xenpic_intsrc *)isrc; - //printf("xenpic_vector(): isrc=%p,vector=%u\n", pin, pin->xp_vector); - - return (pin->xp_vector); -} - -static int -xenpic_source_pending(struct intsrc *isrc) -{ - struct xenpic_intsrc *pin = (struct xenpic_intsrc *)isrc; - - /* XXXEN: TODO */ - printf("xenpic_source_pending(): vector=%x,masked=%x\n", - pin->xp_vector, pin->xp_masked); - -/* notify_remote_via_evtchn(pin->xp_vector); // XXX RS: Is this correct? */ - return 0; -} - -static void -xenpic_suspend(struct pic* pic) -{ - TODO; -} - -static void -xenpic_resume(struct pic* pic) -{ - TODO; -} - -static int -xenpic_assign_cpu(struct intsrc *isrc, u_int apic_id) -{ - TODO; - return (EOPNOTSUPP); -} - -void -notify_remote_via_irq(int irq) -{ - int evtchn = evtchn_from_irq(irq); - - if (VALID_EVTCHN(evtchn)) - notify_remote_via_evtchn(evtchn); - else - panic("invalid evtchn %d", irq); -} - -/* required for support of physical devices */ -static inline void -pirq_unmask_notify(int pirq) -{ - struct physdev_eoi eoi = { .irq = pirq }; - - if (unlikely(test_bit(pirq, &pirq_needs_unmask_notify[0]))) { - (void)HYPERVISOR_physdev_op(PHYSDEVOP_eoi, &eoi); - } -} - -static inline void -pirq_query_unmask(int pirq) -{ - struct physdev_irq_status_query irq_status_query; - - irq_status_query.irq = pirq; - (void)HYPERVISOR_physdev_op(PHYSDEVOP_IRQ_STATUS_QUERY, &irq_status_query); - clear_bit(pirq, &pirq_needs_unmask_notify[0]); - if ( irq_status_query.flags & PHYSDEVOP_IRQ_NEEDS_UNMASK_NOTIFY ) - set_bit(pirq, &pirq_needs_unmask_notify[0]); -} - -/* - * On startup, if there is no action associated with the IRQ then we are - * probing. In this case we should not share with others as it will confuse us. - */ -#define probing_irq(_irq) (intr_lookup_source(irq) == NULL) - -static void -xenpic_pirq_enable_intr(struct intsrc *isrc) -{ - struct evtchn_bind_pirq bind_pirq; - int evtchn; - unsigned int irq; - - mtx_lock_spin(&irq_mapping_update_lock); - irq = xenpic_vector(isrc); - evtchn = evtchn_from_irq(irq); - - if (VALID_EVTCHN(evtchn)) - goto out; - - bind_pirq.pirq = irq; - /* NB. We are happy to share unless we are probing. */ - bind_pirq.flags = probing_irq(irq) ? 0 : BIND_PIRQ__WILL_SHARE; - - if (HYPERVISOR_event_channel_op(EVTCHNOP_bind_pirq, &bind_pirq) != 0) { -#ifndef XEN_PRIVILEGED_GUEST - panic("unexpected pirq call"); -#endif - if (!probing_irq(irq)) /* Some failures are expected when probing. */ - printf("Failed to obtain physical IRQ %d\n", irq); - mtx_unlock_spin(&irq_mapping_update_lock); - return; - } - evtchn = bind_pirq.port; - - pirq_query_unmask(irq_to_pirq(irq)); - - bind_evtchn_to_cpu(evtchn, 0); - evtchn_to_irq[evtchn] = irq; - irq_info[irq] = mk_irq_info(IRQT_PIRQ, irq, evtchn); - - out: - unmask_evtchn(evtchn); - pirq_unmask_notify(irq_to_pirq(irq)); - mtx_unlock_spin(&irq_mapping_update_lock); -} - -static void -xenpic_pirq_enable_source(struct intsrc *isrc) -{ - int evtchn; - unsigned int irq; - - mtx_lock_spin(&irq_mapping_update_lock); - irq = xenpic_vector(isrc); - evtchn = evtchn_from_irq(irq); - - if (!VALID_EVTCHN(evtchn)) - goto done; - - unmask_evtchn(evtchn); - pirq_unmask_notify(irq_to_pirq(irq)); - done: - mtx_unlock_spin(&irq_mapping_update_lock); -} - -static void -xenpic_pirq_disable_source(struct intsrc *isrc, int eoi) -{ - int evtchn; - unsigned int irq; - - mtx_lock_spin(&irq_mapping_update_lock); - irq = xenpic_vector(isrc); - evtchn = evtchn_from_irq(irq); - - if (!VALID_EVTCHN(evtchn)) - goto done; - - mask_evtchn(evtchn); - done: - mtx_unlock_spin(&irq_mapping_update_lock); -} - - -static void -xenpic_pirq_eoi_source(struct intsrc *isrc) -{ - int evtchn; - unsigned int irq; - - mtx_lock_spin(&irq_mapping_update_lock); - irq = xenpic_vector(isrc); - evtchn = evtchn_from_irq(irq); - - if (!VALID_EVTCHN(evtchn)) - goto done; - - unmask_evtchn(evtchn); - pirq_unmask_notify(irq_to_pirq(irq)); - done: - mtx_unlock_spin(&irq_mapping_update_lock); -} - -int -irq_to_evtchn_port(int irq) -{ - return evtchn_from_irq(irq); -} - -void -mask_evtchn(int port) -{ - shared_info_t *s = HYPERVISOR_shared_info; - synch_set_bit(port, &s->evtchn_mask[0]); -} - -void -unmask_evtchn(int port) -{ - shared_info_t *s = HYPERVISOR_shared_info; - unsigned int cpu = PCPU_GET(cpuid); - vcpu_info_t *vcpu_info = &s->vcpu_info[cpu]; - - /* Slow path (hypercall) if this is a non-local port. */ - if (unlikely(cpu != cpu_from_evtchn(port))) { - struct evtchn_unmask unmask = { .port = port }; - (void)HYPERVISOR_event_channel_op(EVTCHNOP_unmask, &unmask); - return; - } - - synch_clear_bit(port, &s->evtchn_mask); - - /* - * The following is basically the equivalent of 'hw_resend_irq'. Just - * like a real IO-APIC we 'lose the interrupt edge' if the channel is - * masked. - */ - if (synch_test_bit(port, &s->evtchn_pending) && - !synch_test_and_set_bit(port / LONG_BIT, - &vcpu_info->evtchn_pending_sel)) { - vcpu_info->evtchn_upcall_pending = 1; - if (!vcpu_info->evtchn_upcall_mask) - force_evtchn_callback(); - } -} - -void irq_resume(void) -{ - evtchn_op_t op; - int cpu, pirq, virq, ipi, irq, evtchn; - - struct evtchn_bind_virq bind_virq; - struct evtchn_bind_ipi bind_ipi; - - init_evtchn_cpu_bindings(); - - /* New event-channel space is not 'live' yet. */ - for (evtchn = 0; evtchn < NR_EVENT_CHANNELS; evtchn++) - mask_evtchn(evtchn); - - /* Check that no PIRQs are still bound. */ - for (pirq = 0; pirq < NR_PIRQS; pirq++) { - KASSERT(irq_info[pirq_to_irq(pirq)] == IRQ_UNBOUND, - ("pirq_to_irq inconsistent")); - } - - /* Secondary CPUs must have no VIRQ or IPI bindings. */ - for (cpu = 1; cpu < XEN_LEGACY_MAX_VCPUS; cpu++) { - for (virq = 0; virq < NR_VIRQS; virq++) { - KASSERT(pcpu_find(cpu)->pc_virq_to_irq[virq] == -1, - ("virq_to_irq inconsistent")); - } - for (ipi = 0; ipi < NR_IPIS; ipi++) { - KASSERT(pcpu_find(cpu)->pc_ipi_to_irq[ipi] == -1, - ("ipi_to_irq inconsistent")); - } - } - - /* No IRQ <-> event-channel mappings. */ - for (irq = 0; irq < NR_IRQS; irq++) - irq_info[irq] &= ~0xFFFF; /* zap event-channel binding */ - for (evtchn = 0; evtchn < NR_EVENT_CHANNELS; evtchn++) - evtchn_to_irq[evtchn] = -1; - - /* Primary CPU: rebind VIRQs automatically. */ - for (virq = 0; virq < NR_VIRQS; virq++) { - if ((irq = pcpu_find(0)->pc_virq_to_irq[virq]) == -1) - continue; - - KASSERT(irq_info[irq] == mk_irq_info(IRQT_VIRQ, virq, 0), - ("irq_info inconsistent")); - - /* Get a new binding from Xen. */ - bind_virq.virq = virq; - bind_virq.vcpu = 0; - HYPERVISOR_event_channel_op(EVTCHNOP_bind_virq, &bind_virq); - evtchn = bind_virq.port; - - /* Record the new mapping. */ - evtchn_to_irq[evtchn] = irq; - irq_info[irq] = mk_irq_info(IRQT_VIRQ, virq, evtchn); - - /* Ready for use. */ - unmask_evtchn(evtchn); - } - - /* Primary CPU: rebind IPIs automatically. */ - for (ipi = 0; ipi < NR_IPIS; ipi++) { - if ((irq = pcpu_find(0)->pc_ipi_to_irq[ipi]) == -1) - continue; - - KASSERT(irq_info[irq] == mk_irq_info(IRQT_IPI, ipi, 0), - ("irq_info inconsistent")); - - /* Get a new binding from Xen. */ - memset(&op, 0, sizeof(op)); - bind_ipi.vcpu = 0; - HYPERVISOR_event_channel_op(EVTCHNOP_bind_ipi, &bind_ipi); - evtchn = bind_ipi.port; - - /* Record the new mapping. */ - evtchn_to_irq[evtchn] = irq; - irq_info[irq] = mk_irq_info(IRQT_IPI, ipi, evtchn); - - /* Ready for use. */ - unmask_evtchn(evtchn); - } -} - -static void -evtchn_init(void *dummy __unused) -{ - int i, cpu; - struct xenpic_intsrc *pin, *tpin; - - - init_evtchn_cpu_bindings(); - - /* No VIRQ or IPI bindings. */ - for (cpu = 0; cpu < mp_ncpus; cpu++) { - for (i = 0; i < NR_VIRQS; i++) - pcpu_find(cpu)->pc_virq_to_irq[i] = -1; - for (i = 0; i < NR_IPIS; i++) - pcpu_find(cpu)->pc_ipi_to_irq[i] = -1; - } - - /* No event-channel -> IRQ mappings. */ - for (i = 0; i < NR_EVENT_CHANNELS; i++) { - evtchn_to_irq[i] = -1; - mask_evtchn(i); /* No event channels are 'live' right now. */ - } - - /* No IRQ -> event-channel mappings. */ - for (i = 0; i < NR_IRQS; i++) - irq_info[i] = IRQ_UNBOUND; - - xp = malloc(sizeof(struct xenpic) + NR_IRQS*sizeof(struct xenpic_intsrc), - M_DEVBUF, M_WAITOK); - - xp->xp_dynirq_pic = &xenpic_dynirq_template; - xp->xp_pirq_pic = &xenpic_pirq_template; - xp->xp_numintr = NR_IRQS; - bzero(xp->xp_pins, sizeof(struct xenpic_intsrc) * NR_IRQS); - - - /* We need to register our PIC's beforehand */ - if (intr_register_pic(&xenpic_pirq_template)) - panic("XEN: intr_register_pic() failure"); - if (intr_register_pic(&xenpic_dynirq_template)) - panic("XEN: intr_register_pic() failure"); - - /* - * Initialize the dynamic IRQ's - we initialize the structures, but - * we do not bind them (bind_evtchn_to_irqhandle() does this) - */ - pin = xp->xp_pins; - for (i = 0; i < NR_DYNIRQS; i++) { - /* Dynamic IRQ space is currently unbound. Zero the refcnts. */ - irq_bindcount[dynirq_to_irq(i)] = 0; - - tpin = &pin[dynirq_to_irq(i)]; - tpin->xp_intsrc.is_pic = xp->xp_dynirq_pic; - tpin->xp_vector = dynirq_to_irq(i); - - } - /* - * Now, we go ahead and claim every PIRQ there is. - */ - pin = xp->xp_pins; - for (i = 0; i < NR_PIRQS; i++) { - /* Dynamic IRQ space is currently unbound. Zero the refcnts. */ - irq_bindcount[pirq_to_irq(i)] = 0; - -#ifdef RTC_IRQ - /* If not domain 0, force our RTC driver to fail its probe. */ - if ((i == RTC_IRQ) && - !(xen_start_info->flags & SIF_INITDOMAIN)) - continue; -#endif - tpin = &pin[pirq_to_irq(i)]; - tpin->xp_intsrc.is_pic = xp->xp_pirq_pic; - tpin->xp_vector = pirq_to_irq(i); - - } -} - -SYSINIT(evtchn_init, SI_SUB_INTR, SI_ORDER_MIDDLE, evtchn_init, NULL); - diff --git a/sys/xen/evtchn/evtchn_dev.c b/sys/xen/evtchn/evtchn_dev.c index ab3bd17..9da2642 100644 --- a/sys/xen/evtchn/evtchn_dev.c +++ b/sys/xen/evtchn/evtchn_dev.c @@ -22,28 +22,23 @@ __FBSDID("$FreeBSD$"); #include <sys/conf.h> #include <sys/fcntl.h> #include <sys/ioccom.h> +#include <sys/rman.h> -#include <machine/xen/xen-os.h> +#include <xen/xen-os.h> +#include <xen/evtchn.h> #include <xen/xen_intr.h> + #include <machine/bus.h> -#include <sys/rman.h> #include <machine/resource.h> #include <machine/xen/synch_bitops.h> -#include <xen/hypervisor.h> -#include <xen/evtchn.h> +#include <xen/evtchn/evtchnvar.h> typedef struct evtchn_sotfc { struct selinfo ev_rsel; } evtchn_softc_t; - -#ifdef linuxcrap -/* NB. This must be shared amongst drivers if more things go in /dev/xen */ -static devfs_handle_t xen_dev_dir; -#endif - /* Only one process may open /dev/xen/evtchn at any time. */ static unsigned long evtchn_dev_inuse; @@ -72,12 +67,12 @@ static d_close_t evtchn_close; void -evtchn_device_upcall(int port) +evtchn_device_upcall(evtchn_port_t port) { mtx_lock(&upcall_lock); - mask_evtchn(port); - clear_evtchn(port); + evtchn_mask_port(port); + evtchn_clear_port(port); if ( ring != NULL ) { if ( (ring_prod - ring_cons) < EVTCHN_RING_SIZE ) { @@ -208,7 +203,7 @@ evtchn_write(struct cdev *dev, struct uio *uio, int ioflag) mtx_lock_spin(&lock); for ( i = 0; i < (count/2); i++ ) if ( test_bit(kbuf[i], &bound_ports[0]) ) - unmask_evtchn(kbuf[i]); + evtchn_unmask_port(kbuf[i]); mtx_unlock_spin(&lock); rc = count; @@ -224,6 +219,7 @@ evtchn_ioctl(struct cdev *dev, unsigned long cmd, caddr_t arg, { int rc = 0; +#ifdef NOTYET mtx_lock_spin(&lock); switch ( cmd ) @@ -249,6 +245,7 @@ evtchn_ioctl(struct cdev *dev, unsigned long cmd, caddr_t arg, } mtx_unlock_spin(&lock); +#endif return rc; } @@ -309,7 +306,7 @@ evtchn_close(struct cdev *dev, int flag, int otyp, struct thread *td __unused) mtx_lock_spin(&lock); for ( i = 0; i < NR_EVENT_CHANNELS; i++ ) if ( synch_test_and_clear_bit(i, &bound_ports[0]) ) - mask_evtchn(i); + evtchn_mask_port(i); mtx_unlock_spin(&lock); evtchn_dev_inuse = 0; @@ -352,34 +349,6 @@ evtchn_dev_init(void *dummy __unused) evtchn_dev->si_drv1 = malloc(sizeof(evtchn_softc_t), M_DEVBUF, M_WAITOK); bzero(evtchn_dev->si_drv1, sizeof(evtchn_softc_t)); - /* XXX I don't think we need any of this rubbish */ -#if 0 - if ( err != 0 ) - { - printk(KERN_ALERT "Could not register /dev/misc/evtchn\n"); - return err; - } - - /* (DEVFS) create directory '/dev/xen'. */ - xen_dev_dir = devfs_mk_dir(NULL, "xen", NULL); - - /* (DEVFS) &link_dest[pos] == '../misc/evtchn'. */ - pos = devfs_generate_path(evtchn_miscdev.devfs_handle, - &link_dest[3], - sizeof(link_dest) - 3); - if ( pos >= 0 ) - strncpy(&link_dest[pos], "../", 3); - /* (DEVFS) symlink '/dev/xen/evtchn' -> '../misc/evtchn'. */ - (void)devfs_mk_symlink(xen_dev_dir, - "evtchn", - DEVFS_FL_DEFAULT, - &link_dest[pos], - &symlink_handle, - NULL); - - /* (DEVFS) automatically destroy the symlink with its destination. */ - devfs_auto_unregister(evtchn_miscdev.devfs_handle, symlink_handle); -#endif if (bootverbose) printf("Event-channel device installed.\n"); @@ -387,5 +356,3 @@ evtchn_dev_init(void *dummy __unused) } SYSINIT(evtchn_dev_init, SI_SUB_DRIVERS, SI_ORDER_FIRST, evtchn_dev_init, NULL); - - diff --git a/sys/xen/evtchn/evtchnvar.h b/sys/xen/evtchn/evtchnvar.h new file mode 100644 index 0000000..8008d23 --- /dev/null +++ b/sys/xen/evtchn/evtchnvar.h @@ -0,0 +1,105 @@ +/****************************************************************************** + * evtchn.h + * + * Data structures and definitions private to the FreeBSD implementation + * of the Xen event channel API. + * + * Copyright (c) 2004, K A Fraser + * Copyright (c) 2012, Spectra Logic Corporation + * + * This file may be distributed separately from the Linux kernel, or + * incorporated into other software packages, subject to the following license: + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this source file (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. + * + * $FreeBSD$ + */ + +#ifndef __XEN_EVTCHN_EVTCHNVAR_H__ +#define __XEN_EVTCHN_EVTCHNVAR_H__ + +#include <xen/hypervisor.h> +#include <xen/interface/event_channel.h> + +enum evtchn_type { + EVTCHN_TYPE_UNBOUND, + EVTCHN_TYPE_PIRQ, + EVTCHN_TYPE_VIRQ, + EVTCHN_TYPE_IPI, + EVTCHN_TYPE_PORT, + EVTCHN_TYPE_COUNT +}; + +/** Submit a port notification for delivery to a userland evtchn consumer */ +void evtchn_device_upcall(evtchn_port_t port); + +/** + * Disable signal delivery for an event channel port, returning its + * previous mask state. + * + * \param port The event channel port to query and mask. + * + * \returns 1 if event delivery was previously disabled. Otherwise 0. + */ +static inline int +evtchn_test_and_set_mask(evtchn_port_t port) +{ + shared_info_t *s = HYPERVISOR_shared_info; + return synch_test_and_set_bit(port, s->evtchn_mask); +} + +/** + * Clear any pending event for the given event channel port. + * + * \param port The event channel port to clear. + */ +static inline void +evtchn_clear_port(evtchn_port_t port) +{ + shared_info_t *s = HYPERVISOR_shared_info; + synch_clear_bit(port, &s->evtchn_pending[0]); +} + +/** + * Disable signal delivery for an event channel port. + * + * \param port The event channel port to mask. + */ +static inline void +evtchn_mask_port(evtchn_port_t port) +{ + shared_info_t *s = HYPERVISOR_shared_info; + + synch_set_bit(port, &s->evtchn_mask[0]); +} + +/** + * Enable signal delivery for an event channel port. + * + * \param port The event channel port to enable. + */ +static inline void +evtchn_unmask_port(evtchn_port_t port) +{ + evtchn_unmask_t op = { .port = port }; + + HYPERVISOR_event_channel_op(EVTCHNOP_unmask, &op); +} + +#endif /* __XEN_EVTCHN_EVTCHNVAR_H__ */ diff --git a/sys/xen/features.c b/sys/xen/features.c index f28fe04..bbb2896 100644 --- a/sys/xen/features.c +++ b/sys/xen/features.c @@ -4,7 +4,7 @@ __FBSDID("$FreeBSD$"); #include <sys/param.h> #include <sys/systm.h> -#include <machine/xen/xen-os.h> +#include <xen/xen-os.h> #include <xen/hypervisor.h> #include <xen/features.h> diff --git a/sys/xen/gnttab.c b/sys/xen/gnttab.c index d8eb381..03c32b7 100644 --- a/sys/xen/gnttab.c +++ b/sys/xen/gnttab.c @@ -26,7 +26,7 @@ __FBSDID("$FreeBSD$"); #include <sys/malloc.h> #include <sys/mman.h> -#include <machine/xen/xen-os.h> +#include <xen/xen-os.h> #include <xen/hypervisor.h> #include <machine/xen/synch_bitops.h> @@ -108,7 +108,7 @@ do_free_callbacks(void) static inline void check_free_callbacks(void) { - if (unlikely(gnttab_free_callback_list != NULL)) + if (__predict_false(gnttab_free_callback_list != NULL)) do_free_callbacks(); } @@ -136,7 +136,7 @@ gnttab_grant_foreign_access(domid_t domid, unsigned long frame, int readonly, error = get_free_entries(1, &ref); - if (unlikely(error)) + if (__predict_false(error)) return (error); shared[ref].frame = frame; @@ -248,7 +248,7 @@ gnttab_grant_foreign_transfer(domid_t domid, unsigned long pfn, int error, ref; error = get_free_entries(1, &ref); - if (unlikely(error)) + if (__predict_false(error)) return (error); gnttab_grant_foreign_transfer_ref(ref, domid, pfn); @@ -341,7 +341,7 @@ gnttab_alloc_grant_references(uint16_t count, grant_ref_t *head) int ref, error; error = get_free_entries(count, &ref); - if (unlikely(error)) + if (__predict_false(error)) return (error); *head = ref; @@ -360,7 +360,7 @@ gnttab_claim_grant_reference(grant_ref_t *private_head) { grant_ref_t g = *private_head; - if (unlikely(g == GNTTAB_LIST_END)) + if (__predict_false(g == GNTTAB_LIST_END)) return (g); *private_head = gnttab_entry(g); return (g); diff --git a/sys/xen/gnttab.h b/sys/xen/gnttab.h index 1741ec3..d81e965 100644 --- a/sys/xen/gnttab.h +++ b/sys/xen/gnttab.h @@ -36,13 +36,12 @@ #ifndef __ASM_GNTTAB_H__ -#include <xen/interface/grant_table.h> - +#include <xen/xen-os.h> #include <xen/hypervisor.h> -#include <xen/interface/grant_table.h> -#include <machine/xen/xen-os.h> #include <xen/features.h> +#include <xen/interface/grant_table.h> + #define GNTTAB_LIST_END GRANT_REF_INVALID struct gnttab_free_callback { diff --git a/sys/xen/hvm.h b/sys/xen/hvm.h index 338a107..562aaf9 100644 --- a/sys/xen/hvm.h +++ b/sys/xen/hvm.h @@ -23,6 +23,9 @@ #ifndef __XEN_HVM_H__ #define __XEN_HVM_H__ +#include <xen/xen-os.h> +#include <xen/hypervisor.h> + #include <xen/interface/hvm/params.h> /** @@ -91,4 +94,5 @@ enum { void xen_hvm_set_callback(device_t); void xen_hvm_suspend(void); void xen_hvm_resume(void); +void xen_hvm_init_cpu(void); #endif /* __XEN_HVM_H__ */ diff --git a/sys/xen/interface/event_channel.h b/sys/xen/interface/event_channel.h index 07ff321..65d1911 100644 --- a/sys/xen/interface/event_channel.h +++ b/sys/xen/interface/event_channel.h @@ -73,8 +73,11 @@ #define EVTCHNOP_reset 10 /* ` } */ +#ifndef __XEN_EVTCHN_PORT_DEFINED__ typedef uint32_t evtchn_port_t; DEFINE_XEN_GUEST_HANDLE(evtchn_port_t); +#define __XEN_EVTCHN_PORT_DEFINED__ 1 +#endif /* * EVTCHNOP_alloc_unbound: Allocate a port in domain <dom> and mark as diff --git a/sys/xen/xen-os.h b/sys/xen/xen-os.h new file mode 100644 index 0000000..95e8c6a --- /dev/null +++ b/sys/xen/xen-os.h @@ -0,0 +1,95 @@ +/****************************************************************************** + * xen/xen-os.h + * + * Random collection of macros and definition + * + * Copyright (c) 2003, 2004 Keir Fraser (on behalf of the Xen team) + * All rights reserved. + * + * 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. + * + * $FreeBSD$ + */ + +#ifndef _XEN_XEN_OS_H_ +#define _XEN_XEN_OS_H_ + +#if !defined(__XEN_INTERFACE_VERSION__) +#define __XEN_INTERFACE_VERSION__ 0x00030208 +#endif + +#define GRANT_REF_INVALID 0xffffffff + +#ifdef LOCORE +#define __ASSEMBLY__ +#endif + +#include <machine/xen/xen-os.h> + +#include <xen/interface/xen.h> + +/* Everything below this point is not included by assembler (.S) files. */ +#ifndef __ASSEMBLY__ + +/* Force a proper event-channel callback from Xen. */ +void force_evtchn_callback(void); + +extern int gdtset; + +extern shared_info_t *HYPERVISOR_shared_info; + +enum xen_domain_type { + XEN_NATIVE, /* running on bare hardware */ + XEN_PV_DOMAIN, /* running in a PV domain */ + XEN_HVM_DOMAIN, /* running in a Xen hvm domain */ +}; + +extern enum xen_domain_type xen_domain_type; + +static inline int +xen_domain(void) +{ + return (xen_domain_type != XEN_NATIVE); +} + +static inline int +xen_pv_domain(void) +{ + return (xen_domain_type == XEN_PV_DOMAIN); +} + +static inline int +xen_hvm_domain(void) +{ + return (xen_domain_type == XEN_HVM_DOMAIN); +} + +#ifndef xen_mb +#define xen_mb() mb() +#endif +#ifndef xen_rmb +#define xen_rmb() rmb() +#endif +#ifndef xen_wmb +#define xen_wmb() wmb() +#endif + +#endif /* !__ASSEMBLY__ */ + +#endif /* _XEN_XEN_OS_H_ */ diff --git a/sys/xen/xen_intr.h b/sys/xen/xen_intr.h index 2e753e6..109608f 100644 --- a/sys/xen/xen_intr.h +++ b/sys/xen/xen_intr.h @@ -1,103 +1,216 @@ -/* -*- Mode:C; c-basic-offset:4; tab-width:4 -*- */ +/****************************************************************************** + * xen_intr.h + * + * APIs for managing Xen event channel, virtual IRQ, and physical IRQ + * notifications. + * + * Copyright (c) 2004, K A Fraser + * Copyright (c) 2012, Spectra Logic Corporation + * + * This file may be distributed separately from the Linux kernel, or + * incorporated into other software packages, subject to the following license: + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this source file (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. + * + * $FreeBSD$ + */ #ifndef _XEN_INTR_H_ #define _XEN_INTR_H_ -/* -* The flat IRQ space is divided into two regions: -* 1. A one-to-one mapping of real physical IRQs. This space is only used -* if we have physical device-access privilege. This region is at the -* start of the IRQ space so that existing device drivers do not need -* to be modified to translate physical IRQ numbers into our IRQ space. -* 3. A dynamic mapping of inter-domain and Xen-sourced virtual IRQs. These -* are bound using the provided bind/unbind functions. -* -* -* $FreeBSD$ -*/ - -#define PIRQ_BASE 0 -#define NR_PIRQS 128 - -#define DYNIRQ_BASE (PIRQ_BASE + NR_PIRQS) -#define NR_DYNIRQS 128 - -#define NR_IRQS (NR_PIRQS + NR_DYNIRQS) - -#define pirq_to_irq(_x) ((_x) + PIRQ_BASE) -#define irq_to_pirq(_x) ((_x) - PIRQ_BASE) - -#define dynirq_to_irq(_x) ((_x) + DYNIRQ_BASE) -#define irq_to_dynirq(_x) ((_x) - DYNIRQ_BASE) - -/* - * Dynamic binding of event channels and VIRQ sources to guest IRQ space. +#ifndef __XEN_EVTCHN_PORT_DEFINED__ +typedef uint32_t evtchn_port_t; +DEFINE_XEN_GUEST_HANDLE(evtchn_port_t); +#define __XEN_EVTCHN_PORT_DEFINED__ 1 +#endif + +/** Registered Xen interrupt callback handle. */ +typedef void * xen_intr_handle_t; + +/** If non-zero, the hypervisor has been configured to use a direct vector */ +extern int xen_vector_callback_enabled; + +/** + * Associate an already allocated local event channel port an interrupt + * handler. + * + * \param dev The device making this bind request. + * \param local_port The event channel to bind. + * \param filter An interrupt filter handler. Specify NULL + * to always dispatch to the ithread handler. + * \param handler An interrupt ithread handler. Optional (can + * specify NULL) if all necessary event actions + * are performed by filter. + * \param arg Argument to present to both filter and handler. + * \param irqflags Interrupt handler flags. See sys/bus.h. + * \param handlep Pointer to an opaque handle used to manage this + * registration. + * + * \returns 0 on success, otherwise an errno. */ - -/* - * Bind a caller port event channel to an interrupt handler. If - * successful, the guest IRQ number is returned in *irqp. Return zero - * on success or errno otherwise. +int xen_intr_bind_local_port(device_t dev, evtchn_port_t local_port, + driver_filter_t filter, driver_intr_t handler, void *arg, + enum intr_type irqflags, xen_intr_handle_t *handlep); + +/** + * Allocate a local event channel port, accessible by the specified + * remote/foreign domain and, if successful, associate the port with + * the specified interrupt handler. + * + * \param dev The device making this bind request. + * \param remote_domain Remote domain grant permission to signal the + * newly allocated local port. + * \param filter An interrupt filter handler. Specify NULL + * to always dispatch to the ithread handler. + * \param handler An interrupt ithread handler. Optional (can + * specify NULL) if all necessary event actions + * are performed by filter. + * \param arg Argument to present to both filter and handler. + * \param irqflags Interrupt handler flags. See sys/bus.h. + * \param handlep Pointer to an opaque handle used to manage this + * registration. + * + * \returns 0 on success, otherwise an errno. */ -extern int bind_caller_port_to_irqhandler(unsigned int caller_port, - const char *devname, driver_intr_t handler, void *arg, - unsigned long irqflags, unsigned int *irqp); - -/* - * Bind a listening port to an interrupt handler. If successful, the - * guest IRQ number is returned in *irqp. Return zero on success or - * errno otherwise. +int xen_intr_alloc_and_bind_local_port(device_t dev, + u_int remote_domain, driver_filter_t filter, driver_intr_t handler, + void *arg, enum intr_type irqflags, xen_intr_handle_t *handlep); + +/** + * Associate the specified interrupt handler with the remote event + * channel port specified by remote_domain and remote_port. + * + * \param dev The device making this bind request. + * \param remote_domain The domain peer for this event channel connection. + * \param remote_port Remote domain's local port number for this event + * channel port. + * \param filter An interrupt filter handler. Specify NULL + * to always dispatch to the ithread handler. + * \param handler An interrupt ithread handler. Optional (can + * specify NULL) if all necessary event actions + * are performed by filter. + * \param arg Argument to present to both filter and handler. + * \param irqflags Interrupt handler flags. See sys/bus.h. + * \param handlep Pointer to an opaque handle used to manage this + * registration. + * + * \returns 0 on success, otherwise an errno. */ -extern int bind_listening_port_to_irqhandler(unsigned int remote_domain, - const char *devname, driver_intr_t handler, void *arg, - unsigned long irqflags, unsigned int *irqp); - -/* - * Bind a VIRQ to an interrupt handler. If successful, the guest IRQ - * number is returned in *irqp. Return zero on success or errno - * otherwise. +int xen_intr_bind_remote_port(device_t dev, u_int remote_domain, + evtchn_port_t remote_port, driver_filter_t filter, + driver_intr_t handler, void *arg, enum intr_type irqflags, + xen_intr_handle_t *handlep); + +/** + * Associate the specified interrupt handler with the specified Xen + * virtual interrupt source. + * + * \param dev The device making this bind request. + * \param virq The Xen virtual IRQ number for the Xen interrupt + * source being hooked. + * \param cpu The cpu on which interrupt events should be delivered. + * \param filter An interrupt filter handler. Specify NULL + * to always dispatch to the ithread handler. + * \param handler An interrupt ithread handler. Optional (can + * specify NULL) if all necessary event actions + * are performed by filter. + * \param arg Argument to present to both filter and handler. + * \param irqflags Interrupt handler flags. See sys/bus.h. + * \param handlep Pointer to an opaque handle used to manage this + * registration. + * + * \returns 0 on success, otherwise an errno. */ -extern int bind_virq_to_irqhandler(unsigned int virq, unsigned int cpu, - const char *devname, driver_filter_t filter, driver_intr_t handler, - void *arg, unsigned long irqflags, unsigned int *irqp); - -/* - * Bind an IPI to an interrupt handler. If successful, the guest - * IRQ number is returned in *irqp. Return zero on success or errno - * otherwise. +int xen_intr_bind_virq(device_t dev, u_int virq, u_int cpu, + driver_filter_t filter, driver_intr_t handler, + void *arg, enum intr_type irqflags, xen_intr_handle_t *handlep); + +/** + * Associate an interprocessor interrupt vector with an interrupt handler. + * + * \param dev The device making this bind request. + * \param ipi The interprocessor interrupt vector number of the + * interrupt source being hooked. + * \param cpu The cpu receiving the IPI. + * \param filter An interrupt filter handler. Specify NULL + * to always dispatch to the ithread handler. + * \param irqflags Interrupt handler flags. See sys/bus.h. + * \param handlep Pointer to an opaque handle used to manage this + * registration. + * + * \returns 0 on success, otherwise an errno. */ -extern int bind_ipi_to_irqhandler(unsigned int ipi, unsigned int cpu, - const char *devname, driver_filter_t filter, - unsigned long irqflags, unsigned int *irqp); - -/* - * Bind an interdomain event channel to an interrupt handler. If - * successful, the guest IRQ number is returned in *irqp. Return zero - * on success or errno otherwise. +int xen_intr_bind_ipi(device_t dev, u_int ipi, u_int cpu, + driver_filter_t filter, enum intr_type irqflags, + xen_intr_handle_t *handlep); + +/** + * Unbind an interrupt handler from its interrupt source. + * + * \param handlep A pointer to the opaque handle that was initialized + * at the time the interrupt source was bound. + * + * \returns 0 on success, otherwise an errno. + * + * \note The event channel, if any, that was allocated at bind time is + * closed upon successful return of this method. + * + * \note It is always safe to call xen_intr_unbind() on a handle that + * has been initilized to NULL. */ -extern int bind_interdomain_evtchn_to_irqhandler(unsigned int remote_domain, - unsigned int remote_port, const char *devname, - driver_intr_t handler, void *arg, - unsigned long irqflags, unsigned int *irqp); - -/* - * Unbind an interrupt handler using the guest IRQ number returned - * when it was bound. +void xen_intr_unbind(xen_intr_handle_t *handle); + +/** + * Add a description to an interrupt handler. + * + * \param handle The opaque handle that was initialized at the time + * the interrupt source was bound. + * + * \param fmt The sprintf compatible format string for the description, + * followed by optional sprintf arguments. + * + * \returns 0 on success, otherwise an errno. */ -extern void unbind_from_irqhandler(unsigned int irq); - -static __inline__ int irq_cannonicalize(unsigned int irq) -{ - return (irq == 2) ? 9 : irq; -} - -extern void disable_irq(unsigned int); -extern void disable_irq_nosync(unsigned int); -extern void enable_irq(unsigned int); - -extern void irq_suspend(void); -extern void irq_resume(void); - -extern void idle_block(void); -extern int ap_cpu_initclocks(int cpu); +int +xen_intr_describe(xen_intr_handle_t port_handle, const char *fmt, ...) + __attribute__((format(printf, 2, 3))); + +/** + * Signal the remote peer of an interrupt source associated with an + * event channel port. + * + * \param handle The opaque handle that was initialized at the time + * the interrupt source was bound. + * + * \note For xen interrupt sources other than event channel ports, + * this method takes no action. + */ +void xen_intr_signal(xen_intr_handle_t handle); + +/** + * Get the local event channel port number associated with this interrupt + * source. + * + * \param handle The opaque handle that was initialized at the time + * the interrupt source was bound. + * + * \returns 0 if the handle is invalid, otherwise positive port number. + */ +evtchn_port_t xen_intr_port(xen_intr_handle_t handle); #endif /* _XEN_INTR_H_ */ diff --git a/sys/xen/xenbus/xenbus.c b/sys/xen/xenbus/xenbus.c index 8887066..c59d4ae 100644 --- a/sys/xen/xenbus/xenbus.c +++ b/sys/xen/xenbus/xenbus.c @@ -50,11 +50,12 @@ __FBSDID("$FreeBSD$"); #include <sys/libkern.h> #include <sys/sbuf.h> -#include <machine/xen/xen-os.h> +#include <xen/xen-os.h> #include <xen/hypervisor.h> #include <xen/evtchn.h> #include <xen/gnttab.h> #include <xen/xenbus/xenbusvar.h> + #include <machine/stdarg.h> MALLOC_DEFINE(M_XENBUS, "xenbus", "XenBus Support"); @@ -222,42 +223,6 @@ xenbus_grant_ring(device_t dev, unsigned long ring_mfn, grant_ref_t *refp) return (0); } -int -xenbus_alloc_evtchn(device_t dev, evtchn_port_t *port) -{ - struct evtchn_alloc_unbound alloc_unbound; - int err; - - alloc_unbound.dom = DOMID_SELF; - alloc_unbound.remote_dom = xenbus_get_otherend_id(dev); - - err = HYPERVISOR_event_channel_op(EVTCHNOP_alloc_unbound, - &alloc_unbound); - - if (err) { - xenbus_dev_fatal(dev, -err, "allocating event channel"); - return (-err); - } - *port = alloc_unbound.port; - return (0); -} - -int -xenbus_free_evtchn(device_t dev, evtchn_port_t port) -{ - struct evtchn_close close; - int err; - - close.port = port; - - err = HYPERVISOR_event_channel_op(EVTCHNOP_close, &close); - if (err) { - xenbus_dev_error(dev, -err, "freeing event channel %d", port); - return (-err); - } - return (0); -} - XenbusState xenbus_read_driver_state(const char *path) { diff --git a/sys/xen/xenbus/xenbus_if.m b/sys/xen/xenbus/xenbus_if.m index 87d7c7f..fd9ae51 100644 --- a/sys/xen/xenbus/xenbus_if.m +++ b/sys/xen/xenbus/xenbus_if.m @@ -29,7 +29,8 @@ #include <sys/bus.h> #include <machine/atomic.h> -#include <machine/xen/xen-os.h> + +#include <xen/xen-os.h> #include <xen/evtchn.h> #include <xen/xenbus/xenbusvar.h> diff --git a/sys/xen/xenbus/xenbusb_front.c b/sys/xen/xenbus/xenbusb_front.c index 818e7f0..145d527 100644 --- a/sys/xen/xenbus/xenbusb_front.c +++ b/sys/xen/xenbus/xenbusb_front.c @@ -51,9 +51,9 @@ __FBSDID("$FreeBSD$"); #include <sys/sx.h> #include <sys/taskqueue.h> -#include <machine/xen/xen-os.h> #include <machine/stdarg.h> +#include <xen/xen-os.h> #include <xen/gnttab.h> #include <xen/xenbus/xenbusvar.h> #include <xen/xenbus/xenbusb.h> diff --git a/sys/xen/xenbus/xenbusvar.h b/sys/xen/xenbus/xenbusvar.h index 1c730fb..ab5d01f 100644 --- a/sys/xen/xenbus/xenbusvar.h +++ b/sys/xen/xenbus/xenbusvar.h @@ -43,8 +43,8 @@ #include <sys/sbuf.h> #include <machine/stdarg.h> -#include <machine/xen/xen-os.h> +#include <xen/xen-os.h> #include <xen/interface/grant_table.h> #include <xen/interface/io/xenbus.h> #include <xen/interface/io/xs_wire.h> @@ -195,39 +195,6 @@ int xenbus_watch_path2(device_t dev, const char *path, int xenbus_grant_ring(device_t dev, unsigned long ring_mfn, grant_ref_t *refp); /** - * Allocate an event channel for the given XenBus device. - * - * \param dev The device for which to allocate the event channel. - * \param port[out] The port identifier for the allocated event channel. - * - * \return On success, 0. Otherwise an errno value indicating the - * type of failure. - * - * A successfully allocated event channel should be free'd using - * xenbus_free_evtchn(). - * - * \note On error, \a dev will be switched to the XenbusStateClosing - * state and the returned error is saved in the per-device error node - * for \a dev in the XenStore. - */ -int xenbus_alloc_evtchn(device_t dev, evtchn_port_t *port); - -/** - * Free an existing event channel. - * - * \param dev The device which allocated this event channel. - * \param port The port identifier for the event channel to free. - * - * \return On success, 0. Otherwise an errno value indicating the - * type of failure. - * - * \note On error, \a dev will be switched to the XenbusStateClosing - * state and the returned error is saved in the per-device error node - * for \a dev in the XenStore. - */ -int xenbus_free_evtchn(device_t dev, evtchn_port_t port); - -/** * Record the given errno, along with the given, printf-style, formatted * message in dev's device specific error node in the XenStore. * diff --git a/sys/xen/xenstore/xenstore.c b/sys/xen/xenstore/xenstore.c index a07a262..d404862 100644 --- a/sys/xen/xenstore/xenstore.c +++ b/sys/xen/xenstore/xenstore.c @@ -49,10 +49,9 @@ __FBSDID("$FreeBSD$"); #include <sys/uio.h> #include <sys/unistd.h> -#include <machine/xen/xen-os.h> #include <machine/stdarg.h> -#include <xen/evtchn.h> +#include <xen/xen-os.h> #include <xen/gnttab.h> #include <xen/hypervisor.h> #include <xen/xen_intr.h> @@ -244,8 +243,8 @@ struct xs_softc { */ int evtchn; - /** Interrupt number for our event channel. */ - u_int irq; + /** Handle for XenStore interrupts. */ + xen_intr_handle_t xen_intr_handle; /** * Interrupt driven config hook allowing us to defer @@ -505,11 +504,10 @@ xs_write_store(const void *tdata, unsigned len) xen_store->req_prod += avail; /* - * notify_remote_via_evtchn implies mb(). The other side - * will see the change to req_prod at the time of the - * interrupt. + * xen_intr_signal() implies mb(). The other side will see + * the change to req_prod at the time of the interrupt. */ - notify_remote_via_evtchn(xs.evtchn); + xen_intr_signal(xs.xen_intr_handle); } return (0); @@ -597,11 +595,10 @@ xs_read_store(void *tdata, unsigned len) xen_store->rsp_cons += avail; /* - * notify_remote_via_evtchn implies mb(). The producer - * will see the updated consumer index when the event - * is delivered. + * xen_intr_signal() implies mb(). The producer will see + * the updated consumer index when the event is delivered. */ - notify_remote_via_evtchn(xs.evtchn); + xen_intr_signal(xs.xen_intr_handle); } return (0); @@ -1068,11 +1065,11 @@ xs_init_comms(void) xen_store->rsp_cons = xen_store->rsp_prod; } - if (xs.irq) - unbind_from_irqhandler(xs.irq); + xen_intr_unbind(&xs.xen_intr_handle); - error = bind_caller_port_to_irqhandler(xs.evtchn, "xenstore", - xs_intr, NULL, INTR_TYPE_NET, &xs.irq); + error = xen_intr_bind_local_port(xs.xs_dev, xs.evtchn, + /*filter*/NULL, xs_intr, /*arg*/NULL, INTR_TYPE_NET|INTR_MPSAFE, + &xs.xen_intr_handle); if (error) { log(LOG_WARNING, "XENSTORE request irq failed %i\n", error); return (error); @@ -1168,7 +1165,6 @@ xs_attach(device_t dev) sx_init(&xs.suspend_mutex, "xenstore suspend"); mtx_init(&xs.registered_watches_lock, "watches", NULL, MTX_DEF); mtx_init(&xs.watch_events_lock, "watch events", NULL, MTX_DEF); - xs.irq = 0; /* Initialize the shared memory rings to talk to xenstored */ error = xs_init_comms(); diff --git a/sys/xen/xenstore/xenstore_dev.c b/sys/xen/xenstore/xenstore_dev.c index 1fa4197..e1b40914 100644 --- a/sys/xen/xenstore/xenstore_dev.c +++ b/sys/xen/xenstore/xenstore_dev.c @@ -44,7 +44,7 @@ __FBSDID("$FreeBSD$"); #include <sys/malloc.h> #include <sys/conf.h> -#include <machine/xen/xen-os.h> +#include <xen/xen-os.h> #include <xen/hypervisor.h> #include <xen/xenstore/xenstorevar.h> diff --git a/sys/xen/xenstore/xenstorevar.h b/sys/xen/xenstore/xenstorevar.h index 4a1382d..208e5bf 100644 --- a/sys/xen/xenstore/xenstorevar.h +++ b/sys/xen/xenstore/xenstorevar.h @@ -41,8 +41,8 @@ #include <sys/sbuf.h> #include <machine/stdarg.h> -#include <machine/xen/xen-os.h> +#include <xen/xen-os.h> #include <xen/interface/grant_table.h> #include <xen/interface/io/xenbus.h> #include <xen/interface/io/xs_wire.h> diff --git a/tools/build/mk/OptionalObsoleteFiles.inc b/tools/build/mk/OptionalObsoleteFiles.inc index febe85a..633ead0 100644 --- a/tools/build/mk/OptionalObsoleteFiles.inc +++ b/tools/build/mk/OptionalObsoleteFiles.inc @@ -1600,11 +1600,6 @@ OLD_FILES+=usr/share/man/man1/gdbserver.1.gz OLD_FILES+=usr/share/man/man1/kgdb.1.gz .endif -.if ${MK_GNU_PATCH} == no -OLD_FILES+=usr/bin/bsdpatch -OLD_FILES+=usr/share/man/man1/bsdpatch.1.gz -.endif - .if ${MK_GPIB} == no OLD_FILES+=usr/include/dev/ieee488/ibfoo_int.h OLD_FILES+=usr/include/dev/ieee488/ugpib.h diff --git a/tools/build/options/WITH_BSDCONFIG b/tools/build/options/WITH_BSDCONFIG deleted file mode 100644 index f3e6e25..0000000 --- a/tools/build/options/WITH_BSDCONFIG +++ /dev/null @@ -1,2 +0,0 @@ -.\" $FreeBSD$ -Set to install bsdconfig(8), a BSD-licensed configuration/management utility. diff --git a/tools/build/options/WITH_GNU_PATCH b/tools/build/options/WITH_GNU_PATCH deleted file mode 100644 index d2a751f..0000000 --- a/tools/build/options/WITH_GNU_PATCH +++ /dev/null @@ -1,2 +0,0 @@ -.\" $FreeBSD$ -Install GNU-licensed patch as 'patch' instead of BSD patch. diff --git a/usr.bin/brandelf/brandelf.1 b/usr.bin/brandelf/brandelf.1 index 689f0cc..2b3ea7e 100644 --- a/usr.bin/brandelf/brandelf.1 +++ b/usr.bin/brandelf/brandelf.1 @@ -1,5 +1,4 @@ -.\" Copyright (c) 1997 -.\" John-Mark Gurney. All rights reserved. +.\" Copyright 1997 John-Mark Gurney. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions @@ -9,9 +8,6 @@ .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of the author nor the names of any co-contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY John-Mark Gurney AND CONTRIBUTORS ``AS IS'' .\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE diff --git a/usr.bin/dig/Makefile b/usr.bin/dig/Makefile index ec11dc4..b76a0ca 100644 --- a/usr.bin/dig/Makefile +++ b/usr.bin/dig/Makefile @@ -20,7 +20,7 @@ CFLAGS+= -DWITH_IDN -I/usr/local/include CFLAGS+= -L/usr/local/lib -lidnkit -R/usr/local/lib -liconv .endif -WARNS?= 1 +WARNS?= 0 DPADD+= ${BIND_DPADD} ${CRYPTO_DPADD} ${PTHREAD_DPADD} LDADD+= ${BIND_LDADD} ${CRYPTO_LDADD} ${PTHREAD_LDADD} diff --git a/usr.bin/host/Makefile b/usr.bin/host/Makefile index e2909e1..d168a92 100644 --- a/usr.bin/host/Makefile +++ b/usr.bin/host/Makefile @@ -15,7 +15,7 @@ SRCS+= dighost.c host.c CFLAGS+= -I${SRCDIR}/include CFLAGS+= -I${BIND_DIR}/lib/isc/${ISC_ATOMIC_ARCH}/include -WARNS?= 1 +WARNS?= 0 DPADD+= ${BIND_DPADD} ${CRYPTO_DPADD} ${PTHREAD_DPADD} LDADD+= ${BIND_LDADD} ${CRYPTO_LDADD} ${PTHREAD_LDADD} diff --git a/usr.bin/nslookup/Makefile b/usr.bin/nslookup/Makefile index 9512d15..4ed0e92 100644 --- a/usr.bin/nslookup/Makefile +++ b/usr.bin/nslookup/Makefile @@ -18,7 +18,7 @@ CFLAGS+= -I${BIND_DIR}/lib/isc/${ISC_ATOMIC_ARCH}/include DPADD+= ${BIND_DPADD} ${CRYPTO_DPADD} ${PTHREAD_DPADD} ${LIBEDIT} LDADD+= ${BIND_LDADD} ${CRYPTO_LDADD} ${PTHREAD_LDADD} ${LIBEDIT} -WARNS?= 1 +WARNS?= 0 MANFILTER= sed -e "s@^host \[server\]@\\\fBhost\\\fR \\\fI[server]\\\fR@" diff --git a/usr.bin/patch/Makefile b/usr.bin/patch/Makefile index 18261f6..a5f15c7 100644 --- a/usr.bin/patch/Makefile +++ b/usr.bin/patch/Makefile @@ -1,17 +1,7 @@ # $OpenBSD: Makefile,v 1.4 2005/05/16 15:22:46 espie Exp $ # $FreeBSD$ -.include <bsd.own.mk> - -.if ${MK_GNU_PATCH} == "yes" -PROG= bsdpatch -CLEANFILES+= bsdpatch.1 - -bsdpatch.1: patch.1 - cp ${.ALLSRC} ${.TARGET} -.else PROG= patch -.endif SRCS= backupfile.c inp.c mkpath.c patch.c pch.c util.c diff --git a/usr.sbin/bhyve/pci_emul.c b/usr.sbin/bhyve/pci_emul.c index 005e8b1..626dfdf 100644 --- a/usr.sbin/bhyve/pci_emul.c +++ b/usr.sbin/bhyve/pci_emul.c @@ -245,8 +245,12 @@ pci_emul_msix_tread(struct pci_devinst *pi, uint64_t offset, int size) int tab_index; uint64_t retval = ~0; - /* support only 4 or 8 byte reads */ - if (size != 4 && size != 8) + /* + * The PCI standard only allows 4 and 8 byte accesses to the MSI-X + * table but we also allow 1 byte access to accomodate reads from + * ddb. + */ + if (size != 1 && size != 4 && size != 8) return (retval); msix_entry_offset = offset % MSIX_TABLE_ENTRY_SIZE; @@ -263,7 +267,9 @@ pci_emul_msix_tread(struct pci_devinst *pi, uint64_t offset, int size) dest = (char *)(pi->pi_msix.table + tab_index); dest += msix_entry_offset; - if (size == 4) + if (size == 1) + retval = *((uint8_t *)dest); + else if (size == 4) retval = *((uint32_t *)dest); else retval = *((uint64_t *)dest); diff --git a/usr.sbin/bhyve/pci_virtio_block.c b/usr.sbin/bhyve/pci_virtio_block.c index 4395410..76f681b 100644 --- a/usr.sbin/bhyve/pci_virtio_block.c +++ b/usr.sbin/bhyve/pci_virtio_block.c @@ -156,7 +156,7 @@ pci_vtblk_proc(struct pci_vtblk_softc *sc, struct vqueue_info *vq) * XXX - note - this fails on crash dump, which does a * VIRTIO_BLK_T_FLUSH with a zero transfer length */ - assert (n >= 3 && n < VTBLK_MAXSEGS + 2); + assert (n >= 3 && n <= VTBLK_MAXSEGS + 2); assert((flags[0] & VRING_DESC_F_WRITE) == 0); assert(iov[0].iov_len == sizeof(struct virtio_blk_hdr)); diff --git a/usr.sbin/crashinfo/crashinfo.sh b/usr.sbin/crashinfo/crashinfo.sh index b1bfc06..cf60a62 100755 --- a/usr.sbin/crashinfo/crashinfo.sh +++ b/usr.sbin/crashinfo/crashinfo.sh @@ -268,9 +268,9 @@ netstat -M $VMCORE -N $KERNEL -m echo echo "------------------------------------------------------------------------" -echo "netstat -id" +echo "netstat -idW" echo -netstat -M $VMCORE -N $KERNEL -id +netstat -M $VMCORE -N $KERNEL -idW echo echo "------------------------------------------------------------------------" diff --git a/usr.sbin/rtadvd/config.c b/usr.sbin/rtadvd/config.c index 02a241d..f0e11a3 100644 --- a/usr.sbin/rtadvd/config.c +++ b/usr.sbin/rtadvd/config.c @@ -296,10 +296,8 @@ rm_rainfo(struct rainfo *rai) if (rai->rai_ra_data != NULL) free(rai->rai_ra_data); - while ((pfx = TAILQ_FIRST(&rai->rai_prefix)) != NULL) { - TAILQ_REMOVE(&rai->rai_prefix, pfx, pfx_next); - free(pfx); - } + while ((pfx = TAILQ_FIRST(&rai->rai_prefix)) != NULL) + delete_prefix(pfx); while ((sol = TAILQ_FIRST(&rai->rai_soliciter)) != NULL) { TAILQ_REMOVE(&rai->rai_soliciter, sol, sol_next); free(sol); |