summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormarkm <markm@FreeBSD.org>2013-08-30 11:38:34 +0000
committermarkm <markm@FreeBSD.org>2013-08-30 11:38:34 +0000
commitff7909302f8ec4c467a0d7bb2c37c2700d394e7f (patch)
treef9372a133e937ecfa0e144aca5abd2a7fcd83233
parent6eed6ab7e64307bf3e41ef63d154359d83a3ba04 (diff)
parent0030cdac07df412f040b7616431b47c1265e0e69 (diff)
downloadFreeBSD-src-ff7909302f8ec4c467a0d7bb2c37c2700d394e7f.zip
FreeBSD-src-ff7909302f8ec4c467a0d7bb2c37c2700d394e7f.tar.gz
MFC
-rw-r--r--Makefile.inc16
-rw-r--r--ObsoleteFiles.inc3
-rw-r--r--UPDATING13
-rw-r--r--bin/ps/keyword.c1
-rw-r--r--bin/ps/ps.13
-rw-r--r--bin/sh/parser.c2
-rw-r--r--bin/sh/parser.h6
-rw-r--r--cddl/contrib/opensolaris/tools/ctf/cvt/dwarf.c70
-rw-r--r--cddl/lib/libzpool/Makefile6
-rw-r--r--cddl/usr.bin/ztest/Makefile5
-rw-r--r--cddl/usr.sbin/zdb/Makefile5
-rw-r--r--contrib/libexecinfo/backtrace.38
-rw-r--r--contrib/libexecinfo/backtrace.c26
-rw-r--r--contrib/libexecinfo/symtab.c6
-rw-r--r--contrib/pam_modules/pam_passwdqc/pam_passwdqc.c41
-rw-r--r--etc/defaults/periodic.conf147
-rw-r--r--etc/mtree/BSD.usr.dist82
-rwxr-xr-xetc/periodic/monthly/450.status-security41
-rw-r--r--etc/periodic/monthly/Makefile3
-rwxr-xr-xetc/periodic/security/100.chksetuid12
-rwxr-xr-xetc/periodic/security/110.neggrpperm9
-rwxr-xr-xetc/periodic/security/200.chkmounts17
-rwxr-xr-xetc/periodic/security/300.chkuid013
-rwxr-xr-xetc/periodic/security/400.passwdless13
-rwxr-xr-xetc/periodic/security/410.logincheck13
-rwxr-xr-xetc/periodic/security/460.chkportsum12
-rwxr-xr-xetc/periodic/security/500.ipfwdenied11
-rwxr-xr-xetc/periodic/security/510.ipfdenied11
-rwxr-xr-xetc/periodic/security/520.pfdenied11
-rwxr-xr-xetc/periodic/security/550.ipfwlimit11
-rwxr-xr-xetc/periodic/security/610.ipf6denied11
-rwxr-xr-xetc/periodic/security/700.kernelmsg11
-rwxr-xr-xetc/periodic/security/800.loginfail16
-rwxr-xr-xetc/periodic/security/900.tcpwrap16
-rw-r--r--etc/periodic/security/security.functions12
-rwxr-xr-xetc/periodic/weekly/450.status-security41
-rw-r--r--etc/periodic/weekly/Makefile1
-rwxr-xr-xetc/rc.d/savecore1
-rw-r--r--gnu/usr.bin/patch/Makefile6
-rw-r--r--lib/libc/gen/wordexp.c8
-rw-r--r--lib/libc/sys/pdfork.222
-rw-r--r--lib/libpam/modules/pam_passwdqc/Makefile2
-rw-r--r--lib/libutil/expand_number.c39
-rw-r--r--lib/libutil/login_auth.c2
-rw-r--r--lib/libutil/login_cap.c2
-rw-r--r--lib/libutil/pidfile.c2
-rw-r--r--lib/libutil/quotafile.c8
-rw-r--r--lib/libutil/uucplock.c7
-rw-r--r--lib/msun/src/s_erf.c2
-rw-r--r--lib/msun/src/s_erff.c168
-rwxr-xr-xrelease/scripts/mm-mtree.sh5
-rw-r--r--sbin/camcontrol/camcontrol.c6
-rw-r--r--sbin/etherswitchcfg/etherswitchcfg.82
-rw-r--r--share/man/man4/Makefile1
-rw-r--r--share/man/man4/capsicum.414
-rw-r--r--share/man/man4/cd.481
-rw-r--r--share/man/man4/procdesc.493
-rw-r--r--share/man/man4/sysmouse.43
-rw-r--r--share/man/man4/vmx.421
-rw-r--r--share/man/man5/periodic.conf.5170
-rw-r--r--share/man/man5/src.conf.58
-rw-r--r--share/mk/bsd.own.mk2
-rw-r--r--share/mk/sys.mk26
-rw-r--r--sys/amd64/amd64/apic_vector.S257
-rw-r--r--sys/amd64/amd64/cpu_switch.S34
-rw-r--r--sys/amd64/amd64/genassym.c4
-rw-r--r--sys/amd64/amd64/machdep.c16
-rw-r--r--sys/amd64/amd64/mp_machdep.c71
-rw-r--r--sys/amd64/amd64/pmap.c398
-rw-r--r--sys/amd64/amd64/vm_machdep.c2
-rw-r--r--sys/amd64/include/apicvar.h1
-rw-r--r--sys/amd64/include/cpufunc.h20
-rw-r--r--sys/amd64/include/intr_machdep.h18
-rw-r--r--sys/amd64/include/pcpu.h14
-rw-r--r--sys/amd64/include/pmap.h2
-rw-r--r--sys/amd64/include/smp.h15
-rw-r--r--sys/amd64/include/xen/hypercall.h8
-rw-r--r--sys/amd64/include/xen/xen-os.h219
-rw-r--r--sys/amd64/vmm/vmm_instruction_emul.c12
-rw-r--r--sys/arm/arm/pmap-v6.c8
-rw-r--r--sys/arm/arm/pmap.c8
-rw-r--r--sys/boot/forth/beastie.4th20
-rw-r--r--sys/boot/forth/version.4th33
-rw-r--r--sys/boot/forth/version.4th.82
-rw-r--r--sys/cam/scsi/scsi_all.c2
-rw-r--r--sys/cam/scsi/scsi_ch.c8
-rw-r--r--sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c14
-rw-r--r--sys/compat/freebsd32/freebsd32.h1
-rw-r--r--sys/conf/Makefile.amd642
-rw-r--r--sys/conf/files3
-rw-r--r--sys/conf/files.amd642
-rw-r--r--sys/conf/files.i3864
-rw-r--r--sys/contrib/dev/iwn/iwlwifi-2000-18.168.6.1.fw.uu12250
-rw-r--r--sys/dev/ahci/ahci.c1
-rw-r--r--sys/dev/ath/if_ath.c13
-rw-r--r--sys/dev/cxgbe/adapter.h35
-rw-r--r--sys/dev/cxgbe/offload.h1
-rw-r--r--sys/dev/cxgbe/osdep.h2
-rw-r--r--sys/dev/cxgbe/t4_main.c59
-rw-r--r--sys/dev/cxgbe/t4_sge.c746
-rw-r--r--sys/dev/cxgbe/t4_tracer.c15
-rw-r--r--sys/dev/cxgbe/tom/t4_cpl_io.c15
-rw-r--r--sys/dev/cxgbe/tom/t4_tom.c4
-rw-r--r--sys/dev/drm2/drmP.h2
-rw-r--r--sys/dev/drm2/drm_atomic.h36
-rw-r--r--sys/dev/drm2/drm_context.c6
-rw-r--r--sys/dev/drm2/drm_irq.c2
-rw-r--r--sys/dev/drm2/drm_sysctl.c24
-rw-r--r--sys/dev/drm2/i915/i915_gem.c10
-rw-r--r--sys/dev/drm2/i915/i915_gem_execbuffer.c2
-rw-r--r--sys/dev/drm2/i915/intel_display.c10
-rw-r--r--sys/dev/drm2/ttm/ttm_bo.c7
-rw-r--r--sys/dev/drm2/ttm/ttm_bo_util.c3
-rw-r--r--sys/dev/drm2/ttm/ttm_bo_vm.c3
-rw-r--r--sys/dev/fb/vesa.c52
-rw-r--r--sys/dev/fdc/fdc.c23
-rw-r--r--sys/dev/flash/mx25l.c4
-rw-r--r--sys/dev/gpio/gpiobus.c22
-rw-r--r--sys/dev/hwpmc/pmc_events.h5
-rw-r--r--sys/dev/iwn/if_iwn.c58
-rw-r--r--sys/dev/qlxgbe/ql_misc.c10
-rw-r--r--sys/dev/qlxgbe/ql_os.c4
-rw-r--r--sys/dev/uart/uart_dev_ns8250.c14
-rw-r--r--sys/dev/vmware/vmxnet3/if_vmx.c131
-rw-r--r--sys/dev/vmware/vmxnet3/if_vmxvar.h27
-rw-r--r--sys/dev/xen/balloon/balloon.c11
-rw-r--r--sys/dev/xen/blkback/blkback.c52
-rw-r--r--sys/dev/xen/blkfront/blkfront.c44
-rw-r--r--sys/dev/xen/blkfront/block.h2
-rw-r--r--sys/dev/xen/console/console.c18
-rw-r--r--sys/dev/xen/console/xencons_ring.c18
-rw-r--r--sys/dev/xen/control/control.c17
-rw-r--r--sys/dev/xen/netback/netback.c34
-rw-r--r--sys/dev/xen/netfront/netfront.c51
-rw-r--r--sys/dev/xen/timer/timer.c608
-rw-r--r--sys/dev/xen/xenpci/evtchn.c467
-rw-r--r--sys/dev/xen/xenpci/xenpci.c226
-rw-r--r--sys/dev/xen/xenpci/xenpcivar.h5
-rw-r--r--sys/fs/nfs/nfs.h5
-rw-r--r--sys/fs/tmpfs/tmpfs_subr.c7
-rw-r--r--sys/geom/zero/g_zero.c32
-rw-r--r--sys/i386/i386/apic_vector.s19
-rw-r--r--sys/i386/i386/machdep.c17
-rw-r--r--sys/i386/i386/mp_machdep.c9
-rw-r--r--sys/i386/i386/pmap.c106
-rw-r--r--sys/i386/include/apicvar.h1
-rw-r--r--sys/i386/include/intr_machdep.h24
-rw-r--r--sys/i386/include/pcpu.h16
-rw-r--r--sys/i386/include/pmap.h4
-rw-r--r--sys/i386/include/xen/xen-os.h168
-rw-r--r--sys/i386/include/xen/xen_clock_util.h36
-rw-r--r--sys/i386/include/xen/xenfunc.h6
-rw-r--r--sys/i386/include/xen/xenvar.h3
-rw-r--r--sys/i386/isa/npx.c2
-rw-r--r--sys/i386/xen/clock.c354
-rw-r--r--sys/i386/xen/exception.s2
-rw-r--r--sys/i386/xen/mp_machdep.c87
-rw-r--r--sys/i386/xen/mptable.c2
-rw-r--r--sys/i386/xen/pmap.c66
-rw-r--r--sys/i386/xen/xen_clock_util.c101
-rw-r--r--sys/i386/xen/xen_machdep.c48
-rw-r--r--sys/i386/xen/xen_rtc.c144
-rw-r--r--sys/ia64/ia64/pmap.c44
-rw-r--r--sys/kern/kern_event.c12
-rw-r--r--sys/kern/kern_physio.c19
-rw-r--r--sys/kern/kern_proc.c2
-rw-r--r--sys/kern/kern_synch.c14
-rw-r--r--sys/kern/subr_unit.c45
-rw-r--r--sys/kern/uipc_mbuf.c8
-rw-r--r--sys/kern/uipc_socket.c9
-rw-r--r--sys/kern/vfs_cluster.c4
-rw-r--r--sys/mips/atheros/ar71xx_spi.c2
-rw-r--r--sys/mips/atheros/if_arge.c3
-rw-r--r--sys/mips/conf/ROUTERSTATION.hints18
-rw-r--r--sys/mips/malta/gt_pci.c63
-rw-r--r--sys/mips/malta/yamon.c1
-rw-r--r--sys/mips/mips/pmap.c8
-rw-r--r--sys/modules/ip6_mroute_mod/Makefile2
-rw-r--r--sys/modules/iwnfw/iwn2000/Makefile6
-rw-r--r--sys/modules/linux/Makefile4
-rw-r--r--sys/net/if_lagg.c65
-rw-r--r--sys/net/if_lagg.h24
-rw-r--r--sys/net/if_llatbl.h2
-rw-r--r--sys/net/if_pfsync.h5
-rw-r--r--sys/net80211/ieee80211_output.c31
-rw-r--r--sys/net80211/ieee80211_proto.h2
-rw-r--r--sys/netinet/icmp_var.h7
-rw-r--r--sys/netinet/igmp_var.h4
-rw-r--r--sys/netinet/in.h18
-rw-r--r--sys/netinet/pim_var.h5
-rw-r--r--sys/netinet/tcp_lro.c23
-rw-r--r--sys/netinet/tcp_lro.h4
-rw-r--r--sys/netinet/tcp_var.h18
-rw-r--r--sys/netinet/udp_var.h9
-rw-r--r--sys/netinet6/pim6_var.h4
-rw-r--r--sys/netipsec/ipsec.h34
-rw-r--r--sys/netipsec/key_var.h16
-rw-r--r--sys/powerpc/powerpc/mmu_if.m19
-rw-r--r--sys/powerpc/powerpc/pmap_dispatch.c9
-rw-r--r--sys/sparc64/sparc64/pmap.c8
-rw-r--r--sys/sys/_unrhdr.h51
-rw-r--r--sys/sys/bitset.h9
-rw-r--r--sys/sys/cpuset.h1
-rw-r--r--sys/sys/kernel.h5
-rw-r--r--sys/sys/mbuf.h57
-rw-r--r--sys/sys/socket.h46
-rw-r--r--sys/sys/sysctl.h129
-rw-r--r--sys/sys/systm.h1
-rw-r--r--sys/sys/user.h3
-rw-r--r--sys/ufs/ffs/ffs_alloc.c20
-rw-r--r--sys/ufs/ufs/ufs_dirhash.c2
-rw-r--r--sys/vm/pmap.h2
-rw-r--r--sys/vm/vm_map.c21
-rw-r--r--sys/vm/vm_page.c9
-rw-r--r--sys/x86/include/segments.h1
-rw-r--r--sys/x86/x86/local_apic.c8
-rw-r--r--sys/x86/xen/hvm.c256
-rw-r--r--sys/x86/xen/xen_intr.c1126
-rw-r--r--sys/xen/evtchn.h135
-rw-r--r--sys/xen/evtchn/evtchn.c1141
-rw-r--r--sys/xen/evtchn/evtchn_dev.c57
-rw-r--r--sys/xen/evtchn/evtchnvar.h105
-rw-r--r--sys/xen/features.c2
-rw-r--r--sys/xen/gnttab.c12
-rw-r--r--sys/xen/gnttab.h7
-rw-r--r--sys/xen/hvm.h4
-rw-r--r--sys/xen/interface/event_channel.h3
-rw-r--r--sys/xen/xen-os.h95
-rw-r--r--sys/xen/xen_intr.h295
-rw-r--r--sys/xen/xenbus/xenbus.c39
-rw-r--r--sys/xen/xenbus/xenbus_if.m3
-rw-r--r--sys/xen/xenbus/xenbusb_front.c2
-rw-r--r--sys/xen/xenbus/xenbusvar.h35
-rw-r--r--sys/xen/xenstore/xenstore.c30
-rw-r--r--sys/xen/xenstore/xenstore_dev.c2
-rw-r--r--sys/xen/xenstore/xenstorevar.h2
-rw-r--r--tools/build/mk/OptionalObsoleteFiles.inc5
-rw-r--r--tools/build/options/WITH_BSDCONFIG2
-rw-r--r--tools/build/options/WITH_GNU_PATCH2
-rw-r--r--usr.bin/brandelf/brandelf.16
-rw-r--r--usr.bin/dig/Makefile2
-rw-r--r--usr.bin/host/Makefile2
-rw-r--r--usr.bin/nslookup/Makefile2
-rw-r--r--usr.bin/patch/Makefile10
-rw-r--r--usr.sbin/bhyve/pci_emul.c12
-rw-r--r--usr.sbin/bhyve/pci_virtio_block.c2
-rwxr-xr-xusr.sbin/crashinfo/crashinfo.sh4
-rw-r--r--usr.sbin/rtadvd/config.c6
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)
diff --git a/UPDATING b/UPDATING
index c0f23b4..aafbcf8 100644
--- a/UPDATING
+++ b/UPDATING
@@ -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(&params, pamh, newpass) && enforce))
+ curpass = item;
+ if (!curpass || (check_max(&params, pamh, curpass) && enforce))
return PAM_AUTHTOK_ERR;
- reason = _passwdqc_check(&params.qc, newpass, oldpass, pw);
+ reason = _passwdqc_check(&params.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(&params, 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
+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
+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
+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
+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
+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
+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
+gABsBxt4Ugiv9SCBCOgB2c9wgABQLnYP7/8gqNHA4H7xwBoOT/EId33YDbjPcYAAsO3FgaIPb/HJ
+cYwgAoDPcYAA0CkA3Yf3HXiMIAKAAeV89wAoQgMFKr4Dz3KAAMwpFrgAoc9xgABMSgAaQA6E7//Y
+AKkAiYwgw4+sDoH/JQZP8eB48cCiDU/xOnB6cUh3aHYKJAAhANrPcasAoP9ZoQfYGqFYoaYNIAIB
+2BnZz3CnAJhHOqAeCW/8HtjPcqcAFEgdgr6CbBIQAHASEgAAp6Cm97jFIIIPAP8AANMg4QX3vcUl
+gh8A/wAA0yXhFToIL/eKIRAACHapcC4IL/eKIRAACHVAKAAiHggv94ohCAAId0AqACISCC/3iiEI
+ANF5GeEseS9xsXoZ4kx6L3IAGYAjDw9iEAAbQCMA2ATw/wiDgAHYNQVv8QAcAiDxwPIMT/EIdSh2
+9gwgAgrYAdjPcacAmEcaoeYMIAIK2M9wpgCcP2QQBABRJACAyiHBD8oiwQfKIIEPAAC/GcojgQ8A
+ALgAMAOh8solIQDPcKcAFEgsgB2AAKb3uMUggg8A/wAA0yDhBfUEb/EApeB48cB6DE/xz3KAACy8
+xIKMJsOfO/L/2SSiwKCELggZACGNf4AA0LcEjQogQC4B35LoAoXPcYAA4DZaDe/yIIEIcc9wgACI
+LgSAAICCD0AAhOgB2Bzwz3CAAGA2Io3AqCGoz3GgALAf+aHPcYAAiC4wgSCBAN0hoEYNr/jpcAAg
+gC+AAPC5oKgA2FUET/HxwOHFCHXPcIAAiC4EgCCAiiDJC5oOb/g2uYogyQuSDm/4IoU2Da/zBtgW
+D4/8z3CAAOQvA4AYiB0IEQEKIcAP63KKIAwPiiMGC0okAAAtAq/yuHPPcYAAFEIJgQkIFQEB4Amh
+z3GAALDtBoFGIEABBqHPdYAA1AcAhSUIkQCKIEkFLg5v+IohRg8ghYogRg/qDG/6BNpyDm/6BNjN
+A0/x8cDhxQh1z3CAAIguBIAggIogCQz6DW/4NrmKIAkM8g1v+CKFz3GAAIRCCYEB4Amhz3GAALDt
+BoGCuAahz3CAALDYA4iK6IogkA7GDW/4iiHHBToOr/4C2IogyQOyDW/4iiGHBooNr/MG2GEDT/Hg
+ePHA4cUIdf/Zz3CAAKi3IKhvIEMABguv8gHZz3CAAIguJIAggXoNb/iKIMwNBoUDgEKFIICKIIgA
+Zg1v+EJ5HQNP8eB4CQXv8xHY4HjxwOHFCHXPcIAAiC4EgCCAiiCJDD4Nb/g2uYogiQw2DW/4IoXP
+cIAA5C8DgBgQhAAbDBEBCiHAD+tyiiBMD4ojRwrdAK/ySiUAAM9woAAsIDCAz3CAADxj2g4gAJYh
+QQ/PcIAA3NYMgBfoz3CAADwuAJCB4AHYwHgMuB8IgQ8AAAAQiiDJA84Mb/iKIQcOBgkgAADYJvBO
+DY/8z3CAAOgmAICe6M9xgACw7QaBRiBAAQahz3WAANQHAIUlCJEAiiBJBZIMb/iKIYgEIIWKIIgE
+Tgtv+gTa1gxv+gTYqg2P+i0CT/HxwOHFCHXPcIAAiC4EgCCAiiDJDFoMb/g2uYogyQxSDG/4IoXP
+cIAAwGUAgEIgAIDKIGIAh+jPcYAAhEIJgQHgCaHPcYAAsO0GgYK4BqECDK/zBtjPcIAA3NYMgBbo
+z3CAAPw+AoAS6M9wgAA8LgCQgeAB2MB4DLgRCIEPAAAAEOoIIAAA2BDwz3CAALDYA4iK6IogkA7a
+C2/4iiFID04Mr/4C2IUBT/HgfuB48cDhxQh1z3CAAIguBIAggIogCQ6uC2/4NrmKIAkOpgtv+CKF
+z3CAAOQvA4AYiB8IEQEKIcAP63KKIMwPiiPKBUokAABJB2/yuHPPcKAALCAwgM9wgAA8Y0oNIACW
+IUEPz3WAANQHAIUjCJEAiiBJBVILb/iKIQoIIIWKIAoIEgpv+gTalgtv+gTYiiDKATYLb/iKIcoI
+AdnPcIAA/D4ioM9xgACw7QaBRiBAAaYLr/wGoUYMj/rJAE/x4HjxwOHFCHXPcIAAiC4EgCCAiiBJ
+DvIKb/g2uYogSQ7qCm/4IoXPcIAA5C8DgBiIHwgRAQohwA/rcoogDQ+KI4oPSiQAAI0Gb/K4c89x
+gACw7QTYBqGKIMoBrgpv+IohywHPcIAA/D4B2SKgz3CAALDYA4iL6IogkA6OCm/4iiGLAgILr/4C
+2GIKr/MG2FoKr/MI2DEAT/HgeM9wgAA8Y9kDAADgePHAQgqv8xPYz3CAAIguBIAggM9wgACoICCg
+0cDgfuB4CHIA2FUCr/cQ2eB4CHIB2EkCr/cg2eB4CHIC2D0Cr/dA2eB4CHFRAq/3ANgIcUkCr/cB
+2AhxQQKv9wLYTQJP8vHA4cUIdc9wgACILgSAIICKIEkN7glv+Da5iiBJDeYJb/gihc9wgADkLwOA
+GBCEABsMEQEKIcAP63KKIIwPiiMJA40Fb/JKJQAAz3CgACwgMIDPcIAAPGOKCyAAliFBD89xgACw
+7QaBRiBAAQahz3WAANQHAIUlCJEAiiBJBYYJb/iKIYkHIIWKIIkHQghv+gTayglv+gTYngqP+iEH
+D/HxwOHFCHXPcIAAiC4EgCCAiiCJDU4Jb/g2uYogiQ1GCW/4IoXPcYAAsO0GgYK4BqHPcIAAsNgD
+iIroiiCQDiYJb/iKIQkNmgmv/gLY9giv8wbYzQYP8eB48cD/2c9wgABMSjIPb/8gqPoPj//RwOB+
+8cAyDg/xz3WAAFg2ABUQEIwgw68I8oogDA3aCG/4iiGHAiHwkujPcIAAsLtoEAQACiHAD+tyz3AA
+AIcMiiPHA30Eb/IKJQAECHGCIQgAz3CAANC3DiBAAJoPL/GKIQgJGnDPcIAAzL8TEAKGjCLDj//Z
+BvIcGBiEIKUM8BMYGIQgpQDZz3CAAOAGJKA2Dk/4BQYP8QHZz3CAAOAGJKAlBk/44HjxwOHFAN2m
+DW/4qXB6C6/yqXAmCI/zwguP8s9wgADQJukFL/GgoOB48cD2CM/3ggnP92YIz/fRwOB+4Hjhxc9y
+oADIH6QSAwDPcYAA4AYNgRBzwiMGAET3YngTe7+CDoG7Y3hgDqEB2EoaGADgf8HFz3KgACwgZoLP
+cYAA4AYOgWJ4DqEQgmkFL/YNofHABg0v8UokQADAgaCAAd/RdcIkAgHRdaGBYYDCJ84TAd6xc8B+
+sXMB28IjzgBMJACAzCYikMojYgAK9IXrgObMJyKQA/IC2wLwANsU6yELUAA5C5EAoIDAgQGAIYEC
+JY2ToKIDIEAAAaIQ8ADYAKIBogzwoIHAgCGBAYACJY2ToKIDIQEAIaLlBC/xaHDgePHA4cUmgECA
+QiICgMoiYgCA4sohwg/KIsIHyiCCDwAANhHKI4IPAAB3AMokIgDQAmLyyiUCAWCBFQtAAEKAooNC
+fQ0NUxBgg/ULQYBBgwGjYKBBoACiRICmgEAlAxYXCl4ARoUG6qKCQoBCfQcNUhAAo0SApoBAJQMX
+FwreAEeFBuqigkKAQn0HDVIQAKNBgAsJgQDqCK//BoBVBA/x4HjxwNYLD/EIdgCAQiABgMohYgAA
+2CbpJoZBhgHfMHIghkGGQaEgogCmz3Ct3gIAAaamhsB/BoURDgEQqXBWCCAAAtkGpaaGB4UPDgEQ
+qXBGCCAACNkHpQXvhgiv/waGAdjdAw/xIIAQccohIQDgfyhw8cBmCw/xCHWKD+//KHYId8Kl4g7v
+/6lwtQMv8elw4HhAgBUKAABkggsjQIAF9ECC9woBgADa4H9IcOB4z3KgAMgf9BIAALzbGLsEIIAP
+//8A8PQaAAALyGV4CxoYMBUa2IDPc4AAiC4IgwDZIKAMgyCgCYMgoA2DIKAKgyCgDoMgoAuDIKAP
+gyCgz3AADA8ApBpAAA6iD9gMuBCi4H7gePHAygoP8c91oADQG9OFEQ6eFs9wgAAoZkoJAAAPDt4W
+z3CAAEhmPgkAABEOHhfPcIAAaGYuCQAADw5eF89wgACIZiIJAAARDt4Xz3CAAAhmEgkAALzYGLgT
+pd0CD/HgePHAZgov8QDbCHfPdqAAyB+kFgAQz3WAAIgu+GCkHgAQAdgTpiiFDIVAgQCAACLCg0Ch
+LIUBIMAAAKEC2BOmKYVNhQCBQIIAIMCDAKENhQEiwgBAoATYE6YqhQ6FQIEAgAAiwoNAoS6FASDA
+AAChCNgTpiuFD4VAgQCAACLCg0ChL4UBIMAAAKEEhQCA8g8v8+lxJIUAoQWFAIDmDy/z6XElhQCh
+BoUAgNYPL/PpcSaFAKEHhQCAyg8v8+lxJ4UAoQ/YmrgOpg/YDLgQps9wgAAIZp4OT//PdYAAKGaS
+Dm//qXCODm//QCUAGIYOb/9WJQASfg5v/1YlABPVAQ/x4HjxwGYJD/EIdyDwAIYhhiGgAKEA2ACm
+z3Ct3gIAAaamhgaFEQ4BEKlw+g3v/wLZBqWmhgeFDw4BEKlw6g3v/wjZB6UjhmB5yXCuDe//6XAK
+JgCQCPIDhyCAAoYieK8IUoAODm//6XBpAQ/x4HgP2Jq4z3GgALAfFaEP2Ay4F6HgfvHA2ggP8c9y
+gADk2D+COnCqwQDYIQneAs9zgADkL2ODdINIEoEAwN1keYYh/w4iuTp9BPAU3QLYihIBAQJ5EoIE
+4Y4OL/YA2p4JYAACIE4DA9jPcaAAyB8Toc91gACILgiFAIBCwAyFAIBDwAmFAIBEwA2FAIBFwASF
+4IAFhQAQEgBAEQAGHmb8EQAAz3CAALi8ANlAgAGAACKCgwEgQABAwkHAi3YfCVEg0g1P8oTBGnDJ
+cC4L7/+Gwgh2CBABIQvwgsHJcB4L7/+Gwgh2z3CAALDtJJDPcoAAsO1lggbCBLsXC6QAQCmAAhkI
+hQACev8IhIAF8LILYACGwAhyRsItDpEQ6XD6DS/zSHEId0pw7g0v8wbBBsJacATDB8EFwAAiwoAB
+IEAARMIW8JXu6XD6DS/zSHEId0pw8g0v8wbBBMNacAbBBcAHwgIjQ4BEwwMggABFwBsOUBDPcIAA
+5C8DgBiIhODMJiGQANgC9AHYLyAHoEP06XCGDS/zA9kIdkpwfg0v8wPZAMEIdwHAQCHBgEEgAABB
+wATAQMEFwUAgwIBBIQEARMA+CGAARcEXCREgBIXAoAiFAMEgoAyFAcEgoCcJkSAEhcCgCIUAwSCg
+DIUBwSCgBYXgoAmFBMEgoA2FBcEgoBcJUSAFheCgCYUAwSCgDYUBwSCgiiAHDqYJL/gKcUwgAKAB
+2cB5z3CAABCxNKghB+/wqsDgePHAyg7P8KXBCHYCiyh1mHBkwACLABIGAREcAjB5cAISBwEEEggB
+EBQAMeSSBhIFAQAgyQMAkS8hSBIHIEACCgkgABB4ACCKAQGVLyKIEgcggAL2CCAAEHgAIMYBApUv
+JogBByCAAeIIIAAQeAAgBwIDlS8nyAEHIMABzgggABB4ACUFAASVLyVIAQcgQAG6CCAAEHgfZwWV
+8H/neKoIIAAQeCaVIXAQeAd5PHoPuSV6UHoAIoECMHkAHEQwR5Unelx5D7pFeTB5ACGCAVB6XHkC
+HIQwD7pFeTB5ACHCAVB6XHkEHIQwD7pFeTB5ACFCAVB6XHkGHIQwD7pFeTB5P2fwf/x5CBzEMw+/
+5XkweThgaXHGuYW5CLkFIcECILYQeCCVChwEMCd4HHgIuAUgAAEBtgDAAaYBwAKmAsADpvUF7/Cl
+wA97SLgPeM9ygAAAfPQiAABAKAECSLgFefQiwAAweeB/J3jgePHAz3KAAPhlIIKA4cohwQ/KIsEH
+yiCBDwAANBHKI4EPAADjBsokIQDAAyHyyiUBAQGiAdrPcaAAyB9QoUoZmABIGRgA0cDgfs9wgAD4
+ZeB/AIDgeM9xgAD4ZSCBANiD4cwhIoAC9AHY4H8PeAoiAIDxwBfy4g/P/4DgyiHBD8oiwQfKIIEP
+AAAzEcojgQ8AANwGyiQhAFQDIfLKJQEBz3CAAPhlQKDRwOB+4HgIcyhyz3CAAIguBIAAgAIggA8A
+AgAASQAgAGhx4cVTIEIFBCCND8D/AADPcIAAsO0FgAIggwAEIYIPwP8AANW5Inile0V4EHPKIK0A
+BfcQcwDYyiBmAOB/wcXgePHA4cXYcLhxug/v/5hyCHXIcLIP7/+IcRB1yiCtAAr3EHUA2MogRgGY
+D+b/yiEGAaEEz/AA2M9xgABs1gWhBIGguAShsQYv8wPY4Hg2uDa5MHDWIIUPAACAAOB/InjgePHA
++gvP8AonAJDPdoAAsO3PdYAAKGYP9M9wgADAeslxRggv/xTaFggv8qlwQCUAGBHwGQ+REFoJT/LJ
+cSoIL/8U2kAlABgM8Mlw9gkgAQXZqXDqD8/xz3CAAAhm3g/P8QSWCrgFpgaGhiDDDwamIgsgAOlw
+ig7P8ekDz/DxwKHBCHOSCi/3i3CC4ADYBvIAwBBzAdjCIA4AocDRwOB+4HjxwADZz3CAAAQ7Gggg
+ACCgz3CAACBjcg+P/9HA4H7geADZz3KAAKwHI6IkoiWiJqInoiKiz3CAAARmIKDPcIAAqGYgoDGy
+MLLPcIAAcETgfyCg4HjxwM9xgAAEOwCBmugB2AChANnPcIAAqCC2D+//IKCKIIcOog3v94ohjwfP
+cIAAADAQiIPgZAkhAMogYQHRwOB+8cDGCu/wiiDHD6TBdg3v94oh0gISC4/3gOCsCQIAz3CAAKgg
+AIDPcYAAcESODu//IIHPdoAArAcwllGWWWEwcADdxPcCIE0AAoaV6BPtz3GAAKhmAIG4YAChz3GA
+AARmAIG4YAChz3GAALhHEoG4YBKhz3CAAIwGAIAA3w0IUQDPcIAABGbgoIogCADPcYAAqGbyDO/3
+IIHPcIAABGYAgELFQMDPcIAAqGYAgIt1QcAChhDZotoe20PAqXBCDW/+GLsA2K4IL/mpcc9wgACo
+ICCAz3CAAHBE4qbxtiCg8LbPcIAAjAbgoEYLL/MT2M9wgACoZgCAHwhUAWIIIAAB2FoKz/rPcYAA
+sEgdgQHgHaEE8EoIIAAF2BUC7/CkwOB4FdgA2s9xoADIH28ZGADg2JC4EKEJ2LAZAAC0GQAAeNhC
+GRgAANiauA+hpBmAAM9wAAwAGQ6h4H7PcoAAIGMmgiOBYbhggc9xgACoICCB1bl5Yc9zgACw7WWD
+BSs+ACdxx3EAAAAQ3QWv/0hw8cDhxc91gACsBweFk+jPcIAABDsAgB8IUQDuCU/4FwiQBs9wgACI
+LgSAAIAFpQHYB6WBAc/w4HjxwOHFz3WAAKwHB4UZ6M9wgAAEOwCAKwhRALYJT/gjCJAGz3CAAIgu
+BIAAgAalygzv/yWFMJU4YBC1ANgHpT0Bz/DgeM9wgAAEOwCAFwhRAM9wgACILgSAIIDPcIAArAcj
+oOB+8cDPcIAABDsAgCUIUQDPcIAAiC4EgM9ygACsBwCABKJyDO//I4IxkjhgEbLRwOB+8cBmCO/w
+iiEIAAh1z3CgAMgfMKAB2UEYWABWCQAAz3aAALDtA4YlhtW4MHDKIc0PyiLNB8ogjQ8AADURyiON
+DwAAmwDKJC0ArAbt8colDQGyDQ/yog0v8gh3GnCA5cwlYpBK9M91gACILgiFIIYgoAyFIYYgoACF
+JYYgoASFI4YgoFoIj/flCBAAz3CAACwzCIjZCNEBBYXAgACABCaOH8D/AABTIFEFBIUAgAYO7/IK
+cdW4RYUFfgLbwKLPcqAAyB9zosmFAiBBhGCGTYVAggoABABCKcAHB/Aklwq5AiFBBBlhANgCI0OA
+AyIBAGCmDYU78HUNkRAEl891gACILiGFCrgAoc9wgADkLwCAxBAABlEgQIEJhSDyz3GAACwzKIk5
+CdEBz3GgAMgfAdpToSiFANsggUyFAiEBhECCIKANhQMiwgBAoASFAIBmDe/yCnElhQChCvAghyCg
+DYUhhyCgI4YFhSCgXQeP8ADZlrnPcKAA0BszoOB4AwueReB+z3CAAChmJ4AG6QOAQIACgUJ4BfDP
+cP8P///gfs9xgADkLySBKIEEIb6PAAYAAKHBBPQTCR8ACfAEIL6PAAAAGAPyANgC8AHYz3GmAKQA
+F6Hgf6HA8cCeDo/wz3WgALRHCHYG8DoLr/eKIIkMcRUAlgQggA9wAAAAQSg+hfT1iiD/D28dGJBr
+HRiQA9gPuM9xoADIHxMZGIAFhlkdGJAGhlodGJAHhlsdGJAJhlgdGJAIhlcdGJBAEQEGz3GAAAhn
+IIEEIIAPAAAAgBEJHwCA4AbYyiDhAQPwANjPcYAA5C8jgSiBz3KAAAAGJQkeAE8gAQKNuZe5JqIF
+IIEPgABAOieiBSCAD4AAwFMQ8AUggQ+AAMAkJqIFIIEPgAAAPieiBSCAD4AAgFcIooQVAJYJogaG
+dg5v9CGG5g7v/wGGIQaP8OB48cCiDY/wOnDPd4AAcOMMj4Yg/wFCKNAAz3agALRHCnUF8DoKr/eK
+IIkMcRYAlgQggA9wAAAAQSg+hfX1QxYAlkYgAA1DHhiQVxYAlry4v7hXHhiQXxYAlr+4Xx4YkADY
+nrhTHhiQ4HgA2FMeGJAMj2AeGJA6DE/8z3CAAKA7IIBgeQTYFehMIUCgrA2h+sogQQPPd4AArGkA
+jxcNABDPcIAA2Ds2gGB5ANgAHwIUwg4P8kMWAJZFIAANn7hDHhiQlwkQICMJUCBtCZAgCiHAD+ty
+iiBaCoojjQJKJAAAVQPv8QolQATPcIAA5C8DgBC9m70yIIAPAADYAp+9gOAB2MB4D7ileF8eGJAG
+8E4Jr/eKIIkMcRYAlgQggA9wAAAAQSg+hfT1iiD/D28eGJBrHhiQE/DPcIAA5C8DgBC9MiCADwAA
+2AKfvYDgAdjAeA+4pXhfHhiQBsiE4OwO4fLKIKEEoQSP8OB48cBGDI/wCHUodtYNr/ABgKCFELlB
+LQAUOGDGDa/wyXEQubB4OGC6Da/wQC6BEoUEr/AocPHAEgyv8ATZANjPdaAAtEdLHRiQANqQuncd
+mJAB2ncdmJDPcqAAhEQYogDakbp3HZiQAtp3HZiQz3KgAIhEGKIA2JK4dx0YkHcdWJCA2HcdGJAA
+2J64VB0YkADYnLhUHRiQz3aAAFQGyXBGCS/yHNnPcIAASAY6CS/yCtnJcCEdGJDPcIAA1AQQeEkd
+GJDxA4/w4Hj8HAi08cAfCHQBGnAKIcAP63KKINoLd9sKJAAE5QHv8bhziiAZChIOr/cKcc9zgABU
+BiSDaHA0eCCQHwkeAhATBAAAEAUBCiHAD+tyiiDaCrEB7/F+2ySDAeEkowDaCQkRAkSjLyEHBIUh
+DAAgsJDZz3CgAPxEGLkioAuTAeAQeAuz0cDgfwQUEDTgePHAiOjPcIAAKLaGCC/yJNnRwOB+8cDe
+Co/w3gtgAQh2cg6AAM9xoADIHwh1QNgPoUARAQYweT4ML/jJcCEDr/CpcOB48cCqCq/wSiQAcs9w
+oACIIADeqCBAD3UO0BGggM9xgAA0189ygACw7dZ5aIlHgnpiz3OAAADY1Hud7QAmjR+AAPjX+I0T
+D5EQ4JP7fyORgL8kf+CzBfALD1EQIpEgswDZOK3PdaAAyBz6hSCT5HksswTwLJMJCUUDWWEE8Kyz
+uWKJIc8PBBhQAAHmANnPcIAAsO2BAq/wJ6DxwAAWBEAHGhgxABYFQAEaWDEEEoEwnOHKIsIHyiCC
+DwAA3A7KI4IPAAD0CmwA4vHKIcIPIgjgAA7Z0cDgfuB48cDOCY/wGnANyM93gAAo2PAnARDPdYAA
+iNcDEgI2CBhEIAGSgOANEgE2AN4O8hQlQxCAEw4H1Q4QEADegBucA/AbhAPgG4QDFCVDEMCzAYI9
+CJ8DyLPQG4QDEIrPcYAASOUCuBZ4G2FlkyULcgA4YGG7ZbAQinJodnt6YUWSeWGG6iaRUSFAgCAP
+gvENyAAggQ+AAKTXxKnMqdSpz3GAADTXFnkUfSKRwB2EExV/eB1EEAMSATbApwGBBCCADwAAAGAt
+CIEPAAAAIBCJz3GAAEjlArgWeABh7bjKJmIQz3CAABwv1HggkBDhILAD2c9woAAUBDCgGg1gAQpw
+2diSC6/3ARIBNj7wcBINAeATAQECIU4DDw2EE8J9ongQeIAbHADPcKAA1AcPEA6GAN3wG4QDcBIC
+AcAbRANCeTB54BtEANATAQEB4TB58BMFAdAbRABTJX6AyiHCD8oiwgfKIOINyiOCDwAA5w3KJIIP
+AAD+AOgGovHPICIDA9kTGFiAsQCP8PHAQgiv8ADYz3GAAMxmAKHPcIAA/CEBgKPBEOjPcp8AuP8d
+os9xgABoLgSBAeCzuLW4uLgEoRaiDMzPdaAA1AdRIACAA9ggHRiQU/IUHRiQAxIBNgAWBEAHGhgx
+ABYFQAEaWDEEypzgyiLCB8oggg8AANwOyiOCDwAA9ApYBqLxyiHCDyhwDg6gAA7ZAxIBNlCJUyLA
+AIYi/gMQqUS6ArjEGYIAFnjPcoAASOUAYs9ygADkLy24wLjwIgAABKK5EAIGz3CAADTXQKAPFQCW
+tBkEAAbIpg1v9g0SAjYDEgE2khEAAaIL7/uUEQEAL/BKJEAAFB0YkQAWAEAHGhgwABYFQAEaWDEE
+ypzgyiHCD8oiwgfKIOIJyiOCDwAAZgK4BaLxzyAiAwPItBAAAQ8dGJDL2NoJr/cNEgE2AxIONpQW
+ABAPCF4CHgwP+AMSDjYNEgM2z3eAAIjXFCfBEAiRouhQjs9wgABI5XV/ArpWekBgmBYCEC24TqdW
+p8C4z3KAABwv9CICALwehBDQEQABBCKCDwAA8P/DuEV40BkEAAbw0BEAAbweBBAB2KAeABB6DK/7
+0I6A4OoDIQADEgM2BshRIICB2gMCACGDEwmeBpDYkLjPAyAAoBsAAAK+z3CAAEjlQCCCA9Z+zmLE
+E4IAEwqAA5HYkLirAyAAoBsAAMqDz3KgACwg8IKMJv+fDPLCfxUPhR8AgAAAh9iQuIMDIACgGwAA
+EBOEAEAsjwD2f+ZgBCa+nwAAABP4YFnyEQ5eEovYkLhbAyAAoBsAAGcOHxMlkJzpB8gEIIAPAMAA
+ACEIgQ8AwAAAEdgUuKAbAADh2JoIr/eIcQMSAzYh8IjYkLigGwAA4tj28YIIr/fj2AMSAzakEwAA
+tLikGwAAkhMAAae4khsEAJ4TAAGnuJ4bBAAF8IXYkLigGwAAz3CAAOQvA4AYiITg2gICAM9xgAAQ
+sQyBUIsPIIAADKHPcYAAVAcAgQHguwIgAAChwpAzE4AATQ4OEAfIBCCADwDAAAAxCIEPAMAAAAiL
+KQhTAKQTAAC0uKQbAACSEwABp7iSGwQAnhMAAae4nhsEAArwEQmeAY3YkLhrAiAAoBsAAAbIUSAA
+gBYCAQAeDo//AxIDNghyqBsAAM9wgACILgSAsBMHASCAVSdABtW5z3aAALDtCwkFAAXYB6YFhiJ4
+jCAJhsohJQCkEwAACSGBAPK4rBtAAObymBOBAMO5B8g8eQQgiA8BAADwDRIGNs9wgAA01xYggAHF
+kKwTAAAJIIADgBMOAX4TDwHfZ892gADkL8SGRhYOEf5mCCCAA8J4mBMOAEEoCBPovgDfhvJEJg8W
+BCaBHwYAAAAjvzG5Aef5Yc93gAAAfjInRBBBLoESBCaFH8AAAABSIQEAQS2FBTInTxHAuQO5GOGA
+d4XnyiGNDwEAiQ3VIc4DpBMPAEcPHhUieIQTAQEieEggAABCuEEuTxPAvwS/9H/Jcca5SSHBBTR/
+z3GAAIh18WEPDt4SQSkOARQmQRAFKT4AQSkAcgDfWPBBKIQAQS5AE8C49Gj0f8lwxrhJIMAFFH/P
+cIAAiHXwYA8O3hJBKA8BFCcAEAUoPgFBKQByhBMPAflhEOFBKYQAQS5BE8C5BLk0ecl3xr9JJ88V
+9HnPd4AAiHUxZw8O3hJBKQ4BFCZBEAUpPgFBKQ9yIPBRJkCSyiDCAxr0A+DPdoAAYHXwJkEQIrgF
+KT4AL3BTIA4A2GCEEw4BHXgn5iK+BSm+Ay93UycBED9n/X/PcaAAxCzvoe6hQCgOFp6+QC4PBeV+
+xXjAGwAACqHPcYAA9EYB2AChBPBPgrATBwENCsUBBdgYuKAbAADPcIAAWAdBgCCTCSGBAACIDwhR
+ABkVAJYQcQDYAvcB2IvoA9gYuKAbAADPcYAANEgTgQHgE6GgEwAABCC+jwEBAAAa9JITAAGUEwEA
+kBMCAbITAwH+DyABSiRAAAMSAjagEgEAJXigGgAAztg2DW/3ARIBNgMSDTagFQAQBCC+jwEBAAAF
+8lYNj/bXA0AAA8zPcZ8AuP8YoQbIUSAAgMogISB38qQVABBnCJ4Ez3GAAPRGAIGA4ADYMfIA2ACh
+gBUAEX4VDxEfZ89wgADkLwSARhAAAR9nAwmeRc9woADELMuA39i+DG/3yXFTJoEU/r7MISKACfKY
+FQAQ1g9v9QDadLj4YALwANgDEgE2CPANyM9xgAA01xZ5BZGpcUogACDPcqAAyB+sFQ4QiOikFQMQ
+sbukHcAQBPAJJg4QA9sYu2+i+BIDAKFrCCZOE2J+oBqAAwDbmLtuogvopBEAAPG4DczFIKIEzyBh
+AA0aHDABkQjoDcjPcoAAiNj0IgAABegBgQ8IngMNzIC4DRocMMzYEgxv9wYSATYqDy/7A8gDEgE2
+fJFEIwAD0wgQAQ3Iz3KAAIjXFHrAEgABZXhhgRyxFQteA1QRAwG8EQ0Bw7ule1QZxACGIP0MjCAC
+ghj0EIkCuBZ4x3CAAEjlZZAhC1IABpAdCF4AEwtRAGARAAGEuGAZBAAE8ByRjbgcsQGRJejQEgAB
+VBEDAcO4BXtUGcQAgBIAB4ToHJGKuByxpBENABUNHhJoEQIBUyPAAFhgEHhoGQQAEw1eEmoRgADD
+u3hgD3hqGQIAB8jPcoAAmNgEIIAPAMAAABEIgQ8AwAAADhoEBAXwANiLuAeyAZET6A3Iz3KAAIjX
+FHrQEgABUyDAgAny8BICAc9woACYA16gthmEAKQRAAAEIL6PAAAAMAj0hiDljxgNYgDKIEIAngkA
+AQ7oLgyP/QPZz3CgABQEI6CKIBAAiwFgAAYaGDADyKQQAAAEIL6PAAAAMM7yEwgfBS4KT/XW2K4K
+b/cGEgE2A8ikEAEAqQkeA5oKb/fN2MoMr/IB2AMSATYdsc9wgADkL8SA4gqv+ADdGQhRAM9wgAA8
+LgCQgeAA3c8lIRPKJQIUA9jPcaAA9AcFoYUlAh0NcKCwA8hdkA1wQLADyE+AEQoeAEKGDXBAoEaW
+B/ANcECgA8hAEAIBDXBAsAPIUYANcECgA8hIEAIBDXBAsBAZAAQDyJQQAABRIECCSAzB9zYNj/kG
+EgE2twBgANDY9glv99HYAxIBNgGBHwgeBs9wgABgBwCQHbHPcIAAZAdAgAGAUaESoQfwAgyv8gLY
+AxIBNh2xVgvP/QPIJgyv/3gQAAGA4G4AQgDS2KoJb/cKcQMSAzYBg5gTAQCUG0AAKwgeBs91gABA
+8qlwVg2v+WhxENgMGhwwDcyjuA0aHDDqDK//qXAvAEAAnhMAAb4TAgGSGwQAkBuEAAYIYAGCEwMB
+CHXP2FIJb/epcR8NHhYD2c9woAAUBCOgiiAQAAYaGDD92OsHIACpcQPIpBABAIYh5Y9MC0IAAxIN
+NqQVABD0uI4CAQBwjc9ygAAo5HZ6z3CgACwgD4CEFQ4RIJIIIIADwniwFQ4RZObRcAQBLgAJIEEA
+ArvPcIAASOV2e2BgBCCOD4ADAAA3vmW+gObKJgwUBCCADxgAAAAzuA3gAd9KIgAgDyISIAMSkQCm
+Cq/2mBUAEAkggQSYFQAQ7bjKIMIjQCgDIXR7CHLGukkiwgVUe89ygACIdXJiDwjeAkEqAAEUIIIA
+KLrYegNqBCCADwAA/P/PcoAAMO4Dos9yoADELA2iMBpABAfIDRIDNgQggA8BAADwLLgYuJ24FLtl
+eAV5KqLPcoAAqEkIggHgCKImCG/33tgDCZ5Fz3CgAMQsy4Df2BIIb/fJcQQmjx/wBwAANL9TJoEU
+EQ6eFw0PlBAAlRDgHQhEAAMSDTZKIAAgz3GAALBIAYEB4AGhANks8KQVABD3uNUhwgPPdoAAMO4g
+puKmmBUAEOoKb/UA2gGmz3GAALBIAoEB4AKhAIH4YAChz3CAAOQvA4AJgA8IXgANzEYggAINGhww
+AxINNgHZSiAAIJIVABE56ZQVARDPcoAAMO6iksCCQMHPc6UArP/PcoAA5C/Yo0SCVhICARTiQn0D
+5SK9umW6YkgiQgAFukUiQgNWo1EgwIHKIIIvAACAACDABCGBDwAAACAluQUgAAQleIm4jrgZo89w
+oACoIAiANg+P8c8FAACkFQEQp7iSHQQQtLmkHUAQlBUAEJAVAxHPcaUArP9AwLAVAhF4oc9zgADk
+L2SDVhMDARTjYnoD4iK6W2J6YkgiQgAFukUiQgNWoSDCBCCADwAAACAluAUiAgRFeIm4jrgZoc9w
+oACoIAiAA9nPcKAA9AcloA3ImBUCEM9xgADA1xV5QKGkFQAQCHSEJBqQGPQEIL6PAAAACQnyIgmv
+/alwngmv/QPIDPBwFQERz3CgAPQHJ6DPcKAAyBwcGAAEAxIBNtPYSg4v96QRAQADyKQQAAATCB8B
+sg0P9dvYMg4v9wYSATYDyAGAEwhfBlYIr/IE2AMSATYdsXYOb/gA3hkIUQDPcIAAPC4AkIHgAN7P
+JiETyiYCFM91oAD0BxmFD+gKIcAP63Iz2Iy4z3MAAG4KCiQABKUBb/EKJQAEA8gckMV4DXEAsQPI
+PZANcCCwA8gvgA1wIKADyEAQAQENcCCwA8gxgA1wIKADyEgQAQENcCCwAxIBNhyRhiD/DEEIEAEz
+gQ1wIKADyFAQAQENcCCwA8hUEAEBDXAgsAMSATYckYYg8w+MIAyACvQ2gQ1wIKADyFwQAQENcCCw
+AxIBNhyRhiD9DIwgAoIc9GARAQENcCCwAxIBNqQRAAAlCN4FOYENcCCgAxIBNqQRAABkGQAEuBkC
+BLoZBAS3uKQZAACkEQAABCC+jwAAQAgG8gGB8LiEDkLyD/A6gQ1wIKADEgE2pBEAAIYg848F8juB
+DXAgoAHZK6UD2kilz3OAAHxEDRINNkCDANg5DYAQz3KgADguRYIEIoIPwAAAAB8KgA/AAAAA9dgF
+uM9ynwC4/xqiu6Jp2Bi4GaIocAkIUQCgo89woAD8RD2AGYBpCN8CBCG+jwAGAAAu9OB44HjgeFUI
+XkMDyM9xoADIH7AQAAGWIEEPHqEQ2A6hAdgVGRiAcgngAEHYLQheQ89wgADMZgHZIKADyKQQAQCa
+uaQYQADOC2//AdjPcYAAqEkNgQHgDaEGDQAAGnDU2BYML/cKcQQgvq8GAMoAIvLPcIAAWC4DgIDg
+yiHCD8oiwgcr2Mojgg8AAD8EzyAiAwX1z3GAAKhJEIEB4BChz3Gg/ugAz3CfALj/NqCHAgAAA9nP
+cKAAFAQloAMSATYBgVEI3gCkEQAAz3KAAOQvUSAAgASCA/K7kATw3g2v97qQz3GAAHDjEYktCB4A
+A4IwiRC5MiCADwAA2AKfuYDgAdjAeA+4JXjPcaAA/EQNoQTwdhENAQ3MUyBAgA7y1dhaCy/3BhIB
+NgbIBBIBNlYL7/UNEgI2z3aAAEDyyXAGD2/5AxIBNgPIBhIQNs93gAAYL6AQEQAB2ACnig1v/6lw
+ANkgpwrohiB+j+XyA8igGEAEBhoYNAMSATaSEQABDwieAqq48grv+pIZBAADEgI2fhIBAYISAAGA
+EgMBOGAbYw3Iz3GAAATYFXkJgXB7G2NpoQGC4wjeANfYvgov9wDZygxv+YDYBhIBNgQhgQ8CAAEA
+DRICNxcJgQ8CAAAADwheB08iwQANGlwwBfCjulB5DRqcMAMSAjYBglkIngFPIcACjLgQeQ0aHDAQ
+ijMSggAEuEV4z3WAADDAz3KgADguRIIGtRHwLy6BEE4mgxcA3g8mzhDGes92gADg4vQmzhATCIAD
+8urPcAAA//8EtQLwZLUI2AwaHDDPcIAAcOMRiBcIXgHPcIAAsNjWDW/9AIgNEgE3A8gBgP24zyHi
+AdAh4QENGlwwz3GAADRIFoEB4BahMfAQ2AwaHDANzKO4DRocMEoNb//JcNjYzgkv9wESATYDEgI2
+AZIJ6A3Iz3GAAIjY9CEAAAvoAYITCJ8DDcgB2gAggQ+AABDYQKkNzFMgQIAJ8gQSATaKIAQACgtv
++5gRAQADyBqQOghv+Q0SATYNzAYSATYlCN4Abgkv99fYz3CAAJjYAxIBNgKAmBkAAAbIxgzv9Q0S
+AjYGEgE23NhKCQ/32Qbv76PA8cDhxanBi3WpcM9xgACcbjYP7+8k2qlw8gxv+QMSATaeCuAAqXDV
+Bu/vqcDxwOHFAxIBNqKBIIW2Ci/+JNqO7QohwA/rclnYjLju20okAAC5BC/xCiUAAQGFgODiIAIA
+mQbP7/HABg7P75gkwTM6cADYThwYMAAWk0AAFpBAABaUQAAWkkALClIhLyJHJEwiAKHKIcoPyiLK
+B8ogig8AALUoyiOKDwAAUADKJCoAXAQq8coligRBKA4hwL5AKQEkiiCTAnoIL/fFeavuWQgQIM9w
+gAB41wOICnGGIfwHRbkmeFMgzSDguMohQgPKISEAViTMOSCs4bjKIUIDyiEhAIt0gCREHiCsUSCA
+gMogQgPKICEAi3SAJIQeAKwF8FMg/qAs9ADdhCoKIi9wunDHcIAAbMmELgQfBOAAIFAORCo+JwAh
+gH+AAPzV4IgBiJJ3uHDMIMGEIfIKIcAP63JALA0kQCsOJIfYjbiI2wUlxBOZAy/xBSWFAwohwA/r
+ckArDiTPcAAAryhu2wUmBBV9Ay/xCiUABApwLgsgAEjZViAAKSYLIAAG2QAlgC+AANjLI4CJ7oG5
+I6BOFAE2JKAloAPwgrkjoAOAhiB/DobgiiATA8oggg8AAMsEZg/v9ipxz3GAAKwGC+3PcIAA/NVA
+iByICwoBAAQZQgQAgRCIGwiBBApwTg2v/clxiiASDTIP7/ZOFAE2HgzP9KEE7++VJMEz4HjxwFoM
+7+8A2c9woAD8RHQQEADZgAQmgp8AAAAIC/QEIL6vAAYAAAf0A8ikEAAA+riH8s9wgADkLwSAz3Gg
+AMgfRhAAAR+hINgOoRkInibmDc/ziiAEAMYO7/YA2QDdPfAlCF4mZg8v8gHdAxICNghxoBoAAIYg
+fo/CJUETng7v9vzYK/ADEgE2GwjeJG8gQwCgGQAAiiAIAAYaGDCKIEQC2/EdCJ4kANiXuKAZAACK
+IAgABhoYMIoghALP8aQRAABTCJ4GBdgQuKAZAACKIAgABhoYMADdz3CfALj/WBgACApwFgygAMlx
+A97Pd6AA1AfSp3YPD/3PcIAAGC8AgIDgzCUikAP0Ex+YkwPIoBAAABjwCerPcoAALEkQggHgEKLS
+8QohwA/rcgolAAgy2Iy4z3MAACUJsQEv8QokAAQocH0Dz+/xwKQQAQAPCV4CbguP/dHA4H4odIQk
+EpAR8g0JXwZKCI/2B/Ag2c9woADIHCmgA9nPcKAAEBQloOvx6/HxwNYKz+8KJwCQOnEA3Rby6XEv
+KEEATiCCB89woAAMLU968CCAAMK4DyUNEADYDyCAAAYhAYDv9SrtLyhBA04gjgcNGpgz9dgFuL4O
+L/fJcQ3Iz3KgABQECqLPcaAAZC7wIQAAUyDQBCmCMg3v9trYKnA+CK/1BCDBI74ML/vJcADYDyCA
+AwYlDZDZ9c9ygAB8RACCB9kNGlgwPwjQAc9woAA4LgWABCCAD8AAAAAjCIAPwAAAAPXYBbjPc58A
+uP8aozujadgYuBmjAdgC8ADYBwhRACCiz3CgABQEKqBZAs/v4HjxwP4Jz+8odkYhzQAdZTIIIAAi
+ucG+Hw5QEBMOkBAdDtEQABaAQAEdEhAAFoBAAR0SEAAWgEAArTECz++rCRAAQCHCAyS6w7kC8ADZ
+lQkVBDMmQXCAAGxuQCcDcjR7AHsAFgFABBhQAAAWAUAEGFAAABYBQAQYUAAAFgFABBhQAAAWAUAE
+GFAAABYBQAQYUAAAFgFABBhQAAAWAUAEGFAAABYBQAQYUAAAFgFABBhQAAAWAUAEGFAAABYBQAQY
+UAAAFgFABBhQAAAWAUAEGFAAABYBQAQYUAAAFgFABBhQAEIiQoCz9eB+gOHKJE1w4HjoIK0BABYB
+QQIYVADgfuB48cD2CM/vAN3PdwAABB1KIAAiqXYVIoAzDhABBgDYz3KgABQEyqKooieiBKI9ZYjh
+aLnKIQ4A7gwv9+lwQiBQICDn1Qh1oAHmEQHP7+B/ANjxwJoIz++hwRpwSiMAIAAcwDSKIAcJUgvv
+9gpxz3CAAMRpMiASBM9wgAC0BtGIEogQdlIBCQBqdwohwCQC8Hp1RC6+EwAiQC7PcYAAYPMzIQ0A
+u30vCDMmrX3PcYAA1CcagTuBJHgfCB4Cz3CAALQGC4iLc8lxcgiv96lyAMACfa19ACaAH4AAtAYc
+EMEAz3KAAFBKAIoF2i4PIACpc89xgAD8ZiCBAN1KJIBxInioIEAFc250e7V7z3KAAPCteWIhiXpi
+CukjCQAAKQhCADENUxEB5a99C/BCJZEQLyFHJGG9r30Q8AMSzwAA2Wp1DfCA5UohACDKJWEQBvJC
+JVEQLyFHJAHZLenzbvR/FSdBE89zgADwrTpjACNFABUnTxT5YyGJQYr7YzUJowDjiwIiRAADFYIA
+BL/wfyJ4BLovJAgBAieDEGx4LyBGDhoJ7++IcQ54An8I5+5/RL/tfwsIEiYK5+1/yXAKcaoMIADp
+cgHmz3CAALQGEojPfhB2wgbM/3EHr++hwPHAHg+P7wh2KHVIdxpzT3kQuQ94CLgFeYogRwjCCe/2
+pXmA58wgIqAI8ixtL3nPcIAAtAYzqAfwz3CAALQGs6ipcc9ygAC0BrSqwKr1qhYaAgQOCiAAyXAA
+EIcA4YjPcIAAtAbRiBKIEHaeAQkARC8+By9xhC4DEQokQA4AIUMOCiGAH4AAaK4hc0AvggBUeoQu
+ARUKJUAOACJNDgomgA+AAGTyACZIAwAmjR+AALQGTCcAgMwnYoAm9BoTwAAA2RitGxPAAEokgHEc
+rRiLIB0CEKggQAYUIEAQQYizbrR9NX3HdYAA8K0AEMAAQK0VI0IAAa0BEsAAAeECrQCKL3kDrXrw
+ARPAAJjoANpYrVytIB2CEEokgHEA2aggwAMTbhR4NXjHcIAA8K1AqEGoQqhDqAHhL3lg8Hy5ACRE
+AGy6ACJBAQAhhQEAJEACGog6i/oIIADpchitACRAAhuIO4vqCCAA6XIcrQAkQAIYiDiLACREAtYI
+IADpciAdAhAA3UoigBEUJUsDFCBJEwETgBABEYEQtgggAOlyM240ebV5x3GAAPCtAKnYcQATgBAA
+EYEQmgggAOlyAR4CABUkSwMVI0kDAROAEAERgRB+CCAA6XICHgIAABOAEAARgRBuCCAA6XIDHgIA
+QiJKEAHlmQp1kK99AebPcIAAtAYSiM9+EHZuBsz/ANnPcIAA+GZ1Ba/vIKjxwOHFz3WAAFBKiiDH
+Cb4Pr/YghQCFz3GAAPRmIIFNaDBywCBsAcwhDIAkCwkAWQWP7+B4AnkteUx5ViEBcke5OGDgfw94
+4HjxwLhxNQhRAAkNUgAdDdIDCiHAD+tyz3AAANcUiiOIAi0D7/BKJAAAQC2BAGS5ACGAD4AA0B0d
+8M9wgADIJTIgQQGMIcOPyiHBD8oiwQfKIIEPAADYFMojgQ8AABAC8ALh8MokIQDPcIAAACA1eNHA
+4H7gePHAz3KAAMYGCmqiCSAAKWoGDgAAzggAAM9xgACYfiCBz3CAAJQcIgggAAHaz3GAAJR+IIHP
+cIAAwBsOCCAAANrRwOB+8cAGDI/vGnBId5EJcgAA3TpxFSBAI0CIAogM7892gADQHRV+ArgUeMdw
+gAAoHQvwz3aAAAAgFX4CuBR4x3CAAAgeIYhLCR4ABRDBACKuBhDAAAOu6XC+DCAASHEAroDgzCBi
+gMogIQAS8kQoPgcAIYB/gABkrsUQgwDhEIEAAiLAABB4B7hGDa/vYnkBrkIhQSCBCXWAAeXNA4/v
+8cByC4/vz3CAALQGERCIAM9wgAC0BhKIqwgCAkomAABKIcARRC4+By9whCgDESdwACCBD4AAZK4f
+EcsAACCBD4AAZK4eEcoA+HAA3gbfACeND4AAZK7VfQeNaXEF2phwLgogAAUVwxBALoIAVHqEKAEV
+ACJBDtR5x3GAAGTyuHEAqYhwSXEH2gYKIAAGFcMQAR0CAGG/Aea3D3WQz35CIUkQQCZGAIEJdZAv
+JocBQCBIEM9wgAC0BhKILyAHEmEIA4IZA4/v4HgC22CoANgAqQHY4H8AquB4ocHxwJYKj++hwWXC
+CHYodc9wgADaBoXBi3JAJEMwwgsgAACIRC6+FgAlQB4UFMEwz3eAALSw+GB3DTMWIKhTJYAQTQhT
+AUYlzRGvfRvwARSAMAAmgR+AANDvUm1UellhIMIAqUQuvhYAJUAeRKkUFMEw+GAgqMlwXgggAKlx
+AeWvfVMlgBDLCFKBIfABFIIwEm0UeAAmgR+AANDvOGBAqCDCRKjJcDIIIACpcQ/wQiUAFg94ARSB
+MMd2gADo8AK4FHgeZiDAKK4MrgjcNwKv76HA4HjgfuB48cC+CY/vAN7PcKAAtA9wEBAAiiDHCM9x
+gABQSmIMr/YggZYIb/3JcM9xgAC0BrKJEYklDQIQz3KAAEy2f9sUIA8AX2dgr8GvAeAPeAXb8Q0j
+kGKvz3CAAGSuQZDPdYAA/GbApQjqz3CAAARnAICMIB+EBPYA2RXw/QiDjwAAoA9CeECJgOKKIQ8K
+wCjiAAX0RCi+Ay9w6gqP7whxAKXiC6/2iiDHCADdDt7Pd4AACGxqCO//qGdhvgHl+Q51kK99z3CA
+AFBKIIDPcIAA9GYgoOYPL/0vIAcESQGP7w54LHgpagDYDyBAACdwWnjgfw4gwADgePHAvgiv74og
+hwjPd4AAtAZ6C6/2M48Aj/IL7/8zj89wgADwZgAQ0ADPcYAAEDMUj0eJIQoBAACPIYkZCEEAz3CA
+APlmABDAAAkgAAQvIAUgsY8E8AHlr30SjxB1+gAJAADeSiKAI89wgADxZgCIEehELb4TACZAHs9x
+gADwZgARwgAAIIEPgABg80CpXvDPcIAAoDsggGB5ANgbCBEDz3CAAPhryWACIEAgDXhIIEAAA/BI
+IEAgLyEFIM9wgAAIbMtgE4+pcV4Lr/ZVjwkgQAQvIQUgz3CAAKA7IIBgeQDYACWTH4AA0AYZCBAE
+z3CAAKA7IIBgeQDYBBOBIBkIEQPPcYAAGAnJYQQTgCAieAkgQQQJ8M9wgADoa8hgAnkJIUEERC2+
+EwAmQB7HcIAAYPMgqDpwE4+pceoOr//JcgARwSACeQAZQiBCIlIgAeYbCnWgz36A8cEHT+/gePHA
+cg9P7wh1z3CAANM7AIgodxMNARDPcIAA0jsAiFMPABDPdoAAtAapcEAmgRK+C2/3QCbCEgqOr3or
+jhi6CLgFeoogVA3qCa/2RXkqjgRudgpv90uOCo7qCG/3K47PcIAA0zugqM9wgADSO+CobQdP7+B4
+4cWZ6Iwhwo0B2Fn2SiSAcc9zgABEr6ggwAOha0QoPgcyJU0eFw1DEAftEwiQAQHgD3gA2APwYbgP
+eOB/wcXgeOHF4cYAEc0ACQ0TEADdoKkb6A0NExAA2ACpAN3PcIAAiGoAkAsNAhCpaK19oKnPcIAA
+4GkUIE4DoI6gqgARwQA0eAGIGfALDRMQAN2gqc9wgAA0awCQDQ0CEKlorX2gqc9wgACMahQgTgOg
+jqCqABHBADR4AYgAq8HG4H/BxeB48cBCDm/vANihwQAcBDDPdYAAmAcAlc92gABkrslxiiIECvIK
+L/cB24/oCiHAD+tyABUEEc9wAADbFIfbi7uJBK/wiiUECgAWhBBMJACByiHLD8oiywfKIIsPAADc
+FMojiw8AAIwAzyPrAlwEq/DKJSsAQgmP9oDgyiHCD8oiwgfKIIIPAADdFMojgg8AAJIAzyPiAsok
+IgAsBKLwyiUiAItxRdgB2m4KL/cB24/oCiHAD+tyz3AAAN4UlduLu4okQQEFBK/wSiUAAAAUADEB
+2YYg/g/A4MB5z3CAAMgmIKjNBW/vocDgePHAWg1P7wh113UlAACAANhK989xgACw7SWBJQlFAyJ9
+AeD58c9wgACw7cWAqXDGDm/vyXEFLj4QAiVNHowgEIDKIcYPyiLGB8oghg8AAM0iyiPmDMokJgCE
+A6bwyiUGARa4ZQVv76V4z3GAAFgHDQhRAAHYAKkBqQCJgeDKIIEPAADECcoggg8AAIAA4H8BofHA
+ygxP7wh1z3aAABg9iiDYDnIPb/Ygjoog2A5mD2/2IY4AjrhgAK4Bjh1lCQVv76Gu4HhBiQK4FnjH
+cIAASOVIqCKJ4H8pqM9xgADkL/AhAQBNkUS6DQoeAA6BibgOoQsKXgAOgYu4DqENCp4ADoGNuA6h
+4H7geA0SAjYEIL6PYAAAAM9zgACI11R7x3KAAPjXCHEF8gPIHJAXCJ4CBCGBD2EAAAATCYEPAQAA
+AADYALMB2BzwDMwDEgE2GwjeATIRgQABiw0IQQAA2AGr8/EB4AGrC/AxEYEAAIsLCEEAANgAq+fx
+AeAAqwLY4H8YquHF4cbPcoAApAaA4MAiIgH/3RJpFngAIIMPgABP5aCrAN1KJABxz3OAADDtqCCA
+Aq5ieGU2eMSormIB5a99wKjBxuB/wcXgePHAkgtv74ogygWhwc91gACwRkCVz3aAAKxGIJYQui4O
+b/ZFec9wgADUKQCAdwiQAACFIIZNCQAAz3CAADA2BIBAwQ0IngBPIQABQMCI6WoM7/QA2F4Mz/T+
+Cc/2i3AE2aHaPdtiDu/8F7sghgnpAIWH6EYM7/QB2GoIz/YghiClEeleDc/0f9gKuM9xoADQGxOh
+f9gQoQDYlbgQoY4Nr/EB2F0Db++hwPHA5gpP789xgADkLxV5QIEIggQggw+AAAAARCAPAi+7Br9l
+fwQggw8AAQAAQStOA+V+LLvFe8ESDgbAEg0GYQuAAwQgvo+AAQAAHvLPdoAALDPIjjEO0RG+uAii
+QIEIggQggw+AAAAARCABAi+7BrlleQQggA8AAQAAQShDAyV7LLgFe8Ea2AAK7S8pQQNOIYAHEggg
+ABAlDRD57bECT+/xwEYKb++YcBsIFAQKIcAP63Jx2I24iiONC7UAr/BKJQAESiQAdADbqCCADkAs
+jQF1fUAsggDHdYAACOkAhc9xgABI5VZ63bhBYQCl8bnRICKCCPJEIAIGI7oB4hUKlQDPcoAAiOcW
+IgIBQIoJCh4AnrgU8C25wLnPd4AA5C/wJ08QUiBOAsEXARYLIYCDB/Ioh+EJnoefuAClAeMRAk/v
+z3GAAOQv8CEAAM9xgAA017sQAga6EAMGQqFhobwQAga9EAAGRaHgfwah4HjPcYAA5C/wIQAAz3GA
+ADTXvhAABhYhAgACkhqxA5IbsQiKOBkCAADY4H8dsfHA4cXPc6AArC8Zg/C4GYMA3QzyBCCADwgA
+AADXcAgAAAAB2MB4B/CGIH8PguAB2MB4GugZgwQggA8OAAAAQiAAgMogYgAhCFAACiHAD+tyZBME
+AM9wAACuDZnbeQdv8EolAADSDK/2VNhEIAECRwgeAc9ynwC4/72iHNoV8M9zoADIO1aDtoOGIv8I
+hiX/GKV6toOGJf8YpXrPdaAAqCCtheTlkPft6gLbz3KAANQpYKJRIECAz3KAAKxGAIIR8oG4EPA4
+EwQAWBMFAAohwA/rcs9wAACZIf0Gb/Av26G4AKI/CJ4Az3KAAABnAIIzCQAAz3CAAMomAIggohUI
+UQDPcYAAcEYAgQkIUgBquAChAdnPcIAAUC7WCO/9IKipAE/v4HjgfuB4z3GAACxJXBnAB89xgACI
+LlCBnbieuCCCz3GgAMgcDaHgeOB44HjgeOB44HjgeOB4AILgfvHA4cUg3c9zoADIH7CjQxsYAADY
+ug/v/424saNNAE/v8cDSDw/vocEIdih1SHeKIBEFfgpv9jXZiiARBXIKb/bJcYogEQVqCm/2qXGK
+IBEFXgpv9ulxz3CgACwgEIDPcYAADEYAoZ4P7/8y2ItxSg4v8MlwABQAMaR4EHUB2MB42Qcv76HA
+4HjxwGYPD+/PdaAALCBAFRAQQBUFEA8J3wIEIL6PAAYAACbyTQkfA892AAAQJwfwYtjqCy/2jLhA
+FQUQz3CgAPxEGYDsuAIlAAQD9OcIgoMhCIIPAAAQJwohwA/rcoogmgpp24y7jQVv8AokAARdBw/v
+z3CgAPQH8cBXCB5DJ4AZgDB5OGADuJYgQgXPcaAAyB8eoRDYDqEB2BUZGICqDu//gdgvCB5Dz3CA
+AMxmAdkgoAPIpBABAJq5pBhAAAYJr/4B2M9xgACoSQ2BAeANoQPZz3CgAPQHKqDRwOB+8cAA2QrY
+z3KgAMgfHqIQ2A6iAdgVGhiAKHAH8AHZBCCADyAAAABRIADDzCEhgMwgIYAX9CsLH0DPcAAAnxcC
+Cw/2z3KgAPxEHYJZggDZ0QrfggQgvo8ABgAA4vXh8S8LHkDPcIAAzGYB2SCgA8ikEAEAmrmkGEAA
+bgiv/gHYz3GAAKhJDYEB4A2hUSAAwwDYCfTPcYAALEkQgQHgEKEA2Ji40cDgfuB48cDiDS/vANkI
+d89woAAsIEAQEADPdZ8AuP8dhc92gACIBj2lAKYM8MIIT/DPcA8AQELSDy/zCnEhCFAAz3CgANQL
+GIBCIAAISCAAAN0IxIMAhh2l8QUP7wCGCiHAD+tyXtsdpc9wAADOIookww8BBG/wuHPxwF4NL+8B
+2aXBGnDPdYAApAZadaILb/+LcAAUhTABFJEwCwhRIEAlEhELDVIAHQ1SAQohwA/rcs9wAAApJazb
+uQNv8EokQABMJQCAJgEOAKhwABaOQAAWlEAPDDIkenCMJMOvJfQAFgBBABaPQAAWgEAAFgBBhQwT
+JCjvz3CAALwlAIBALM0gtX0Q4LhgKgtv/wTZz3CAALwlAIBMIUCgHWXMJ2GTGvQA2Iy4F/AKIcAP
+63LPcAAAKiW320okQAA5A2/wCiUABQohwA/rcs9wAAArJcDb9PEA2AC1z3CAALwlAIBALMEgNXky
+YDhgBSJCBECwBN0H8IHABN26Cm//qXEAIowjABwCFc9wgADkL/AgAAQe38AQAgYvKYEAAidAECTq
+MmjPc4AAT+U2eStjEwuOAwAmgR+AADDtFnkAGQIFAC2BEwshwIAJ8gAmgR+AADDtFnkEGQIFECIC
+gC8pgQACJ0AQ4PVCI0AggODmBs3/sgsP9D0EL++lwOB+4HjgfuB44H7geOB+4HjgfuB44H8B2OB+
+4HjgfuB44H7geOB+4HjgfuB44H7gePHAxgsP7wh1BvDPcAAAaw5mCA/2z3agAMAvoxYAlu8IHoEH
+yEAeGJANyA8IkQFGDS//qXB88M93gABA8gqPCehAJ4ASQCWBEuoPL/0K2s9woADUCxiAQiAACEgg
+AACw4IAN5f/KICUMA8gDkCW4wLgXuMdwAA4AAEUgAQvscCCgARIBNuxwIKAghexwIKAhhexwIKAi
+hexwIKAjhexwIKAkhexwIKAlhexwIKAmhexwIKAnhexwIKAohexwIKAH8M9wAABODrIPz/WjFgCW
+9QgegQfIBCCADwEAAPAsuJTgwCCGDwAAkwDPcaAAaCzwIQ0Az3CAANBmwIDZ2IYNL/YFJkET0gov
+9AUmQBMqjw7piiBSDW4NL/aHuc9xgACUSReRAeAQeBexANgKrwEDD++hwfHAfgoP76PBTMEacEh1
+OnMKIgAhaQleAgLZz3CgAMgfSRhYgCzBU23u4VB4BvSWDO/ygcEa8BEJ0Q0beBB4hgzv8oHBEfAJ
+CREFHHgK8AsJkQIEHIQwBvDPcAAA//8EHAQw4HgA2M9yqQCk/7miBBQBMYK4N6IaognwbwkeAkwi
+AKDRIOKhBfLPdaAAyB9M8M9ypQCs/89wgADkL7iiBIBWEAABFOACIQMgA+Miu3hjeGBIIEAABbhF
+IEADFqJBKMAhwLh3aCzABCGBDwAAACAluc91oADIH2V4JXiJuI64GaJAFQAWIPAswIDgyiHBD8oi
+wQfKICEOzyAhA8ojIQXPIyEDyiQhABQAYfDKJcEABb2leM9xpQCs/xahz3WgAMgfQBUAFs92oAC0
+R1cWAZZKIwAgSiRAIAQhvo8AKAAAz3GAAIguMIEggcIkAiUF8LLY8g3v9Yy4bxYAlgQghA+AAAAA
+BCCCDyAAAAAEIIMPAAYAAA8MECBAFQEWCwnUAADZAvAB2RMVD5YEIL6PADgAAAQnjx8AAACAzCEh
+gMAjYSAFIgEB5XkFIf6ABPSjC5SiBe+A4swjIYCN8msWE5abCxAganSEJNCRCvLPcYAANEgQgQDd
+AeAQoZy9X/AVC94gz3GAADRIEYEB4BGhQt1V8Gp0hCQCmAnyz3GAAKhJEYEB4BGhDfAVC54hz3GA
+AKhJBIEB4AShBfBTIz6jA/IA3TvwGQteIyYMT/3PcYAAJEoFgQHgBaH18foLj/QKIcAP63JvFgWW
+RNiMuOnbjLvNBi/wCiTABAnqz3GAACxJEIEB4BCh3fEu6xcIngbPcoAAqEkvggDdAeEvopG9CvAp
+CF4Gz3KAAKhJMoJC3QHhMqKaCO//anHd2ADZtgov9pi5mL1J8HEWBJZvFgWWCiHAD+tyOdjPcwAA
+AhFhBi/wjLiKC0/9z3GAACxJEYEB4BGhp/ETFQCW8LjKICEAkA+h/88goQNrFgGWWBYAlgsgQIAg
+8m8WAJbPdaAA9AdTIECAAdgQ8gml4HgA2Amlz3GAACRKCIEB4Aihz3GfALj/FqHKCW/+AdgD2Aql
+Bd2YvQPwAN2X7RcI3iEdChEgAdnPcKAA9AcsoAPZBfAD2c9woAD0ByWgUSCAongJwvke8AMSATbP
+cIAAQO4PCQAAz3CAAAjvGwkBAJIRAAGquJIZBACeEQABqrieGQQAz3Gg/mQAz3CfALj/NqDPcIAA
+5AYAgAfoz3GAAGA2BYEicAWhz3GAADRID4EB4A+hz3CAAFDJIYDPcIAA5C8DgBSQHQkBAM9xgADU
+JxqBO4EkeFEgAILIDqL2yiBiAKlwCNznBu/uo8DgeKHB8cCWDs/uKHUIdhpyBCG+jwEAAMBody30
+Lw0eEkQlABYjuCFoBCWAHwYAAAAxuDhgBCWBHwYAAAHXcQIAAAHKIKEAAvAB2CEIUAATCJAAg+AA
+2Mog4QHAKKEDCvDPcIAAeNcCgAbwz3CAAHjXAYAFfclwYgpv+qlxyXCpcQpy6XOKC+//SiRAAIDg
+hA+B/wjcbwbP7uB4z3CkAJBBTYDPcYAA+NlCsRqAA7EEIIAP/wAAADC4BLHPcIAA+NkA2hEIXkbP
+cYAA5NgygQsJngJCsEOwRLDgf1mw4HjxwMIN7+6YcM9wgADk2A6Qz3aAAPjZALbPcIAA5NhIEAUA
+BCWPjwAAAAIA2wPyFw0eAs9xpgDo/wuBA6YMgQSmA/BkpmOmz3WkALRFDBUClg0VAJb/2S8ghxAQ
+uQQiSQAs7zIVAZZTIY8A/2chtv/Z9H8Iue9/RHlALwYSACZHAAAgyBMFJwcCQC8BFgQigg8A/wAA
+QC8IFDpiACBIEv/ZBScHAgi5BSLCAQQgRwD4YAAngQEleOW2T3kEIoIP/wAAACi6RXkjtg94BLYE
+FQCWArYjDR4CRCUABiO4AeAXCJQAz3GmAOj/DYEFpg6BBqYD8GamZaYA2kokgHAG2Y25qCAAAynY
+ErjwIEMAQCYAH1V4AeFgoAHiz3CAAOTYAJA4HgARVSZBFBq2z3CAANDZsgkv/QjaGxUAls9xpQDY
+yxmmHBUAlhqmHRUAlhumDoEcpg+BHaYmFQCWHqbPcKQAkH8cgMUE7+4fpuB44cXPdYAA+NkJpSql
+eLVLpQHYGbXgf8HFSiQAegDZqCCAAgDaz3CAAPjZNXhAoAHh4H7geADZIKDgfyGgBAAAAABAAQAA
+AAAAqBJDdQEGAAEAAAAAAAAAAGBKgAD0SoAAAKKAAGgugAAECYAAjAWAgQ8aGyIAABslAgAbQAAA
+G3EwBoCBAADAFg8bCyI0BoCBAADAFg8bCiI4BoCBAADAFg8bCCLoNoCBAgBcbhEAAGH4QcQQDxsJ
+IgALCTkCAApiAwEKYgQCCmIAAAlABAAAYQkACUACAABhCgAJQAAAAGECAAlBAAkaKAAAwBYBABsm
+AADAFwQAHSYBAAgn6QAIZA8gGyI4BoCBAADAF4wFgIEPGhsiAAAbJQIAG0AAABtxD0UAIgBcADkH
+AABiBmAAYgAAWDhgRcAQcEXAEHhFwBCQRcAQbAAAYQgAWG74DwBhAAATJQAAEyQkEMARgAATJUdo
+EyQEKMARAIATJDgcwBEPABMiAQATMAQowBEPcxMiggETMAQowBEPdBMiAgITMAQowBEPdRMiQgIT
+MAQowBEPFBUiAQAVJg9yEyIIAMwRD0QAIgoAAEAAQABwDgAAYQAAEyUCABMk7BzAEQ92EyIYCMoR
+CQATQBwIyhEJABNAIAjKEQ94EyIEAMoRAAABJAAAASUGAABhD3YTIixIxxEPeBMiAADGEQMAASQA
+AAElAAATJcIsEyQEKMARAkYTJAQowBHCXxMkBCjAEQ9FACIAXAA5LAAAZAAAEyQBABMlOBzAEQ93
+EyLgHMARAgABYg8BEyIECMARGAbAEgQowBEPEwIiHAbAEgQowBEPEwciIAbAEgQowBEPEwQiAgBx
+cAcAAGH/ABMlAhATJAQowBEAABMlAAATJMhJxxEGAABhAAATJQIQEyQEKMARAAATJUkAEyTISccR
+D3ATIgEAEzAEKMARAwATJAAAEyUECMARAAATJDhFwBEkBsASGCjAEQ8TAyIEAABhAABYOAAAEyQB
+ABMlOBzAEQAAFSQAAAAhBAaAgQAAwBYPG1AiCAaAgQAAwBYPGxoiDAaAgQAAwBYPGxkiEAaAgQAA
+wBYAAACFAAaAgQAAwBYPGwQiHAQbZhsBG2gUHMAQCgAbQAQAG24LAABhDxwdIgEAHSb5DwBhFAaA
+gQAAwBYFABtijAWAgQ8aGyIAABslAgAbQAAAG3FkDAAQAMAGEQEABCf8AARkAAAbJAIAGyU4HMAR
+jAWAgQ8aGyIAABslAgAbQAAAG3EAABslQAAbJDAcwBGMBYCBDxobIgAAGyUCABtAAAAbcaAGgIEA
+AMAWAgETZEIBEyQEKMARzGaAgQAAwBYGARNiBAjAEAQAE2QPXAAiCgAAQAAGAHAZAABhAAATJAAA
+EyUAAMAXAAhYMMggwBBwRcAQEAjAEAAAEyUDABMkHAjAERwIwBEAABMkBAjAEQ8UFSIEABUm+/8w
+MgMAEyQYCMARDxQVIgIAFSYEADAwAAATJBBFwBEYCMARABBYMA98EyIIAMwRAAATJQAAEyQ0SMcR
+D3sTIgEAEzAEKMARDxQVIgIAFSb/ABMlAhATJAQowBEPFBUiAgAVJpQHgIEAAMAWwiwTJAQowBEC
+RhMkBCjAEcJfEyQEKMARD00TIgQQxRECABMk8BzAEQEAEyTsHMARAAATJHAAEyUQHMARAAATJQAA
+EyTgHMARgAATJUZoEyQEKMARAAATJQEAEyQkEMARAAAVJAAAACEPDhoiAABAFgABG3ANAABhgABj
+JP/+GzIAAEAXAAAbJQ8bDyJwBoCB/wAbMgIAG0EAGxooAADAFgAAGyUCABtAAAAbcQEAZHAHAABh
+AQBjJAAAGyRSBoCBAABAF0gGgIEAAEAW7Q8AYQIAZHAQAABhAgBjJAEAGyRSBoCBAABAF0oGgIEA
+AEAW5A8AYQQAZHAHAABhAgBjJAIAGyRSBoCBAABAF0wGgIEAAEAW2w8AYQAAHSQAAAAhAAIPbgkA
+AGFSBoCBAABAFgAAGyVOBoCBABsaKAAAABYBABsmAAAAFw0AAGFoBoCBAABAFgIAGyYBEBtoAAAb
+JAAAQBdUBoCBABobKA8bDiJsBoCBAABAFgEAGyYAAEAX1ASAgQ8aGyIAABslAgAbQAAAG3EAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvAKAADwA
+gAAAAAAAAAAAACgAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+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
+AXMAAnQdAAAAAAAEAAABdAACdh0AAIAAAAMAAAF1AAJ4HQABAAAAAwAAAXYAAnwdAAIAAAADAAAB
+dwADfh0AAoAAAAMAAAF4AAOAHgAAAAAABAAAAXgAA4QeAAEAAAADAAABegADhh4AAgAAAAQAAAF6
+AASIHgACAAAAAwAAAXsABIwfAAAAAAAEAAABfAAEkR8AAUAAAAMAAAF+AASVHwADAAAABAAAAX8A
+BZcfAALAAAADAAABgAAFmSAAAEAAAAMAAAGBAAWdIAABQAAAAwAAAYIABZ8gAAHAAAADAAABgwAF
+oSAAAwAAAAQAAAGDAAWlIQAAQAAAAwAAAYUABXB6AQAAAAAAcHoBAAAAAABwegEAAAAAAHB6AQAA
+AAAAcHoBAAAAAABwegEAAAAAAHB6AQAAAAAAcHoBAAAAAAA8dAEAGAAAAAB2AQAgAAAAoHsBABQA
+AACUfAEAFAAAANR5AQAOAAAAmHgBAA4AAACoeQEAFAAAAKh5AQAUAAAAQCNAJSEhISFAQEBAQAUE
+BAEBQEBAQAUFQEAMDEANDAwBAQEFQEAFBQAEAARAQAAEQEBABUBAQEBABUBAQAUFBQEBAQFABQUF
+AQUBAUAFBQVABUAFBQUFBQAAAAAAAAAAZAAAAACQAQAKAAAABAAAABwRAAAcMgAAHDMAAAQAAAAc
+FQAAHAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApcaE+Jnu
+jfYN/73Wsd5UkVBgAwKpzn1WGediteZNmuxFj50fQImH+hXv67LJjgv77EFns/1f6kW/I/dTluRb
+m8J1HOGuPWpMWmxBfgL1T4NcaPRRNNEI+ZPic6tTYj8qDAhSlWVGXp0oMKE3Dwq1LwkONiSbGz3f
+Js1pTs1/n+obEp4ddFguNC02stzutPtb9qRNdmG3zn17Uj7dcV6XE/WmaLkAACzBYEAf48h57ba+
+1EaN2WdLct6U1JjosEqFa7sqxeVPFu3FhteaVWaUEc+KEOkGBIH+8KBEeLol40vzov5dwICKBa0/
+vCFIcATx32PBd3WvY0IwIBrlDv1tv0yBFBg1Ji/D4b6iNcyIOS5Xk/JVgvxHeqzI57orMpXmoMCY
+GdGef6NmRH5UqzuDC8qMKcfTazwoeafivB0Wdq0721ZkTnQeFNuSCgxsSOS4XZ9uve9DpsSoOaQx
+N9OL8jLVQ4tZbrfajAFksdKc4Em02PqsB/Mlz6/KjvTpRxgQ1W+I8G9KclwkOPFXx3NRlyPLfKGc
+6CE+3ZbcYYYNhQ+Q4EJ8xHGqzNiQBQYB9xIco8Jfavmu0GmRF1iZJzq5JzjZE+uzKzMiu9JwqYkH
+pzO2LSI8khUgyUmH/6p4UHqljwP4WYAJFxraZTHXxoS40MOCsCl3WhEey3v8qNZtOiwAAQIEBAAA
+AAQMDAgEDAQEQAAAAIAAAAAAAQAAAAIAAEAAAAAABAAAQAAAAEAAAAAA8GEAAAEBAgECAgMAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAKgAAAA4AAAAAAAEBAAAAAAAAAAAAAQEAAAAAAgAB
+AAICAwMDqNkBALTZAQDA2QEAzNkBANTZAQDc2QEAAQEAAQIBAQEAAAAAAAAAAP////8AAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIANAAAAIAAAgA0AAIANAAAAIAAA
+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
+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", &regs[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", &regs[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);
OpenPOWER on IntegriCloud