Page MenuHomeFreeBSD

No OneTemporary

This file is larger than 256 KB, so syntax highlighting was skipped.
Index: user/ngie/bsnmp_cleanup/Makefile.inc1
===================================================================
--- user/ngie/bsnmp_cleanup/Makefile.inc1 (revision 299696)
+++ user/ngie/bsnmp_cleanup/Makefile.inc1 (revision 299697)
@@ -1,2488 +1,2488 @@
#
# $FreeBSD$
#
# Make command line options:
# -DNO_CLEANDIR run ${MAKE} clean, instead of ${MAKE} cleandir
# -DNO_CLEAN do not clean at all
# -DDB_FROM_SRC use the user/group databases in src/etc instead of
# the system database when installing.
# -DNO_SHARE do not go into share subdir
# -DKERNFAST define NO_KERNEL{CONFIG,CLEAN,OBJ}
# -DNO_KERNELCONFIG do not run config in ${MAKE} buildkernel
# -DNO_KERNELCLEAN do not run ${MAKE} clean in ${MAKE} buildkernel
# -DNO_KERNELOBJ do not run ${MAKE} obj in ${MAKE} buildkernel
# -DNO_PORTSUPDATE do not update ports in ${MAKE} update
# -DNO_ROOT install without using root privilege
# -DNO_DOCUPDATE do not update doc in ${MAKE} update
# -DWITHOUT_CTF do not run the DTrace CTF conversion tools on built objects
# LOCAL_DIRS="list of dirs" to add additional dirs to the SUBDIR list
# LOCAL_ITOOLS="list of tools" to add additional tools to the ITOOLS list
# LOCAL_LIB_DIRS="list of dirs" to add additional dirs to libraries target
# LOCAL_MTREE="list of mtree files" to process to allow local directories
# to be created before files are installed
# LOCAL_TOOL_DIRS="list of dirs" to add additional dirs to the build-tools
# list
# METALOG="path to metadata log" to write permission and ownership
# when NO_ROOT is set. (default: ${DESTDIR}/METALOG)
# TARGET="machine" to crossbuild world for a different machine type
# TARGET_ARCH= may be required when a TARGET supports multiple endians
# BUILDENV_SHELL= shell to launch for the buildenv target (def:${SHELL})
# WORLD_FLAGS= additional flags to pass to make(1) during buildworld
# KERNEL_FLAGS= additional flags to pass to make(1) during buildkernel
# SUBDIR_OVERRIDE="list of dirs" to build rather than everything.
# All libraries and includes, and some build tools will still build.
#
# The intended user-driven targets are:
# buildworld - rebuild *everything*, including glue to help do upgrades
# installworld- install everything built by "buildworld"
# checkworld - run test suite on installed world
# doxygen - build API documentation of the kernel
# update - convenient way to update your source tree (eg: svn/svnup)
#
# Standard targets (not defined here) are documented in the makefiles in
# /usr/share/mk. These include:
# obj depend all install clean cleandepend cleanobj
.if !defined(TARGET) || !defined(TARGET_ARCH)
.error "Both TARGET and TARGET_ARCH must be defined."
.endif
LOCALBASE?= /usr/local
# Cross toolchain changes must be in effect before bsd.compiler.mk
# so that gets the right CC, and pass CROSS_TOOLCHAIN to submakes.
.if defined(CROSS_TOOLCHAIN)
.include "${LOCALBASE}/share/toolchains/${CROSS_TOOLCHAIN}.mk"
CROSSENV+=CROSS_TOOLCHAIN="${CROSS_TOOLCHAIN}"
.endif
.include <bsd.compiler.mk> # don't depend on src.opts.mk doing it
.include "share/mk/src.opts.mk"
# We must do lib/ and libexec/ before bin/ in case of a mid-install error to
# keep the users system reasonably usable. For static->dynamic root upgrades,
# we don't want to install a dynamic binary without rtld and the needed
# libraries. More commonly, for dynamic root, we don't want to install a
# binary that requires a newer library version that hasn't been installed yet.
# This ordering is not a guarantee though. The only guarantee of a working
# system here would require fine-grained ordering of all components based
# on their dependencies.
SRCDIR?= ${.CURDIR}
.if !empty(SUBDIR_OVERRIDE)
SUBDIR= ${SUBDIR_OVERRIDE}
.else
SUBDIR= lib libexec
.if !defined(NO_ROOT) && (make(installworld) || make(install))
# Ensure libraries are installed before progressing.
SUBDIR+=.WAIT
.endif
SUBDIR+=bin
.if ${MK_CDDL} != "no"
SUBDIR+=cddl
.endif
SUBDIR+=gnu include
.if ${MK_KERBEROS} != "no"
SUBDIR+=kerberos5
.endif
.if ${MK_RESCUE} != "no"
SUBDIR+=rescue
.endif
SUBDIR+=sbin
.if ${MK_CRYPT} != "no"
SUBDIR+=secure
.endif
.if !defined(NO_SHARE)
SUBDIR+=share
.endif
SUBDIR+=sys usr.bin usr.sbin
.if ${MK_TESTS} != "no"
SUBDIR+= tests
.endif
.if ${MK_OFED} != "no"
SUBDIR+=contrib/ofed
.endif
# Local directories are last, since it is nice to at least get the base
# system rebuilt before you do them.
.for _DIR in ${LOCAL_DIRS}
.if exists(${.CURDIR}/${_DIR}/Makefile)
SUBDIR+= ${_DIR}
.endif
.endfor
# Add LOCAL_LIB_DIRS, but only if they will not be picked up as a SUBDIR
# of a LOCAL_DIRS directory. This allows LOCAL_DIRS=foo and
# LOCAL_LIB_DIRS=foo/lib to behave as expected.
.for _DIR in ${LOCAL_DIRS:M*/} ${LOCAL_DIRS:N*/:S|$|/|}
_REDUNDENT_LIB_DIRS+= ${LOCAL_LIB_DIRS:M${_DIR}*}
.endfor
.for _DIR in ${LOCAL_LIB_DIRS}
.if empty(_REDUNDENT_LIB_DIRS:M${_DIR}) && exists(${.CURDIR}/${_DIR}/Makefile)
SUBDIR+= ${_DIR}
.else
.warning ${_DIR} not added to SUBDIR list. See UPDATING 20141121.
.endif
.endfor
# We must do etc/ last as it hooks into building the man whatis file
# by calling 'makedb' in share/man. This is only relevant for
# install/distribute so they build the whatis file after every manpage is
# installed.
.if make(installworld) || make(install)
SUBDIR+=.WAIT
.endif
SUBDIR+=etc
.endif # !empty(SUBDIR_OVERRIDE)
.if defined(NOCLEAN)
.warning NOCLEAN option is deprecated. Use NO_CLEAN instead.
NO_CLEAN= ${NOCLEAN}
.endif
.if defined(NO_CLEANDIR)
CLEANDIR= clean cleandepend
.else
CLEANDIR= cleandir
.endif
.if ${MK_META_MODE} == "yes"
# If filemon is used then we can rely on the build being incremental-safe.
# The .meta files will also track the build command and rebuild should
# it change.
.if empty(.MAKE.MODE:Mnofilemon)
NO_CLEAN= t
.endif
.endif
LOCAL_TOOL_DIRS?=
PACKAGEDIR?= ${DESTDIR}/${DISTDIR}
.if empty(SHELL:M*csh*)
BUILDENV_SHELL?=${SHELL}
.else
BUILDENV_SHELL?=/bin/sh
.endif
.if !defined(SVN) || empty(SVN)
. for _P in /usr/bin /usr/local/bin
. for _S in svn svnlite
. if exists(${_P}/${_S})
SVN= ${_P}/${_S}
. endif
. endfor
. endfor
.endif
SVNFLAGS?= -r HEAD
MAKEOBJDIRPREFIX?= /usr/obj
.if !defined(OSRELDATE)
.if exists(/usr/include/osreldate.h)
OSRELDATE!= awk '/^\#define[[:space:]]*__FreeBSD_version/ { print $$3 }' \
/usr/include/osreldate.h
.else
OSRELDATE= 0
.endif
.export OSRELDATE
.endif
# Set VERSION for CTFMERGE to use via the default CTFFLAGS=-L VERSION.
.if !defined(_REVISION)
_REVISION!= MK_AUTO_OBJ=no ${MAKE} -C ${SRCDIR}/release -V REVISION
.export _REVISION
.endif
.if !defined(_BRANCH)
_BRANCH!= MK_AUTO_OBJ=no ${MAKE} -C ${SRCDIR}/release -V BRANCH
.export _BRANCH
.endif
.if !defined(SRCRELDATE)
SRCRELDATE!= awk '/^\#define[[:space:]]*__FreeBSD_version/ { print $$3 }' \
${SRCDIR}/sys/sys/param.h
.export SRCRELDATE
.endif
.if !defined(VERSION)
VERSION= FreeBSD ${_REVISION}-${_BRANCH:C/-p[0-9]+$//} ${TARGET_ARCH} ${SRCRELDATE}
.export VERSION
.endif
.if !defined(PKG_VERSION)
.if ${_BRANCH:MSTABLE*} || ${_BRANCH:MCURRENT*}
TIMENOW= %Y%m%d%H%M%S
EXTRA_REVISION= .s${TIMENOW:gmtime}
.endif
.if ${_BRANCH:M*-p*}
EXTRA_REVISION= _${_BRANCH:C/.*-p([0-9]+$)/\1/}
.endif
PKG_VERSION= ${_REVISION}${EXTRA_REVISION}
.endif
KNOWN_ARCHES?= aarch64/arm64 \
amd64 \
arm \
armeb/arm \
armv6/arm \
armv6hf/arm \
i386 \
i386/pc98 \
mips \
mipsel/mips \
mips64el/mips \
mips64/mips \
mipsn32el/mips \
mipsn32/mips \
powerpc \
powerpc64/powerpc \
riscv64/riscv \
sparc64
.if ${TARGET} == ${TARGET_ARCH}
_t= ${TARGET}
.else
_t= ${TARGET_ARCH}/${TARGET}
.endif
.for _t in ${_t}
.if empty(KNOWN_ARCHES:M${_t})
.error Unknown target ${TARGET_ARCH}:${TARGET}.
.endif
.endfor
.if ${TARGET} == ${MACHINE}
TARGET_CPUTYPE?=${CPUTYPE}
.else
TARGET_CPUTYPE?=
.endif
.if !empty(TARGET_CPUTYPE)
_TARGET_CPUTYPE=${TARGET_CPUTYPE}
.else
_TARGET_CPUTYPE=dummy
.endif
_CPUTYPE!= MK_AUTO_OBJ=no MAKEFLAGS= CPUTYPE=${_TARGET_CPUTYPE} ${MAKE} \
-f /dev/null -m ${.CURDIR}/share/mk -V CPUTYPE
.if ${_CPUTYPE} != ${_TARGET_CPUTYPE}
.error CPUTYPE global should be set with ?=.
.endif
.if make(buildworld)
BUILD_ARCH!= uname -p
.if ${MACHINE_ARCH} != ${BUILD_ARCH}
.error To cross-build, set TARGET_ARCH.
.endif
.endif
.if ${MACHINE} == ${TARGET} && ${MACHINE_ARCH} == ${TARGET_ARCH} && !defined(CROSS_BUILD_TESTING)
OBJTREE= ${MAKEOBJDIRPREFIX}
.else
OBJTREE= ${MAKEOBJDIRPREFIX}/${TARGET}.${TARGET_ARCH}
.endif
WORLDTMP= ${OBJTREE}${.CURDIR}/tmp
BPATH= ${WORLDTMP}/legacy/usr/sbin:${WORLDTMP}/legacy/usr/bin:${WORLDTMP}/legacy/bin
XPATH= ${WORLDTMP}/usr/sbin:${WORLDTMP}/usr/bin
STRICTTMPPATH= ${BPATH}:${XPATH}
TMPPATH= ${STRICTTMPPATH}:${PATH}
#
# Avoid running mktemp(1) unless actually needed.
# It may not be functional, e.g., due to new ABI
# when in the middle of installing over this system.
#
.if make(distributeworld) || make(installworld) || make(stageworld)
INSTALLTMP!= /usr/bin/mktemp -d -u -t install
.endif
.if make(stagekernel) || make(distributekernel)
TAGS+= kernel
PACKAGE= kernel
.endif
#
# Building a world goes through the following stages
#
# 1. legacy stage [BMAKE]
# This stage is responsible for creating compatibility
# shims that are needed by the bootstrap-tools,
# build-tools and cross-tools stages. These are generally
# APIs that tools from one of those three stages need to
# build that aren't present on the host.
# 1. bootstrap-tools stage [BMAKE]
# This stage is responsible for creating programs that
# are needed for backward compatibility reasons. They
# are not built as cross-tools.
# 2. build-tools stage [TMAKE]
# This stage is responsible for creating the object
# tree and building any tools that are needed during
# the build process. Some programs are listed during
# this phase because they build binaries to generate
# files needed to build these programs. This stage also
# builds the 'build-tools' target rather than 'all'.
# 3. cross-tools stage [XMAKE]
# This stage is responsible for creating any tools that
# are needed for building the system. A cross-compiler is one
# of them. This differs from build tools in two ways:
# 1. the 'all' target is built rather than 'build-tools'
# 2. these tools are installed into TMPPATH for stage 4.
# 4. world stage [WMAKE]
# This stage actually builds the world.
# 5. install stage (optional) [IMAKE]
# This stage installs a previously built world.
#
BOOTSTRAPPING?= 0
# Common environment for world related stages
CROSSENV+= MAKEOBJDIRPREFIX=${OBJTREE} \
MACHINE_ARCH=${TARGET_ARCH} \
MACHINE=${TARGET} \
CPUTYPE=${TARGET_CPUTYPE}
.if ${MK_META_MODE} != "no"
# Don't rebuild build-tools targets during normal build.
CROSSENV+= BUILD_TOOLS_META=.NOMETA_CMP
.endif
.if ${MK_GROFF} != "no"
CROSSENV+= GROFF_BIN_PATH=${WORLDTMP}/legacy/usr/bin \
GROFF_FONT_PATH=${WORLDTMP}/legacy/usr/share/groff_font \
GROFF_TMAC_PATH=${WORLDTMP}/legacy/usr/share/tmac
.endif
.if defined(TARGET_CFLAGS)
CROSSENV+= ${TARGET_CFLAGS}
.endif
# bootstrap-tools stage
BMAKEENV= INSTALL="sh ${.CURDIR}/tools/install.sh" \
TOOLS_PREFIX=${WORLDTMP} \
PATH=${BPATH}:${PATH} \
WORLDTMP=${WORLDTMP} \
MAKEFLAGS="-m ${.CURDIR}/tools/build/mk ${.MAKEFLAGS}"
# need to keep this in sync with targets/pseudo/bootstrap-tools/Makefile
BSARGS= DESTDIR= \
BOOTSTRAPPING=${OSRELDATE} \
SSP_CFLAGS= \
MK_HTML=no NO_LINT=yes MK_MAN=no \
-DNO_PIC MK_PROFILE=no -DNO_SHARED \
-DNO_CPU_CFLAGS MK_WARNS=no MK_CTF=no \
MK_CLANG_EXTRAS=no MK_CLANG_FULL=no \
MK_LLDB=no MK_TESTS=no \
MK_INCLUDES=yes
BMAKE= MAKEOBJDIRPREFIX=${WORLDTMP} \
${BMAKEENV} ${MAKE} ${WORLD_FLAGS} -f Makefile.inc1 \
${BSARGS}
# build-tools stage
TMAKE= MAKEOBJDIRPREFIX=${OBJTREE} \
${BMAKEENV} ${MAKE} ${WORLD_FLAGS} -f Makefile.inc1 \
TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \
DESTDIR= \
BOOTSTRAPPING=${OSRELDATE} \
SSP_CFLAGS= \
-DNO_LINT \
-DNO_CPU_CFLAGS MK_WARNS=no MK_CTF=no \
MK_CLANG_EXTRAS=no MK_CLANG_FULL=no \
MK_LLDB=no MK_TESTS=no
# cross-tools stage
XMAKE= TOOLS_PREFIX=${WORLDTMP} ${BMAKE} \
TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \
MK_GDB=no MK_TESTS=no
# kernel-tools stage
KTMAKEENV= INSTALL="sh ${.CURDIR}/tools/install.sh" \
PATH=${BPATH}:${PATH} \
WORLDTMP=${WORLDTMP}
KTMAKE= TOOLS_PREFIX=${WORLDTMP} MAKEOBJDIRPREFIX=${WORLDTMP} \
${KTMAKEENV} ${MAKE} ${WORLD_FLAGS} -f Makefile.inc1 \
DESTDIR= \
BOOTSTRAPPING=${OSRELDATE} \
SSP_CFLAGS= \
MK_HTML=no -DNO_LINT MK_MAN=no \
-DNO_PIC MK_PROFILE=no -DNO_SHARED \
-DNO_CPU_CFLAGS MK_WARNS=no MK_CTF=no
# world stage
WMAKEENV= ${CROSSENV} \
INSTALL="sh ${.CURDIR}/tools/install.sh" \
PATH=${TMPPATH}
# make hierarchy
HMAKE= PATH=${TMPPATH} ${MAKE} LOCAL_MTREE=${LOCAL_MTREE:Q}
.if defined(NO_ROOT)
HMAKE+= PATH=${TMPPATH} METALOG=${METALOG} -DNO_ROOT
.endif
.if defined(CROSS_TOOLCHAIN_PREFIX)
CROSS_COMPILER_PREFIX?=${CROSS_TOOLCHAIN_PREFIX}
CROSS_BINUTILS_PREFIX?=${CROSS_TOOLCHAIN_PREFIX}
.endif
# If we do not have a bootstrap binutils (because the in-tree one does not
# support the target architecture), provide a default cross-binutils prefix.
# This allows aarch64 builds, for example, to automatically use the
# aarch64-binutils port or package.
.if !make(showconfig)
.if !empty(BROKEN_OPTIONS:MBINUTILS_BOOTSTRAP) && \
!defined(CROSS_BINUTILS_PREFIX)
CROSS_BINUTILS_PREFIX=/usr/local/${TARGET_ARCH}-freebsd/bin/
.if !exists(${CROSS_BINUTILS_PREFIX})
.error In-tree binutils does not support the ${TARGET_ARCH} architecture. Install the ${TARGET_ARCH}-binutils port or package or set CROSS_BINUTILS_PREFIX.
.endif
.endif
.endif
XCOMPILERS= CC CXX CPP
.for COMPILER in ${XCOMPILERS}
.if defined(CROSS_COMPILER_PREFIX)
X${COMPILER}?= ${CROSS_COMPILER_PREFIX}${${COMPILER}}
.else
X${COMPILER}?= ${${COMPILER}}
.endif
.endfor
XBINUTILS= AS AR LD NM OBJCOPY OBJDUMP RANLIB SIZE STRINGS
.for BINUTIL in ${XBINUTILS}
.if defined(CROSS_BINUTILS_PREFIX) && \
exists(${CROSS_BINUTILS_PREFIX}${${BINUTIL}})
X${BINUTIL}?= ${CROSS_BINUTILS_PREFIX}${${BINUTIL}}
.else
X${BINUTIL}?= ${${BINUTIL}}
.endif
.endfor
CROSSENV+= CC="${XCC} ${XCFLAGS}" CXX="${XCXX} ${XCFLAGS} ${XCXXFLAGS}" \
CPP="${XCPP} ${XCFLAGS}" \
AS="${XAS}" AR="${XAR}" LD="${XLD}" NM=${XNM} \
OBJDUMP=${XOBJDUMP} OBJCOPY="${XOBJCOPY}" \
RANLIB=${XRANLIB} STRINGS=${XSTRINGS} \
SIZE="${XSIZE}"
.if defined(CROSS_BINUTILS_PREFIX) && exists(${CROSS_BINUTILS_PREFIX})
# In the case of xdev-build tools, CROSS_BINUTILS_PREFIX won't be a
# directory, but the compiler will look in the right place for its
# tools so we don't need to tell it where to look.
BFLAGS+= -B${CROSS_BINUTILS_PREFIX}
.endif
# External compiler needs sysroot and target flags.
.if ${XCC:N${CCACHE_BIN}:M/*} || ${MK_CROSS_COMPILER} == "no"
.if !defined(CROSS_BINUTILS_PREFIX) || !exists(${CROSS_BINUTILS_PREFIX})
BFLAGS+= -B${WORLDTMP}/usr/bin
.endif
.if ${TARGET} == "arm"
.if ${TARGET_ARCH:M*hf*} != ""
TARGET_ABI= gnueabihf
.else
TARGET_ABI= gnueabi
.endif
.endif
.if defined(X_COMPILER_TYPE) && ${X_COMPILER_TYPE} == gcc
# GCC requires -isystem and -L when using a cross-compiler.
XCFLAGS+= -isystem ${WORLDTMP}/usr/include -L${WORLDTMP}/usr/lib
# Force using libc++ for external GCC.
XCXXFLAGS+= -isystem ${WORLDTMP}/usr/include/c++/v1 -std=c++11 \
-nostdinc++ -L${WORLDTMP}/../lib/libc++
.else
TARGET_ABI?= unknown
TARGET_TRIPLE?= ${TARGET_ARCH:C/amd64/x86_64/}-${TARGET_ABI}-freebsd11.0
XCFLAGS+= -target ${TARGET_TRIPLE}
.endif
XCFLAGS+= --sysroot=${WORLDTMP}
.else
.endif # ${XCC:M/*} || ${MK_CROSS_COMPILER} == "no"
.if !empty(BFLAGS)
XCFLAGS+= ${BFLAGS}
.endif
.if ${MK_LIB32} != "no" && (${TARGET_ARCH} == "amd64" || \
${TARGET_ARCH} == "powerpc64")
LIBCOMPAT= 32
.include "Makefile.libcompat"
.elif ${MK_LIBSOFT} != "no" && ${TARGET_ARCH} == "armv6"
LIBCOMPAT= SOFT
.include "Makefile.libcompat"
.endif
WMAKE= ${WMAKEENV} ${MAKE} ${WORLD_FLAGS} -f Makefile.inc1 DESTDIR=${WORLDTMP}
IMAKEENV= ${CROSSENV}
IMAKE= ${IMAKEENV} ${MAKE} -f Makefile.inc1 \
${IMAKE_INSTALL} ${IMAKE_MTREE}
.if empty(.MAKEFLAGS:M-n)
IMAKEENV+= PATH=${STRICTTMPPATH}:${INSTALLTMP} \
LD_LIBRARY_PATH=${INSTALLTMP} \
PATH_LOCALE=${INSTALLTMP}/locale
IMAKE+= __MAKE_SHELL=${INSTALLTMP}/sh
.else
IMAKEENV+= PATH=${TMPPATH}:${INSTALLTMP}
.endif
.if defined(DB_FROM_SRC)
INSTALLFLAGS+= -N ${.CURDIR}/etc
MTREEFLAGS+= -N ${.CURDIR}/etc
.endif
_INSTALL_DDIR= ${DESTDIR}/${DISTDIR}
INSTALL_DDIR= ${_INSTALL_DDIR:S://:/:g:C:/$::}
.if defined(NO_ROOT)
METALOG?= ${DESTDIR}/${DISTDIR}/METALOG
IMAKE+= -DNO_ROOT METALOG=${METALOG}
INSTALLFLAGS+= -U -M ${METALOG} -D ${INSTALL_DDIR}
MTREEFLAGS+= -W
.endif
.if defined(BUILD_PKGS)
INSTALLFLAGS+= -h sha256
.endif
.if defined(DB_FROM_SRC) || defined(NO_ROOT)
IMAKE_INSTALL= INSTALL="install ${INSTALLFLAGS}"
IMAKE_MTREE= MTREE_CMD="mtree ${MTREEFLAGS}"
.endif
# kernel stage
KMAKEENV= ${WMAKEENV}
KMAKE= ${KMAKEENV} ${MAKE} ${.MAKEFLAGS} ${KERNEL_FLAGS} KERNEL=${INSTKERNNAME}
.if ${MK_META_MODE} == "yes"
# meta mode normally is disallowed when building from curdir==objdir, but we
# want to allow it for the kernel build.
KMAKE+= .MAKE.MODE="${.MAKE.MODE} curdirOk=yes"
.endif
#
# buildworld
#
# Attempt to rebuild the entire system, with reasonable chance of
# success, regardless of how old your existing system is.
#
_worldtmp: .PHONY
.if ${.CURDIR:C/[^,]//g} != ""
# The m4 build of sendmail files doesn't like it if ',' is used
# anywhere in the path of it's files.
@echo
@echo "*** Error: path to source tree contains a comma ','"
@echo
false
.endif
@echo
@echo "--------------------------------------------------------------"
@echo ">>> Rebuilding the temporary build tree"
@echo "--------------------------------------------------------------"
.if !defined(NO_CLEAN)
rm -rf ${WORLDTMP}
.if defined(LIBCOMPAT)
rm -rf ${LIBCOMPATTMP}
.endif
.else
rm -rf ${WORLDTMP}/legacy/usr/include
# XXX - These can depend on any header file.
rm -f ${OBJTREE}${.CURDIR}/lib/libsysdecode/ioctl.c
rm -f ${OBJTREE}${.CURDIR}/usr.bin/kdump/kdump_subr.c
.endif
.for _dir in \
lib lib/casper usr legacy/bin legacy/usr
mkdir -p ${WORLDTMP}/${_dir}
.endfor
mtree -deU -f ${.CURDIR}/etc/mtree/BSD.usr.dist \
-p ${WORLDTMP}/legacy/usr >/dev/null
.if ${MK_GROFF} != "no"
mtree -deU -f ${.CURDIR}/etc/mtree/BSD.groff.dist \
-p ${WORLDTMP}/legacy/usr >/dev/null
.endif
mtree -deU -f ${.CURDIR}/etc/mtree/BSD.usr.dist \
-p ${WORLDTMP}/usr >/dev/null
mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \
-p ${WORLDTMP}/usr/include >/dev/null
ln -sf ${.CURDIR}/sys ${WORLDTMP}
.if ${MK_DEBUG_FILES} != "no"
# We could instead disable debug files for these build stages
mtree -deU -f ${.CURDIR}/etc/mtree/BSD.debug.dist \
-p ${WORLDTMP}/legacy/usr/lib >/dev/null
mtree -deU -f ${.CURDIR}/etc/mtree/BSD.debug.dist \
-p ${WORLDTMP}/usr/lib >/dev/null
.endif
.if defined(LIBCOMPAT)
mtree -deU -f ${.CURDIR}/etc/mtree/BSD.lib${libcompat}.dist \
-p ${WORLDTMP}/usr >/dev/null
.if ${MK_DEBUG_FILES} != "no"
mtree -deU -f ${.CURDIR}/etc/mtree/BSD.lib${libcompat}.dist \
-p ${WORLDTMP}/legacy/usr/lib/debug/usr >/dev/null
mtree -deU -f ${.CURDIR}/etc/mtree/BSD.lib${libcompat}.dist \
-p ${WORLDTMP}/usr/lib/debug/usr >/dev/null
.endif
.endif
.if ${MK_TESTS} != "no"
mkdir -p ${WORLDTMP}${TESTSBASE}
mtree -deU -f ${.CURDIR}/etc/mtree/BSD.tests.dist \
-p ${WORLDTMP}${TESTSBASE} >/dev/null
.if ${MK_DEBUG_FILES} != "no"
mkdir -p ${WORLDTMP}/usr/lib/debug/${TESTSBASE}
mtree -deU -f ${.CURDIR}/etc/mtree/BSD.tests.dist \
-p ${WORLDTMP}/usr/lib/debug/${TESTSBASE} >/dev/null
.endif
.endif
.for _mtree in ${LOCAL_MTREE}
mtree -deU -f ${.CURDIR}/${_mtree} -p ${WORLDTMP} > /dev/null
.endfor
_legacy:
@echo
@echo "--------------------------------------------------------------"
@echo ">>> stage 1.1: legacy release compatibility shims"
@echo "--------------------------------------------------------------"
${_+_}cd ${.CURDIR}; ${BMAKE} legacy
_bootstrap-tools:
@echo
@echo "--------------------------------------------------------------"
@echo ">>> stage 1.2: bootstrap tools"
@echo "--------------------------------------------------------------"
${_+_}cd ${.CURDIR}; ${BMAKE} bootstrap-tools
_cleanobj:
.if !defined(NO_CLEAN)
@echo
@echo "--------------------------------------------------------------"
@echo ">>> stage 2.1: cleaning up the object tree"
@echo "--------------------------------------------------------------"
${_+_}cd ${.CURDIR}; ${WMAKE} ${CLEANDIR}
.if defined(LIBCOMPAT)
${_+_}cd ${.CURDIR}; ${LIBCOMPATWMAKE} -f Makefile.inc1 ${CLEANDIR}
.endif
.endif
_obj:
@echo
@echo "--------------------------------------------------------------"
@echo ">>> stage 2.2: rebuilding the object tree"
@echo "--------------------------------------------------------------"
${_+_}cd ${.CURDIR}; ${WMAKE} obj
_build-tools:
@echo
@echo "--------------------------------------------------------------"
@echo ">>> stage 2.3: build tools"
@echo "--------------------------------------------------------------"
${_+_}cd ${.CURDIR}; ${TMAKE} build-tools
_cross-tools:
@echo
@echo "--------------------------------------------------------------"
@echo ">>> stage 3: cross tools"
@echo "--------------------------------------------------------------"
${_+_}cd ${.CURDIR}; ${XMAKE} cross-tools
${_+_}cd ${.CURDIR}; ${XMAKE} kernel-tools
_includes:
@echo
@echo "--------------------------------------------------------------"
@echo ">>> stage 4.1: building includes"
@echo "--------------------------------------------------------------"
# Special handling for SUBDIR_OVERRIDE in buildworld as they most likely need
# headers from default SUBDIR. Do SUBDIR_OVERRIDE includes last.
${_+_}cd ${.CURDIR}; ${WMAKE} SUBDIR_OVERRIDE= SHARED=symlinks \
MK_INCLUDES=yes includes
.if !empty(SUBDIR_OVERRIDE) && make(buildworld)
${_+_}cd ${.CURDIR}; ${WMAKE} MK_INCLUDES=yes SHARED=symlinks includes
.endif
_libraries:
@echo
@echo "--------------------------------------------------------------"
@echo ">>> stage 4.2: building libraries"
@echo "--------------------------------------------------------------"
${_+_}cd ${.CURDIR}; \
${WMAKE} -DNO_FSCHG MK_HTML=no -DNO_LINT MK_MAN=no \
MK_PROFILE=no MK_TESTS=no MK_TESTS_SUPPORT=${MK_TESTS} libraries
everything: .PHONY
@echo
@echo "--------------------------------------------------------------"
@echo ">>> stage 4.3: building everything"
@echo "--------------------------------------------------------------"
${_+_}cd ${.CURDIR}; _PARALLEL_SUBDIR_OK=1 ${WMAKE} all
WMAKE_TGTS=
WMAKE_TGTS+= _worldtmp _legacy
.if empty(SUBDIR_OVERRIDE)
WMAKE_TGTS+= _bootstrap-tools
.endif
WMAKE_TGTS+= _cleanobj _obj _build-tools _cross-tools
WMAKE_TGTS+= _includes _libraries
WMAKE_TGTS+= everything
.if defined(LIBCOMPAT) && empty(SUBDIR_OVERRIDE)
WMAKE_TGTS+= build${libcompat}
.endif
buildworld: buildworld_prologue ${WMAKE_TGTS} buildworld_epilogue .PHONY
.ORDER: buildworld_prologue ${WMAKE_TGTS} buildworld_epilogue
buildworld_prologue: .PHONY
@echo "--------------------------------------------------------------"
@echo ">>> World build started on `LC_ALL=C date`"
@echo "--------------------------------------------------------------"
buildworld_epilogue: .PHONY
@echo
@echo "--------------------------------------------------------------"
@echo ">>> World build completed on `LC_ALL=C date`"
@echo "--------------------------------------------------------------"
#
# We need to have this as a target because the indirection between Makefile
# and Makefile.inc1 causes the correct PATH to be used, rather than a
# modification of the current environment's PATH. In addition, we need
# to quote multiword values.
#
buildenvvars: .PHONY
@echo ${WMAKEENV:Q} ${.MAKE.EXPORTED:@v@$v=\"${$v}\"@}
.if ${.TARGETS:Mbuildenv}
.if ${.MAKEFLAGS:M-j}
.error The buildenv target is incompatible with -j
.endif
.endif
BUILDENV_DIR?= ${.CURDIR}
buildenv: .PHONY
@echo Entering world for ${TARGET_ARCH}:${TARGET}
.if ${BUILDENV_SHELL:M*zsh*}
@echo For ZSH you must run: export CPUTYPE=${TARGET_CPUTYPE}
.endif
@cd ${BUILDENV_DIR} && env ${WMAKEENV} BUILDENV=1 ${BUILDENV_SHELL} \
|| true
TOOLCHAIN_TGTS= ${WMAKE_TGTS:Neverything:Nbuild${libcompat}}
toolchain: ${TOOLCHAIN_TGTS} .PHONY
kernel-toolchain: ${TOOLCHAIN_TGTS:N_includes:N_libraries} .PHONY
#
# installcheck
#
# Checks to be sure system is ready for installworld/installkernel.
#
installcheck: _installcheck_world _installcheck_kernel .PHONY
_installcheck_world: .PHONY
_installcheck_kernel: .PHONY
#
# Require DESTDIR to be set if installing for a different architecture or
# using the user/group database in the source tree.
#
.if ${TARGET_ARCH} != ${MACHINE_ARCH} || ${TARGET} != ${MACHINE} || \
defined(DB_FROM_SRC)
.if !make(distributeworld)
_installcheck_world: __installcheck_DESTDIR
_installcheck_kernel: __installcheck_DESTDIR
__installcheck_DESTDIR: .PHONY
.if !defined(DESTDIR) || empty(DESTDIR)
@echo "ERROR: Please set DESTDIR!"; \
false
.endif
.endif
.endif
.if !defined(DB_FROM_SRC)
#
# Check for missing UIDs/GIDs.
#
CHECK_UIDS= auditdistd
CHECK_GIDS= audit
.if ${MK_SENDMAIL} != "no"
CHECK_UIDS+= smmsp
CHECK_GIDS+= smmsp
.endif
.if ${MK_PF} != "no"
CHECK_UIDS+= proxy
CHECK_GIDS+= proxy authpf
.endif
.if ${MK_UNBOUND} != "no"
CHECK_UIDS+= unbound
CHECK_GIDS+= unbound
.endif
_installcheck_world: __installcheck_UGID
__installcheck_UGID: .PHONY
.for uid in ${CHECK_UIDS}
@if ! `id -u ${uid} >/dev/null 2>&1`; then \
echo "ERROR: Required ${uid} user is missing, see /usr/src/UPDATING."; \
false; \
fi
.endfor
.for gid in ${CHECK_GIDS}
@if ! `find / -prune -group ${gid} >/dev/null 2>&1`; then \
echo "ERROR: Required ${gid} group is missing, see /usr/src/UPDATING."; \
false; \
fi
.endfor
.endif
#
# Required install tools to be saved in a scratch dir for safety.
#
.if ${MK_ZONEINFO} != "no"
_zoneinfo= zic tzsetup
.endif
ITOOLS= [ awk cap_mkdb cat chflags chmod chown cmp cp \
date echo egrep find grep id install ${_install-info} \
ln make mkdir mtree mv pwd_mkdb \
rm sed services_mkdb sh strip sysctl test true uname wc ${_zoneinfo} \
${LOCAL_ITOOLS}
# Needed for share/man
.if ${MK_MAN} != "no"
ITOOLS+=makewhatis
.endif
#
# distributeworld
#
# Distributes everything compiled by a `buildworld'.
#
# installworld
#
# Installs everything compiled by a 'buildworld'.
#
# Non-base distributions produced by the base system
EXTRA_DISTRIBUTIONS= doc
.if defined(LIBCOMPAT)
EXTRA_DISTRIBUTIONS+= lib${libcompat}
.endif
.if ${MK_TESTS} != "no"
EXTRA_DISTRIBUTIONS+= tests
.endif
DEBUG_DISTRIBUTIONS=
.if ${MK_DEBUG_FILES} != "no"
DEBUG_DISTRIBUTIONS+= base ${EXTRA_DISTRIBUTIONS:S,doc,,:S,tests,,}
.endif
MTREE_MAGIC?= mtree 2.0
distributeworld installworld stageworld: _installcheck_world .PHONY
mkdir -p ${INSTALLTMP}
progs=$$(for prog in ${ITOOLS}; do \
if progpath=`which $$prog`; then \
echo $$progpath; \
else \
echo "Required tool $$prog not found in PATH." >&2; \
exit 1; \
fi; \
done); \
libs=$$(ldd -f "%o %p\n" -f "%o %p\n" $$progs 2>/dev/null | sort -u | \
while read line; do \
set -- $$line; \
if [ "$$2 $$3" != "not found" ]; then \
echo $$2; \
else \
echo "Required library $$1 not found." >&2; \
exit 1; \
fi; \
done); \
cp $$libs $$progs ${INSTALLTMP}
cp -R $${PATH_LOCALE:-"/usr/share/locale"} ${INSTALLTMP}/locale
.if defined(NO_ROOT)
-mkdir -p ${METALOG:H}
echo "#${MTREE_MAGIC}" > ${METALOG}
.endif
.if make(distributeworld)
.for dist in ${EXTRA_DISTRIBUTIONS}
-mkdir ${DESTDIR}/${DISTDIR}/${dist}
mtree -deU -f ${.CURDIR}/etc/mtree/BSD.root.dist \
-p ${DESTDIR}/${DISTDIR}/${dist} >/dev/null
mtree -deU -f ${.CURDIR}/etc/mtree/BSD.usr.dist \
-p ${DESTDIR}/${DISTDIR}/${dist}/usr >/dev/null
mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \
-p ${DESTDIR}/${DISTDIR}/${dist}/usr/include >/dev/null
.if ${MK_DEBUG_FILES} != "no"
mtree -deU -f ${.CURDIR}/etc/mtree/BSD.debug.dist \
-p ${DESTDIR}/${DISTDIR}/${dist}/usr/lib >/dev/null
.endif
.if defined(LIBCOMPAT)
mtree -deU -f ${.CURDIR}/etc/mtree/BSD.lib${libcompat}.dist \
-p ${DESTDIR}/${DISTDIR}/${dist}/usr >/dev/null
.if ${MK_DEBUG_FILES} != "no"
mtree -deU -f ${.CURDIR}/etc/mtree/BSD.lib${libcompat}.dist \
-p ${DESTDIR}/${DISTDIR}/${dist}/usr/lib/debug/usr >/dev/null
.endif
.endif
.if ${MK_TESTS} != "no" && ${dist} == "tests"
-mkdir -p ${DESTDIR}/${DISTDIR}/${dist}${TESTSBASE}
mtree -deU -f ${.CURDIR}/etc/mtree/BSD.tests.dist \
-p ${DESTDIR}/${DISTDIR}/${dist}${TESTSBASE} >/dev/null
.if ${MK_DEBUG_FILES} != "no"
mtree -deU -f ${.CURDIR}/etc/mtree/BSD.tests.dist \
-p ${DESTDIR}/${DISTDIR}/${dist}/usr/lib/debug/${TESTSBASE} >/dev/null
.endif
.endif
.if defined(NO_ROOT)
${IMAKEENV} mtree -C -f ${.CURDIR}/etc/mtree/BSD.root.dist | \
sed -e 's#^\./#./${dist}/#' >> ${METALOG}
${IMAKEENV} mtree -C -f ${.CURDIR}/etc/mtree/BSD.usr.dist | \
sed -e 's#^\./#./${dist}/usr/#' >> ${METALOG}
${IMAKEENV} mtree -C -f ${.CURDIR}/etc/mtree/BSD.include.dist | \
sed -e 's#^\./#./${dist}/usr/include/#' >> ${METALOG}
.if defined(LIBCOMPAT)
${IMAKEENV} mtree -C -f ${.CURDIR}/etc/mtree/BSD.lib${libcompat}.dist | \
sed -e 's#^\./#./${dist}/usr/#' >> ${METALOG}
.endif
.endif
.endfor
-mkdir ${DESTDIR}/${DISTDIR}/base
${_+_}cd ${.CURDIR}/etc; ${CROSSENV} PATH=${TMPPATH} ${MAKE} \
METALOG=${METALOG} ${IMAKE_INSTALL} ${IMAKE_MTREE} \
DISTBASE=/base DESTDIR=${DESTDIR}/${DISTDIR}/base \
LOCAL_MTREE=${LOCAL_MTREE:Q} distrib-dirs
.endif
${_+_}cd ${.CURDIR}; ${IMAKE} re${.TARGET:S/world$//}; \
${IMAKEENV} rm -rf ${INSTALLTMP}
.if make(distributeworld)
.for dist in ${EXTRA_DISTRIBUTIONS}
find ${DESTDIR}/${DISTDIR}/${dist} -mindepth 1 -empty -delete
.endfor
.if defined(NO_ROOT)
.for dist in base ${EXTRA_DISTRIBUTIONS}
@# For each file that exists in this dist, print the corresponding
@# line from the METALOG. This relies on the fact that
@# a line containing only the filename will sort immediately before
@# the relevant mtree line.
cd ${DESTDIR}/${DISTDIR}; \
find ./${dist} | sort -u ${METALOG} - | \
awk 'BEGIN { print "#${MTREE_MAGIC}" } !/ type=/ { file = $$1 } / type=/ { if ($$1 == file) { sub(/^\.\/${dist}\//, "./"); print } }' > \
${DESTDIR}/${DISTDIR}/${dist}.meta
.endfor
.for dist in ${DEBUG_DISTRIBUTIONS}
@# For each file that exists in this dist, print the corresponding
@# line from the METALOG. This relies on the fact that
@# a line containing only the filename will sort immediately before
@# the relevant mtree line.
cd ${DESTDIR}/${DISTDIR}; \
find ./${dist}/usr/lib/debug | sort -u ${METALOG} - | \
awk 'BEGIN { print "#${MTREE_MAGIC}" } !/ type=/ { file = $$1 } / type=/ { if ($$1 == file) { sub(/^\.\/${dist}\//, "./"); print } }' > \
${DESTDIR}/${DISTDIR}/${dist}.debug.meta
.endfor
.endif
.endif
packageworld: .PHONY
.for dist in base ${EXTRA_DISTRIBUTIONS}
.if defined(NO_ROOT)
${_+_}cd ${DESTDIR}/${DISTDIR}/${dist}; \
tar cvf - --exclude usr/lib/debug \
@${DESTDIR}/${DISTDIR}/${dist}.meta | \
${XZ_CMD} > ${PACKAGEDIR}/${dist}.txz
.else
${_+_}cd ${DESTDIR}/${DISTDIR}/${dist}; \
tar cvf - --exclude usr/lib/debug . | \
${XZ_CMD} > ${PACKAGEDIR}/${dist}.txz
.endif
.endfor
.for dist in ${DEBUG_DISTRIBUTIONS}
. if defined(NO_ROOT)
${_+_}cd ${DESTDIR}/${DISTDIR}/${dist}; \
tar cvf - @${DESTDIR}/${DISTDIR}/${dist}.debug.meta | \
${XZ_CMD} > ${PACKAGEDIR}/${dist}-dbg.txz
. else
${_+_}cd ${DESTDIR}/${DISTDIR}/${dist}; \
tar cvLf - usr/lib/debug | \
${XZ_CMD} > ${PACKAGEDIR}/${dist}-dbg.txz
. endif
.endfor
#
# reinstall
#
# If you have a build server, you can NFS mount the source and obj directories
# and do a 'make reinstall' on the *client* to install new binaries from the
# most recent server build.
#
reinstall: .MAKE .PHONY
@echo "--------------------------------------------------------------"
@echo ">>> Making hierarchy"
@echo "--------------------------------------------------------------"
${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 \
LOCAL_MTREE=${LOCAL_MTREE:Q} hierarchy
@echo
@echo "--------------------------------------------------------------"
@echo ">>> Installing everything"
@echo "--------------------------------------------------------------"
${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 install
.if defined(LIBCOMPAT)
${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 install${libcompat}
.endif
restage: .MAKE .PHONY
@echo "--------------------------------------------------------------"
@echo ">>> Making hierarchy"
@echo "--------------------------------------------------------------"
${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 \
LOCAL_MTREE=${LOCAL_MTREE:Q} hierarchy distribution
@echo
@echo "--------------------------------------------------------------"
@echo ">>> Installing everything"
@echo "--------------------------------------------------------------"
${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 install
-.if defined(LIB32TMP) && ${MK_LIB32} != "no"
- ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 install32
+.if defined(LIBCOMPAT)
+ ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 install${libcompat}
.endif
redistribute: .MAKE .PHONY
@echo "--------------------------------------------------------------"
@echo ">>> Distributing everything"
@echo "--------------------------------------------------------------"
${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 distribute
.if defined(LIBCOMPAT)
${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 distribute${libcompat} \
DISTRIBUTION=lib${libcompat}
.endif
distrib-dirs distribution: .MAKE .PHONY
${_+_}cd ${.CURDIR}/etc; ${CROSSENV} PATH=${TMPPATH} ${MAKE} \
${IMAKE_INSTALL} ${IMAKE_MTREE} METALOG=${METALOG} ${.TARGET}
.if make(distribution)
${_+_}cd ${.CURDIR}; ${CROSSENV} PATH=${TMPPATH} \
${MAKE} -f Makefile.inc1 ${IMAKE_INSTALL} \
METALOG=${METALOG} MK_TESTS=no installconfig
.endif
#
# buildkernel and installkernel
#
# Which kernels to build and/or install is specified by setting
# KERNCONF. If not defined a GENERIC kernel is built/installed.
# Only the existing (depending TARGET) config files are used
# for building kernels and only the first of these is designated
# as the one being installed.
#
# Note that we have to use TARGET instead of TARGET_ARCH when
# we're in kernel-land. Since only TARGET_ARCH is (expected) to
# be set to cross-build, we have to make sure TARGET is set
# properly.
.if defined(KERNFAST)
NO_KERNELCLEAN= t
NO_KERNELCONFIG= t
NO_KERNELOBJ= t
# Shortcut for KERNCONF=Blah -DKERNFAST is now KERNFAST=Blah
.if !defined(KERNCONF) && ${KERNFAST} != "1"
KERNCONF=${KERNFAST}
.endif
.endif
.if ${TARGET_ARCH} == "powerpc64"
KERNCONF?= GENERIC64
.else
KERNCONF?= GENERIC
.endif
INSTKERNNAME?= kernel
KERNSRCDIR?= ${.CURDIR}/sys
KRNLCONFDIR= ${KERNSRCDIR}/${TARGET}/conf
KRNLOBJDIR= ${OBJTREE}${KERNSRCDIR}
KERNCONFDIR?= ${KRNLCONFDIR}
BUILDKERNELS=
INSTALLKERNEL=
.if defined(NO_INSTALLKERNEL)
# All of the BUILDKERNELS loops start at index 1.
BUILDKERNELS+= dummy
.endif
.for _kernel in ${KERNCONF}
.if exists(${KERNCONFDIR}/${_kernel})
BUILDKERNELS+= ${_kernel}
.if empty(INSTALLKERNEL) && !defined(NO_INSTALLKERNEL)
INSTALLKERNEL= ${_kernel}
.endif
.endif
.endfor
${WMAKE_TGTS:N_worldtmp:Nbuild${libcompat}} ${.ALLTARGETS:M_*:N_worldtmp}: .MAKE .PHONY
#
# buildkernel
#
# Builds all kernels defined by BUILDKERNELS.
#
buildkernel: .MAKE .PHONY
.if empty(BUILDKERNELS:Ndummy)
@echo "ERROR: Missing kernel configuration file(s) (${KERNCONF})."; \
false
.endif
@echo
.for _kernel in ${BUILDKERNELS:Ndummy}
@echo "--------------------------------------------------------------"
@echo ">>> Kernel build for ${_kernel} started on `LC_ALL=C date`"
@echo "--------------------------------------------------------------"
@echo "===> ${_kernel}"
mkdir -p ${KRNLOBJDIR}
.if !defined(NO_KERNELCONFIG)
@echo
@echo "--------------------------------------------------------------"
@echo ">>> stage 1: configuring the kernel"
@echo "--------------------------------------------------------------"
cd ${KRNLCONFDIR}; \
PATH=${TMPPATH} \
config ${CONFIGARGS} -d ${KRNLOBJDIR}/${_kernel} \
-I '${KERNCONFDIR}' '${KERNCONFDIR}/${_kernel}'
.endif
.if !defined(NO_CLEAN) && !defined(NO_KERNELCLEAN)
@echo
@echo "--------------------------------------------------------------"
@echo ">>> stage 2.1: cleaning up the object tree"
@echo "--------------------------------------------------------------"
${_+_}cd ${KRNLOBJDIR}/${_kernel}; ${KMAKE} ${CLEANDIR}
.endif
.if !defined(NO_KERNELOBJ)
@echo
@echo "--------------------------------------------------------------"
@echo ">>> stage 2.2: rebuilding the object tree"
@echo "--------------------------------------------------------------"
${_+_}cd ${KRNLOBJDIR}/${_kernel}; ${KMAKE} obj
.endif
@echo
@echo "--------------------------------------------------------------"
@echo ">>> stage 2.3: build tools"
@echo "--------------------------------------------------------------"
${_+_}cd ${.CURDIR}; ${KTMAKE} kernel-tools
@echo
@echo "--------------------------------------------------------------"
@echo ">>> stage 3.1: building everything"
@echo "--------------------------------------------------------------"
${_+_}cd ${KRNLOBJDIR}/${_kernel}; ${KMAKE} all -DNO_MODULES_OBJ
@echo "--------------------------------------------------------------"
@echo ">>> Kernel build for ${_kernel} completed on `LC_ALL=C date`"
@echo "--------------------------------------------------------------"
.endfor
NO_INSTALLEXTRAKERNELS?= yes
#
# installkernel, etc.
#
# Install the kernel defined by INSTALLKERNEL
#
installkernel installkernel.debug \
reinstallkernel reinstallkernel.debug: _installcheck_kernel .PHONY
.if !defined(NO_INSTALLKERNEL)
.if empty(INSTALLKERNEL)
@echo "ERROR: No kernel \"${KERNCONF}\" to install."; \
false
.endif
@echo "--------------------------------------------------------------"
@echo ">>> Installing kernel ${INSTALLKERNEL}"
@echo "--------------------------------------------------------------"
cd ${KRNLOBJDIR}/${INSTALLKERNEL}; \
${CROSSENV} PATH=${TMPPATH} \
${MAKE} ${IMAKE_INSTALL} KERNEL=${INSTKERNNAME} ${.TARGET:S/kernel//}
.endif
.if ${BUILDKERNELS:[#]} > 1 && ${NO_INSTALLEXTRAKERNELS} != "yes"
.for _kernel in ${BUILDKERNELS:[2..-1]}
@echo "--------------------------------------------------------------"
@echo ">>> Installing kernel ${_kernel}"
@echo "--------------------------------------------------------------"
cd ${KRNLOBJDIR}/${_kernel}; \
${CROSSENV} PATH=${TMPPATH} \
${MAKE} ${IMAKE_INSTALL} KERNEL=${INSTKERNNAME}.${_kernel} ${.TARGET:S/kernel//}
.endfor
.endif
distributekernel distributekernel.debug: .PHONY
.if !defined(NO_INSTALLKERNEL)
.if empty(INSTALLKERNEL)
@echo "ERROR: No kernel \"${KERNCONF}\" to install."; \
false
.endif
mkdir -p ${DESTDIR}/${DISTDIR}
.if defined(NO_ROOT)
@echo "#${MTREE_MAGIC}" > ${DESTDIR}/${DISTDIR}/kernel.premeta
.endif
cd ${KRNLOBJDIR}/${INSTALLKERNEL}; \
${IMAKEENV} ${IMAKE_INSTALL:S/METALOG/kernel.premeta/} \
${IMAKE_MTREE} PATH=${TMPPATH} ${MAKE} KERNEL=${INSTKERNNAME} \
DESTDIR=${INSTALL_DDIR}/kernel \
${.TARGET:S/distributekernel/install/}
.if defined(NO_ROOT)
@sed -e 's|^./kernel|.|' ${DESTDIR}/${DISTDIR}/kernel.premeta > \
${DESTDIR}/${DISTDIR}/kernel.meta
.endif
.endif
.if ${BUILDKERNELS:[#]} > 1 && ${NO_INSTALLEXTRAKERNELS} != "yes"
.for _kernel in ${BUILDKERNELS:[2..-1]}
.if defined(NO_ROOT)
@echo "#${MTREE_MAGIC}" > ${DESTDIR}/${DISTDIR}/kernel.${_kernel}.premeta
.endif
cd ${KRNLOBJDIR}/${_kernel}; \
${IMAKEENV} ${IMAKE_INSTALL:S/METALOG/kernel.${_kernel}.premeta/} \
${IMAKE_MTREE} PATH=${TMPPATH} ${MAKE} \
KERNEL=${INSTKERNNAME}.${_kernel} \
DESTDIR=${INSTALL_DDIR}/kernel.${_kernel} \
${.TARGET:S/distributekernel/install/}
.if defined(NO_ROOT)
@sed -e "s|^./kernel.${_kernel}|.|" \
${DESTDIR}/${DISTDIR}/kernel.${_kernel}.premeta > \
${DESTDIR}/${DISTDIR}/kernel.${_kernel}.meta
.endif
.endfor
.endif
packagekernel: .PHONY
.if defined(NO_ROOT)
.if !defined(NO_INSTALLKERNEL)
cd ${DESTDIR}/${DISTDIR}/kernel; \
tar cvf - --exclude '*.debug' \
@${DESTDIR}/${DISTDIR}/kernel.meta | \
${XZ_CMD} > ${PACKAGEDIR}/kernel.txz
.endif
cd ${DESTDIR}/${DISTDIR}/kernel; \
tar cvf - --include '*/*/*.debug' \
@${DESTDIR}/${DISTDIR}/kernel.meta | \
${XZ_CMD} > ${DESTDIR}/${DISTDIR}/kernel-dbg.txz
.if ${BUILDKERNELS:[#]} > 1 && ${NO_INSTALLEXTRAKERNELS} != "yes"
.for _kernel in ${BUILDKERNELS:[2..-1]}
cd ${DESTDIR}/${DISTDIR}/kernel.${_kernel}; \
tar cvf - --exclude '*.debug' \
@${DESTDIR}/${DISTDIR}/kernel.${_kernel}.meta | \
${XZ_CMD} > ${PACKAGEDIR}/kernel.${_kernel}.txz
cd ${DESTDIR}/${DISTDIR}/kernel.${_kernel}; \
tar cvf - --include '*/*/*.debug' \
@${DESTDIR}/${DISTDIR}/kernel.${_kernel}.meta | \
${XZ_CMD} > ${DESTDIR}/${DISTDIR}/kernel.${_kernel}-dbg.txz
.endfor
.endif
.else
.if !defined(NO_INSTALLKERNEL)
cd ${DESTDIR}/${DISTDIR}/kernel; \
tar cvf - --exclude '*.debug' . | \
${XZ_CMD} > ${PACKAGEDIR}/kernel.txz
.endif
cd ${DESTDIR}/${DISTDIR}/kernel; \
tar cvf - --include '*/*/*.debug' $$(eval find .) | \
${XZ_CMD} > ${DESTDIR}/${DISTDIR}/kernel-dbg.txz
.if ${BUILDKERNELS:[#]} > 1 && ${NO_INSTALLEXTRAKERNELS} != "yes"
.for _kernel in ${BUILDKERNELS:[2..-1]}
cd ${DESTDIR}/${DISTDIR}/kernel.${_kernel}; \
tar cvf - --exclude '*.debug' . | \
${XZ_CMD} > ${PACKAGEDIR}/kernel.${_kernel}.txz
cd ${DESTDIR}/${DISTDIR}/kernel.${_kernel}; \
tar cvf - --include '*/*/*.debug' $$(eval find .) | \
${XZ_CMD} > ${DESTDIR}/${DISTDIR}/kernel.${_kernel}-dbg.txz
.endfor
.endif
.endif
stagekernel: .PHONY
${_+_}${MAKE} -C ${.CURDIR} ${.MAKEFLAGS} distributekernel
PORTSDIR?= /usr/ports
WSTAGEDIR?= ${MAKEOBJDIRPREFIX}${.CURDIR}/${TARGET}.${TARGET_ARCH}/worldstage
KSTAGEDIR?= ${MAKEOBJDIRPREFIX}${.CURDIR}/${TARGET}.${TARGET_ARCH}/kernelstage
REPODIR?= ${MAKEOBJDIRPREFIX}${.CURDIR}/repo
PKGSIGNKEY?= # empty
.ORDER: stage-packages create-packages
.ORDER: create-packages create-world-packages
.ORDER: create-packages create-kernel-packages
.ORDER: create-packages sign-packages
_pkgbootstrap: .PHONY
.if !exists(${LOCALBASE}/sbin/pkg)
@env ASSUME_ALWAYS_YES=YES pkg bootstrap
.endif
packages: .PHONY
${_+_}${MAKE} -C ${.CURDIR} PKG_VERSION=${PKG_VERSION} real-packages
package-pkg: .PHONY
rm -rf /tmp/ports.${TARGET} || :
env ${WMAKEENV:Q} SRCDIR=${.CURDIR} PORTSDIR=${PORTSDIR} REVISION=${_REVISION} \
PKG_VERSION=${PKG_VERSION} REPODIR=${REPODIR} WSTAGEDIR=${WSTAGEDIR} \
sh ${.CURDIR}/release/scripts/make-pkg-package.sh
real-packages: stage-packages create-packages sign-packages .PHONY
stage-packages: .PHONY
@mkdir -p ${REPODIR} ${WSTAGEDIR} ${KSTAGEDIR}
${_+_}@cd ${.CURDIR}; \
${MAKE} DESTDIR=${WSTAGEDIR} -DNO_ROOT -B stageworld ; \
${MAKE} DESTDIR=${KSTAGEDIR} -DNO_ROOT -B stagekernel
create-packages: _pkgbootstrap .PHONY
@mkdir -p ${REPODIR}
${_+_}@cd ${.CURDIR}; \
${MAKE} DESTDIR=${WSTAGEDIR} \
PKG_VERSION=${PKG_VERSION} create-world-packages ; \
${MAKE} DESTDIR=${KSTAGEDIR} \
PKG_VERSION=${PKG_VERSION} DISTDIR=kernel \
create-kernel-packages
create-world-packages: _pkgbootstrap .PHONY
@rm -f ${WSTAGEDIR}/*.plist 2>/dev/null || :
@cd ${WSTAGEDIR} ; \
awk -f ${SRCDIR}/release/scripts/mtree-to-plist.awk \
${WSTAGEDIR}/METALOG
@for plist in ${WSTAGEDIR}/*.plist; do \
plist=$${plist##*/} ; \
pkgname=$${plist%.plist} ; \
sh ${SRCDIR}/release/packages/generate-ucl.sh -o $${pkgname} \
-s ${SRCDIR} -u ${WSTAGEDIR}/$${pkgname}.ucl ; \
done
@for plist in ${WSTAGEDIR}/*.plist; do \
plist=$${plist##*/} ; \
pkgname=$${plist%.plist} ; \
awk -F\" ' \
/^name/ { printf("===> Creating %s-", $$2); next } \
/^version/ { print $$2; next } \
' ${WSTAGEDIR}/$${pkgname}.ucl ; \
pkg -o ABI_FILE=${WSTAGEDIR}/bin/sh -o ALLOW_BASE_SHLIBS=yes \
create -M ${WSTAGEDIR}/$${pkgname}.ucl \
-p ${WSTAGEDIR}/$${pkgname}.plist \
-r ${WSTAGEDIR} \
-o ${REPODIR}/$$(pkg -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/${PKG_VERSION} ; \
done
create-kernel-packages: _pkgbootstrap .PHONY
.if exists(${KSTAGEDIR}/kernel.meta)
.for flavor in "" -debug
@cd ${KSTAGEDIR}/${DISTDIR} ; \
awk -f ${SRCDIR}/release/scripts/mtree-to-plist.awk \
-v kernel=yes -v _kernconf=${INSTALLKERNEL} \
${KSTAGEDIR}/kernel.meta ; \
cap_arg=`cd ${SRCDIR}/etc ; ${MAKE} -VCAP_MKDB_ENDIAN` ; \
pwd_arg=`cd ${SRCDIR}/etc ; ${MAKE} -VPWD_MKDB_ENDIAN` ; \
sed -e "s/%VERSION%/${PKG_VERSION}/" \
-e "s/%PKGNAME%/kernel-${INSTALLKERNEL:tl}${flavor}/" \
-e "s/%COMMENT%/FreeBSD ${INSTALLKERNEL} kernel ${flavor}/" \
-e "s/%DESC%/FreeBSD ${INSTALLKERNEL} kernel ${flavor}/" \
-e "s/%CAP_MKDB_ENDIAN%/$${cap_arg}/g" \
-e "s/%PWD_MKDB_ENDIAN%/$${pwd_arg}/g" \
${SRCDIR}/release/packages/kernel.ucl \
> ${KSTAGEDIR}/${DISTDIR}/kernel.${INSTALLKERNEL}${flavor}.ucl ; \
awk -F\" ' \
/name/ { printf("===> Creating %s-", $$2); next } \
/version/ {print $$2; next } ' \
${KSTAGEDIR}/${DISTDIR}/kernel.${INSTALLKERNEL}${flavor}.ucl ; \
pkg -o ABI_FILE=${WSTAGEDIR}/bin/sh -o ALLOW_BASE_SHLIBS=yes \
create -M ${KSTAGEDIR}/${DISTDIR}/kernel.${INSTALLKERNEL}${flavor}.ucl \
-p ${KSTAGEDIR}/${DISTDIR}/kernel.${INSTALLKERNEL}${flavor}.plist \
-r ${KSTAGEDIR}/${DISTDIR} \
-o ${REPODIR}/$$(pkg -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/${PKG_VERSION}
.endfor
.endif
.if ${BUILDKERNELS:[#]} > 1 && ${NO_INSTALLEXTRAKERNELS} != "yes"
.for _kernel in ${BUILDKERNELS:[2..-1]}
.if exists(${KSTAGEDIR}/kernel.${_kernel}.meta)
.for flavor in "" -debug
@cd ${KSTAGEDIR}/kernel.${_kernel} ; \
awk -f ${SRCDIR}/release/scripts/mtree-to-plist.awk \
-v kernel=yes -v _kernconf=${_kernel} \
${KSTAGEDIR}/kernel.${_kernel}.meta ; \
cap_arg=`cd ${SRCDIR}/etc ; ${MAKE} -VCAP_MKDB_ENDIAN` ; \
pwd_arg=`cd ${SRCDIR}/etc ; ${MAKE} -VPWD_MKDB_ENDIAN` ; \
sed -e "s/%VERSION%/${PKG_VERSION}/" \
-e "s/%PKGNAME%/kernel-${_kernel:tl}${flavor}/" \
-e "s/%COMMENT%/FreeBSD ${_kernel} kernel ${flavor}/" \
-e "s/%DESC%/FreeBSD ${_kernel} kernel ${flavor}/" \
-e "s/%CAP_MKDB_ENDIAN%/$${cap_arg}/g" \
-e "s/%PWD_MKDB_ENDIAN%/$${pwd_arg}/g" \
${SRCDIR}/release/packages/kernel.ucl \
> ${KSTAGEDIR}/kernel.${_kernel}/kernel.${_kernel}${flavor}.ucl ; \
awk -F\" ' \
/name/ { printf("===> Creating %s-", $$2); next } \
/version/ {print $$2; next } ' \
${KSTAGEDIR}/kernel.${_kernel}/kernel.${_kernel}${flavor}.ucl ; \
pkg -o ABI_FILE=${WSTAGEDIR}/bin/sh -o ALLOW_BASE_SHLIBS=yes \
create -M ${KSTAGEDIR}/kernel.${_kernel}/kernel.${_kernel}${flavor}.ucl \
-p ${KSTAGEDIR}/kernel.${_kernel}/kernel.${_kernel}${flavor}.plist \
-r ${KSTAGEDIR}/kernel.${_kernel} \
-o ${REPODIR}/$$(pkg -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/${PKG_VERSION}
.endfor
.endif
.endfor
.endif
sign-packages: _pkgbootstrap .PHONY
@[ -L "${REPODIR}/$$(pkg -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/latest" ] && \
unlink ${REPODIR}/$$(pkg -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/latest ; \
pkg -o ABI_FILE=${WSTAGEDIR}/bin/sh repo \
-o ${REPODIR}/$$(pkg -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/${PKG_VERSION} \
${REPODIR}/$$(pkg -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/${PKG_VERSION} \
${PKGSIGNKEY} ; \
ln -s ${REPODIR}/$$(pkg -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/${PKG_VERSION} \
${REPODIR}/$$(pkg -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/latest
#
#
# checkworld
#
# Run test suite on installed world.
#
checkworld: .PHONY
@if [ ! -x ${LOCALBASE}/bin/kyua ]; then \
echo "You need kyua (devel/kyua) to run the test suite." | /usr/bin/fmt; \
exit 1; \
fi
${_+_}${LOCALBASE}/bin/kyua test -k ${TESTSBASE}/Kyuafile
#
#
# doxygen
#
# Build the API documentation with doxygen
#
doxygen: .PHONY
@if [ ! -x ${LOCALBASE}/bin/doxygen ]; then \
echo "You need doxygen (devel/doxygen) to generate the API documentation of the kernel." | /usr/bin/fmt; \
exit 1; \
fi
${_+_}cd ${.CURDIR}/tools/kerneldoc/subsys; ${MAKE} obj all
#
# update
#
# Update the source tree(s), by running svn/svnup to update to the
# latest copy.
#
update: .PHONY
.if defined(SVN_UPDATE)
@echo "--------------------------------------------------------------"
@echo ">>> Updating ${.CURDIR} using Subversion"
@echo "--------------------------------------------------------------"
@(cd ${.CURDIR}; ${SVN} update ${SVNFLAGS})
.endif
#
# ------------------------------------------------------------------------
#
# From here onwards are utility targets used by the 'make world' and
# related targets. If your 'world' breaks, you may like to try to fix
# the problem and manually run the following targets to attempt to
# complete the build. Beware, this is *not* guaranteed to work, you
# need to have a pretty good grip on the current state of the system
# to attempt to manually finish it. If in doubt, 'make world' again.
#
#
# legacy: Build compatibility shims for the next three targets. This is a
# minimal set of tools and shims necessary to compensate for older systems
# which don't have the APIs required by the targets built in bootstrap-tools,
# build-tools or cross-tools.
#
# ELF Tool Chain libraries are needed for ELF tools and dtrace tools.
# r296685 fix cross-endian objcopy
.if ${BOOTSTRAPPING} < 1100102
_elftoolchain_libs= lib/libelf lib/libdwarf
.endif
legacy: .PHONY
.if ${BOOTSTRAPPING} < 800107 && ${BOOTSTRAPPING} != 0
@echo "ERROR: Source upgrades from versions prior to 8.0 are not supported."; \
false
.endif
.for _tool in tools/build ${_elftoolchain_libs}
${_+_}@${ECHODIR} "===> ${_tool} (obj,includes,all,install)"; \
cd ${.CURDIR}/${_tool}; \
${MAKE} DIRPRFX=${_tool}/ obj; \
${MAKE} DIRPRFX=${_tool}/ DESTDIR=${MAKEOBJDIRPREFIX}/legacy includes; \
${MAKE} DIRPRFX=${_tool}/ all; \
${MAKE} DIRPRFX=${_tool}/ DESTDIR=${MAKEOBJDIRPREFIX}/legacy install
.endfor
#
# bootstrap-tools: Build tools needed for compatibility. These are binaries that
# are built to build other binaries in the system. However, the focus of these
# binaries is usually quite narrow. Bootstrap tools use the host's compiler and
# libraries, augmented by -legacy.
#
_bt= _bootstrap-tools
.if ${MK_GAMES} != "no"
_strfile= usr.bin/fortune/strfile
.endif
.if ${MK_GCC} != "no" && ${MK_CXX} != "no"
_gperf= gnu/usr.bin/gperf
.endif
.if ${MK_GROFF} != "no"
_groff= gnu/usr.bin/groff \
usr.bin/soelim
.endif
.if ${MK_VT} != "no"
_vtfontcvt= usr.bin/vtfontcvt
.endif
.if ${BOOTSTRAPPING} < 900002
_sed= usr.bin/sed
.endif
.if ${BOOTSTRAPPING} < 1000033
_libopenbsd= lib/libopenbsd
_m4= usr.bin/m4
_lex= usr.bin/lex
${_bt}-usr.bin/m4: ${_bt}-lib/libopenbsd
${_bt}-usr.bin/lex: ${_bt}-usr.bin/m4
.endif
.if ${BOOTSTRAPPING} < 1000026
_nmtree= lib/libnetbsd \
usr.sbin/nmtree
${_bt}-usr.sbin/nmtree: ${_bt}-lib/libnetbsd
.endif
.if ${BOOTSTRAPPING} < 1000027
_cat= bin/cat
.endif
# r264059 support for status=
.if ${BOOTSTRAPPING} < 1100017
_dd= bin/dd
.endif
# r277259 crunchide: Correct 64-bit section header offset
# r281674 crunchide: always include both 32- and 64-bit ELF support
# r285986 crunchen: use STRIPBIN rather than STRIP
.if ${BOOTSTRAPPING} < 1100078
_crunch= usr.sbin/crunch
.endif
.if ${BOOTSTRAPPING} >= 900040 && ${BOOTSTRAPPING} < 900041
_awk= usr.bin/awk
.endif
# r296926 -P keymap search path, MFC to stable/10 in r298297
.if ${BOOTSTRAPPING} < 1003501 || \
(${BOOTSTRAPPING} >= 1100000 && ${BOOTSTRAPPING} < 1100103)
_kbdcontrol= usr.sbin/kbdcontrol
.endif
_yacc= lib/liby \
usr.bin/yacc
${_bt}-usr.bin/yacc: ${_bt}-lib/liby
.if ${MK_BSNMP} != "no"
_gensnmptree= usr.sbin/bsnmpd/gensnmptree
.endif
# We need to build tblgen when we're building clang either as
# the bootstrap compiler, or as the part of the normal build.
.if ${MK_CLANG_BOOTSTRAP} != "no" || ${MK_CLANG} != "no"
_clang_tblgen= \
lib/clang/libllvmsupport \
lib/clang/libllvmtablegen \
usr.bin/clang/llvm-tblgen \
usr.bin/clang/clang-tblgen
${_bt}-usr.bin/clang/clang-tblgen: ${_bt}-lib/clang/libllvmtablegen ${_bt}-lib/clang/libllvmsupport
${_bt}-usr.bin/clang/llvm-tblgen: ${_bt}-lib/clang/libllvmtablegen ${_bt}-lib/clang/libllvmsupport
.endif
# Default to building the GPL DTC, but build the BSDL one if users explicitly
# request it.
_dtc= usr.bin/dtc
.if ${MK_GPL_DTC} != "no"
_dtc= gnu/usr.bin/dtc
.endif
.if ${MK_KERBEROS} != "no"
_kerberos5_bootstrap_tools= \
kerberos5/tools/make-roken \
kerberos5/lib/libroken \
kerberos5/lib/libvers \
kerberos5/tools/asn1_compile \
kerberos5/tools/slc \
usr.bin/compile_et
.ORDER: ${_kerberos5_bootstrap_tools:C/^/${_bt}-/g}
.endif
# r283777 makewhatis(1) replaced with mandoc version which builds a database.
.if ${MK_MANDOCDB} != "no" && ${BOOTSTRAPPING} < 1100075
_libopenbsd?= lib/libopenbsd
_makewhatis= lib/libsqlite3 \
usr.bin/mandoc
${_bt}-usr.bin/mandoc: ${_bt}-lib/libopenbsd ${_bt}-lib/libsqlite3
.endif
bootstrap-tools: .PHONY
# Please document (add comment) why something is in 'bootstrap-tools'.
# Try to bound the building of the bootstrap-tool to just the
# FreeBSD versions that need the tool built at this stage of the build.
.for _tool in \
${_clang_tblgen} \
${_kerberos5_bootstrap_tools} \
${_strfile} \
${_gperf} \
${_groff} \
${_dtc} \
${_awk} \
${_cat} \
${_dd} \
${_kbdcontrol} \
usr.bin/lorder \
${_libopenbsd} \
${_makewhatis} \
usr.bin/rpcgen \
${_sed} \
${_yacc} \
${_m4} \
${_lex} \
usr.bin/xinstall \
${_gensnmptree} \
usr.sbin/config \
${_crunch} \
${_nmtree} \
${_vtfontcvt} \
usr.bin/localedef
${_bt}-${_tool}: .PHONY .MAKE
${_+_}@${ECHODIR} "===> ${_tool} (obj,all,install)"; \
cd ${.CURDIR}/${_tool}; \
${MAKE} DIRPRFX=${_tool}/ obj; \
${MAKE} DIRPRFX=${_tool}/ all; \
${MAKE} DIRPRFX=${_tool}/ DESTDIR=${MAKEOBJDIRPREFIX}/legacy install
bootstrap-tools: ${_bt}-${_tool}
.endfor
#
# build-tools: Build special purpose build tools
#
.if !defined(NO_SHARE)
_share= share/syscons/scrnmaps
.endif
.if ${MK_GCC} != "no"
_gcc_tools= gnu/usr.bin/cc/cc_tools
.endif
.if ${MK_RESCUE} != "no"
# rescue includes programs that have build-tools targets
_rescue=rescue/rescue
.endif
.for _tool in \
bin/csh \
bin/sh \
${LOCAL_TOOL_DIRS} \
lib/ncurses/ncurses \
lib/ncurses/ncursesw \
${_rescue} \
${_share} \
usr.bin/awk \
lib/libmagic \
usr.bin/mkesdb_static \
usr.bin/mkcsmapper_static \
usr.bin/vi/catalog
build-tools_${_tool}: .PHONY
${_+_}@${ECHODIR} "===> ${_tool} (obj,build-tools)"; \
cd ${.CURDIR}/${_tool}; \
${MAKE} DIRPRFX=${_tool}/ obj; \
${MAKE} DIRPRFX=${_tool}/ build-tools
build-tools: build-tools_${_tool}
.endfor
.for _tool in \
${_gcc_tools}
build-tools_${_tool}: .PHONY
${_+_}@${ECHODIR} "===> ${_tool} (obj,all)"; \
cd ${.CURDIR}/${_tool}; \
${MAKE} DIRPRFX=${_tool}/ obj; \
${MAKE} DIRPRFX=${_tool}/ all
build-tools: build-tools_${_tool}
.endfor
#
# kernel-tools: Build kernel-building tools
#
kernel-tools: .PHONY
mkdir -p ${MAKEOBJDIRPREFIX}/usr
mtree -deU -f ${.CURDIR}/etc/mtree/BSD.usr.dist \
-p ${MAKEOBJDIRPREFIX}/usr >/dev/null
#
# cross-tools: All the tools needed to build the rest of the system after
# we get done with the earlier stages. It is the last set of tools needed
# to begin building the target binaries.
#
.if ${TARGET_ARCH} != ${MACHINE_ARCH}
.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "i386"
_btxld= usr.sbin/btxld
.endif
.endif
# Rebuild ctfconvert and ctfmerge to avoid difficult-to-diagnose failures
# resulting from missing bug fixes or ELF Toolchain updates.
.if ${MK_CDDL} != "no"
_dtrace_tools= cddl/lib/libctf cddl/usr.bin/ctfconvert \
cddl/usr.bin/ctfmerge
.endif
# If we're given an XAS, don't build binutils.
.if ${XAS:M/*} == ""
.if ${MK_BINUTILS_BOOTSTRAP} != "no"
_binutils= gnu/usr.bin/binutils
.endif
.if ${MK_ELFTOOLCHAIN_BOOTSTRAP} != "no"
_elftctools= lib/libelftc \
lib/libpe \
usr.bin/elfcopy \
usr.bin/nm \
usr.bin/size \
usr.bin/strings
# These are not required by the build, but can be useful for developers who
# cross-build on a FreeBSD 10 host:
_elftctools+= usr.bin/addr2line
.endif
.elif ${TARGET_ARCH} != ${MACHINE_ARCH} && ${MK_ELFTOOLCHAIN_BOOTSTRAP} != "no"
# If cross-building with an external binutils we still need to build strip for
# the target (for at least crunchide).
_elftctools= lib/libelftc \
lib/libpe \
usr.bin/elfcopy
.endif
# If an full path to an external cross compiler is given, don't build
# a cross compiler.
.if ${XCC:N${CCACHE_BIN}:M/*} == "" && ${MK_CROSS_COMPILER} != "no"
.if ${MK_CLANG_BOOTSTRAP} != "no"
_clang= usr.bin/clang
_clang_libs= lib/clang
.endif
.if ${MK_GCC_BOOTSTRAP} != "no"
_cc= gnu/usr.bin/cc
.endif
.endif
.if ${MK_USB} != "no"
_usb_tools= sys/boot/usb/tools
.endif
cross-tools: .MAKE .PHONY
.for _tool in \
${_clang_libs} \
${_clang} \
${_binutils} \
${_elftctools} \
${_dtrace_tools} \
${_cc} \
${_btxld} \
${_crunchide} \
${_usb_tools}
${_+_}@${ECHODIR} "===> ${_tool} (obj,all,install)"; \
cd ${.CURDIR}/${_tool}; \
${MAKE} DIRPRFX=${_tool}/ obj; \
${MAKE} DIRPRFX=${_tool}/ all; \
${MAKE} DIRPRFX=${_tool}/ DESTDIR=${MAKEOBJDIRPREFIX} install
.endfor
NXBDESTDIR= ${OBJTREE}/nxb-bin
NXBENV= MAKEOBJDIRPREFIX=${OBJTREE}/nxb \
INSTALL="sh ${.CURDIR}/tools/install.sh" \
PATH=${PATH}:${OBJTREE}/gperf_for_gcc/usr/bin
NXBMAKE= ${NXBENV} ${MAKE} \
LLVM_TBLGEN=${NXBDESTDIR}/usr/bin/llvm-tblgen \
CLANG_TBLGEN=${NXBDESTDIR}/usr/bin/clang-tblgen \
MACHINE=${TARGET} MACHINE_ARCH=${TARGET_ARCH} \
MK_GDB=no MK_TESTS=no \
SSP_CFLAGS= \
MK_HTML=no NO_LINT=yes MK_MAN=no \
-DNO_PIC MK_PROFILE=no -DNO_SHARED \
-DNO_CPU_CFLAGS MK_WARNS=no MK_CTF=no \
MK_CLANG_EXTRAS=no MK_CLANG_FULL=no \
MK_LLDB=no MK_DEBUG_FILES=no
# native-xtools is the current target for qemu-user cross builds of ports
# via poudriere and the imgact_binmisc kernel module.
# For non-clang enabled targets that are still using the in tree gcc
# we must build a gperf binary for one instance of its Makefiles. On
# clang-enabled systems, the gperf binary is obsolete.
native-xtools: .PHONY
.if ${MK_GCC_BOOTSTRAP} != "no"
mkdir -p ${OBJTREE}/gperf_for_gcc/usr/bin
${_+_}@${ECHODIR} "===> ${_gperf} (obj,all,install)"; \
cd ${.CURDIR}/${_gperf}; \
${NXBMAKE} DIRPRFX=${_gperf}/ obj; \
${NXBMAKE} DIRPRFX=${_gperf}/ all; \
${NXBMAKE} DIRPRFX=${_gperf}/ DESTDIR=${OBJTREE}/gperf_for_gcc install
.endif
mkdir -p ${NXBDESTDIR}/bin ${NXBDESTDIR}/sbin ${NXBDESTDIR}/usr
mtree -deU -f ${.CURDIR}/etc/mtree/BSD.usr.dist \
-p ${NXBDESTDIR}/usr >/dev/null
mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \
-p ${NXBDESTDIR}/usr/include >/dev/null
.if ${MK_DEBUG_FILES} != "no"
mtree -deU -f ${.CURDIR}/etc/mtree/BSD.debug.dist \
-p ${NXBDESTDIR}/usr/lib >/dev/null
.endif
.for _tool in \
bin/cat \
bin/chmod \
bin/cp \
bin/csh \
bin/echo \
bin/expr \
bin/hostname \
bin/ln \
bin/ls \
bin/mkdir \
bin/mv \
bin/ps \
bin/realpath \
bin/rm \
bin/rmdir \
bin/sh \
bin/sleep \
${_clang_tblgen} \
usr.bin/ar \
${_binutils} \
${_elftctools} \
${_cc} \
${_gcc_tools} \
${_clang_libs} \
${_clang} \
sbin/md5 \
sbin/sysctl \
gnu/usr.bin/diff \
usr.bin/awk \
usr.bin/basename \
usr.bin/bmake \
usr.bin/bzip2 \
usr.bin/cmp \
usr.bin/dirname \
usr.bin/env \
usr.bin/fetch \
usr.bin/find \
usr.bin/grep \
usr.bin/gzip \
usr.bin/id \
usr.bin/lex \
usr.bin/lorder \
usr.bin/mktemp \
usr.bin/mt \
usr.bin/patch \
usr.bin/sed \
usr.bin/sort \
usr.bin/tar \
usr.bin/touch \
usr.bin/tr \
usr.bin/true \
usr.bin/uniq \
usr.bin/unzip \
usr.bin/xargs \
usr.bin/xinstall \
usr.bin/xz \
usr.bin/yacc \
usr.sbin/chown
${_+_}@${ECHODIR} "===> ${_tool} (obj,all,install)"; \
cd ${.CURDIR}/${_tool}; \
${NXBMAKE} DIRPRFX=${_tool}/ obj; \
${NXBMAKE} DIRPRFX=${_tool}/ all; \
${NXBMAKE} DIRPRFX=${_tool}/ DESTDIR=${NXBDESTDIR} install
.endfor
#
# hierarchy - ensure that all the needed directories are present
#
hierarchy hier: .MAKE .PHONY
${_+_}cd ${.CURDIR}/etc; ${HMAKE} distrib-dirs
#
# libraries - build all libraries, and install them under ${DESTDIR}.
#
# The list of libraries with dependents (${_prebuild_libs}) and their
# interdependencies (__L) are built automatically by the
# ${.CURDIR}/tools/make_libdeps.sh script.
#
libraries: .MAKE .PHONY
${_+_}cd ${.CURDIR}; \
${MAKE} -f Makefile.inc1 _prereq_libs; \
${MAKE} -f Makefile.inc1 _startup_libs; \
${MAKE} -f Makefile.inc1 _prebuild_libs; \
${MAKE} -f Makefile.inc1 _generic_libs
#
# static libgcc.a prerequisite for shared libc
#
_prereq_libs= gnu/lib/libssp/libssp_nonshared gnu/lib/libgcc lib/libcompiler_rt
# These dependencies are not automatically generated:
#
# gnu/lib/csu, gnu/lib/libgcc, lib/csu and lib/libc must be built before
# all shared libraries for ELF.
#
_startup_libs= gnu/lib/csu
_startup_libs+= lib/csu
_startup_libs+= gnu/lib/libgcc
_startup_libs+= lib/libcompiler_rt
_startup_libs+= lib/libc
_startup_libs+= lib/libc_nonshared
.if ${MK_LIBCPLUSPLUS} != "no"
_startup_libs+= lib/libcxxrt
.endif
gnu/lib/libgcc__L: lib/libc__L
gnu/lib/libgcc__L: lib/libc_nonshared__L
.if ${MK_LIBCPLUSPLUS} != "no"
lib/libcxxrt__L: gnu/lib/libgcc__L
.endif
_prebuild_libs= ${_kerberos5_lib_libasn1} \
${_kerberos5_lib_libhdb} \
${_kerberos5_lib_libheimbase} \
${_kerberos5_lib_libheimntlm} \
${_libsqlite3} \
${_kerberos5_lib_libheimipcc} \
${_kerberos5_lib_libhx509} ${_kerberos5_lib_libkrb5} \
${_kerberos5_lib_libroken} \
${_kerberos5_lib_libwind} \
lib/libbz2 ${_libcom_err} lib/libcrypt \
lib/libelf lib/libexpat \
lib/libfigpar \
${_lib_libgssapi} \
lib/libkiconv lib/libkvm lib/liblzma lib/libmd lib/libnv \
${_lib_casper} \
lib/ncurses/ncurses lib/ncurses/ncursesw \
lib/libopie lib/libpam/libpam ${_lib_libthr} \
${_lib_libradius} lib/libsbuf lib/libtacplus \
lib/libgeom \
${_cddl_lib_libumem} ${_cddl_lib_libnvpair} \
${_cddl_lib_libuutil} \
${_cddl_lib_libavl} \
${_cddl_lib_libzfs_core} \
${_cddl_lib_libctf} \
lib/libutil lib/libpjdlog ${_lib_libypclnt} lib/libz lib/msun \
${_secure_lib_libcrypto} ${_lib_libldns} \
${_secure_lib_libssh} ${_secure_lib_libssl} \
gnu/lib/libdialog
.if ${MK_GNUCXX} != "no"
_prebuild_libs+= gnu/lib/libstdc++ gnu/lib/libsupc++
gnu/lib/libstdc++__L: lib/msun__L
gnu/lib/libsupc++__L: gnu/lib/libstdc++__L
.endif
.if ${MK_LIBCPLUSPLUS} != "no"
_prebuild_libs+= lib/libc++
.endif
lib/libgeom__L: lib/libexpat__L
lib/libkvm__L: lib/libelf__L
.if ${MK_LIBTHR} != "no"
_lib_libthr= lib/libthr
.endif
.if ${MK_RADIUS_SUPPORT} != "no"
_lib_libradius= lib/libradius
.endif
.if ${MK_OFED} != "no"
_ofed_lib= contrib/ofed/usr.lib
_prebuild_libs+= contrib/ofed/usr.lib/libosmcomp
_prebuild_libs+= contrib/ofed/usr.lib/libopensm
_prebuild_libs+= contrib/ofed/usr.lib/libibcommon
_prebuild_libs+= contrib/ofed/usr.lib/libibverbs
_prebuild_libs+= contrib/ofed/usr.lib/libibumad
contrib/ofed/usr.lib/libopensm__L: lib/libthr__L
contrib/ofed/usr.lib/libosmcomp__L: lib/libthr__L
contrib/ofed/usr.lib/libibumad__L: contrib/ofed/usr.lib/libibcommon__L
.endif
.if ${MK_CASPER} != "no"
_lib_casper= lib/libcasper
.endif
lib/libpjdlog__L: lib/libutil__L
lib/libcasper__L: lib/libnv__L
lib/liblzma__L: lib/libthr__L
_generic_libs= ${_cddl_lib} gnu/lib ${_kerberos5_lib} lib ${_secure_lib} usr.bin/lex/lib ${_ofed_lib}
.for _DIR in ${LOCAL_LIB_DIRS}
.if exists(${.CURDIR}/${_DIR}/Makefile) && empty(_generic_libs:M${_DIR})
_generic_libs+= ${_DIR}
.endif
.endfor
lib/libopie__L lib/libtacplus__L: lib/libmd__L
.if ${MK_CDDL} != "no"
_cddl_lib_libumem= cddl/lib/libumem
_cddl_lib_libnvpair= cddl/lib/libnvpair
_cddl_lib_libavl= cddl/lib/libavl
_cddl_lib_libuutil= cddl/lib/libuutil
_cddl_lib_libzfs_core= cddl/lib/libzfs_core
_cddl_lib_libctf= cddl/lib/libctf
_cddl_lib= cddl/lib
cddl/lib/libzfs_core__L: cddl/lib/libnvpair__L
cddl/lib/libzfs__L: lib/libgeom__L
cddl/lib/libctf__L: lib/libz__L
.endif
# cddl/lib/libdtrace requires lib/libproc and lib/librtld_db; it's only built
# on select architectures though (see cddl/lib/Makefile)
.if ${MACHINE_CPUARCH} != "sparc64"
_prebuild_libs+= lib/libproc lib/librtld_db
.endif
.if ${MK_CRYPT} != "no"
.if ${MK_OPENSSL} != "no"
_secure_lib_libcrypto= secure/lib/libcrypto
_secure_lib_libssl= secure/lib/libssl
lib/libradius__L secure/lib/libssl__L: secure/lib/libcrypto__L
.if ${MK_LDNS} != "no"
_lib_libldns= lib/libldns
lib/libldns__L: secure/lib/libcrypto__L
.endif
.if ${MK_OPENSSH} != "no"
_secure_lib_libssh= secure/lib/libssh
secure/lib/libssh__L: lib/libz__L secure/lib/libcrypto__L lib/libcrypt__L
.if ${MK_LDNS} != "no"
secure/lib/libssh__L: lib/libldns__L
.endif
.if ${MK_KERBEROS_SUPPORT} != "no"
secure/lib/libssh__L: lib/libgssapi__L kerberos5/lib/libkrb5__L \
kerberos5/lib/libhx509__L kerberos5/lib/libasn1__L lib/libcom_err__L \
lib/libmd__L kerberos5/lib/libroken__L
.endif
.endif
.endif
_secure_lib= secure/lib
.endif
.if ${MK_KERBEROS} != "no"
kerberos5/lib/libasn1__L: lib/libcom_err__L kerberos5/lib/libroken__L
kerberos5/lib/libhdb__L: kerberos5/lib/libasn1__L lib/libcom_err__L \
kerberos5/lib/libkrb5__L kerberos5/lib/libroken__L \
kerberos5/lib/libwind__L lib/libsqlite3__L
kerberos5/lib/libheimntlm__L: secure/lib/libcrypto__L kerberos5/lib/libkrb5__L \
kerberos5/lib/libroken__L lib/libcom_err__L
kerberos5/lib/libhx509__L: kerberos5/lib/libasn1__L lib/libcom_err__L \
secure/lib/libcrypto__L kerberos5/lib/libroken__L kerberos5/lib/libwind__L
kerberos5/lib/libkrb5__L: kerberos5/lib/libasn1__L lib/libcom_err__L \
lib/libcrypt__L secure/lib/libcrypto__L kerberos5/lib/libhx509__L \
kerberos5/lib/libroken__L kerberos5/lib/libwind__L \
kerberos5/lib/libheimbase__L kerberos5/lib/libheimipcc__L
kerberos5/lib/libroken__L: lib/libcrypt__L
kerberos5/lib/libwind__L: kerberos5/lib/libroken__L lib/libcom_err__L
kerberos5/lib/libheimbase__L: lib/libthr__L
kerberos5/lib/libheimipcc__L: kerberos5/lib/libroken__L kerberos5/lib/libheimbase__L lib/libthr__L
.endif
lib/libsqlite3__L: lib/libthr__L
.if ${MK_GSSAPI} != "no"
_lib_libgssapi= lib/libgssapi
.endif
.if ${MK_KERBEROS} != "no"
_kerberos5_lib= kerberos5/lib
_kerberos5_lib_libasn1= kerberos5/lib/libasn1
_kerberos5_lib_libhdb= kerberos5/lib/libhdb
_kerberos5_lib_libheimbase= kerberos5/lib/libheimbase
_kerberos5_lib_libkrb5= kerberos5/lib/libkrb5
_kerberos5_lib_libhx509= kerberos5/lib/libhx509
_kerberos5_lib_libroken= kerberos5/lib/libroken
_kerberos5_lib_libheimntlm= kerberos5/lib/libheimntlm
_libsqlite3= lib/libsqlite3
_kerberos5_lib_libheimipcc= kerberos5/lib/libheimipcc
_kerberos5_lib_libwind= kerberos5/lib/libwind
_libcom_err= lib/libcom_err
.endif
.if ${MK_NIS} != "no"
_lib_libypclnt= lib/libypclnt
.endif
.if ${MK_OPENSSL} == "no"
lib/libradius__L: lib/libmd__L
.endif
lib/libproc__L: \
${_cddl_lib_libctf:D${_cddl_lib_libctf}__L} lib/libelf__L lib/librtld_db__L lib/libutil__L
.if ${MK_CXX} != "no"
.if ${MK_LIBCPLUSPLUS} != "no"
lib/libproc__L: lib/libcxxrt__L
.else # This implies MK_GNUCXX != "no"; see lib/libproc
lib/libproc__L: gnu/lib/libsupc++__L
.endif
.endif
gnu/lib/libdialog__L: lib/msun__L lib/ncurses/ncursesw__L
.for _lib in ${_prereq_libs}
${_lib}__PL: .PHONY .MAKE
.if exists(${.CURDIR}/${_lib})
${_+_}@${ECHODIR} "===> ${_lib} (obj,all,install)"; \
cd ${.CURDIR}/${_lib}; \
${MAKE} MK_TESTS=no DIRPRFX=${_lib}/ obj; \
${MAKE} MK_TESTS=no MK_PROFILE=no -DNO_PIC \
DIRPRFX=${_lib}/ all; \
${MAKE} MK_TESTS=no MK_PROFILE=no -DNO_PIC \
DIRPRFX=${_lib}/ install
.endif
.endfor
.for _lib in ${_startup_libs} ${_prebuild_libs} ${_generic_libs}
${_lib}__L: .PHONY .MAKE
.if exists(${.CURDIR}/${_lib})
${_+_}@${ECHODIR} "===> ${_lib} (obj,all,install)"; \
cd ${.CURDIR}/${_lib}; \
${MAKE} MK_TESTS=no DIRPRFX=${_lib}/ obj; \
${MAKE} MK_TESTS=no DIRPRFX=${_lib}/ all; \
${MAKE} MK_TESTS=no DIRPRFX=${_lib}/ install
.endif
.endfor
_prereq_libs: ${_prereq_libs:S/$/__PL/}
_startup_libs: ${_startup_libs:S/$/__L/}
_prebuild_libs: ${_prebuild_libs:S/$/__L/}
_generic_libs: ${_generic_libs:S/$/__L/}
# Enable SUBDIR_PARALLEL when not calling 'make all', unless called from
# 'everything' with _PARALLEL_SUBDIR_OK set. This is because it is unlikely
# that running 'make all' from the top-level, especially with a SUBDIR_OVERRIDE
# or LOCAL_DIRS set, will have a reliable build if SUBDIRs are built in
# parallel. This is safe for the world stage of buildworld though since it has
# already built libraries in a proper order and installed includes into
# WORLDTMP. Special handling is done for SUBDIR ordering for 'install*' to
# avoid trashing a system if it crashes mid-install.
.if !make(all) || defined(_PARALLEL_SUBDIR_OK)
SUBDIR_PARALLEL=
.endif
.include <bsd.subdir.mk>
.if make(check-old) || make(check-old-dirs) || \
make(check-old-files) || make(check-old-libs) || \
make(delete-old) || make(delete-old-dirs) || \
make(delete-old-files) || make(delete-old-libs)
#
# check for / delete old files section
#
.include "ObsoleteFiles.inc"
OLD_LIBS_MESSAGE="Please be sure no application still uses those libraries, \
else you can not start such an application. Consult UPDATING for more \
information regarding how to cope with the removal/revision bump of a \
specific library."
.if !defined(BATCH_DELETE_OLD_FILES)
RM_I=-i
.else
RM_I=-v
.endif
delete-old-files: .PHONY
@echo ">>> Removing old files (only deletes safe to delete libs)"
# Ask for every old file if the user really wants to remove it.
# It's annoying, but better safe than sorry.
# NB: We cannot pass the list of OLD_FILES as a parameter because the
# argument list will get too long. Using .for/.endfor make "loops" will make
# the Makefile parser segfault.
@exec 3<&0; \
cd ${.CURDIR}; \
${MAKE} -f ${.CURDIR}/Makefile.inc1 ${.MAKEFLAGS} ${.TARGET} \
-V OLD_FILES -V "OLD_FILES:Musr/share/*.gz:R" | xargs -n1 | \
while read file; do \
if [ -f "${DESTDIR}/$${file}" -o -L "${DESTDIR}/$${file}" ]; then \
chflags noschg "${DESTDIR}/$${file}" 2>/dev/null || true; \
rm ${RM_I} "${DESTDIR}/$${file}" <&3; \
fi; \
for ext in debug symbols; do \
if ! [ -e "${DESTDIR}/$${file}" ] && [ -f \
"${DESTDIR}${DEBUGDIR}/$${file}.$${ext}" ]; then \
rm ${RM_I} "${DESTDIR}${DEBUGDIR}/$${file}.$${ext}" \
<&3; \
fi; \
done; \
done
# Remove catpages without corresponding manpages.
@exec 3<&0; \
find ${DESTDIR}/usr/share/man/cat* ! -type d | \
sed -ep -e's:${DESTDIR}/usr/share/man/cat:${DESTDIR}/usr/share/man/man:' | \
while read catpage; do \
read manpage; \
if [ ! -e "$${manpage}" ]; then \
rm ${RM_I} $${catpage} <&3; \
fi; \
done
@echo ">>> Old files removed"
check-old-files: .PHONY
@echo ">>> Checking for old files"
@cd ${.CURDIR}; \
${MAKE} -f ${.CURDIR}/Makefile.inc1 ${.MAKEFLAGS} ${.TARGET} \
-V OLD_FILES -V "OLD_FILES:Musr/share/*.gz:R" | xargs -n1 | \
while read file; do \
if [ -f "${DESTDIR}/$${file}" -o -L "${DESTDIR}/$${file}" ]; then \
echo "${DESTDIR}/$${file}"; \
fi; \
for ext in debug symbols; do \
if [ -f "${DESTDIR}${DEBUGDIR}/$${file}.$${ext}" ]; then \
echo "${DESTDIR}${DEBUGDIR}/$${file}.$${ext}"; \
fi; \
done; \
done
# Check for catpages without corresponding manpages.
@find ${DESTDIR}/usr/share/man/cat* ! -type d | \
sed -ep -e's:${DESTDIR}/usr/share/man/cat:${DESTDIR}/usr/share/man/man:' | \
while read catpage; do \
read manpage; \
if [ ! -e "$${manpage}" ]; then \
echo $${catpage}; \
fi; \
done
delete-old-libs: .PHONY
@echo ">>> Removing old libraries"
@echo "${OLD_LIBS_MESSAGE}" | fmt
@exec 3<&0; \
cd ${.CURDIR}; \
${MAKE} -f ${.CURDIR}/Makefile.inc1 ${.MAKEFLAGS} ${.TARGET} \
-V OLD_LIBS | xargs -n1 | \
while read file; do \
if [ -f "${DESTDIR}/$${file}" -o -L "${DESTDIR}/$${file}" ]; then \
chflags noschg "${DESTDIR}/$${file}" 2>/dev/null || true; \
rm ${RM_I} "${DESTDIR}/$${file}" <&3; \
fi; \
for ext in debug symbols; do \
if ! [ -e "${DESTDIR}/$${file}" ] && [ -f \
"${DESTDIR}${DEBUGDIR}/$${file}.$${ext}" ]; then \
rm ${RM_I} "${DESTDIR}${DEBUGDIR}/$${file}.$${ext}" \
<&3; \
fi; \
done; \
done
@echo ">>> Old libraries removed"
check-old-libs: .PHONY
@echo ">>> Checking for old libraries"
@cd ${.CURDIR}; \
${MAKE} -f ${.CURDIR}/Makefile.inc1 ${.MAKEFLAGS} ${.TARGET} \
-V OLD_LIBS | xargs -n1 | \
while read file; do \
if [ -f "${DESTDIR}/$${file}" -o -L "${DESTDIR}/$${file}" ]; then \
echo "${DESTDIR}/$${file}"; \
fi; \
for ext in debug symbols; do \
if [ -f "${DESTDIR}${DEBUGDIR}/$${file}.$${ext}" ]; then \
echo "${DESTDIR}${DEBUGDIR}/$${file}.$${ext}"; \
fi; \
done; \
done
delete-old-dirs: .PHONY
@echo ">>> Removing old directories"
@cd ${.CURDIR}; \
${MAKE} -f ${.CURDIR}/Makefile.inc1 ${.MAKEFLAGS} ${.TARGET} \
-V OLD_DIRS | xargs -n1 | sort -r | \
while read dir; do \
if [ -d "${DESTDIR}/$${dir}" ]; then \
rmdir -v "${DESTDIR}/$${dir}" || true; \
elif [ -L "${DESTDIR}/$${dir}" ]; then \
echo "${DESTDIR}/$${dir} is a link, please remove everything manually."; \
fi; \
done
@echo ">>> Old directories removed"
check-old-dirs: .PHONY
@echo ">>> Checking for old directories"
@cd ${.CURDIR}; \
${MAKE} -f ${.CURDIR}/Makefile.inc1 ${.MAKEFLAGS} ${.TARGET} \
-V OLD_DIRS | xargs -n1 | \
while read dir; do \
if [ -d "${DESTDIR}/$${dir}" ]; then \
echo "${DESTDIR}/$${dir}"; \
elif [ -L "${DESTDIR}/$${dir}" ]; then \
echo "${DESTDIR}/$${dir} is a link, please remove everything manually."; \
fi; \
done
delete-old: delete-old-files delete-old-dirs .PHONY
@echo "To remove old libraries run '${MAKE} delete-old-libs'."
check-old: check-old-files check-old-libs check-old-dirs .PHONY
@echo "To remove old files and directories run '${MAKE} delete-old'."
@echo "To remove old libraries run '${MAKE} delete-old-libs'."
.endif
#
# showconfig - show build configuration.
#
showconfig: .PHONY
@(${MAKE} -n -f ${.CURDIR}/sys/conf/kern.opts.mk -V dummy -dg1; \
${MAKE} -n -f ${.CURDIR}/share/mk/src.opts.mk -V dummy -dg1) 2>&1 | grep ^MK_ | sort -u
.if !empty(KRNLOBJDIR) && !empty(KERNCONF)
DTBOUTPUTPATH= ${KRNLOBJDIR}/${KERNCONF}/
.if !defined(FDT_DTS_FILE) || empty(FDT_DTS_FILE)
.if exists(${KERNCONFDIR}/${KERNCONF})
FDT_DTS_FILE!= awk 'BEGIN {FS="="} /^makeoptions[[:space:]]+FDT_DTS_FILE/ {print $$2}' \
'${KERNCONFDIR}/${KERNCONF}' ; echo
.endif
.endif
.endif
.if !defined(DTBOUTPUTPATH) || !exists(${DTBOUTPUTPATH})
DTBOUTPUTPATH= ${.CURDIR}
.endif
#
# Build 'standalone' Device Tree Blob
#
builddtb: .PHONY
@PATH=${TMPPATH} MACHINE=${TARGET} \
${.CURDIR}/sys/tools/fdt/make_dtb.sh ${.CURDIR}/sys \
"${FDT_DTS_FILE}" ${DTBOUTPUTPATH}
###############
# cleanworld
# In the following, the first 'rm' in a series will usually remove all
# files and directories. If it does not, then there are probably some
# files with file flags set, so this unsets them and tries the 'rm' a
# second time. There are situations where this target will be cleaning
# some directories via more than one method, but that duplication is
# needed to correctly handle all the possible situations. Removing all
# files without file flags set in the first 'rm' instance saves time,
# because 'chflags' will need to operate on fewer files afterwards.
#
# It is expected that BW_CANONICALOBJDIR == the CANONICALOBJDIR as would be
# created by bsd.obj.mk, except that we don't want to .include that file
# in this makefile.
#
BW_CANONICALOBJDIR:=${OBJTREE}${.CURDIR}
cleanworld: .PHONY
.if exists(${BW_CANONICALOBJDIR}/)
-rm -rf ${BW_CANONICALOBJDIR}/*
-chflags -R 0 ${BW_CANONICALOBJDIR}
rm -rf ${BW_CANONICALOBJDIR}/*
.endif
.if ${.CURDIR} == ${.OBJDIR} || ${.CURDIR}/obj == ${.OBJDIR}
# To be safe in this case, fall back to a 'make cleandir'
${_+_}@cd ${.CURDIR}; ${MAKE} cleandir
.endif
.if defined(TARGET) && defined(TARGET_ARCH)
.if ${TARGET} == ${MACHINE} && ${TARGET_ARCH} == ${MACHINE_ARCH}
XDEV_CPUTYPE?=${CPUTYPE}
.else
XDEV_CPUTYPE?=${TARGET_CPUTYPE}
.endif
NOFUN=-DNO_FSCHG MK_HTML=no -DNO_LINT \
MK_MAN=no MK_NLS=no MK_PROFILE=no \
MK_KERBEROS=no MK_RESCUE=no MK_TESTS=no MK_WARNS=no \
TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \
CPUTYPE=${XDEV_CPUTYPE}
XDDIR=${TARGET_ARCH}-freebsd
XDTP?=/usr/${XDDIR}
.if ${XDTP:N/*}
.error XDTP variable should be an absolute path
.endif
CDBENV=MAKEOBJDIRPREFIX=${MAKEOBJDIRPREFIX}/${XDDIR} \
INSTALL="sh ${.CURDIR}/tools/install.sh"
CDENV= ${CDBENV} \
TOOLS_PREFIX=${XDTP}
CD2CFLAGS=-isystem ${XDDESTDIR}/usr/include -L${XDDESTDIR}/usr/lib \
--sysroot=${XDDESTDIR}/ -B${XDDESTDIR}/usr/libexec \
-B${XDDESTDIR}/usr/bin -B${XDDESTDIR}/usr/lib
CD2ENV=${CDENV} CC="${CC} ${CD2CFLAGS}" CXX="${CXX} ${CD2CFLAGS}" \
CPP="${CPP} ${CD2CFLAGS}" \
MACHINE=${TARGET} MACHINE_ARCH=${TARGET_ARCH}
CDTMP= ${MAKEOBJDIRPREFIX}/${XDDIR}/${.CURDIR}/tmp
CDMAKE=${CDENV} PATH=${CDTMP}/usr/bin:${PATH} ${MAKE} ${NOFUN}
CD2MAKE=${CD2ENV} PATH=${CDTMP}/usr/bin:${XDDESTDIR}/usr/bin:${PATH} ${MAKE} ${NOFUN}
XDDESTDIR=${DESTDIR}/${XDTP}
.if !defined(OSREL)
OSREL!= uname -r | sed -e 's/[-(].*//'
.endif
.ORDER: xdev-build xdev-install xdev-links
xdev: xdev-build xdev-install .PHONY
.ORDER: _xb-worldtmp _xb-bootstrap-tools _xb-build-tools _xb-cross-tools
xdev-build: _xb-worldtmp _xb-bootstrap-tools _xb-build-tools _xb-cross-tools .PHONY
_xb-worldtmp: .PHONY
mkdir -p ${CDTMP}/usr
mtree -deU -f ${.CURDIR}/etc/mtree/BSD.usr.dist \
-p ${CDTMP}/usr >/dev/null
_xb-bootstrap-tools: .PHONY
.for _tool in \
${_clang_tblgen} \
${_gperf}
${_+_}@${ECHODIR} "===> ${_tool} (obj,all,install)"; \
cd ${.CURDIR}/${_tool}; \
${CDMAKE} DIRPRFX=${_tool}/ obj; \
${CDMAKE} DIRPRFX=${_tool}/ all; \
${CDMAKE} DIRPRFX=${_tool}/ DESTDIR=${CDTMP} install
.endfor
_xb-build-tools: .PHONY
${_+_}@cd ${.CURDIR}; \
${CDBENV} ${MAKE} -f Makefile.inc1 ${NOFUN} build-tools
_xb-cross-tools: .PHONY
.for _tool in \
${_binutils} \
${_elftctools} \
usr.bin/ar \
${_clang_libs} \
${_clang} \
${_cc}
${_+_}@${ECHODIR} "===> xdev ${_tool} (obj,all)"; \
cd ${.CURDIR}/${_tool}; \
${CDMAKE} DIRPRFX=${_tool}/ obj; \
${CDMAKE} DIRPRFX=${_tool}/ all
.endfor
_xi-mtree: .PHONY
${_+_}@${ECHODIR} "mtree populating ${XDDESTDIR}"
mkdir -p ${XDDESTDIR}
mtree -deU -f ${.CURDIR}/etc/mtree/BSD.root.dist \
-p ${XDDESTDIR} >/dev/null
mtree -deU -f ${.CURDIR}/etc/mtree/BSD.usr.dist \
-p ${XDDESTDIR}/usr >/dev/null
mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \
-p ${XDDESTDIR}/usr/include >/dev/null
.if defined(LIBCOMPAT)
mtree -deU -f ${.CURDIR}/etc/mtree/BSD.lib${libcompat}.dist \
-p ${XDDESTDIR}/usr >/dev/null
.endif
.if ${MK_TESTS} != "no"
mkdir -p ${XDDESTDIR}${TESTSBASE}
mtree -deU -f ${.CURDIR}/etc/mtree/BSD.tests.dist \
-p ${XDDESTDIR}${TESTSBASE} >/dev/null
.endif
.ORDER: xdev-build _xi-mtree _xi-cross-tools _xi-includes _xi-libraries
xdev-install: xdev-build _xi-mtree _xi-cross-tools _xi-includes _xi-libraries .PHONY
_xi-cross-tools: .PHONY
@echo "_xi-cross-tools"
.for _tool in \
${_binutils} \
${_elftctools} \
usr.bin/ar \
${_clang_libs} \
${_clang} \
${_cc}
${_+_}@${ECHODIR} "===> xdev ${_tool} (install)"; \
cd ${.CURDIR}/${_tool}; \
${CDMAKE} DIRPRFX=${_tool}/ install DESTDIR=${XDDESTDIR}
.endfor
_xi-includes: .PHONY
${_+_}cd ${.CURDIR}; ${CD2MAKE} -f Makefile.inc1 includes \
DESTDIR=${XDDESTDIR}
_xi-libraries: .PHONY
${_+_}cd ${.CURDIR}; ${CD2MAKE} -f Makefile.inc1 libraries \
DESTDIR=${XDDESTDIR}
xdev-links: .PHONY
${_+_}cd ${XDDESTDIR}/usr/bin; \
mkdir -p ../../../../usr/bin; \
for i in *; do \
ln -sf ../../${XDTP}/usr/bin/$$i \
../../../../usr/bin/${XDDIR}-$$i; \
ln -sf ../../${XDTP}/usr/bin/$$i \
../../../../usr/bin/${XDDIR}${OSREL}-$$i; \
done
.else
xdev xdev-build xdev-install xdev-links: .PHONY
@echo "*** Error: Both TARGET and TARGET_ARCH must be defined for \"${.TARGET}\" target"
.endif
Index: user/ngie/bsnmp_cleanup/lib/libc/tests/nss/testutil.h
===================================================================
--- user/ngie/bsnmp_cleanup/lib/libc/tests/nss/testutil.h (revision 299696)
+++ user/ngie/bsnmp_cleanup/lib/libc/tests/nss/testutil.h (revision 299697)
@@ -1,333 +1,330 @@
/*-
* Copyright (c) 2006 Michael Bushkov <bushman@freebsd.org>
*
* 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/queue.h>
#define DECLARE_TEST_DATA(ent) \
struct ent##_entry { \
struct ent data; \
STAILQ_ENTRY(ent##_entry) entries; \
}; \
\
struct ent##_test_data { \
void (*clone_func)(struct ent *, struct ent const *); \
void (*free_func)(struct ent *); \
\
STAILQ_HEAD(ent_head, ent##_entry) snapshot_data; \
}; \
\
void __##ent##_test_data_init(struct ent##_test_data *, \
void (*)(struct ent *, struct ent const *), \
void (*freef)(struct ent *)); \
void __##ent##_test_data_destroy(struct ent##_test_data *); \
\
void __##ent##_test_data_append(struct ent##_test_data *, struct ent *data);\
int __##ent##_test_data_foreach(struct ent##_test_data *, \
int (*)(struct ent *, void *), void *); \
int __##ent##_test_data_compare(struct ent##_test_data *, \
struct ent##_test_data *, int (*)(struct ent *, struct ent *, \
void *), void *); \
struct ent *__##ent##_test_data_find(struct ent##_test_data *, struct ent *,\
int (*)(struct ent *, struct ent *, void *), void *); \
void __##ent##_test_data_clear(struct ent##_test_data *);
#define TEST_DATA_INIT(ent, td, clonef, freef)\
__##ent##_test_data_init(td, clonef, freef)
#define TEST_DATA_DESTROY(ent, td) __##ent##_test_data_destroy(td)
#define TEST_DATA_APPEND(ent, td, d) __##ent##_test_data_append(td, d)
#define TEST_DATA_FOREACH(ent, td, f, mdata)\
__##ent##_test_data_foreach(td, f, mdata)
#define TEST_DATA_COMPARE(ent, td1, td2, fcmp, mdata)\
__##ent##_test_data_compare(td1, td2, fcmp, mdata);
#define TEST_DATA_FIND(ent, td, d, fcmp, mdata)\
__##ent##_test_data_find(td, d, fcmp, mdata)
#define TEST_DATA_CLEAR(ent, td) __##ent##_test_data_clear(td)
#define IMPLEMENT_TEST_DATA(ent) \
void \
__##ent##_test_data_init(struct ent##_test_data *td, \
void (*clonef)(struct ent *, struct ent const *), \
void (*freef)(struct ent *)) \
{ \
ATF_REQUIRE(td != NULL); \
ATF_REQUIRE(clonef != NULL); \
ATF_REQUIRE(freef != NULL); \
\
memset(td, 0, sizeof(*td)); \
td->clone_func = clonef; \
td->free_func = freef; \
STAILQ_INIT(&td->snapshot_data); \
} \
\
void \
__##ent##_test_data_destroy(struct ent##_test_data *td) \
{ \
__##ent##_test_data_clear(td); \
} \
\
void \
__##ent##_test_data_append(struct ent##_test_data *td, struct ent *app_data)\
{ \
struct ent##_entry *e; \
\
ATF_REQUIRE(td != NULL); \
ATF_REQUIRE(app_data != NULL); \
\
e = (struct ent##_entry *)malloc(sizeof(struct ent##_entry)); \
ATF_REQUIRE(e != NULL); \
memset(e, 0, sizeof(struct ent##_entry)); \
\
td->clone_func(&e->data, app_data); \
STAILQ_INSERT_TAIL(&td->snapshot_data, e, entries); \
} \
\
int \
__##ent##_test_data_foreach(struct ent##_test_data *td, \
int (*forf)(struct ent *, void *), void *mdata) \
{ \
struct ent##_entry *e; \
int rv; \
\
ATF_REQUIRE(td != NULL); \
ATF_REQUIRE(forf != NULL); \
\
rv = 0; \
STAILQ_FOREACH(e, &td->snapshot_data, entries) { \
rv = forf(&e->data, mdata); \
if (rv != 0) \
break; \
} \
\
return (rv); \
} \
\
int \
__##ent##_test_data_compare(struct ent##_test_data *td1, struct ent##_test_data *td2,\
int (*cmp_func)(struct ent *, struct ent *, void *), void *mdata)\
{ \
struct ent##_entry *e1, *e2; \
int rv; \
\
ATF_REQUIRE(td1 != NULL); \
ATF_REQUIRE(td2 != NULL); \
ATF_REQUIRE(cmp_func != NULL); \
\
e1 = STAILQ_FIRST(&td1->snapshot_data); \
e2 = STAILQ_FIRST(&td2->snapshot_data); \
\
rv = 0; \
do { \
if ((e1 == NULL) || (e2 == NULL)) { \
if (e1 == e2) \
return (0); \
else \
return (-1); \
} \
\
rv = cmp_func(&e1->data, &e2->data, mdata); \
e1 = STAILQ_NEXT(e1, entries); \
e2 = STAILQ_NEXT(e2, entries); \
} while (rv == 0); \
\
return (rv); \
} \
\
struct ent * \
__##ent##_test_data_find(struct ent##_test_data *td, struct ent *data, \
int (*cmp)(struct ent *, struct ent *, void *), void *mdata) \
{ \
struct ent##_entry *e; \
struct ent *result; \
\
ATF_REQUIRE(td != NULL); \
ATF_REQUIRE(cmp != NULL); \
\
result = NULL; \
STAILQ_FOREACH(e, &td->snapshot_data, entries) { \
if (cmp(&e->data, data, mdata) == 0) { \
result = &e->data; \
break; \
} \
} \
\
return (result); \
} \
\
\
void \
__##ent##_test_data_clear(struct ent##_test_data *td) \
{ \
struct ent##_entry *e; \
ATF_REQUIRE(td != NULL); \
\
while (!STAILQ_EMPTY(&td->snapshot_data)) { \
e = STAILQ_FIRST(&td->snapshot_data); \
STAILQ_REMOVE_HEAD(&td->snapshot_data, entries); \
\
td->free_func(&e->data); \
free(e); \
e = NULL; \
} \
}
#define DECLARE_TEST_FILE_SNAPSHOT(ent) \
struct ent##_snp_param { \
FILE *fp; \
void (*sdump_func)(struct ent *, char *, size_t); \
}; \
\
int __##ent##_snapshot_write_func(struct ent *, void *); \
int __##ent##_snapshot_write(char const *, struct ent##_test_data *, \
void (*)(struct ent *, char *, size_t)); \
int __##ent##_snapshot_read(char const *, struct ent##_test_data *, \
int (*)(struct ent *, char *));
#define TEST_SNAPSHOT_FILE_WRITE(ent, fname, td, f) \
__##ent##_snapshot_write(fname, td, f)
#define TEST_SNAPSHOT_FILE_READ(ent, fname, td, f) \
__##ent##_snapshot_read(fname, td, f)
#define IMPLEMENT_TEST_FILE_SNAPSHOT(ent) \
int \
__##ent##_snapshot_write_func(struct ent *data, void *mdata) \
{ \
char buffer[1024]; \
struct ent##_snp_param *param; \
\
ATF_REQUIRE(data != NULL); \
\
param = (struct ent##_snp_param *)mdata; \
param->sdump_func(data, buffer, sizeof(buffer)); \
fputs(buffer, param->fp); \
fputc('\n', param->fp); \
\
return (0); \
} \
\
int \
__##ent##_snapshot_write(char const *fname, struct ent##_test_data *td, \
void (*sdump_func)(struct ent *, char *, size_t)) \
{ \
struct ent##_snp_param param; \
\
ATF_REQUIRE(fname != NULL); \
ATF_REQUIRE(td != NULL); \
\
param.fp = fopen(fname, "w"); \
if (param.fp == NULL) \
return (-1); \
\
param.sdump_func = sdump_func; \
__##ent##_test_data_foreach(td, __##ent##_snapshot_write_func, &param);\
fclose(param.fp); \
\
return (0); \
} \
\
int \
__##ent##_snapshot_read(char const *fname, struct ent##_test_data *td, \
int (*read_func)(struct ent *, char *)) \
{ \
- char buffer[1024]; \
struct ent data; \
- char *s; \
FILE *fi; \
size_t len; \
int rv; \
\
ATF_REQUIRE(fname != NULL); \
ATF_REQUIRE(td != NULL); \
\
fi = fopen(fname, "r"); \
if (fi == NULL) \
return (-1); \
\
rv = 0; \
- memset(buffer, 0, sizeof(buffer)); \
while (!feof(fi)) { \
- s = fgets(buffer, sizeof(buffer), fi); \
- if (s != NULL && s[0] != '#') { \
- len = strlen(s); \
- if (len == 0) \
- continue; \
- if (buffer[len - 1] == '\n') \
- buffer[len -1] = '\0'; \
- \
- rv = read_func(&data, s); \
- if (rv == 0) { \
- __##ent##_test_data_append(td, &data); \
- td->free_func(&data); \
- } else \
- goto fin; \
- } \
+ char *buf = fgetln(fi, &len); \
+ if (buf == NULL || len <= 1) \
+ continue; \
+ if (buf[len - 1] == '\n') \
+ buf[len - 1] = '\0'; \
+ else \
+ buf[len] = '\0'; \
+ if (buf[0] == '#') \
+ continue; \
+ rv = read_func(&data, buf); \
+ if (rv == 0) { \
+ __##ent##_test_data_append(td, &data); \
+ td->free_func(&data); \
+ } else \
+ goto fin; \
} \
\
fin: \
fclose(fi); \
return (rv); \
}
#define DECLARE_1PASS_TEST(ent) \
int __##ent##_1pass_test(struct ent##_test_data *, \
int (*)(struct ent *, void *), \
void *);
#define DO_1PASS_TEST(ent, td, f, mdata) \
__##ent##_1pass_test(td, f, mdata)
#define IMPLEMENT_1PASS_TEST(ent) \
int \
__##ent##_1pass_test(struct ent##_test_data *td, \
int (*tf)(struct ent *, void *), \
void *mdata) \
{ \
int rv; \
rv = __##ent##_test_data_foreach(td, tf, mdata); \
\
return (rv); \
}
#define DECLARE_2PASS_TEST(ent) \
int __##ent##_2pass_test(struct ent##_test_data *, \
struct ent##_test_data *, \
int (*)(struct ent *, struct ent *, void *), void *);
#define DO_2PASS_TEST(ent, td1, td2, f, mdata) \
__##ent##_2pass_test(td1, td2, f, mdata)
#define IMPLEMENT_2PASS_TEST(ent) \
int \
__##ent##_2pass_test(struct ent##_test_data *td1, \
struct ent##_test_data *td2, \
int (*cmp_func)(struct ent *, struct ent *, void *), \
void *cmp_mdata) \
{ \
int rv; \
\
rv = __##ent##_test_data_compare(td1, td2, cmp_func, cmp_mdata); \
return (rv); \
}
Index: user/ngie/bsnmp_cleanup/sys/amd64/amd64/pmap.c
===================================================================
--- user/ngie/bsnmp_cleanup/sys/amd64/amd64/pmap.c (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/amd64/amd64/pmap.c (revision 299697)
@@ -1,7167 +1,7166 @@
/*-
* Copyright (c) 1991 Regents of the University of California.
* All rights reserved.
* Copyright (c) 1994 John S. Dyson
* All rights reserved.
* Copyright (c) 1994 David Greenman
* All rights reserved.
* Copyright (c) 2003 Peter Wemm
* All rights reserved.
* Copyright (c) 2005-2010 Alan L. Cox <alc@cs.rice.edu>
* All rights reserved.
*
* This code is derived from software contributed to Berkeley by
* the Systems Programming Group of the University of Utah Computer
* Science Department and William Jolitz of UUNET Technologies Inc.
*
* 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.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
*
* from: @(#)pmap.c 7.7 (Berkeley) 5/12/91
*/
/*-
* Copyright (c) 2003 Networks Associates Technology, Inc.
* All rights reserved.
*
* This software was developed for the FreeBSD Project by Jake Burkholder,
* Safeport Network Services, and Network Associates Laboratories, the
* Security Research Division of Network Associates, Inc. under
* DARPA/SPAWAR contract N66001-01-C-8035 ("CBOSS"), as part of the DARPA
* CHATS research program.
*
* 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.
*/
#define AMD64_NPT_AWARE
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
/*
* Manages physical address maps.
*
* Since the information managed by this module is
* also stored by the logical address mapping module,
* this module may throw away valid virtual-to-physical
* mappings at almost any time. However, invalidations
* of virtual-to-physical mappings must be done as
* requested.
*
* In order to cope with hardware architectures which
* make virtual-to-physical map invalidates expensive,
* this module may delay invalidate or reduced protection
* operations until such time as they are actually
* necessary. This module is given full information as
* to which processors are currently using which maps,
* and to when physical maps must be made correct.
*/
#include "opt_pmap.h"
#include "opt_vm.h"
#include <sys/param.h>
#include <sys/bus.h>
#include <sys/systm.h>
#include <sys/kernel.h>
#include <sys/ktr.h>
#include <sys/lock.h>
#include <sys/malloc.h>
#include <sys/mman.h>
#include <sys/mutex.h>
#include <sys/proc.h>
#include <sys/rwlock.h>
#include <sys/sx.h>
#include <sys/vmem.h>
#include <sys/vmmeter.h>
#include <sys/sched.h>
#include <sys/sysctl.h>
-#include <sys/_unrhdr.h>
#include <sys/smp.h>
#include <vm/vm.h>
#include <vm/vm_param.h>
#include <vm/vm_kern.h>
#include <vm/vm_page.h>
#include <vm/vm_map.h>
#include <vm/vm_object.h>
#include <vm/vm_extern.h>
#include <vm/vm_pageout.h>
#include <vm/vm_pager.h>
#include <vm/vm_phys.h>
#include <vm/vm_radix.h>
#include <vm/vm_reserv.h>
#include <vm/uma.h>
#include <machine/intr_machdep.h>
#include <x86/apicvar.h>
#include <machine/cpu.h>
#include <machine/cputypes.h>
#include <machine/md_var.h>
#include <machine/pcb.h>
#include <machine/specialreg.h>
#ifdef SMP
#include <machine/smp.h>
#endif
static __inline boolean_t
pmap_type_guest(pmap_t pmap)
{
return ((pmap->pm_type == PT_EPT) || (pmap->pm_type == PT_RVI));
}
static __inline boolean_t
pmap_emulate_ad_bits(pmap_t pmap)
{
return ((pmap->pm_flags & PMAP_EMULATE_AD_BITS) != 0);
}
static __inline pt_entry_t
pmap_valid_bit(pmap_t pmap)
{
pt_entry_t mask;
switch (pmap->pm_type) {
case PT_X86:
case PT_RVI:
mask = X86_PG_V;
break;
case PT_EPT:
if (pmap_emulate_ad_bits(pmap))
mask = EPT_PG_EMUL_V;
else
mask = EPT_PG_READ;
break;
default:
panic("pmap_valid_bit: invalid pm_type %d", pmap->pm_type);
}
return (mask);
}
static __inline pt_entry_t
pmap_rw_bit(pmap_t pmap)
{
pt_entry_t mask;
switch (pmap->pm_type) {
case PT_X86:
case PT_RVI:
mask = X86_PG_RW;
break;
case PT_EPT:
if (pmap_emulate_ad_bits(pmap))
mask = EPT_PG_EMUL_RW;
else
mask = EPT_PG_WRITE;
break;
default:
panic("pmap_rw_bit: invalid pm_type %d", pmap->pm_type);
}
return (mask);
}
static __inline pt_entry_t
pmap_global_bit(pmap_t pmap)
{
pt_entry_t mask;
switch (pmap->pm_type) {
case PT_X86:
mask = X86_PG_G;
break;
case PT_RVI:
case PT_EPT:
mask = 0;
break;
default:
panic("pmap_global_bit: invalid pm_type %d", pmap->pm_type);
}
return (mask);
}
static __inline pt_entry_t
pmap_accessed_bit(pmap_t pmap)
{
pt_entry_t mask;
switch (pmap->pm_type) {
case PT_X86:
case PT_RVI:
mask = X86_PG_A;
break;
case PT_EPT:
if (pmap_emulate_ad_bits(pmap))
mask = EPT_PG_READ;
else
mask = EPT_PG_A;
break;
default:
panic("pmap_accessed_bit: invalid pm_type %d", pmap->pm_type);
}
return (mask);
}
static __inline pt_entry_t
pmap_modified_bit(pmap_t pmap)
{
pt_entry_t mask;
switch (pmap->pm_type) {
case PT_X86:
case PT_RVI:
mask = X86_PG_M;
break;
case PT_EPT:
if (pmap_emulate_ad_bits(pmap))
mask = EPT_PG_WRITE;
else
mask = EPT_PG_M;
break;
default:
panic("pmap_modified_bit: invalid pm_type %d", pmap->pm_type);
}
return (mask);
}
extern struct pcpu __pcpu[];
#if !defined(DIAGNOSTIC)
#ifdef __GNUC_GNU_INLINE__
#define PMAP_INLINE __attribute__((__gnu_inline__)) inline
#else
#define PMAP_INLINE extern inline
#endif
#else
#define PMAP_INLINE
#endif
#ifdef PV_STATS
#define PV_STAT(x) do { x ; } while (0)
#else
#define PV_STAT(x) do { } while (0)
#endif
#define pa_index(pa) ((pa) >> PDRSHIFT)
#define pa_to_pvh(pa) (&pv_table[pa_index(pa)])
#define NPV_LIST_LOCKS MAXCPU
#define PHYS_TO_PV_LIST_LOCK(pa) \
(&pv_list_locks[pa_index(pa) % NPV_LIST_LOCKS])
#define CHANGE_PV_LIST_LOCK_TO_PHYS(lockp, pa) do { \
struct rwlock **_lockp = (lockp); \
struct rwlock *_new_lock; \
\
_new_lock = PHYS_TO_PV_LIST_LOCK(pa); \
if (_new_lock != *_lockp) { \
if (*_lockp != NULL) \
rw_wunlock(*_lockp); \
*_lockp = _new_lock; \
rw_wlock(*_lockp); \
} \
} while (0)
#define CHANGE_PV_LIST_LOCK_TO_VM_PAGE(lockp, m) \
CHANGE_PV_LIST_LOCK_TO_PHYS(lockp, VM_PAGE_TO_PHYS(m))
#define RELEASE_PV_LIST_LOCK(lockp) do { \
struct rwlock **_lockp = (lockp); \
\
if (*_lockp != NULL) { \
rw_wunlock(*_lockp); \
*_lockp = NULL; \
} \
} while (0)
#define VM_PAGE_TO_PV_LIST_LOCK(m) \
PHYS_TO_PV_LIST_LOCK(VM_PAGE_TO_PHYS(m))
struct pmap kernel_pmap_store;
vm_offset_t virtual_avail; /* VA of first avail page (after kernel bss) */
vm_offset_t virtual_end; /* VA of last avail page (end of kernel AS) */
int nkpt;
SYSCTL_INT(_machdep, OID_AUTO, nkpt, CTLFLAG_RD, &nkpt, 0,
"Number of kernel page table pages allocated on bootup");
static int ndmpdp;
vm_paddr_t dmaplimit;
vm_offset_t kernel_vm_end = VM_MIN_KERNEL_ADDRESS;
pt_entry_t pg_nx;
static SYSCTL_NODE(_vm, OID_AUTO, pmap, CTLFLAG_RD, 0, "VM/pmap parameters");
static int pat_works = 1;
SYSCTL_INT(_vm_pmap, OID_AUTO, pat_works, CTLFLAG_RD, &pat_works, 1,
"Is page attribute table fully functional?");
static int pg_ps_enabled = 1;
SYSCTL_INT(_vm_pmap, OID_AUTO, pg_ps_enabled, CTLFLAG_RDTUN | CTLFLAG_NOFETCH,
&pg_ps_enabled, 0, "Are large page mappings enabled?");
#define PAT_INDEX_SIZE 8
static int pat_index[PAT_INDEX_SIZE]; /* cache mode to PAT index conversion */
static u_int64_t KPTphys; /* phys addr of kernel level 1 */
static u_int64_t KPDphys; /* phys addr of kernel level 2 */
u_int64_t KPDPphys; /* phys addr of kernel level 3 */
u_int64_t KPML4phys; /* phys addr of kernel level 4 */
static u_int64_t DMPDphys; /* phys addr of direct mapped level 2 */
static u_int64_t DMPDPphys; /* phys addr of direct mapped level 3 */
static int ndmpdpphys; /* number of DMPDPphys pages */
/*
* pmap_mapdev support pre initialization (i.e. console)
*/
#define PMAP_PREINIT_MAPPING_COUNT 8
static struct pmap_preinit_mapping {
vm_paddr_t pa;
vm_offset_t va;
vm_size_t sz;
int mode;
} pmap_preinit_mapping[PMAP_PREINIT_MAPPING_COUNT];
static int pmap_initialized;
static struct rwlock_padalign pvh_global_lock;
/*
* Data for the pv entry allocation mechanism
*/
static TAILQ_HEAD(pch, pv_chunk) pv_chunks = TAILQ_HEAD_INITIALIZER(pv_chunks);
static struct mtx pv_chunks_mutex;
static struct rwlock pv_list_locks[NPV_LIST_LOCKS];
static struct md_page *pv_table;
/*
* All those kernel PT submaps that BSD is so fond of
*/
pt_entry_t *CMAP1 = 0;
caddr_t CADDR1 = 0;
static vm_offset_t qframe = 0;
static struct mtx qframe_mtx;
static int pmap_flags = PMAP_PDE_SUPERPAGE; /* flags for x86 pmaps */
int pmap_pcid_enabled = 1;
SYSCTL_INT(_vm_pmap, OID_AUTO, pcid_enabled, CTLFLAG_RDTUN | CTLFLAG_NOFETCH,
&pmap_pcid_enabled, 0, "Is TLB Context ID enabled ?");
int invpcid_works = 0;
SYSCTL_INT(_vm_pmap, OID_AUTO, invpcid_works, CTLFLAG_RD, &invpcid_works, 0,
"Is the invpcid instruction available ?");
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.
*/
static caddr_t crashdumpmap;
static void free_pv_chunk(struct pv_chunk *pc);
static void free_pv_entry(pmap_t pmap, pv_entry_t pv);
static pv_entry_t get_pv_entry(pmap_t pmap, struct rwlock **lockp);
static int popcnt_pc_map_elem_pq(uint64_t elem);
static vm_page_t reclaim_pv_chunk(pmap_t locked_pmap, struct rwlock **lockp);
static void reserve_pv_entries(pmap_t pmap, int needed,
struct rwlock **lockp);
static void pmap_pv_demote_pde(pmap_t pmap, vm_offset_t va, vm_paddr_t pa,
struct rwlock **lockp);
static boolean_t pmap_pv_insert_pde(pmap_t pmap, vm_offset_t va, vm_paddr_t pa,
struct rwlock **lockp);
static void pmap_pv_promote_pde(pmap_t pmap, vm_offset_t va, vm_paddr_t pa,
struct rwlock **lockp);
static void pmap_pvh_free(struct md_page *pvh, pmap_t pmap, vm_offset_t va);
static pv_entry_t pmap_pvh_remove(struct md_page *pvh, pmap_t pmap,
vm_offset_t va);
static int pmap_change_attr_locked(vm_offset_t va, vm_size_t size, int mode);
static boolean_t pmap_demote_pde(pmap_t pmap, pd_entry_t *pde, vm_offset_t va);
static boolean_t pmap_demote_pde_locked(pmap_t pmap, pd_entry_t *pde,
vm_offset_t va, struct rwlock **lockp);
static boolean_t pmap_demote_pdpe(pmap_t pmap, pdp_entry_t *pdpe,
vm_offset_t va);
static boolean_t pmap_enter_pde(pmap_t pmap, vm_offset_t va, vm_page_t m,
vm_prot_t prot, struct rwlock **lockp);
static vm_page_t pmap_enter_quick_locked(pmap_t pmap, vm_offset_t va,
vm_page_t m, vm_prot_t prot, vm_page_t mpte, struct rwlock **lockp);
static void pmap_fill_ptp(pt_entry_t *firstpte, pt_entry_t newpte);
static int pmap_insert_pt_page(pmap_t pmap, vm_page_t mpte);
static void pmap_kenter_attr(vm_offset_t va, vm_paddr_t pa, int mode);
static vm_page_t pmap_lookup_pt_page(pmap_t pmap, vm_offset_t va);
static void pmap_pde_attr(pd_entry_t *pde, int cache_bits, int mask);
static void pmap_promote_pde(pmap_t pmap, pd_entry_t *pde, vm_offset_t va,
struct rwlock **lockp);
static boolean_t pmap_protect_pde(pmap_t pmap, pd_entry_t *pde, vm_offset_t sva,
vm_prot_t prot);
static void pmap_pte_attr(pt_entry_t *pte, int cache_bits, int mask);
static int pmap_remove_pde(pmap_t pmap, pd_entry_t *pdq, vm_offset_t sva,
struct spglist *free, struct rwlock **lockp);
static int pmap_remove_pte(pmap_t pmap, pt_entry_t *ptq, vm_offset_t sva,
pd_entry_t ptepde, struct spglist *free, struct rwlock **lockp);
static void pmap_remove_pt_page(pmap_t pmap, vm_page_t mpte);
static void pmap_remove_page(pmap_t pmap, vm_offset_t va, pd_entry_t *pde,
struct spglist *free);
static boolean_t pmap_try_insert_pv_entry(pmap_t pmap, vm_offset_t va,
vm_page_t m, struct rwlock **lockp);
static void pmap_update_pde(pmap_t pmap, vm_offset_t va, pd_entry_t *pde,
pd_entry_t newpde);
static void pmap_update_pde_invalidate(pmap_t, vm_offset_t va, pd_entry_t pde);
static vm_page_t _pmap_allocpte(pmap_t pmap, vm_pindex_t ptepindex,
struct rwlock **lockp);
static vm_page_t pmap_allocpde(pmap_t pmap, vm_offset_t va,
struct rwlock **lockp);
static vm_page_t pmap_allocpte(pmap_t pmap, vm_offset_t va,
struct rwlock **lockp);
static void _pmap_unwire_ptp(pmap_t pmap, vm_offset_t va, vm_page_t m,
struct spglist *free);
static int pmap_unuse_pt(pmap_t, vm_offset_t, pd_entry_t, struct spglist *);
static vm_offset_t pmap_kmem_choose(vm_offset_t addr);
/*
* Move the kernel virtual free pointer to the next
* 2MB. This is used to help improve performance
* by using a large (2MB) page for much of the kernel
* (.text, .data, .bss)
*/
static vm_offset_t
pmap_kmem_choose(vm_offset_t addr)
{
vm_offset_t newaddr = addr;
newaddr = roundup2(addr, NBPDR);
return (newaddr);
}
/********************/
/* Inline functions */
/********************/
/* Return a non-clipped PD index for a given VA */
static __inline vm_pindex_t
pmap_pde_pindex(vm_offset_t va)
{
return (va >> PDRSHIFT);
}
/* Return various clipped indexes for a given VA */
static __inline vm_pindex_t
pmap_pte_index(vm_offset_t va)
{
return ((va >> PAGE_SHIFT) & ((1ul << NPTEPGSHIFT) - 1));
}
static __inline vm_pindex_t
pmap_pde_index(vm_offset_t va)
{
return ((va >> PDRSHIFT) & ((1ul << NPDEPGSHIFT) - 1));
}
static __inline vm_pindex_t
pmap_pdpe_index(vm_offset_t va)
{
return ((va >> PDPSHIFT) & ((1ul << NPDPEPGSHIFT) - 1));
}
static __inline vm_pindex_t
pmap_pml4e_index(vm_offset_t va)
{
return ((va >> PML4SHIFT) & ((1ul << NPML4EPGSHIFT) - 1));
}
/* Return a pointer to the PML4 slot that corresponds to a VA */
static __inline pml4_entry_t *
pmap_pml4e(pmap_t pmap, vm_offset_t va)
{
return (&pmap->pm_pml4[pmap_pml4e_index(va)]);
}
/* Return a pointer to the PDP slot that corresponds to a VA */
static __inline pdp_entry_t *
pmap_pml4e_to_pdpe(pml4_entry_t *pml4e, vm_offset_t va)
{
pdp_entry_t *pdpe;
pdpe = (pdp_entry_t *)PHYS_TO_DMAP(*pml4e & PG_FRAME);
return (&pdpe[pmap_pdpe_index(va)]);
}
/* Return a pointer to the PDP slot that corresponds to a VA */
static __inline pdp_entry_t *
pmap_pdpe(pmap_t pmap, vm_offset_t va)
{
pml4_entry_t *pml4e;
pt_entry_t PG_V;
PG_V = pmap_valid_bit(pmap);
pml4e = pmap_pml4e(pmap, va);
if ((*pml4e & PG_V) == 0)
return (NULL);
return (pmap_pml4e_to_pdpe(pml4e, va));
}
/* Return a pointer to the PD slot that corresponds to a VA */
static __inline pd_entry_t *
pmap_pdpe_to_pde(pdp_entry_t *pdpe, vm_offset_t va)
{
pd_entry_t *pde;
pde = (pd_entry_t *)PHYS_TO_DMAP(*pdpe & PG_FRAME);
return (&pde[pmap_pde_index(va)]);
}
/* Return a pointer to the PD slot that corresponds to a VA */
static __inline pd_entry_t *
pmap_pde(pmap_t pmap, vm_offset_t va)
{
pdp_entry_t *pdpe;
pt_entry_t PG_V;
PG_V = pmap_valid_bit(pmap);
pdpe = pmap_pdpe(pmap, va);
if (pdpe == NULL || (*pdpe & PG_V) == 0)
return (NULL);
return (pmap_pdpe_to_pde(pdpe, va));
}
/* Return a pointer to the PT slot that corresponds to a VA */
static __inline pt_entry_t *
pmap_pde_to_pte(pd_entry_t *pde, vm_offset_t va)
{
pt_entry_t *pte;
pte = (pt_entry_t *)PHYS_TO_DMAP(*pde & PG_FRAME);
return (&pte[pmap_pte_index(va)]);
}
/* Return a pointer to the PT slot that corresponds to a VA */
static __inline pt_entry_t *
pmap_pte(pmap_t pmap, vm_offset_t va)
{
pd_entry_t *pde;
pt_entry_t PG_V;
PG_V = pmap_valid_bit(pmap);
pde = pmap_pde(pmap, va);
if (pde == NULL || (*pde & PG_V) == 0)
return (NULL);
if ((*pde & PG_PS) != 0) /* compat with i386 pmap_pte() */
return ((pt_entry_t *)pde);
return (pmap_pde_to_pte(pde, va));
}
static __inline void
pmap_resident_count_inc(pmap_t pmap, int count)
{
PMAP_LOCK_ASSERT(pmap, MA_OWNED);
pmap->pm_stats.resident_count += count;
}
static __inline void
pmap_resident_count_dec(pmap_t pmap, int count)
{
PMAP_LOCK_ASSERT(pmap, MA_OWNED);
KASSERT(pmap->pm_stats.resident_count >= count,
("pmap %p resident count underflow %ld %d", pmap,
pmap->pm_stats.resident_count, count));
pmap->pm_stats.resident_count -= count;
}
PMAP_INLINE pt_entry_t *
vtopte(vm_offset_t va)
{
u_int64_t mask = ((1ul << (NPTEPGSHIFT + NPDEPGSHIFT + NPDPEPGSHIFT + NPML4EPGSHIFT)) - 1);
KASSERT(va >= VM_MAXUSER_ADDRESS, ("vtopte on a uva/gpa 0x%0lx", va));
return (PTmap + ((va >> PAGE_SHIFT) & mask));
}
static __inline pd_entry_t *
vtopde(vm_offset_t va)
{
u_int64_t mask = ((1ul << (NPDEPGSHIFT + NPDPEPGSHIFT + NPML4EPGSHIFT)) - 1);
KASSERT(va >= VM_MAXUSER_ADDRESS, ("vtopde on a uva/gpa 0x%0lx", va));
return (PDmap + ((va >> PDRSHIFT) & mask));
}
static u_int64_t
allocpages(vm_paddr_t *firstaddr, int n)
{
u_int64_t ret;
ret = *firstaddr;
bzero((void *)ret, n * PAGE_SIZE);
*firstaddr += n * PAGE_SIZE;
return (ret);
}
CTASSERT(powerof2(NDMPML4E));
/* number of kernel PDP slots */
#define NKPDPE(ptpgs) howmany(ptpgs, NPDEPG)
static void
nkpt_init(vm_paddr_t addr)
{
int pt_pages;
#ifdef NKPT
pt_pages = NKPT;
#else
pt_pages = howmany(addr, 1 << PDRSHIFT);
pt_pages += NKPDPE(pt_pages);
/*
* Add some slop beyond the bare minimum required for bootstrapping
* the kernel.
*
* This is quite important when allocating KVA for kernel modules.
* The modules are required to be linked in the negative 2GB of
* the address space. If we run out of KVA in this region then
* pmap_growkernel() will need to allocate page table pages to map
* the entire 512GB of KVA space which is an unnecessary tax on
* physical memory.
*
* Secondly, device memory mapped as part of setting up the low-
* level console(s) is taken from KVA, starting at virtual_avail.
* This is because cninit() is called after pmap_bootstrap() but
* before vm_init() and pmap_init(). 20MB for a frame buffer is
* not uncommon.
*/
pt_pages += 32; /* 64MB additional slop. */
#endif
nkpt = pt_pages;
}
static void
create_pagetables(vm_paddr_t *firstaddr)
{
int i, j, ndm1g, nkpdpe;
pt_entry_t *pt_p;
pd_entry_t *pd_p;
pdp_entry_t *pdp_p;
pml4_entry_t *p4_p;
/* Allocate page table pages for the direct map */
ndmpdp = howmany(ptoa(Maxmem), NBPDP);
if (ndmpdp < 4) /* Minimum 4GB of dirmap */
ndmpdp = 4;
ndmpdpphys = howmany(ndmpdp, NPDPEPG);
if (ndmpdpphys > NDMPML4E) {
/*
* Each NDMPML4E allows 512 GB, so limit to that,
* and then readjust ndmpdp and ndmpdpphys.
*/
printf("NDMPML4E limits system to %d GB\n", NDMPML4E * 512);
Maxmem = atop(NDMPML4E * NBPML4);
ndmpdpphys = NDMPML4E;
ndmpdp = NDMPML4E * NPDEPG;
}
DMPDPphys = allocpages(firstaddr, ndmpdpphys);
ndm1g = 0;
if ((amd_feature & AMDID_PAGE1GB) != 0)
ndm1g = ptoa(Maxmem) >> PDPSHIFT;
if (ndm1g < ndmpdp)
DMPDphys = allocpages(firstaddr, ndmpdp - ndm1g);
dmaplimit = (vm_paddr_t)ndmpdp << PDPSHIFT;
/* Allocate pages */
KPML4phys = allocpages(firstaddr, 1);
KPDPphys = allocpages(firstaddr, NKPML4E);
/*
* Allocate the initial number of kernel page table pages required to
* bootstrap. We defer this until after all memory-size dependent
* allocations are done (e.g. direct map), so that we don't have to
* build in too much slop in our estimate.
*
* Note that when NKPML4E > 1, we have an empty page underneath
* all but the KPML4I'th one, so we need NKPML4E-1 extra (zeroed)
* pages. (pmap_enter requires a PD page to exist for each KPML4E.)
*/
nkpt_init(*firstaddr);
nkpdpe = NKPDPE(nkpt);
KPTphys = allocpages(firstaddr, nkpt);
KPDphys = allocpages(firstaddr, nkpdpe);
/* Fill in the underlying page table pages */
/* Nominally read-only (but really R/W) from zero to physfree */
/* XXX not fully used, underneath 2M pages */
pt_p = (pt_entry_t *)KPTphys;
for (i = 0; ptoa(i) < *firstaddr; i++)
pt_p[i] = ptoa(i) | X86_PG_RW | X86_PG_V | X86_PG_G;
/* Now map the page tables at their location within PTmap */
pd_p = (pd_entry_t *)KPDphys;
for (i = 0; i < nkpt; i++)
pd_p[i] = (KPTphys + ptoa(i)) | X86_PG_RW | X86_PG_V;
/* Map from zero to end of allocations under 2M pages */
/* This replaces some of the KPTphys entries above */
for (i = 0; (i << PDRSHIFT) < *firstaddr; i++)
pd_p[i] = (i << PDRSHIFT) | X86_PG_RW | X86_PG_V | PG_PS |
X86_PG_G;
/* And connect up the PD to the PDP (leaving room for L4 pages) */
pdp_p = (pdp_entry_t *)(KPDPphys + ptoa(KPML4I - KPML4BASE));
for (i = 0; i < nkpdpe; i++)
pdp_p[i + KPDPI] = (KPDphys + ptoa(i)) | X86_PG_RW | X86_PG_V |
PG_U;
/*
* Now, set up the direct map region using 2MB and/or 1GB pages. If
* the end of physical memory is not aligned to a 1GB page boundary,
* then the residual physical memory is mapped with 2MB pages. Later,
* if pmap_mapdev{_attr}() uses the direct map for non-write-back
* memory, pmap_change_attr() will demote any 2MB or 1GB page mappings
* that are partially used.
*/
pd_p = (pd_entry_t *)DMPDphys;
for (i = NPDEPG * ndm1g, j = 0; i < NPDEPG * ndmpdp; i++, j++) {
pd_p[j] = (vm_paddr_t)i << PDRSHIFT;
/* Preset PG_M and PG_A because demotion expects it. */
pd_p[j] |= X86_PG_RW | X86_PG_V | PG_PS | X86_PG_G |
X86_PG_M | X86_PG_A;
}
pdp_p = (pdp_entry_t *)DMPDPphys;
for (i = 0; i < ndm1g; i++) {
pdp_p[i] = (vm_paddr_t)i << PDPSHIFT;
/* Preset PG_M and PG_A because demotion expects it. */
pdp_p[i] |= X86_PG_RW | X86_PG_V | PG_PS | X86_PG_G |
X86_PG_M | X86_PG_A;
}
for (j = 0; i < ndmpdp; i++, j++) {
pdp_p[i] = DMPDphys + ptoa(j);
pdp_p[i] |= X86_PG_RW | X86_PG_V | PG_U;
}
/* And recursively map PML4 to itself in order to get PTmap */
p4_p = (pml4_entry_t *)KPML4phys;
p4_p[PML4PML4I] = KPML4phys;
p4_p[PML4PML4I] |= X86_PG_RW | X86_PG_V | PG_U;
/* Connect the Direct Map slot(s) up to the PML4. */
for (i = 0; i < ndmpdpphys; i++) {
p4_p[DMPML4I + i] = DMPDPphys + ptoa(i);
p4_p[DMPML4I + i] |= X86_PG_RW | X86_PG_V | PG_U;
}
/* Connect the KVA slots up to the PML4 */
for (i = 0; i < NKPML4E; i++) {
p4_p[KPML4BASE + i] = KPDPphys + ptoa(i);
p4_p[KPML4BASE + i] |= X86_PG_RW | X86_PG_V | PG_U;
}
}
/*
* Bootstrap the system enough to run with virtual memory.
*
* On amd64 this is called after mapping has already been enabled
* and just syncs the pmap module with what has already been done.
* [We can't call it easily with mapping off since the kernel is not
* mapped with PA == VA, hence we would have to relocate every address
* from the linked base (virtual) address "KERNBASE" to the actual
* (physical) address starting relative to 0]
*/
void
pmap_bootstrap(vm_paddr_t *firstaddr)
{
vm_offset_t va;
pt_entry_t *pte;
int i;
/*
* Create an initial set of page tables to run the kernel in.
*/
create_pagetables(firstaddr);
/*
* Add a physical memory segment (vm_phys_seg) corresponding to the
* preallocated kernel page table pages so that vm_page structures
* representing these pages will be created. The vm_page structures
* are required for promotion of the corresponding kernel virtual
* addresses to superpage mappings.
*/
vm_phys_add_seg(KPTphys, KPTphys + ptoa(nkpt));
virtual_avail = (vm_offset_t) KERNBASE + *firstaddr;
virtual_avail = pmap_kmem_choose(virtual_avail);
virtual_end = VM_MAX_KERNEL_ADDRESS;
/* XXX do %cr0 as well */
load_cr4(rcr4() | CR4_PGE);
load_cr3(KPML4phys);
if (cpu_stdext_feature & CPUID_STDEXT_SMEP)
load_cr4(rcr4() | CR4_SMEP);
/*
* Initialize the kernel pmap (which is statically allocated).
*/
PMAP_LOCK_INIT(kernel_pmap);
kernel_pmap->pm_pml4 = (pdp_entry_t *)PHYS_TO_DMAP(KPML4phys);
kernel_pmap->pm_cr3 = KPML4phys;
CPU_FILL(&kernel_pmap->pm_active); /* don't allow deactivation */
TAILQ_INIT(&kernel_pmap->pm_pvchunk);
kernel_pmap->pm_flags = pmap_flags;
/*
* Initialize the global pv list lock.
*/
rw_init(&pvh_global_lock, "pmap pv global");
/*
* Reserve some special page table entries/VA space for temporary
* mapping of pages.
*/
#define SYSMAP(c, p, v, n) \
v = (c)va; va += ((n)*PAGE_SIZE); p = pte; pte += (n);
va = virtual_avail;
pte = vtopte(va);
/*
* Crashdump maps. The first page is reused as CMAP1 for the
* memory test.
*/
SYSMAP(caddr_t, CMAP1, crashdumpmap, MAXDUMPPGS)
CADDR1 = crashdumpmap;
virtual_avail = va;
/* Initialize the PAT MSR. */
pmap_init_pat();
/* Initialize TLB Context Id. */
TUNABLE_INT_FETCH("vm.pmap.pcid_enabled", &pmap_pcid_enabled);
if ((cpu_feature2 & CPUID2_PCID) != 0 && pmap_pcid_enabled) {
/* Check for INVPCID support */
invpcid_works = (cpu_stdext_feature & CPUID_STDEXT_INVPCID)
!= 0;
for (i = 0; i < MAXCPU; i++) {
kernel_pmap->pm_pcids[i].pm_pcid = PMAP_PCID_KERN;
kernel_pmap->pm_pcids[i].pm_gen = 1;
}
__pcpu[0].pc_pcid_next = PMAP_PCID_KERN + 1;
__pcpu[0].pc_pcid_gen = 1;
/*
* pcpu area for APs is zeroed during AP startup.
* pc_pcid_next and pc_pcid_gen are initialized by AP
* during pcpu setup.
*/
load_cr4(rcr4() | CR4_PCIDE);
} else {
pmap_pcid_enabled = 0;
}
}
/*
* Setup the PAT MSR.
*/
void
pmap_init_pat(void)
{
int pat_table[PAT_INDEX_SIZE];
uint64_t pat_msr;
u_long cr0, cr4;
int i;
/* Bail if this CPU doesn't implement PAT. */
if ((cpu_feature & CPUID_PAT) == 0)
panic("no PAT??");
/* Set default PAT index table. */
for (i = 0; i < PAT_INDEX_SIZE; i++)
pat_table[i] = -1;
pat_table[PAT_WRITE_BACK] = 0;
pat_table[PAT_WRITE_THROUGH] = 1;
pat_table[PAT_UNCACHEABLE] = 3;
pat_table[PAT_WRITE_COMBINING] = 3;
pat_table[PAT_WRITE_PROTECTED] = 3;
pat_table[PAT_UNCACHED] = 3;
/* Initialize default PAT entries. */
pat_msr = PAT_VALUE(0, PAT_WRITE_BACK) |
PAT_VALUE(1, PAT_WRITE_THROUGH) |
PAT_VALUE(2, PAT_UNCACHED) |
PAT_VALUE(3, PAT_UNCACHEABLE) |
PAT_VALUE(4, PAT_WRITE_BACK) |
PAT_VALUE(5, PAT_WRITE_THROUGH) |
PAT_VALUE(6, PAT_UNCACHED) |
PAT_VALUE(7, PAT_UNCACHEABLE);
if (pat_works) {
/*
* Leave the indices 0-3 at the default of WB, WT, UC-, and UC.
* Program 5 and 6 as WP and WC.
* Leave 4 and 7 as WB and UC.
*/
pat_msr &= ~(PAT_MASK(5) | PAT_MASK(6));
pat_msr |= PAT_VALUE(5, PAT_WRITE_PROTECTED) |
PAT_VALUE(6, PAT_WRITE_COMBINING);
pat_table[PAT_UNCACHED] = 2;
pat_table[PAT_WRITE_PROTECTED] = 5;
pat_table[PAT_WRITE_COMBINING] = 6;
} else {
/*
* Just replace PAT Index 2 with WC instead of UC-.
*/
pat_msr &= ~PAT_MASK(2);
pat_msr |= PAT_VALUE(2, PAT_WRITE_COMBINING);
pat_table[PAT_WRITE_COMBINING] = 2;
}
/* Disable PGE. */
cr4 = rcr4();
load_cr4(cr4 & ~CR4_PGE);
/* Disable caches (CD = 1, NW = 0). */
cr0 = rcr0();
load_cr0((cr0 & ~CR0_NW) | CR0_CD);
/* Flushes caches and TLBs. */
wbinvd();
invltlb();
/* Update PAT and index table. */
wrmsr(MSR_PAT, pat_msr);
for (i = 0; i < PAT_INDEX_SIZE; i++)
pat_index[i] = pat_table[i];
/* Flush caches and TLBs again. */
wbinvd();
invltlb();
/* Restore caches and PGE. */
load_cr0(cr0);
load_cr4(cr4);
}
/*
* Initialize a vm_page's machine-dependent fields.
*/
void
pmap_page_init(vm_page_t m)
{
TAILQ_INIT(&m->md.pv_list);
m->md.pat_mode = PAT_WRITE_BACK;
}
/*
* Initialize the pmap module.
* Called by vm_init, to initialize any structures that the pmap
* system needs to map virtual memory.
*/
void
pmap_init(void)
{
struct pmap_preinit_mapping *ppim;
vm_page_t mpte;
vm_size_t s;
int error, i, pv_npg;
/*
* Initialize the vm page array entries for the kernel pmap's
* page table pages.
*/
for (i = 0; i < nkpt; i++) {
mpte = PHYS_TO_VM_PAGE(KPTphys + (i << PAGE_SHIFT));
KASSERT(mpte >= vm_page_array &&
mpte < &vm_page_array[vm_page_array_size],
("pmap_init: page table page is out of range"));
mpte->pindex = pmap_pde_pindex(KERNBASE) + i;
mpte->phys_addr = KPTphys + (i << PAGE_SHIFT);
}
/*
* If the kernel is running on a virtual machine, then it must assume
* that MCA is enabled by the hypervisor. Moreover, the kernel must
* be prepared for the hypervisor changing the vendor and family that
* are reported by CPUID. Consequently, the workaround for AMD Family
* 10h Erratum 383 is enabled if the processor's feature set does not
* include at least one feature that is only supported by older Intel
* or newer AMD processors.
*/
if (vm_guest == VM_GUEST_VM && (cpu_feature & CPUID_SS) == 0 &&
(cpu_feature2 & (CPUID2_SSSE3 | CPUID2_SSE41 | CPUID2_AESNI |
CPUID2_AVX | CPUID2_XSAVE)) == 0 && (amd_feature2 & (AMDID2_XOP |
AMDID2_FMA4)) == 0)
workaround_erratum383 = 1;
/*
* Are large page mappings enabled?
*/
TUNABLE_INT_FETCH("vm.pmap.pg_ps_enabled", &pg_ps_enabled);
if (pg_ps_enabled) {
KASSERT(MAXPAGESIZES > 1 && pagesizes[1] == 0,
("pmap_init: can't assign to pagesizes[1]"));
pagesizes[1] = NBPDR;
}
/*
* Initialize the pv chunk list mutex.
*/
mtx_init(&pv_chunks_mutex, "pmap pv chunk list", NULL, MTX_DEF);
/*
* Initialize the pool of pv list locks.
*/
for (i = 0; i < NPV_LIST_LOCKS; i++)
rw_init(&pv_list_locks[i], "pmap pv list");
/*
* Calculate the size of the pv head table for superpages.
*/
pv_npg = howmany(vm_phys_segs[vm_phys_nsegs - 1].end, NBPDR);
/*
* Allocate memory for the pv head table for superpages.
*/
s = (vm_size_t)(pv_npg * sizeof(struct md_page));
s = round_page(s);
pv_table = (struct md_page *)kmem_malloc(kernel_arena, s,
M_WAITOK | M_ZERO);
for (i = 0; i < pv_npg; i++)
TAILQ_INIT(&pv_table[i].pv_list);
pmap_initialized = 1;
for (i = 0; i < PMAP_PREINIT_MAPPING_COUNT; i++) {
ppim = pmap_preinit_mapping + i;
if (ppim->va == 0)
continue;
/* Make the direct map consistent */
if (ppim->pa < dmaplimit && ppim->pa + ppim->sz < dmaplimit) {
(void)pmap_change_attr(PHYS_TO_DMAP(ppim->pa),
ppim->sz, ppim->mode);
}
if (!bootverbose)
continue;
printf("PPIM %u: PA=%#lx, VA=%#lx, size=%#lx, mode=%#x\n", i,
ppim->pa, ppim->va, ppim->sz, ppim->mode);
}
mtx_init(&qframe_mtx, "qfrmlk", NULL, MTX_SPIN);
error = vmem_alloc(kernel_arena, PAGE_SIZE, M_BESTFIT | M_WAITOK,
(vmem_addr_t *)&qframe);
if (error != 0)
panic("qframe allocation failed");
}
static SYSCTL_NODE(_vm_pmap, OID_AUTO, pde, CTLFLAG_RD, 0,
"2MB page mapping counters");
static u_long pmap_pde_demotions;
SYSCTL_ULONG(_vm_pmap_pde, OID_AUTO, demotions, CTLFLAG_RD,
&pmap_pde_demotions, 0, "2MB page demotions");
static u_long pmap_pde_mappings;
SYSCTL_ULONG(_vm_pmap_pde, OID_AUTO, mappings, CTLFLAG_RD,
&pmap_pde_mappings, 0, "2MB page mappings");
static u_long pmap_pde_p_failures;
SYSCTL_ULONG(_vm_pmap_pde, OID_AUTO, p_failures, CTLFLAG_RD,
&pmap_pde_p_failures, 0, "2MB page promotion failures");
static u_long pmap_pde_promotions;
SYSCTL_ULONG(_vm_pmap_pde, OID_AUTO, promotions, CTLFLAG_RD,
&pmap_pde_promotions, 0, "2MB page promotions");
static SYSCTL_NODE(_vm_pmap, OID_AUTO, pdpe, CTLFLAG_RD, 0,
"1GB page mapping counters");
static u_long pmap_pdpe_demotions;
SYSCTL_ULONG(_vm_pmap_pdpe, OID_AUTO, demotions, CTLFLAG_RD,
&pmap_pdpe_demotions, 0, "1GB page demotions");
/***************************************************
* Low level helper routines.....
***************************************************/
static pt_entry_t
pmap_swap_pat(pmap_t pmap, pt_entry_t entry)
{
int x86_pat_bits = X86_PG_PTE_PAT | X86_PG_PDE_PAT;
switch (pmap->pm_type) {
case PT_X86:
case PT_RVI:
/* Verify that both PAT bits are not set at the same time */
KASSERT((entry & x86_pat_bits) != x86_pat_bits,
("Invalid PAT bits in entry %#lx", entry));
/* Swap the PAT bits if one of them is set */
if ((entry & x86_pat_bits) != 0)
entry ^= x86_pat_bits;
break;
case PT_EPT:
/*
* Nothing to do - the memory attributes are represented
* the same way for regular pages and superpages.
*/
break;
default:
panic("pmap_switch_pat_bits: bad pm_type %d", pmap->pm_type);
}
return (entry);
}
/*
* Determine the appropriate bits to set in a PTE or PDE for a specified
* caching mode.
*/
static int
pmap_cache_bits(pmap_t pmap, int mode, boolean_t is_pde)
{
int cache_bits, pat_flag, pat_idx;
if (mode < 0 || mode >= PAT_INDEX_SIZE || pat_index[mode] < 0)
panic("Unknown caching mode %d\n", mode);
switch (pmap->pm_type) {
case PT_X86:
case PT_RVI:
/* The PAT bit is different for PTE's and PDE's. */
pat_flag = is_pde ? X86_PG_PDE_PAT : X86_PG_PTE_PAT;
/* Map the caching mode to a PAT index. */
pat_idx = pat_index[mode];
/* Map the 3-bit index value into the PAT, PCD, and PWT bits. */
cache_bits = 0;
if (pat_idx & 0x4)
cache_bits |= pat_flag;
if (pat_idx & 0x2)
cache_bits |= PG_NC_PCD;
if (pat_idx & 0x1)
cache_bits |= PG_NC_PWT;
break;
case PT_EPT:
cache_bits = EPT_PG_IGNORE_PAT | EPT_PG_MEMORY_TYPE(mode);
break;
default:
panic("unsupported pmap type %d", pmap->pm_type);
}
return (cache_bits);
}
static int
pmap_cache_mask(pmap_t pmap, boolean_t is_pde)
{
int mask;
switch (pmap->pm_type) {
case PT_X86:
case PT_RVI:
mask = is_pde ? X86_PG_PDE_CACHE : X86_PG_PTE_CACHE;
break;
case PT_EPT:
mask = EPT_PG_IGNORE_PAT | EPT_PG_MEMORY_TYPE(0x7);
break;
default:
panic("pmap_cache_mask: invalid pm_type %d", pmap->pm_type);
}
return (mask);
}
static __inline boolean_t
pmap_ps_enabled(pmap_t pmap)
{
return (pg_ps_enabled && (pmap->pm_flags & PMAP_PDE_SUPERPAGE) != 0);
}
static void
pmap_update_pde_store(pmap_t pmap, pd_entry_t *pde, pd_entry_t newpde)
{
switch (pmap->pm_type) {
case PT_X86:
break;
case PT_RVI:
case PT_EPT:
/*
* XXX
* This is a little bogus since the generation number is
* supposed to be bumped up when a region of the address
* space is invalidated in the page tables.
*
* In this case the old PDE entry is valid but yet we want
* to make sure that any mappings using the old entry are
* invalidated in the TLB.
*
* The reason this works as expected is because we rendezvous
* "all" host cpus and force any vcpu context to exit as a
* side-effect.
*/
atomic_add_acq_long(&pmap->pm_eptgen, 1);
break;
default:
panic("pmap_update_pde_store: bad pm_type %d", pmap->pm_type);
}
pde_store(pde, newpde);
}
/*
* After changing the page size for the specified virtual address in the page
* table, flush the corresponding entries from the processor's TLB. Only the
* calling processor's TLB is affected.
*
* The calling thread must be pinned to a processor.
*/
static void
pmap_update_pde_invalidate(pmap_t pmap, vm_offset_t va, pd_entry_t newpde)
{
pt_entry_t PG_G;
if (pmap_type_guest(pmap))
return;
KASSERT(pmap->pm_type == PT_X86,
("pmap_update_pde_invalidate: invalid type %d", pmap->pm_type));
PG_G = pmap_global_bit(pmap);
if ((newpde & PG_PS) == 0)
/* Demotion: flush a specific 2MB page mapping. */
invlpg(va);
else if ((newpde & PG_G) == 0)
/*
* Promotion: flush every 4KB page mapping from the TLB
* because there are too many to flush individually.
*/
invltlb();
else {
/*
* Promotion: flush every 4KB page mapping from the TLB,
* including any global (PG_G) mappings.
*/
invltlb_glob();
}
}
#ifdef SMP
/*
* For SMP, these functions have to use the IPI mechanism for coherence.
*
* N.B.: Before calling any of the following TLB invalidation functions,
* the calling processor must ensure that all stores updating a non-
* kernel page table are globally performed. Otherwise, another
* processor could cache an old, pre-update entry without being
* invalidated. This can happen one of two ways: (1) The pmap becomes
* active on another processor after its pm_active field is checked by
* one of the following functions but before a store updating the page
* table is globally performed. (2) The pmap becomes active on another
* processor before its pm_active field is checked but due to
* speculative loads one of the following functions stills reads the
* pmap as inactive on the other processor.
*
* The kernel page table is exempt because its pm_active field is
* immutable. The kernel page table is always active on every
* processor.
*/
/*
* Interrupt the cpus that are executing in the guest context.
* This will force the vcpu to exit and the cached EPT mappings
* will be invalidated by the host before the next vmresume.
*/
static __inline void
pmap_invalidate_ept(pmap_t pmap)
{
int ipinum;
sched_pin();
KASSERT(!CPU_ISSET(curcpu, &pmap->pm_active),
("pmap_invalidate_ept: absurd pm_active"));
/*
* The TLB mappings associated with a vcpu context are not
* flushed each time a different vcpu is chosen to execute.
*
* This is in contrast with a process's vtop mappings that
* are flushed from the TLB on each context switch.
*
* Therefore we need to do more than just a TLB shootdown on
* the active cpus in 'pmap->pm_active'. To do this we keep
* track of the number of invalidations performed on this pmap.
*
* Each vcpu keeps a cache of this counter and compares it
* just before a vmresume. If the counter is out-of-date an
* invept will be done to flush stale mappings from the TLB.
*/
atomic_add_acq_long(&pmap->pm_eptgen, 1);
/*
* Force the vcpu to exit and trap back into the hypervisor.
*/
ipinum = pmap->pm_flags & PMAP_NESTED_IPIMASK;
ipi_selected(pmap->pm_active, ipinum);
sched_unpin();
}
void
pmap_invalidate_page(pmap_t pmap, vm_offset_t va)
{
cpuset_t *mask;
u_int cpuid, i;
if (pmap_type_guest(pmap)) {
pmap_invalidate_ept(pmap);
return;
}
KASSERT(pmap->pm_type == PT_X86,
("pmap_invalidate_page: invalid type %d", pmap->pm_type));
sched_pin();
if (pmap == kernel_pmap) {
invlpg(va);
mask = &all_cpus;
} else {
cpuid = PCPU_GET(cpuid);
if (pmap == PCPU_GET(curpmap))
invlpg(va);
else if (pmap_pcid_enabled)
pmap->pm_pcids[cpuid].pm_gen = 0;
if (pmap_pcid_enabled) {
CPU_FOREACH(i) {
if (cpuid != i)
pmap->pm_pcids[i].pm_gen = 0;
}
}
mask = &pmap->pm_active;
}
smp_masked_invlpg(*mask, va);
sched_unpin();
}
/* 4k PTEs -- Chosen to exceed the total size of Broadwell L2 TLB */
#define PMAP_INVLPG_THRESHOLD (4 * 1024 * PAGE_SIZE)
void
pmap_invalidate_range(pmap_t pmap, vm_offset_t sva, vm_offset_t eva)
{
cpuset_t *mask;
vm_offset_t addr;
u_int cpuid, i;
if (eva - sva >= PMAP_INVLPG_THRESHOLD) {
pmap_invalidate_all(pmap);
return;
}
if (pmap_type_guest(pmap)) {
pmap_invalidate_ept(pmap);
return;
}
KASSERT(pmap->pm_type == PT_X86,
("pmap_invalidate_range: invalid type %d", pmap->pm_type));
sched_pin();
cpuid = PCPU_GET(cpuid);
if (pmap == kernel_pmap) {
for (addr = sva; addr < eva; addr += PAGE_SIZE)
invlpg(addr);
mask = &all_cpus;
} else {
if (pmap == PCPU_GET(curpmap)) {
for (addr = sva; addr < eva; addr += PAGE_SIZE)
invlpg(addr);
} else if (pmap_pcid_enabled) {
pmap->pm_pcids[cpuid].pm_gen = 0;
}
if (pmap_pcid_enabled) {
CPU_FOREACH(i) {
if (cpuid != i)
pmap->pm_pcids[i].pm_gen = 0;
}
}
mask = &pmap->pm_active;
}
smp_masked_invlpg_range(*mask, sva, eva);
sched_unpin();
}
void
pmap_invalidate_all(pmap_t pmap)
{
cpuset_t *mask;
struct invpcid_descr d;
u_int cpuid, i;
if (pmap_type_guest(pmap)) {
pmap_invalidate_ept(pmap);
return;
}
KASSERT(pmap->pm_type == PT_X86,
("pmap_invalidate_all: invalid type %d", pmap->pm_type));
sched_pin();
if (pmap == kernel_pmap) {
if (pmap_pcid_enabled && invpcid_works) {
bzero(&d, sizeof(d));
invpcid(&d, INVPCID_CTXGLOB);
} else {
invltlb_glob();
}
mask = &all_cpus;
} else {
cpuid = PCPU_GET(cpuid);
if (pmap == PCPU_GET(curpmap)) {
if (pmap_pcid_enabled) {
if (invpcid_works) {
d.pcid = pmap->pm_pcids[cpuid].pm_pcid;
d.pad = 0;
d.addr = 0;
invpcid(&d, INVPCID_CTX);
} else {
load_cr3(pmap->pm_cr3 | pmap->pm_pcids
[PCPU_GET(cpuid)].pm_pcid);
}
} else {
invltlb();
}
} else if (pmap_pcid_enabled) {
pmap->pm_pcids[cpuid].pm_gen = 0;
}
if (pmap_pcid_enabled) {
CPU_FOREACH(i) {
if (cpuid != i)
pmap->pm_pcids[i].pm_gen = 0;
}
}
mask = &pmap->pm_active;
}
smp_masked_invltlb(*mask, pmap);
sched_unpin();
}
void
pmap_invalidate_cache(void)
{
sched_pin();
wbinvd();
smp_cache_flush();
sched_unpin();
}
struct pde_action {
cpuset_t invalidate; /* processors that invalidate their TLB */
pmap_t pmap;
vm_offset_t va;
pd_entry_t *pde;
pd_entry_t newpde;
u_int store; /* processor that updates the PDE */
};
static void
pmap_update_pde_action(void *arg)
{
struct pde_action *act = arg;
if (act->store == PCPU_GET(cpuid))
pmap_update_pde_store(act->pmap, act->pde, act->newpde);
}
static void
pmap_update_pde_teardown(void *arg)
{
struct pde_action *act = arg;
if (CPU_ISSET(PCPU_GET(cpuid), &act->invalidate))
pmap_update_pde_invalidate(act->pmap, act->va, act->newpde);
}
/*
* Change the page size for the specified virtual address in a way that
* prevents any possibility of the TLB ever having two entries that map the
* same virtual address using different page sizes. This is the recommended
* workaround for Erratum 383 on AMD Family 10h processors. It prevents a
* machine check exception for a TLB state that is improperly diagnosed as a
* hardware error.
*/
static void
pmap_update_pde(pmap_t pmap, vm_offset_t va, pd_entry_t *pde, pd_entry_t newpde)
{
struct pde_action act;
cpuset_t active, other_cpus;
u_int cpuid;
sched_pin();
cpuid = PCPU_GET(cpuid);
other_cpus = all_cpus;
CPU_CLR(cpuid, &other_cpus);
if (pmap == kernel_pmap || pmap_type_guest(pmap))
active = all_cpus;
else {
active = pmap->pm_active;
}
if (CPU_OVERLAP(&active, &other_cpus)) {
act.store = cpuid;
act.invalidate = active;
act.va = va;
act.pmap = pmap;
act.pde = pde;
act.newpde = newpde;
CPU_SET(cpuid, &active);
smp_rendezvous_cpus(active,
smp_no_rendevous_barrier, pmap_update_pde_action,
pmap_update_pde_teardown, &act);
} else {
pmap_update_pde_store(pmap, pde, newpde);
if (CPU_ISSET(cpuid, &active))
pmap_update_pde_invalidate(pmap, va, newpde);
}
sched_unpin();
}
#else /* !SMP */
/*
* Normal, non-SMP, invalidation functions.
*/
void
pmap_invalidate_page(pmap_t pmap, vm_offset_t va)
{
if (pmap->pm_type == PT_RVI || pmap->pm_type == PT_EPT) {
pmap->pm_eptgen++;
return;
}
KASSERT(pmap->pm_type == PT_X86,
("pmap_invalidate_range: unknown type %d", pmap->pm_type));
if (pmap == kernel_pmap || pmap == PCPU_GET(curpmap))
invlpg(va);
else if (pmap_pcid_enabled)
pmap->pm_pcids[0].pm_gen = 0;
}
void
pmap_invalidate_range(pmap_t pmap, vm_offset_t sva, vm_offset_t eva)
{
vm_offset_t addr;
if (pmap->pm_type == PT_RVI || pmap->pm_type == PT_EPT) {
pmap->pm_eptgen++;
return;
}
KASSERT(pmap->pm_type == PT_X86,
("pmap_invalidate_range: unknown type %d", pmap->pm_type));
if (pmap == kernel_pmap || pmap == PCPU_GET(curpmap)) {
for (addr = sva; addr < eva; addr += PAGE_SIZE)
invlpg(addr);
} else if (pmap_pcid_enabled) {
pmap->pm_pcids[0].pm_gen = 0;
}
}
void
pmap_invalidate_all(pmap_t pmap)
{
struct invpcid_descr d;
if (pmap->pm_type == PT_RVI || pmap->pm_type == PT_EPT) {
pmap->pm_eptgen++;
return;
}
KASSERT(pmap->pm_type == PT_X86,
("pmap_invalidate_all: unknown type %d", pmap->pm_type));
if (pmap == kernel_pmap) {
if (pmap_pcid_enabled && invpcid_works) {
bzero(&d, sizeof(d));
invpcid(&d, INVPCID_CTXGLOB);
} else {
invltlb_glob();
}
} else if (pmap == PCPU_GET(curpmap)) {
if (pmap_pcid_enabled) {
if (invpcid_works) {
d.pcid = pmap->pm_pcids[0].pm_pcid;
d.pad = 0;
d.addr = 0;
invpcid(&d, INVPCID_CTX);
} else {
load_cr3(pmap->pm_cr3 | pmap->pm_pcids[0].
pm_pcid);
}
} else {
invltlb();
}
} else if (pmap_pcid_enabled) {
pmap->pm_pcids[0].pm_gen = 0;
}
}
PMAP_INLINE void
pmap_invalidate_cache(void)
{
wbinvd();
}
static void
pmap_update_pde(pmap_t pmap, vm_offset_t va, pd_entry_t *pde, pd_entry_t newpde)
{
pmap_update_pde_store(pmap, pde, newpde);
if (pmap == kernel_pmap || pmap == PCPU_GET(curpmap))
pmap_update_pde_invalidate(pmap, va, newpde);
else
pmap->pm_pcids[0].pm_gen = 0;
}
#endif /* !SMP */
#define PMAP_CLFLUSH_THRESHOLD (2 * 1024 * 1024)
void
pmap_invalidate_cache_range(vm_offset_t sva, vm_offset_t eva, boolean_t force)
{
if (force) {
sva &= ~(vm_offset_t)cpu_clflush_line_size;
} else {
KASSERT((sva & PAGE_MASK) == 0,
("pmap_invalidate_cache_range: sva not page-aligned"));
KASSERT((eva & PAGE_MASK) == 0,
("pmap_invalidate_cache_range: eva not page-aligned"));
}
if ((cpu_feature & CPUID_SS) != 0 && !force)
; /* If "Self Snoop" is supported and allowed, do nothing. */
else if ((cpu_stdext_feature & CPUID_STDEXT_CLFLUSHOPT) != 0 &&
eva - sva < PMAP_CLFLUSH_THRESHOLD) {
/*
* XXX: Some CPUs fault, hang, or trash the local APIC
* registers if we use CLFLUSH on the local APIC
* range. The local APIC is always uncached, so we
* don't need to flush for that range anyway.
*/
if (pmap_kextract(sva) == lapic_paddr)
return;
/*
* Otherwise, do per-cache line flush. Use the mfence
* instruction to insure that previous stores are
* included in the write-back. The processor
* propagates flush to other processors in the cache
* coherence domain.
*/
mfence();
for (; sva < eva; sva += cpu_clflush_line_size)
clflushopt(sva);
mfence();
} else if ((cpu_feature & CPUID_CLFSH) != 0 &&
eva - sva < PMAP_CLFLUSH_THRESHOLD) {
if (pmap_kextract(sva) == lapic_paddr)
return;
/*
* Writes are ordered by CLFLUSH on Intel CPUs.
*/
if (cpu_vendor_id != CPU_VENDOR_INTEL)
mfence();
for (; sva < eva; sva += cpu_clflush_line_size)
clflush(sva);
if (cpu_vendor_id != CPU_VENDOR_INTEL)
mfence();
} else {
/*
* No targeted cache flush methods are supported by CPU,
* or the supplied range is bigger than 2MB.
* Globally invalidate cache.
*/
pmap_invalidate_cache();
}
}
/*
* Remove the specified set of pages from the data and instruction caches.
*
* In contrast to pmap_invalidate_cache_range(), this function does not
* rely on the CPU's self-snoop feature, because it is intended for use
* when moving pages into a different cache domain.
*/
void
pmap_invalidate_cache_pages(vm_page_t *pages, int count)
{
vm_offset_t daddr, eva;
int i;
bool useclflushopt;
useclflushopt = (cpu_stdext_feature & CPUID_STDEXT_CLFLUSHOPT) != 0;
if (count >= PMAP_CLFLUSH_THRESHOLD / PAGE_SIZE ||
((cpu_feature & CPUID_CLFSH) == 0 && !useclflushopt))
pmap_invalidate_cache();
else {
if (useclflushopt || cpu_vendor_id != CPU_VENDOR_INTEL)
mfence();
for (i = 0; i < count; i++) {
daddr = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(pages[i]));
eva = daddr + PAGE_SIZE;
for (; daddr < eva; daddr += cpu_clflush_line_size) {
if (useclflushopt)
clflushopt(daddr);
else
clflush(daddr);
}
}
if (useclflushopt || cpu_vendor_id != CPU_VENDOR_INTEL)
mfence();
}
}
/*
* Routine: pmap_extract
* Function:
* Extract the physical page address associated
* with the given map/virtual_address pair.
*/
vm_paddr_t
pmap_extract(pmap_t pmap, vm_offset_t va)
{
pdp_entry_t *pdpe;
pd_entry_t *pde;
pt_entry_t *pte, PG_V;
vm_paddr_t pa;
pa = 0;
PG_V = pmap_valid_bit(pmap);
PMAP_LOCK(pmap);
pdpe = pmap_pdpe(pmap, va);
if (pdpe != NULL && (*pdpe & PG_V) != 0) {
if ((*pdpe & PG_PS) != 0)
pa = (*pdpe & PG_PS_FRAME) | (va & PDPMASK);
else {
pde = pmap_pdpe_to_pde(pdpe, va);
if ((*pde & PG_V) != 0) {
if ((*pde & PG_PS) != 0) {
pa = (*pde & PG_PS_FRAME) |
(va & PDRMASK);
} else {
pte = pmap_pde_to_pte(pde, va);
pa = (*pte & PG_FRAME) |
(va & PAGE_MASK);
}
}
}
}
PMAP_UNLOCK(pmap);
return (pa);
}
/*
* Routine: pmap_extract_and_hold
* Function:
* Atomically extract and hold the physical page
* with the given pmap and virtual address pair
* if that mapping permits the given protection.
*/
vm_page_t
pmap_extract_and_hold(pmap_t pmap, vm_offset_t va, vm_prot_t prot)
{
pd_entry_t pde, *pdep;
pt_entry_t pte, PG_RW, PG_V;
vm_paddr_t pa;
vm_page_t m;
pa = 0;
m = NULL;
PG_RW = pmap_rw_bit(pmap);
PG_V = pmap_valid_bit(pmap);
PMAP_LOCK(pmap);
retry:
pdep = pmap_pde(pmap, va);
if (pdep != NULL && (pde = *pdep)) {
if (pde & PG_PS) {
if ((pde & PG_RW) || (prot & VM_PROT_WRITE) == 0) {
if (vm_page_pa_tryrelock(pmap, (pde &
PG_PS_FRAME) | (va & PDRMASK), &pa))
goto retry;
m = PHYS_TO_VM_PAGE((pde & PG_PS_FRAME) |
(va & PDRMASK));
vm_page_hold(m);
}
} else {
pte = *pmap_pde_to_pte(pdep, va);
if ((pte & PG_V) &&
((pte & PG_RW) || (prot & VM_PROT_WRITE) == 0)) {
if (vm_page_pa_tryrelock(pmap, pte & PG_FRAME,
&pa))
goto retry;
m = PHYS_TO_VM_PAGE(pte & PG_FRAME);
vm_page_hold(m);
}
}
}
PA_UNLOCK_COND(pa);
PMAP_UNLOCK(pmap);
return (m);
}
vm_paddr_t
pmap_kextract(vm_offset_t va)
{
pd_entry_t pde;
vm_paddr_t pa;
if (va >= DMAP_MIN_ADDRESS && va < DMAP_MAX_ADDRESS) {
pa = DMAP_TO_PHYS(va);
} else {
pde = *vtopde(va);
if (pde & PG_PS) {
pa = (pde & PG_PS_FRAME) | (va & PDRMASK);
} else {
/*
* Beware of a concurrent promotion that changes the
* PDE at this point! For example, vtopte() must not
* be used to access the PTE because it would use the
* new PDE. It is, however, safe to use the old PDE
* because the page table page is preserved by the
* promotion.
*/
pa = *pmap_pde_to_pte(&pde, va);
pa = (pa & PG_FRAME) | (va & PAGE_MASK);
}
}
return (pa);
}
/***************************************************
* Low level mapping routines.....
***************************************************/
/*
* Add a wired page to the kva.
* Note: not SMP coherent.
*/
PMAP_INLINE void
pmap_kenter(vm_offset_t va, vm_paddr_t pa)
{
pt_entry_t *pte;
pte = vtopte(va);
pte_store(pte, pa | X86_PG_RW | X86_PG_V | X86_PG_G);
}
static __inline void
pmap_kenter_attr(vm_offset_t va, vm_paddr_t pa, int mode)
{
pt_entry_t *pte;
int cache_bits;
pte = vtopte(va);
cache_bits = pmap_cache_bits(kernel_pmap, mode, 0);
pte_store(pte, pa | X86_PG_RW | X86_PG_V | X86_PG_G | cache_bits);
}
/*
* Remove a page from the kernel pagetables.
* Note: not SMP coherent.
*/
PMAP_INLINE void
pmap_kremove(vm_offset_t va)
{
pt_entry_t *pte;
pte = vtopte(va);
pte_clear(pte);
}
/*
* Used to map a range of physical addresses into kernel
* virtual address space.
*
* The value passed in '*virt' is a suggested virtual address for
* the mapping. Architectures which can support a direct-mapped
* physical to virtual region can return the appropriate address
* within that region, leaving '*virt' unchanged. Other
* architectures should map the pages starting at '*virt' and
* update '*virt' with the first usable address after the mapped
* region.
*/
vm_offset_t
pmap_map(vm_offset_t *virt, vm_paddr_t start, vm_paddr_t end, int prot)
{
return PHYS_TO_DMAP(start);
}
/*
* Add a list of wired pages to the kva
* this routine is only used for temporary
* kernel mappings that do not need to have
* page modification or references recorded.
* Note that old mappings are simply written
* over. The page *must* be wired.
* Note: SMP coherent. Uses a ranged shootdown IPI.
*/
void
pmap_qenter(vm_offset_t sva, vm_page_t *ma, int count)
{
pt_entry_t *endpte, oldpte, pa, *pte;
vm_page_t m;
int cache_bits;
oldpte = 0;
pte = vtopte(sva);
endpte = pte + count;
while (pte < endpte) {
m = *ma++;
cache_bits = pmap_cache_bits(kernel_pmap, m->md.pat_mode, 0);
pa = VM_PAGE_TO_PHYS(m) | cache_bits;
if ((*pte & (PG_FRAME | X86_PG_PTE_CACHE)) != pa) {
oldpte |= *pte;
pte_store(pte, pa | X86_PG_G | X86_PG_RW | X86_PG_V);
}
pte++;
}
if (__predict_false((oldpte & X86_PG_V) != 0))
pmap_invalidate_range(kernel_pmap, sva, sva + count *
PAGE_SIZE);
}
/*
* This routine tears out page mappings from the
* kernel -- it is meant only for temporary mappings.
* Note: SMP coherent. Uses a ranged shootdown IPI.
*/
void
pmap_qremove(vm_offset_t sva, int count)
{
vm_offset_t va;
va = sva;
while (count-- > 0) {
KASSERT(va >= VM_MIN_KERNEL_ADDRESS, ("usermode va %lx", va));
pmap_kremove(va);
va += PAGE_SIZE;
}
pmap_invalidate_range(kernel_pmap, sva, va);
}
/***************************************************
* Page table page management routines.....
***************************************************/
static __inline void
pmap_free_zero_pages(struct spglist *free)
{
vm_page_t m;
while ((m = SLIST_FIRST(free)) != NULL) {
SLIST_REMOVE_HEAD(free, plinks.s.ss);
/* Preserve the page's PG_ZERO setting. */
vm_page_free_toq(m);
}
}
/*
* Schedule the specified unused page table page to be freed. Specifically,
* add the page to the specified list of pages that will be released to the
* physical memory manager after the TLB has been updated.
*/
static __inline void
pmap_add_delayed_free_list(vm_page_t m, struct spglist *free,
boolean_t set_PG_ZERO)
{
if (set_PG_ZERO)
m->flags |= PG_ZERO;
else
m->flags &= ~PG_ZERO;
SLIST_INSERT_HEAD(free, m, plinks.s.ss);
}
/*
* Inserts the specified page table page into the specified pmap's collection
* of idle page table pages. Each of a pmap's page table pages is responsible
* for mapping a distinct range of virtual addresses. The pmap's collection is
* ordered by this virtual address range.
*/
static __inline int
pmap_insert_pt_page(pmap_t pmap, vm_page_t mpte)
{
PMAP_LOCK_ASSERT(pmap, MA_OWNED);
return (vm_radix_insert(&pmap->pm_root, mpte));
}
/*
* Looks for a page table page mapping the specified virtual address in the
* specified pmap's collection of idle page table pages. Returns NULL if there
* is no page table page corresponding to the specified virtual address.
*/
static __inline vm_page_t
pmap_lookup_pt_page(pmap_t pmap, vm_offset_t va)
{
PMAP_LOCK_ASSERT(pmap, MA_OWNED);
return (vm_radix_lookup(&pmap->pm_root, pmap_pde_pindex(va)));
}
/*
* Removes the specified page table page from the specified pmap's collection
* of idle page table pages. The specified page table page must be a member of
* the pmap's collection.
*/
static __inline void
pmap_remove_pt_page(pmap_t pmap, vm_page_t mpte)
{
PMAP_LOCK_ASSERT(pmap, MA_OWNED);
vm_radix_remove(&pmap->pm_root, mpte->pindex);
}
/*
* Decrements a page table page's wire count, which is used to record the
* number of valid page table entries within the page. If the wire count
* drops to zero, then the page table page is unmapped. Returns TRUE if the
* page table page was unmapped and FALSE otherwise.
*/
static inline boolean_t
pmap_unwire_ptp(pmap_t pmap, vm_offset_t va, vm_page_t m, struct spglist *free)
{
--m->wire_count;
if (m->wire_count == 0) {
_pmap_unwire_ptp(pmap, va, m, free);
return (TRUE);
} else
return (FALSE);
}
static void
_pmap_unwire_ptp(pmap_t pmap, vm_offset_t va, vm_page_t m, struct spglist *free)
{
PMAP_LOCK_ASSERT(pmap, MA_OWNED);
/*
* unmap the page table page
*/
if (m->pindex >= (NUPDE + NUPDPE)) {
/* PDP page */
pml4_entry_t *pml4;
pml4 = pmap_pml4e(pmap, va);
*pml4 = 0;
} else if (m->pindex >= NUPDE) {
/* PD page */
pdp_entry_t *pdp;
pdp = pmap_pdpe(pmap, va);
*pdp = 0;
} else {
/* PTE page */
pd_entry_t *pd;
pd = pmap_pde(pmap, va);
*pd = 0;
}
pmap_resident_count_dec(pmap, 1);
if (m->pindex < NUPDE) {
/* We just released a PT, unhold the matching PD */
vm_page_t pdpg;
pdpg = PHYS_TO_VM_PAGE(*pmap_pdpe(pmap, va) & PG_FRAME);
pmap_unwire_ptp(pmap, va, pdpg, free);
}
if (m->pindex >= NUPDE && m->pindex < (NUPDE + NUPDPE)) {
/* We just released a PD, unhold the matching PDP */
vm_page_t pdppg;
pdppg = PHYS_TO_VM_PAGE(*pmap_pml4e(pmap, va) & PG_FRAME);
pmap_unwire_ptp(pmap, va, pdppg, free);
}
/*
* This is a release store so that the ordinary store unmapping
* the page table page is globally performed before TLB shoot-
* down is begun.
*/
atomic_subtract_rel_int(&vm_cnt.v_wire_count, 1);
/*
* Put page on a list so that it is released after
* *ALL* TLB shootdown is done
*/
pmap_add_delayed_free_list(m, free, TRUE);
}
/*
* After removing a page table entry, this routine is used to
* conditionally free the page, and manage the hold/wire counts.
*/
static int
pmap_unuse_pt(pmap_t pmap, vm_offset_t va, pd_entry_t ptepde,
struct spglist *free)
{
vm_page_t mpte;
if (va >= VM_MAXUSER_ADDRESS)
return (0);
KASSERT(ptepde != 0, ("pmap_unuse_pt: ptepde != 0"));
mpte = PHYS_TO_VM_PAGE(ptepde & PG_FRAME);
return (pmap_unwire_ptp(pmap, va, mpte, free));
}
void
pmap_pinit0(pmap_t pmap)
{
int i;
PMAP_LOCK_INIT(pmap);
pmap->pm_pml4 = (pml4_entry_t *)PHYS_TO_DMAP(KPML4phys);
pmap->pm_cr3 = KPML4phys;
pmap->pm_root.rt_root = 0;
CPU_ZERO(&pmap->pm_active);
TAILQ_INIT(&pmap->pm_pvchunk);
bzero(&pmap->pm_stats, sizeof pmap->pm_stats);
pmap->pm_flags = pmap_flags;
CPU_FOREACH(i) {
pmap->pm_pcids[i].pm_pcid = PMAP_PCID_NONE;
pmap->pm_pcids[i].pm_gen = 0;
}
PCPU_SET(curpmap, kernel_pmap);
pmap_activate(curthread);
CPU_FILL(&kernel_pmap->pm_active);
}
/*
* Initialize a preallocated and zeroed pmap structure,
* such as one in a vmspace structure.
*/
int
pmap_pinit_type(pmap_t pmap, enum pmap_type pm_type, int flags)
{
vm_page_t pml4pg;
vm_paddr_t pml4phys;
int i;
/*
* allocate the page directory page
*/
while ((pml4pg = vm_page_alloc(NULL, 0, VM_ALLOC_NORMAL |
VM_ALLOC_NOOBJ | VM_ALLOC_WIRED | VM_ALLOC_ZERO)) == NULL)
VM_WAIT;
pml4phys = VM_PAGE_TO_PHYS(pml4pg);
pmap->pm_pml4 = (pml4_entry_t *)PHYS_TO_DMAP(pml4phys);
CPU_FOREACH(i) {
pmap->pm_pcids[i].pm_pcid = PMAP_PCID_NONE;
pmap->pm_pcids[i].pm_gen = 0;
}
pmap->pm_cr3 = ~0; /* initialize to an invalid value */
if ((pml4pg->flags & PG_ZERO) == 0)
pagezero(pmap->pm_pml4);
/*
* Do not install the host kernel mappings in the nested page
* tables. These mappings are meaningless in the guest physical
* address space.
*/
if ((pmap->pm_type = pm_type) == PT_X86) {
pmap->pm_cr3 = pml4phys;
/* Wire in kernel global address entries. */
for (i = 0; i < NKPML4E; i++) {
pmap->pm_pml4[KPML4BASE + i] = (KPDPphys + ptoa(i)) |
X86_PG_RW | X86_PG_V | PG_U;
}
for (i = 0; i < ndmpdpphys; i++) {
pmap->pm_pml4[DMPML4I + i] = (DMPDPphys + ptoa(i)) |
X86_PG_RW | X86_PG_V | PG_U;
}
/* install self-referential address mapping entry(s) */
pmap->pm_pml4[PML4PML4I] = VM_PAGE_TO_PHYS(pml4pg) |
X86_PG_V | X86_PG_RW | X86_PG_A | X86_PG_M;
}
pmap->pm_root.rt_root = 0;
CPU_ZERO(&pmap->pm_active);
TAILQ_INIT(&pmap->pm_pvchunk);
bzero(&pmap->pm_stats, sizeof pmap->pm_stats);
pmap->pm_flags = flags;
pmap->pm_eptgen = 0;
return (1);
}
int
pmap_pinit(pmap_t pmap)
{
return (pmap_pinit_type(pmap, PT_X86, pmap_flags));
}
/*
* This routine is called if the desired page table page does not exist.
*
* If page table page allocation fails, this routine may sleep before
* returning NULL. It sleeps only if a lock pointer was given.
*
* Note: If a page allocation fails at page table level two or three,
* one or two pages may be held during the wait, only to be released
* afterwards. This conservative approach is easily argued to avoid
* race conditions.
*/
static vm_page_t
_pmap_allocpte(pmap_t pmap, vm_pindex_t ptepindex, struct rwlock **lockp)
{
vm_page_t m, pdppg, pdpg;
pt_entry_t PG_A, PG_M, PG_RW, PG_V;
PMAP_LOCK_ASSERT(pmap, MA_OWNED);
PG_A = pmap_accessed_bit(pmap);
PG_M = pmap_modified_bit(pmap);
PG_V = pmap_valid_bit(pmap);
PG_RW = pmap_rw_bit(pmap);
/*
* Allocate a page table page.
*/
if ((m = vm_page_alloc(NULL, ptepindex, VM_ALLOC_NOOBJ |
VM_ALLOC_WIRED | VM_ALLOC_ZERO)) == NULL) {
if (lockp != NULL) {
RELEASE_PV_LIST_LOCK(lockp);
PMAP_UNLOCK(pmap);
rw_runlock(&pvh_global_lock);
VM_WAIT;
rw_rlock(&pvh_global_lock);
PMAP_LOCK(pmap);
}
/*
* Indicate the need to retry. While waiting, the page table
* page may have been allocated.
*/
return (NULL);
}
if ((m->flags & PG_ZERO) == 0)
pmap_zero_page(m);
/*
* Map the pagetable page into the process address space, if
* it isn't already there.
*/
if (ptepindex >= (NUPDE + NUPDPE)) {
pml4_entry_t *pml4;
vm_pindex_t pml4index;
/* Wire up a new PDPE page */
pml4index = ptepindex - (NUPDE + NUPDPE);
pml4 = &pmap->pm_pml4[pml4index];
*pml4 = VM_PAGE_TO_PHYS(m) | PG_U | PG_RW | PG_V | PG_A | PG_M;
} else if (ptepindex >= NUPDE) {
vm_pindex_t pml4index;
vm_pindex_t pdpindex;
pml4_entry_t *pml4;
pdp_entry_t *pdp;
/* Wire up a new PDE page */
pdpindex = ptepindex - NUPDE;
pml4index = pdpindex >> NPML4EPGSHIFT;
pml4 = &pmap->pm_pml4[pml4index];
if ((*pml4 & PG_V) == 0) {
/* Have to allocate a new pdp, recurse */
if (_pmap_allocpte(pmap, NUPDE + NUPDPE + pml4index,
lockp) == NULL) {
--m->wire_count;
atomic_subtract_int(&vm_cnt.v_wire_count, 1);
vm_page_free_zero(m);
return (NULL);
}
} else {
/* Add reference to pdp page */
pdppg = PHYS_TO_VM_PAGE(*pml4 & PG_FRAME);
pdppg->wire_count++;
}
pdp = (pdp_entry_t *)PHYS_TO_DMAP(*pml4 & PG_FRAME);
/* Now find the pdp page */
pdp = &pdp[pdpindex & ((1ul << NPDPEPGSHIFT) - 1)];
*pdp = VM_PAGE_TO_PHYS(m) | PG_U | PG_RW | PG_V | PG_A | PG_M;
} else {
vm_pindex_t pml4index;
vm_pindex_t pdpindex;
pml4_entry_t *pml4;
pdp_entry_t *pdp;
pd_entry_t *pd;
/* Wire up a new PTE page */
pdpindex = ptepindex >> NPDPEPGSHIFT;
pml4index = pdpindex >> NPML4EPGSHIFT;
/* First, find the pdp and check that its valid. */
pml4 = &pmap->pm_pml4[pml4index];
if ((*pml4 & PG_V) == 0) {
/* Have to allocate a new pd, recurse */
if (_pmap_allocpte(pmap, NUPDE + pdpindex,
lockp) == NULL) {
--m->wire_count;
atomic_subtract_int(&vm_cnt.v_wire_count, 1);
vm_page_free_zero(m);
return (NULL);
}
pdp = (pdp_entry_t *)PHYS_TO_DMAP(*pml4 & PG_FRAME);
pdp = &pdp[pdpindex & ((1ul << NPDPEPGSHIFT) - 1)];
} else {
pdp = (pdp_entry_t *)PHYS_TO_DMAP(*pml4 & PG_FRAME);
pdp = &pdp[pdpindex & ((1ul << NPDPEPGSHIFT) - 1)];
if ((*pdp & PG_V) == 0) {
/* Have to allocate a new pd, recurse */
if (_pmap_allocpte(pmap, NUPDE + pdpindex,
lockp) == NULL) {
--m->wire_count;
atomic_subtract_int(&vm_cnt.v_wire_count,
1);
vm_page_free_zero(m);
return (NULL);
}
} else {
/* Add reference to the pd page */
pdpg = PHYS_TO_VM_PAGE(*pdp & PG_FRAME);
pdpg->wire_count++;
}
}
pd = (pd_entry_t *)PHYS_TO_DMAP(*pdp & PG_FRAME);
/* Now we know where the page directory page is */
pd = &pd[ptepindex & ((1ul << NPDEPGSHIFT) - 1)];
*pd = VM_PAGE_TO_PHYS(m) | PG_U | PG_RW | PG_V | PG_A | PG_M;
}
pmap_resident_count_inc(pmap, 1);
return (m);
}
static vm_page_t
pmap_allocpde(pmap_t pmap, vm_offset_t va, struct rwlock **lockp)
{
vm_pindex_t pdpindex, ptepindex;
pdp_entry_t *pdpe, PG_V;
vm_page_t pdpg;
PG_V = pmap_valid_bit(pmap);
retry:
pdpe = pmap_pdpe(pmap, va);
if (pdpe != NULL && (*pdpe & PG_V) != 0) {
/* Add a reference to the pd page. */
pdpg = PHYS_TO_VM_PAGE(*pdpe & PG_FRAME);
pdpg->wire_count++;
} else {
/* Allocate a pd page. */
ptepindex = pmap_pde_pindex(va);
pdpindex = ptepindex >> NPDPEPGSHIFT;
pdpg = _pmap_allocpte(pmap, NUPDE + pdpindex, lockp);
if (pdpg == NULL && lockp != NULL)
goto retry;
}
return (pdpg);
}
static vm_page_t
pmap_allocpte(pmap_t pmap, vm_offset_t va, struct rwlock **lockp)
{
vm_pindex_t ptepindex;
pd_entry_t *pd, PG_V;
vm_page_t m;
PG_V = pmap_valid_bit(pmap);
/*
* Calculate pagetable page index
*/
ptepindex = pmap_pde_pindex(va);
retry:
/*
* Get the page directory entry
*/
pd = pmap_pde(pmap, va);
/*
* This supports switching from a 2MB page to a
* normal 4K page.
*/
if (pd != NULL && (*pd & (PG_PS | PG_V)) == (PG_PS | PG_V)) {
if (!pmap_demote_pde_locked(pmap, pd, va, lockp)) {
/*
* Invalidation of the 2MB page mapping may have caused
* the deallocation of the underlying PD page.
*/
pd = NULL;
}
}
/*
* If the page table page is mapped, we just increment the
* hold count, and activate it.
*/
if (pd != NULL && (*pd & PG_V) != 0) {
m = PHYS_TO_VM_PAGE(*pd & PG_FRAME);
m->wire_count++;
} else {
/*
* Here if the pte page isn't mapped, or if it has been
* deallocated.
*/
m = _pmap_allocpte(pmap, ptepindex, lockp);
if (m == NULL && lockp != NULL)
goto retry;
}
return (m);
}
/***************************************************
* Pmap allocation/deallocation routines.
***************************************************/
/*
* Release any resources held by the given physical map.
* Called when a pmap initialized by pmap_pinit is being released.
* Should only be called if the map contains no valid mappings.
*/
void
pmap_release(pmap_t pmap)
{
vm_page_t m;
int i;
KASSERT(pmap->pm_stats.resident_count == 0,
("pmap_release: pmap resident count %ld != 0",
pmap->pm_stats.resident_count));
KASSERT(vm_radix_is_empty(&pmap->pm_root),
("pmap_release: pmap has reserved page table page(s)"));
KASSERT(CPU_EMPTY(&pmap->pm_active),
("releasing active pmap %p", pmap));
m = PHYS_TO_VM_PAGE(DMAP_TO_PHYS((vm_offset_t)pmap->pm_pml4));
for (i = 0; i < NKPML4E; i++) /* KVA */
pmap->pm_pml4[KPML4BASE + i] = 0;
for (i = 0; i < ndmpdpphys; i++)/* Direct Map */
pmap->pm_pml4[DMPML4I + i] = 0;
pmap->pm_pml4[PML4PML4I] = 0; /* Recursive Mapping */
m->wire_count--;
atomic_subtract_int(&vm_cnt.v_wire_count, 1);
vm_page_free_zero(m);
}
static int
kvm_size(SYSCTL_HANDLER_ARGS)
{
unsigned long ksize = VM_MAX_KERNEL_ADDRESS - VM_MIN_KERNEL_ADDRESS;
return sysctl_handle_long(oidp, &ksize, 0, req);
}
SYSCTL_PROC(_vm, OID_AUTO, kvm_size, CTLTYPE_LONG|CTLFLAG_RD,
0, 0, kvm_size, "LU", "Size of KVM");
static int
kvm_free(SYSCTL_HANDLER_ARGS)
{
unsigned long kfree = VM_MAX_KERNEL_ADDRESS - kernel_vm_end;
return sysctl_handle_long(oidp, &kfree, 0, req);
}
SYSCTL_PROC(_vm, OID_AUTO, kvm_free, CTLTYPE_LONG|CTLFLAG_RD,
0, 0, kvm_free, "LU", "Amount of KVM free");
/*
* grow the number of kernel page table entries, if needed
*/
void
pmap_growkernel(vm_offset_t addr)
{
vm_paddr_t paddr;
vm_page_t nkpg;
pd_entry_t *pde, newpdir;
pdp_entry_t *pdpe;
mtx_assert(&kernel_map->system_mtx, MA_OWNED);
/*
* Return if "addr" is within the range of kernel page table pages
* that were preallocated during pmap bootstrap. Moreover, leave
* "kernel_vm_end" and the kernel page table as they were.
*
* The correctness of this action is based on the following
* argument: vm_map_insert() allocates contiguous ranges of the
* kernel virtual address space. It calls this function if a range
* ends after "kernel_vm_end". If the kernel is mapped between
* "kernel_vm_end" and "addr", then the range cannot begin at
* "kernel_vm_end". In fact, its beginning address cannot be less
* than the kernel. Thus, there is no immediate need to allocate
* any new kernel page table pages between "kernel_vm_end" and
* "KERNBASE".
*/
if (KERNBASE < addr && addr <= KERNBASE + nkpt * NBPDR)
return;
addr = roundup2(addr, NBPDR);
if (addr - 1 >= kernel_map->max_offset)
addr = kernel_map->max_offset;
while (kernel_vm_end < addr) {
pdpe = pmap_pdpe(kernel_pmap, kernel_vm_end);
if ((*pdpe & X86_PG_V) == 0) {
/* We need a new PDP entry */
nkpg = vm_page_alloc(NULL, kernel_vm_end >> PDPSHIFT,
VM_ALLOC_INTERRUPT | VM_ALLOC_NOOBJ |
VM_ALLOC_WIRED | VM_ALLOC_ZERO);
if (nkpg == NULL)
panic("pmap_growkernel: no memory to grow kernel");
if ((nkpg->flags & PG_ZERO) == 0)
pmap_zero_page(nkpg);
paddr = VM_PAGE_TO_PHYS(nkpg);
*pdpe = (pdp_entry_t)(paddr | X86_PG_V | X86_PG_RW |
X86_PG_A | X86_PG_M);
continue; /* try again */
}
pde = pmap_pdpe_to_pde(pdpe, kernel_vm_end);
if ((*pde & X86_PG_V) != 0) {
kernel_vm_end = (kernel_vm_end + NBPDR) & ~PDRMASK;
if (kernel_vm_end - 1 >= kernel_map->max_offset) {
kernel_vm_end = kernel_map->max_offset;
break;
}
continue;
}
nkpg = vm_page_alloc(NULL, pmap_pde_pindex(kernel_vm_end),
VM_ALLOC_INTERRUPT | VM_ALLOC_NOOBJ | VM_ALLOC_WIRED |
VM_ALLOC_ZERO);
if (nkpg == NULL)
panic("pmap_growkernel: no memory to grow kernel");
if ((nkpg->flags & PG_ZERO) == 0)
pmap_zero_page(nkpg);
paddr = VM_PAGE_TO_PHYS(nkpg);
newpdir = paddr | X86_PG_V | X86_PG_RW | X86_PG_A | X86_PG_M;
pde_store(pde, newpdir);
kernel_vm_end = (kernel_vm_end + NBPDR) & ~PDRMASK;
if (kernel_vm_end - 1 >= kernel_map->max_offset) {
kernel_vm_end = kernel_map->max_offset;
break;
}
}
}
/***************************************************
* page management routines.
***************************************************/
CTASSERT(sizeof(struct pv_chunk) == PAGE_SIZE);
CTASSERT(_NPCM == 3);
CTASSERT(_NPCPV == 168);
static __inline struct pv_chunk *
pv_to_chunk(pv_entry_t pv)
{
return ((struct pv_chunk *)((uintptr_t)pv & ~(uintptr_t)PAGE_MASK));
}
#define PV_PMAP(pv) (pv_to_chunk(pv)->pc_pmap)
#define PC_FREE0 0xfffffffffffffffful
#define PC_FREE1 0xfffffffffffffffful
#define PC_FREE2 0x000000fffffffffful
static const uint64_t pc_freemask[_NPCM] = { PC_FREE0, PC_FREE1, PC_FREE2 };
#ifdef PV_STATS
static int pc_chunk_count, pc_chunk_allocs, pc_chunk_frees, pc_chunk_tryfail;
SYSCTL_INT(_vm_pmap, OID_AUTO, pc_chunk_count, CTLFLAG_RD, &pc_chunk_count, 0,
"Current number of pv entry chunks");
SYSCTL_INT(_vm_pmap, OID_AUTO, pc_chunk_allocs, CTLFLAG_RD, &pc_chunk_allocs, 0,
"Current number of pv entry chunks allocated");
SYSCTL_INT(_vm_pmap, OID_AUTO, pc_chunk_frees, CTLFLAG_RD, &pc_chunk_frees, 0,
"Current number of pv entry chunks frees");
SYSCTL_INT(_vm_pmap, OID_AUTO, pc_chunk_tryfail, CTLFLAG_RD, &pc_chunk_tryfail, 0,
"Number of times tried to get a chunk page but failed.");
static long pv_entry_frees, pv_entry_allocs, pv_entry_count;
static int pv_entry_spare;
SYSCTL_LONG(_vm_pmap, OID_AUTO, pv_entry_frees, CTLFLAG_RD, &pv_entry_frees, 0,
"Current number of pv entry frees");
SYSCTL_LONG(_vm_pmap, OID_AUTO, pv_entry_allocs, CTLFLAG_RD, &pv_entry_allocs, 0,
"Current number of pv entry allocs");
SYSCTL_LONG(_vm_pmap, OID_AUTO, pv_entry_count, CTLFLAG_RD, &pv_entry_count, 0,
"Current number of pv entries");
SYSCTL_INT(_vm_pmap, OID_AUTO, pv_entry_spare, CTLFLAG_RD, &pv_entry_spare, 0,
"Current number of spare pv entries");
#endif
/*
* We are in a serious low memory condition. Resort to
* drastic measures to free some pages so we can allocate
* another pv entry chunk.
*
* Returns NULL if PV entries were reclaimed from the specified pmap.
*
* We do not, however, unmap 2mpages because subsequent accesses will
* allocate per-page pv entries until repromotion occurs, thereby
* exacerbating the shortage of free pv entries.
*/
static vm_page_t
reclaim_pv_chunk(pmap_t locked_pmap, struct rwlock **lockp)
{
struct pch new_tail;
struct pv_chunk *pc;
struct md_page *pvh;
pd_entry_t *pde;
pmap_t pmap;
pt_entry_t *pte, tpte;
pt_entry_t PG_G, PG_A, PG_M, PG_RW;
pv_entry_t pv;
vm_offset_t va;
vm_page_t m, m_pc;
struct spglist free;
uint64_t inuse;
int bit, field, freed;
rw_assert(&pvh_global_lock, RA_LOCKED);
PMAP_LOCK_ASSERT(locked_pmap, MA_OWNED);
KASSERT(lockp != NULL, ("reclaim_pv_chunk: lockp is NULL"));
pmap = NULL;
m_pc = NULL;
PG_G = PG_A = PG_M = PG_RW = 0;
SLIST_INIT(&free);
TAILQ_INIT(&new_tail);
mtx_lock(&pv_chunks_mutex);
while ((pc = TAILQ_FIRST(&pv_chunks)) != NULL && SLIST_EMPTY(&free)) {
TAILQ_REMOVE(&pv_chunks, pc, pc_lru);
mtx_unlock(&pv_chunks_mutex);
if (pmap != pc->pc_pmap) {
if (pmap != NULL) {
pmap_invalidate_all(pmap);
if (pmap != locked_pmap)
PMAP_UNLOCK(pmap);
}
pmap = pc->pc_pmap;
/* Avoid deadlock and lock recursion. */
if (pmap > locked_pmap) {
RELEASE_PV_LIST_LOCK(lockp);
PMAP_LOCK(pmap);
} else if (pmap != locked_pmap &&
!PMAP_TRYLOCK(pmap)) {
pmap = NULL;
TAILQ_INSERT_TAIL(&new_tail, pc, pc_lru);
mtx_lock(&pv_chunks_mutex);
continue;
}
PG_G = pmap_global_bit(pmap);
PG_A = pmap_accessed_bit(pmap);
PG_M = pmap_modified_bit(pmap);
PG_RW = pmap_rw_bit(pmap);
}
/*
* Destroy every non-wired, 4 KB page mapping in the chunk.
*/
freed = 0;
for (field = 0; field < _NPCM; field++) {
for (inuse = ~pc->pc_map[field] & pc_freemask[field];
inuse != 0; inuse &= ~(1UL << bit)) {
bit = bsfq(inuse);
pv = &pc->pc_pventry[field * 64 + bit];
va = pv->pv_va;
pde = pmap_pde(pmap, va);
if ((*pde & PG_PS) != 0)
continue;
pte = pmap_pde_to_pte(pde, va);
if ((*pte & PG_W) != 0)
continue;
tpte = pte_load_clear(pte);
if ((tpte & PG_G) != 0)
pmap_invalidate_page(pmap, va);
m = PHYS_TO_VM_PAGE(tpte & PG_FRAME);
if ((tpte & (PG_M | PG_RW)) == (PG_M | PG_RW))
vm_page_dirty(m);
if ((tpte & PG_A) != 0)
vm_page_aflag_set(m, PGA_REFERENCED);
CHANGE_PV_LIST_LOCK_TO_VM_PAGE(lockp, m);
TAILQ_REMOVE(&m->md.pv_list, pv, pv_next);
m->md.pv_gen++;
if (TAILQ_EMPTY(&m->md.pv_list) &&
(m->flags & PG_FICTITIOUS) == 0) {
pvh = pa_to_pvh(VM_PAGE_TO_PHYS(m));
if (TAILQ_EMPTY(&pvh->pv_list)) {
vm_page_aflag_clear(m,
PGA_WRITEABLE);
}
}
pc->pc_map[field] |= 1UL << bit;
pmap_unuse_pt(pmap, va, *pde, &free);
freed++;
}
}
if (freed == 0) {
TAILQ_INSERT_TAIL(&new_tail, pc, pc_lru);
mtx_lock(&pv_chunks_mutex);
continue;
}
/* Every freed mapping is for a 4 KB page. */
pmap_resident_count_dec(pmap, freed);
PV_STAT(atomic_add_long(&pv_entry_frees, freed));
PV_STAT(atomic_add_int(&pv_entry_spare, freed));
PV_STAT(atomic_subtract_long(&pv_entry_count, freed));
TAILQ_REMOVE(&pmap->pm_pvchunk, pc, pc_list);
if (pc->pc_map[0] == PC_FREE0 && pc->pc_map[1] == PC_FREE1 &&
pc->pc_map[2] == PC_FREE2) {
PV_STAT(atomic_subtract_int(&pv_entry_spare, _NPCPV));
PV_STAT(atomic_subtract_int(&pc_chunk_count, 1));
PV_STAT(atomic_add_int(&pc_chunk_frees, 1));
/* Entire chunk is free; return it. */
m_pc = PHYS_TO_VM_PAGE(DMAP_TO_PHYS((vm_offset_t)pc));
dump_drop_page(m_pc->phys_addr);
mtx_lock(&pv_chunks_mutex);
break;
}
TAILQ_INSERT_HEAD(&pmap->pm_pvchunk, pc, pc_list);
TAILQ_INSERT_TAIL(&new_tail, pc, pc_lru);
mtx_lock(&pv_chunks_mutex);
/* One freed pv entry in locked_pmap is sufficient. */
if (pmap == locked_pmap)
break;
}
TAILQ_CONCAT(&pv_chunks, &new_tail, pc_lru);
mtx_unlock(&pv_chunks_mutex);
if (pmap != NULL) {
pmap_invalidate_all(pmap);
if (pmap != locked_pmap)
PMAP_UNLOCK(pmap);
}
if (m_pc == NULL && !SLIST_EMPTY(&free)) {
m_pc = SLIST_FIRST(&free);
SLIST_REMOVE_HEAD(&free, plinks.s.ss);
/* Recycle a freed page table page. */
m_pc->wire_count = 1;
atomic_add_int(&vm_cnt.v_wire_count, 1);
}
pmap_free_zero_pages(&free);
return (m_pc);
}
/*
* free the pv_entry back to the free list
*/
static void
free_pv_entry(pmap_t pmap, pv_entry_t pv)
{
struct pv_chunk *pc;
int idx, field, bit;
rw_assert(&pvh_global_lock, RA_LOCKED);
PMAP_LOCK_ASSERT(pmap, MA_OWNED);
PV_STAT(atomic_add_long(&pv_entry_frees, 1));
PV_STAT(atomic_add_int(&pv_entry_spare, 1));
PV_STAT(atomic_subtract_long(&pv_entry_count, 1));
pc = pv_to_chunk(pv);
idx = pv - &pc->pc_pventry[0];
field = idx / 64;
bit = idx % 64;
pc->pc_map[field] |= 1ul << bit;
if (pc->pc_map[0] != PC_FREE0 || pc->pc_map[1] != PC_FREE1 ||
pc->pc_map[2] != PC_FREE2) {
/* 98% of the time, pc is already at the head of the list. */
if (__predict_false(pc != TAILQ_FIRST(&pmap->pm_pvchunk))) {
TAILQ_REMOVE(&pmap->pm_pvchunk, pc, pc_list);
TAILQ_INSERT_HEAD(&pmap->pm_pvchunk, pc, pc_list);
}
return;
}
TAILQ_REMOVE(&pmap->pm_pvchunk, pc, pc_list);
free_pv_chunk(pc);
}
static void
free_pv_chunk(struct pv_chunk *pc)
{
vm_page_t m;
mtx_lock(&pv_chunks_mutex);
TAILQ_REMOVE(&pv_chunks, pc, pc_lru);
mtx_unlock(&pv_chunks_mutex);
PV_STAT(atomic_subtract_int(&pv_entry_spare, _NPCPV));
PV_STAT(atomic_subtract_int(&pc_chunk_count, 1));
PV_STAT(atomic_add_int(&pc_chunk_frees, 1));
/* entire chunk is free, return it */
m = PHYS_TO_VM_PAGE(DMAP_TO_PHYS((vm_offset_t)pc));
dump_drop_page(m->phys_addr);
vm_page_unwire(m, PQ_NONE);
vm_page_free(m);
}
/*
* Returns a new PV entry, allocating a new PV chunk from the system when
* needed. If this PV chunk allocation fails and a PV list lock pointer was
* given, a PV chunk is reclaimed from an arbitrary pmap. Otherwise, NULL is
* returned.
*
* The given PV list lock may be released.
*/
static pv_entry_t
get_pv_entry(pmap_t pmap, struct rwlock **lockp)
{
int bit, field;
pv_entry_t pv;
struct pv_chunk *pc;
vm_page_t m;
rw_assert(&pvh_global_lock, RA_LOCKED);
PMAP_LOCK_ASSERT(pmap, MA_OWNED);
PV_STAT(atomic_add_long(&pv_entry_allocs, 1));
retry:
pc = TAILQ_FIRST(&pmap->pm_pvchunk);
if (pc != NULL) {
for (field = 0; field < _NPCM; field++) {
if (pc->pc_map[field]) {
bit = bsfq(pc->pc_map[field]);
break;
}
}
if (field < _NPCM) {
pv = &pc->pc_pventry[field * 64 + bit];
pc->pc_map[field] &= ~(1ul << bit);
/* If this was the last item, move it to tail */
if (pc->pc_map[0] == 0 && pc->pc_map[1] == 0 &&
pc->pc_map[2] == 0) {
TAILQ_REMOVE(&pmap->pm_pvchunk, pc, pc_list);
TAILQ_INSERT_TAIL(&pmap->pm_pvchunk, pc,
pc_list);
}
PV_STAT(atomic_add_long(&pv_entry_count, 1));
PV_STAT(atomic_subtract_int(&pv_entry_spare, 1));
return (pv);
}
}
/* No free items, allocate another chunk */
m = vm_page_alloc(NULL, 0, VM_ALLOC_NORMAL | VM_ALLOC_NOOBJ |
VM_ALLOC_WIRED);
if (m == NULL) {
if (lockp == NULL) {
PV_STAT(pc_chunk_tryfail++);
return (NULL);
}
m = reclaim_pv_chunk(pmap, lockp);
if (m == NULL)
goto retry;
}
PV_STAT(atomic_add_int(&pc_chunk_count, 1));
PV_STAT(atomic_add_int(&pc_chunk_allocs, 1));
dump_add_page(m->phys_addr);
pc = (void *)PHYS_TO_DMAP(m->phys_addr);
pc->pc_pmap = pmap;
pc->pc_map[0] = PC_FREE0 & ~1ul; /* preallocated bit 0 */
pc->pc_map[1] = PC_FREE1;
pc->pc_map[2] = PC_FREE2;
mtx_lock(&pv_chunks_mutex);
TAILQ_INSERT_TAIL(&pv_chunks, pc, pc_lru);
mtx_unlock(&pv_chunks_mutex);
pv = &pc->pc_pventry[0];
TAILQ_INSERT_HEAD(&pmap->pm_pvchunk, pc, pc_list);
PV_STAT(atomic_add_long(&pv_entry_count, 1));
PV_STAT(atomic_add_int(&pv_entry_spare, _NPCPV - 1));
return (pv);
}
/*
* Returns the number of one bits within the given PV chunk map element.
*
* The erratas for Intel processors state that "POPCNT Instruction May
* Take Longer to Execute Than Expected". It is believed that the
* issue is the spurious dependency on the destination register.
* Provide a hint to the register rename logic that the destination
* value is overwritten, by clearing it, as suggested in the
* optimization manual. It should be cheap for unaffected processors
* as well.
*
* Reference numbers for erratas are
* 4th Gen Core: HSD146
* 5th Gen Core: BDM85
*/
static int
popcnt_pc_map_elem_pq(uint64_t elem)
{
u_long result;
__asm __volatile("xorl %k0,%k0;popcntq %1,%0"
: "=&r" (result) : "rm" (elem));
return (result);
}
/*
* Ensure that the number of spare PV entries in the specified pmap meets or
* exceeds the given count, "needed".
*
* The given PV list lock may be released.
*/
static void
reserve_pv_entries(pmap_t pmap, int needed, struct rwlock **lockp)
{
struct pch new_tail;
struct pv_chunk *pc;
int avail, free;
vm_page_t m;
rw_assert(&pvh_global_lock, RA_LOCKED);
PMAP_LOCK_ASSERT(pmap, MA_OWNED);
KASSERT(lockp != NULL, ("reserve_pv_entries: lockp is NULL"));
/*
* Newly allocated PV chunks must be stored in a private list until
* the required number of PV chunks have been allocated. Otherwise,
* reclaim_pv_chunk() could recycle one of these chunks. In
* contrast, these chunks must be added to the pmap upon allocation.
*/
TAILQ_INIT(&new_tail);
retry:
avail = 0;
TAILQ_FOREACH(pc, &pmap->pm_pvchunk, pc_list) {
#ifndef __POPCNT__
if ((cpu_feature2 & CPUID2_POPCNT) == 0) {
free = bitcount64(pc->pc_map[0]);
free += bitcount64(pc->pc_map[1]);
free += bitcount64(pc->pc_map[2]);
} else
#endif
{
free = popcnt_pc_map_elem_pq(pc->pc_map[0]);
free += popcnt_pc_map_elem_pq(pc->pc_map[1]);
free += popcnt_pc_map_elem_pq(pc->pc_map[2]);
}
if (free == 0)
break;
avail += free;
if (avail >= needed)
break;
}
for (; avail < needed; avail += _NPCPV) {
m = vm_page_alloc(NULL, 0, VM_ALLOC_NORMAL | VM_ALLOC_NOOBJ |
VM_ALLOC_WIRED);
if (m == NULL) {
m = reclaim_pv_chunk(pmap, lockp);
if (m == NULL)
goto retry;
}
PV_STAT(atomic_add_int(&pc_chunk_count, 1));
PV_STAT(atomic_add_int(&pc_chunk_allocs, 1));
dump_add_page(m->phys_addr);
pc = (void *)PHYS_TO_DMAP(m->phys_addr);
pc->pc_pmap = pmap;
pc->pc_map[0] = PC_FREE0;
pc->pc_map[1] = PC_FREE1;
pc->pc_map[2] = PC_FREE2;
TAILQ_INSERT_HEAD(&pmap->pm_pvchunk, pc, pc_list);
TAILQ_INSERT_TAIL(&new_tail, pc, pc_lru);
PV_STAT(atomic_add_int(&pv_entry_spare, _NPCPV));
}
if (!TAILQ_EMPTY(&new_tail)) {
mtx_lock(&pv_chunks_mutex);
TAILQ_CONCAT(&pv_chunks, &new_tail, pc_lru);
mtx_unlock(&pv_chunks_mutex);
}
}
/*
* First find and then remove the pv entry for the specified pmap and virtual
* address from the specified pv list. Returns the pv entry if found and NULL
* otherwise. This operation can be performed on pv lists for either 4KB or
* 2MB page mappings.
*/
static __inline pv_entry_t
pmap_pvh_remove(struct md_page *pvh, pmap_t pmap, vm_offset_t va)
{
pv_entry_t pv;
rw_assert(&pvh_global_lock, RA_LOCKED);
TAILQ_FOREACH(pv, &pvh->pv_list, pv_next) {
if (pmap == PV_PMAP(pv) && va == pv->pv_va) {
TAILQ_REMOVE(&pvh->pv_list, pv, pv_next);
pvh->pv_gen++;
break;
}
}
return (pv);
}
/*
* After demotion from a 2MB page mapping to 512 4KB page mappings,
* destroy the pv entry for the 2MB page mapping and reinstantiate the pv
* entries for each of the 4KB page mappings.
*/
static void
pmap_pv_demote_pde(pmap_t pmap, vm_offset_t va, vm_paddr_t pa,
struct rwlock **lockp)
{
struct md_page *pvh;
struct pv_chunk *pc;
pv_entry_t pv;
vm_offset_t va_last;
vm_page_t m;
int bit, field;
rw_assert(&pvh_global_lock, RA_LOCKED);
PMAP_LOCK_ASSERT(pmap, MA_OWNED);
KASSERT((pa & PDRMASK) == 0,
("pmap_pv_demote_pde: pa is not 2mpage aligned"));
CHANGE_PV_LIST_LOCK_TO_PHYS(lockp, pa);
/*
* Transfer the 2mpage's pv entry for this mapping to the first
* page's pv list. Once this transfer begins, the pv list lock
* must not be released until the last pv entry is reinstantiated.
*/
pvh = pa_to_pvh(pa);
va = trunc_2mpage(va);
pv = pmap_pvh_remove(pvh, pmap, va);
KASSERT(pv != NULL, ("pmap_pv_demote_pde: pv not found"));
m = PHYS_TO_VM_PAGE(pa);
TAILQ_INSERT_TAIL(&m->md.pv_list, pv, pv_next);
m->md.pv_gen++;
/* Instantiate the remaining NPTEPG - 1 pv entries. */
PV_STAT(atomic_add_long(&pv_entry_allocs, NPTEPG - 1));
va_last = va + NBPDR - PAGE_SIZE;
for (;;) {
pc = TAILQ_FIRST(&pmap->pm_pvchunk);
KASSERT(pc->pc_map[0] != 0 || pc->pc_map[1] != 0 ||
pc->pc_map[2] != 0, ("pmap_pv_demote_pde: missing spare"));
for (field = 0; field < _NPCM; field++) {
while (pc->pc_map[field]) {
bit = bsfq(pc->pc_map[field]);
pc->pc_map[field] &= ~(1ul << bit);
pv = &pc->pc_pventry[field * 64 + bit];
va += PAGE_SIZE;
pv->pv_va = va;
m++;
KASSERT((m->oflags & VPO_UNMANAGED) == 0,
("pmap_pv_demote_pde: page %p is not managed", m));
TAILQ_INSERT_TAIL(&m->md.pv_list, pv, pv_next);
m->md.pv_gen++;
if (va == va_last)
goto out;
}
}
TAILQ_REMOVE(&pmap->pm_pvchunk, pc, pc_list);
TAILQ_INSERT_TAIL(&pmap->pm_pvchunk, pc, pc_list);
}
out:
if (pc->pc_map[0] == 0 && pc->pc_map[1] == 0 && pc->pc_map[2] == 0) {
TAILQ_REMOVE(&pmap->pm_pvchunk, pc, pc_list);
TAILQ_INSERT_TAIL(&pmap->pm_pvchunk, pc, pc_list);
}
PV_STAT(atomic_add_long(&pv_entry_count, NPTEPG - 1));
PV_STAT(atomic_subtract_int(&pv_entry_spare, NPTEPG - 1));
}
/*
* After promotion from 512 4KB page mappings to a single 2MB page mapping,
* replace the many pv entries for the 4KB page mappings by a single pv entry
* for the 2MB page mapping.
*/
static void
pmap_pv_promote_pde(pmap_t pmap, vm_offset_t va, vm_paddr_t pa,
struct rwlock **lockp)
{
struct md_page *pvh;
pv_entry_t pv;
vm_offset_t va_last;
vm_page_t m;
rw_assert(&pvh_global_lock, RA_LOCKED);
KASSERT((pa & PDRMASK) == 0,
("pmap_pv_promote_pde: pa is not 2mpage aligned"));
CHANGE_PV_LIST_LOCK_TO_PHYS(lockp, pa);
/*
* Transfer the first page's pv entry for this mapping to the 2mpage's
* pv list. Aside from avoiding the cost of a call to get_pv_entry(),
* a transfer avoids the possibility that get_pv_entry() calls
* reclaim_pv_chunk() and that reclaim_pv_chunk() removes one of the
* mappings that is being promoted.
*/
m = PHYS_TO_VM_PAGE(pa);
va = trunc_2mpage(va);
pv = pmap_pvh_remove(&m->md, pmap, va);
KASSERT(pv != NULL, ("pmap_pv_promote_pde: pv not found"));
pvh = pa_to_pvh(pa);
TAILQ_INSERT_TAIL(&pvh->pv_list, pv, pv_next);
pvh->pv_gen++;
/* Free the remaining NPTEPG - 1 pv entries. */
va_last = va + NBPDR - PAGE_SIZE;
do {
m++;
va += PAGE_SIZE;
pmap_pvh_free(&m->md, pmap, va);
} while (va < va_last);
}
/*
* First find and then destroy the pv entry for the specified pmap and virtual
* address. This operation can be performed on pv lists for either 4KB or 2MB
* page mappings.
*/
static void
pmap_pvh_free(struct md_page *pvh, pmap_t pmap, vm_offset_t va)
{
pv_entry_t pv;
pv = pmap_pvh_remove(pvh, pmap, va);
KASSERT(pv != NULL, ("pmap_pvh_free: pv not found"));
free_pv_entry(pmap, pv);
}
/*
* Conditionally create the PV entry for a 4KB page mapping if the required
* memory can be allocated without resorting to reclamation.
*/
static boolean_t
pmap_try_insert_pv_entry(pmap_t pmap, vm_offset_t va, vm_page_t m,
struct rwlock **lockp)
{
pv_entry_t pv;
rw_assert(&pvh_global_lock, RA_LOCKED);
PMAP_LOCK_ASSERT(pmap, MA_OWNED);
/* Pass NULL instead of the lock pointer to disable reclamation. */
if ((pv = get_pv_entry(pmap, NULL)) != NULL) {
pv->pv_va = va;
CHANGE_PV_LIST_LOCK_TO_VM_PAGE(lockp, m);
TAILQ_INSERT_TAIL(&m->md.pv_list, pv, pv_next);
m->md.pv_gen++;
return (TRUE);
} else
return (FALSE);
}
/*
* Conditionally create the PV entry for a 2MB page mapping if the required
* memory can be allocated without resorting to reclamation.
*/
static boolean_t
pmap_pv_insert_pde(pmap_t pmap, vm_offset_t va, vm_paddr_t pa,
struct rwlock **lockp)
{
struct md_page *pvh;
pv_entry_t pv;
rw_assert(&pvh_global_lock, RA_LOCKED);
PMAP_LOCK_ASSERT(pmap, MA_OWNED);
/* Pass NULL instead of the lock pointer to disable reclamation. */
if ((pv = get_pv_entry(pmap, NULL)) != NULL) {
pv->pv_va = va;
CHANGE_PV_LIST_LOCK_TO_PHYS(lockp, pa);
pvh = pa_to_pvh(pa);
TAILQ_INSERT_TAIL(&pvh->pv_list, pv, pv_next);
pvh->pv_gen++;
return (TRUE);
} else
return (FALSE);
}
/*
* Fills a page table page with mappings to consecutive physical pages.
*/
static void
pmap_fill_ptp(pt_entry_t *firstpte, pt_entry_t newpte)
{
pt_entry_t *pte;
for (pte = firstpte; pte < firstpte + NPTEPG; pte++) {
*pte = newpte;
newpte += PAGE_SIZE;
}
}
/*
* Tries to demote a 2MB page mapping. If demotion fails, the 2MB page
* mapping is invalidated.
*/
static boolean_t
pmap_demote_pde(pmap_t pmap, pd_entry_t *pde, vm_offset_t va)
{
struct rwlock *lock;
boolean_t rv;
lock = NULL;
rv = pmap_demote_pde_locked(pmap, pde, va, &lock);
if (lock != NULL)
rw_wunlock(lock);
return (rv);
}
static boolean_t
pmap_demote_pde_locked(pmap_t pmap, pd_entry_t *pde, vm_offset_t va,
struct rwlock **lockp)
{
pd_entry_t newpde, oldpde;
pt_entry_t *firstpte, newpte;
pt_entry_t PG_A, PG_G, PG_M, PG_RW, PG_V;
vm_paddr_t mptepa;
vm_page_t mpte;
struct spglist free;
int PG_PTE_CACHE;
PG_G = pmap_global_bit(pmap);
PG_A = pmap_accessed_bit(pmap);
PG_M = pmap_modified_bit(pmap);
PG_RW = pmap_rw_bit(pmap);
PG_V = pmap_valid_bit(pmap);
PG_PTE_CACHE = pmap_cache_mask(pmap, 0);
PMAP_LOCK_ASSERT(pmap, MA_OWNED);
oldpde = *pde;
KASSERT((oldpde & (PG_PS | PG_V)) == (PG_PS | PG_V),
("pmap_demote_pde: oldpde is missing PG_PS and/or PG_V"));
if ((oldpde & PG_A) != 0 && (mpte = pmap_lookup_pt_page(pmap, va)) !=
NULL)
pmap_remove_pt_page(pmap, mpte);
else {
KASSERT((oldpde & PG_W) == 0,
("pmap_demote_pde: page table page for a wired mapping"
" is missing"));
/*
* Invalidate the 2MB page mapping and return "failure" if the
* mapping was never accessed or the allocation of the new
* page table page fails. If the 2MB page mapping belongs to
* the direct map region of the kernel's address space, then
* the page allocation request specifies the highest possible
* priority (VM_ALLOC_INTERRUPT). Otherwise, the priority is
* normal. Page table pages are preallocated for every other
* part of the kernel address space, so the direct map region
* is the only part of the kernel address space that must be
* handled here.
*/
if ((oldpde & PG_A) == 0 || (mpte = vm_page_alloc(NULL,
pmap_pde_pindex(va), (va >= DMAP_MIN_ADDRESS && va <
DMAP_MAX_ADDRESS ? VM_ALLOC_INTERRUPT : VM_ALLOC_NORMAL) |
VM_ALLOC_NOOBJ | VM_ALLOC_WIRED)) == NULL) {
SLIST_INIT(&free);
pmap_remove_pde(pmap, pde, trunc_2mpage(va), &free,
lockp);
pmap_invalidate_page(pmap, trunc_2mpage(va));
pmap_free_zero_pages(&free);
CTR2(KTR_PMAP, "pmap_demote_pde: failure for va %#lx"
" in pmap %p", va, pmap);
return (FALSE);
}
if (va < VM_MAXUSER_ADDRESS)
pmap_resident_count_inc(pmap, 1);
}
mptepa = VM_PAGE_TO_PHYS(mpte);
firstpte = (pt_entry_t *)PHYS_TO_DMAP(mptepa);
newpde = mptepa | PG_M | PG_A | (oldpde & PG_U) | PG_RW | PG_V;
KASSERT((oldpde & PG_A) != 0,
("pmap_demote_pde: oldpde is missing PG_A"));
KASSERT((oldpde & (PG_M | PG_RW)) != PG_RW,
("pmap_demote_pde: oldpde is missing PG_M"));
newpte = oldpde & ~PG_PS;
newpte = pmap_swap_pat(pmap, newpte);
/*
* If the page table page is new, initialize it.
*/
if (mpte->wire_count == 1) {
mpte->wire_count = NPTEPG;
pmap_fill_ptp(firstpte, newpte);
}
KASSERT((*firstpte & PG_FRAME) == (newpte & PG_FRAME),
("pmap_demote_pde: firstpte and newpte map different physical"
" addresses"));
/*
* If the mapping has changed attributes, update the page table
* entries.
*/
if ((*firstpte & PG_PTE_PROMOTE) != (newpte & PG_PTE_PROMOTE))
pmap_fill_ptp(firstpte, newpte);
/*
* The spare PV entries must be reserved prior to demoting the
* mapping, that is, prior to changing the PDE. Otherwise, the state
* of the PDE and the PV lists will be inconsistent, which can result
* in reclaim_pv_chunk() attempting to remove a PV entry from the
* wrong PV list and pmap_pv_demote_pde() failing to find the expected
* PV entry for the 2MB page mapping that is being demoted.
*/
if ((oldpde & PG_MANAGED) != 0)
reserve_pv_entries(pmap, NPTEPG - 1, lockp);
/*
* Demote the mapping. This pmap is locked. The old PDE has
* PG_A set. If the old PDE has PG_RW set, it also has PG_M
* set. Thus, there is no danger of a race with another
* processor changing the setting of PG_A and/or PG_M between
* the read above and the store below.
*/
if (workaround_erratum383)
pmap_update_pde(pmap, va, pde, newpde);
else
pde_store(pde, newpde);
/*
* Invalidate a stale recursive mapping of the page table page.
*/
if (va >= VM_MAXUSER_ADDRESS)
pmap_invalidate_page(pmap, (vm_offset_t)vtopte(va));
/*
* Demote the PV entry.
*/
if ((oldpde & PG_MANAGED) != 0)
pmap_pv_demote_pde(pmap, va, oldpde & PG_PS_FRAME, lockp);
atomic_add_long(&pmap_pde_demotions, 1);
CTR2(KTR_PMAP, "pmap_demote_pde: success for va %#lx"
" in pmap %p", va, pmap);
return (TRUE);
}
/*
* pmap_remove_kernel_pde: Remove a kernel superpage mapping.
*/
static void
pmap_remove_kernel_pde(pmap_t pmap, pd_entry_t *pde, vm_offset_t va)
{
pd_entry_t newpde;
vm_paddr_t mptepa;
vm_page_t mpte;
KASSERT(pmap == kernel_pmap, ("pmap %p is not kernel_pmap", pmap));
PMAP_LOCK_ASSERT(pmap, MA_OWNED);
mpte = pmap_lookup_pt_page(pmap, va);
if (mpte == NULL)
panic("pmap_remove_kernel_pde: Missing pt page.");
pmap_remove_pt_page(pmap, mpte);
mptepa = VM_PAGE_TO_PHYS(mpte);
newpde = mptepa | X86_PG_M | X86_PG_A | X86_PG_RW | X86_PG_V;
/*
* Initialize the page table page.
*/
pagezero((void *)PHYS_TO_DMAP(mptepa));
/*
* Demote the mapping.
*/
if (workaround_erratum383)
pmap_update_pde(pmap, va, pde, newpde);
else
pde_store(pde, newpde);
/*
* Invalidate a stale recursive mapping of the page table page.
*/
pmap_invalidate_page(pmap, (vm_offset_t)vtopte(va));
}
/*
* pmap_remove_pde: do the things to unmap a superpage in a process
*/
static int
pmap_remove_pde(pmap_t pmap, pd_entry_t *pdq, vm_offset_t sva,
struct spglist *free, struct rwlock **lockp)
{
struct md_page *pvh;
pd_entry_t oldpde;
vm_offset_t eva, va;
vm_page_t m, mpte;
pt_entry_t PG_G, PG_A, PG_M, PG_RW;
PG_G = pmap_global_bit(pmap);
PG_A = pmap_accessed_bit(pmap);
PG_M = pmap_modified_bit(pmap);
PG_RW = pmap_rw_bit(pmap);
PMAP_LOCK_ASSERT(pmap, MA_OWNED);
KASSERT((sva & PDRMASK) == 0,
("pmap_remove_pde: sva is not 2mpage aligned"));
oldpde = pte_load_clear(pdq);
if (oldpde & PG_W)
pmap->pm_stats.wired_count -= NBPDR / PAGE_SIZE;
/*
* Machines that don't support invlpg, also don't support
* PG_G.
*/
if (oldpde & PG_G)
pmap_invalidate_page(kernel_pmap, sva);
pmap_resident_count_dec(pmap, NBPDR / PAGE_SIZE);
if (oldpde & PG_MANAGED) {
CHANGE_PV_LIST_LOCK_TO_PHYS(lockp, oldpde & PG_PS_FRAME);
pvh = pa_to_pvh(oldpde & PG_PS_FRAME);
pmap_pvh_free(pvh, pmap, sva);
eva = sva + NBPDR;
for (va = sva, m = PHYS_TO_VM_PAGE(oldpde & PG_PS_FRAME);
va < eva; va += PAGE_SIZE, m++) {
if ((oldpde & (PG_M | PG_RW)) == (PG_M | PG_RW))
vm_page_dirty(m);
if (oldpde & PG_A)
vm_page_aflag_set(m, PGA_REFERENCED);
if (TAILQ_EMPTY(&m->md.pv_list) &&
TAILQ_EMPTY(&pvh->pv_list))
vm_page_aflag_clear(m, PGA_WRITEABLE);
}
}
if (pmap == kernel_pmap) {
pmap_remove_kernel_pde(pmap, pdq, sva);
} else {
mpte = pmap_lookup_pt_page(pmap, sva);
if (mpte != NULL) {
pmap_remove_pt_page(pmap, mpte);
pmap_resident_count_dec(pmap, 1);
KASSERT(mpte->wire_count == NPTEPG,
("pmap_remove_pde: pte page wire count error"));
mpte->wire_count = 0;
pmap_add_delayed_free_list(mpte, free, FALSE);
atomic_subtract_int(&vm_cnt.v_wire_count, 1);
}
}
return (pmap_unuse_pt(pmap, sva, *pmap_pdpe(pmap, sva), free));
}
/*
* pmap_remove_pte: do the things to unmap a page in a process
*/
static int
pmap_remove_pte(pmap_t pmap, pt_entry_t *ptq, vm_offset_t va,
pd_entry_t ptepde, struct spglist *free, struct rwlock **lockp)
{
struct md_page *pvh;
pt_entry_t oldpte, PG_A, PG_M, PG_RW;
vm_page_t m;
PG_A = pmap_accessed_bit(pmap);
PG_M = pmap_modified_bit(pmap);
PG_RW = pmap_rw_bit(pmap);
PMAP_LOCK_ASSERT(pmap, MA_OWNED);
oldpte = pte_load_clear(ptq);
if (oldpte & PG_W)
pmap->pm_stats.wired_count -= 1;
pmap_resident_count_dec(pmap, 1);
if (oldpte & PG_MANAGED) {
m = PHYS_TO_VM_PAGE(oldpte & PG_FRAME);
if ((oldpte & (PG_M | PG_RW)) == (PG_M | PG_RW))
vm_page_dirty(m);
if (oldpte & PG_A)
vm_page_aflag_set(m, PGA_REFERENCED);
CHANGE_PV_LIST_LOCK_TO_VM_PAGE(lockp, m);
pmap_pvh_free(&m->md, pmap, va);
if (TAILQ_EMPTY(&m->md.pv_list) &&
(m->flags & PG_FICTITIOUS) == 0) {
pvh = pa_to_pvh(VM_PAGE_TO_PHYS(m));
if (TAILQ_EMPTY(&pvh->pv_list))
vm_page_aflag_clear(m, PGA_WRITEABLE);
}
}
return (pmap_unuse_pt(pmap, va, ptepde, free));
}
/*
* Remove a single page from a process address space
*/
static void
pmap_remove_page(pmap_t pmap, vm_offset_t va, pd_entry_t *pde,
struct spglist *free)
{
struct rwlock *lock;
pt_entry_t *pte, PG_V;
PG_V = pmap_valid_bit(pmap);
PMAP_LOCK_ASSERT(pmap, MA_OWNED);
if ((*pde & PG_V) == 0)
return;
pte = pmap_pde_to_pte(pde, va);
if ((*pte & PG_V) == 0)
return;
lock = NULL;
pmap_remove_pte(pmap, pte, va, *pde, free, &lock);
if (lock != NULL)
rw_wunlock(lock);
pmap_invalidate_page(pmap, va);
}
/*
* Remove the given range of addresses from the specified map.
*
* It is assumed that the start and end are properly
* rounded to the page size.
*/
void
pmap_remove(pmap_t pmap, vm_offset_t sva, vm_offset_t eva)
{
struct rwlock *lock;
vm_offset_t va, va_next;
pml4_entry_t *pml4e;
pdp_entry_t *pdpe;
pd_entry_t ptpaddr, *pde;
pt_entry_t *pte, PG_G, PG_V;
struct spglist free;
int anyvalid;
PG_G = pmap_global_bit(pmap);
PG_V = pmap_valid_bit(pmap);
/*
* Perform an unsynchronized read. This is, however, safe.
*/
if (pmap->pm_stats.resident_count == 0)
return;
anyvalid = 0;
SLIST_INIT(&free);
rw_rlock(&pvh_global_lock);
PMAP_LOCK(pmap);
/*
* special handling of removing one page. a very
* common operation and easy to short circuit some
* code.
*/
if (sva + PAGE_SIZE == eva) {
pde = pmap_pde(pmap, sva);
if (pde && (*pde & PG_PS) == 0) {
pmap_remove_page(pmap, sva, pde, &free);
goto out;
}
}
lock = NULL;
for (; sva < eva; sva = va_next) {
if (pmap->pm_stats.resident_count == 0)
break;
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;
}
/*
* Calculate index for next page table.
*/
va_next = (sva + NBPDR) & ~PDRMASK;
if (va_next < sva)
va_next = eva;
pde = pmap_pdpe_to_pde(pdpe, sva);
ptpaddr = *pde;
/*
* Weed out invalid mappings.
*/
if (ptpaddr == 0)
continue;
/*
* Check for large page.
*/
if ((ptpaddr & PG_PS) != 0) {
/*
* Are we removing the entire large page? If not,
* demote the mapping and fall through.
*/
if (sva + NBPDR == va_next && eva >= va_next) {
/*
* The TLB entry for a PG_G mapping is
* invalidated by pmap_remove_pde().
*/
if ((ptpaddr & PG_G) == 0)
anyvalid = 1;
pmap_remove_pde(pmap, pde, sva, &free, &lock);
continue;
} else if (!pmap_demote_pde_locked(pmap, pde, sva,
&lock)) {
/* The large page mapping was destroyed. */
continue;
} else
ptpaddr = *pde;
}
/*
* Limit our scan to either the end of the va represented
* by the current page table page, or to the end of the
* range being removed.
*/
if (va_next > eva)
va_next = eva;
va = va_next;
for (pte = pmap_pde_to_pte(pde, sva); sva != va_next; pte++,
sva += PAGE_SIZE) {
if (*pte == 0) {
if (va != va_next) {
pmap_invalidate_range(pmap, va, sva);
va = va_next;
}
continue;
}
if ((*pte & PG_G) == 0)
anyvalid = 1;
else if (va == va_next)
va = sva;
if (pmap_remove_pte(pmap, pte, sva, ptpaddr, &free,
&lock)) {
sva += PAGE_SIZE;
break;
}
}
if (va != va_next)
pmap_invalidate_range(pmap, va, sva);
}
if (lock != NULL)
rw_wunlock(lock);
out:
if (anyvalid)
pmap_invalidate_all(pmap);
rw_runlock(&pvh_global_lock);
PMAP_UNLOCK(pmap);
pmap_free_zero_pages(&free);
}
/*
* Routine: pmap_remove_all
* Function:
* Removes this physical page from
* all physical maps in which it resides.
* Reflects back modify bits to the pager.
*
* Notes:
* Original versions of this routine were very
* inefficient because they iteratively called
* pmap_remove (slow...)
*/
void
pmap_remove_all(vm_page_t m)
{
struct md_page *pvh;
pv_entry_t pv;
pmap_t pmap;
pt_entry_t *pte, tpte, PG_A, PG_M, PG_RW;
pd_entry_t *pde;
vm_offset_t va;
struct spglist free;
KASSERT((m->oflags & VPO_UNMANAGED) == 0,
("pmap_remove_all: page %p is not managed", m));
SLIST_INIT(&free);
rw_wlock(&pvh_global_lock);
if ((m->flags & PG_FICTITIOUS) != 0)
goto small_mappings;
pvh = pa_to_pvh(VM_PAGE_TO_PHYS(m));
while ((pv = TAILQ_FIRST(&pvh->pv_list)) != NULL) {
pmap = PV_PMAP(pv);
PMAP_LOCK(pmap);
va = pv->pv_va;
pde = pmap_pde(pmap, va);
(void)pmap_demote_pde(pmap, pde, va);
PMAP_UNLOCK(pmap);
}
small_mappings:
while ((pv = TAILQ_FIRST(&m->md.pv_list)) != NULL) {
pmap = PV_PMAP(pv);
PMAP_LOCK(pmap);
PG_A = pmap_accessed_bit(pmap);
PG_M = pmap_modified_bit(pmap);
PG_RW = pmap_rw_bit(pmap);
pmap_resident_count_dec(pmap, 1);
pde = pmap_pde(pmap, pv->pv_va);
KASSERT((*pde & PG_PS) == 0, ("pmap_remove_all: found"
" a 2mpage in page %p's pv list", m));
pte = pmap_pde_to_pte(pde, pv->pv_va);
tpte = pte_load_clear(pte);
if (tpte & PG_W)
pmap->pm_stats.wired_count--;
if (tpte & PG_A)
vm_page_aflag_set(m, PGA_REFERENCED);
/*
* Update the vm_page_t clean and reference bits.
*/
if ((tpte & (PG_M | PG_RW)) == (PG_M | PG_RW))
vm_page_dirty(m);
pmap_unuse_pt(pmap, pv->pv_va, *pde, &free);
pmap_invalidate_page(pmap, pv->pv_va);
TAILQ_REMOVE(&m->md.pv_list, pv, pv_next);
m->md.pv_gen++;
free_pv_entry(pmap, pv);
PMAP_UNLOCK(pmap);
}
vm_page_aflag_clear(m, PGA_WRITEABLE);
rw_wunlock(&pvh_global_lock);
pmap_free_zero_pages(&free);
}
/*
* pmap_protect_pde: do the things to protect a 2mpage in a process
*/
static boolean_t
pmap_protect_pde(pmap_t pmap, pd_entry_t *pde, vm_offset_t sva, vm_prot_t prot)
{
pd_entry_t newpde, oldpde;
vm_offset_t eva, va;
vm_page_t m;
boolean_t anychanged;
pt_entry_t PG_G, PG_M, PG_RW;
PG_G = pmap_global_bit(pmap);
PG_M = pmap_modified_bit(pmap);
PG_RW = pmap_rw_bit(pmap);
PMAP_LOCK_ASSERT(pmap, MA_OWNED);
KASSERT((sva & PDRMASK) == 0,
("pmap_protect_pde: sva is not 2mpage aligned"));
anychanged = FALSE;
retry:
oldpde = newpde = *pde;
if (oldpde & PG_MANAGED) {
eva = sva + NBPDR;
for (va = sva, m = PHYS_TO_VM_PAGE(oldpde & PG_PS_FRAME);
va < eva; va += PAGE_SIZE, m++)
if ((oldpde & (PG_M | PG_RW)) == (PG_M | PG_RW))
vm_page_dirty(m);
}
if ((prot & VM_PROT_WRITE) == 0)
newpde &= ~(PG_RW | PG_M);
if ((prot & VM_PROT_EXECUTE) == 0)
newpde |= pg_nx;
if (newpde != oldpde) {
if (!atomic_cmpset_long(pde, oldpde, newpde))
goto retry;
if (oldpde & PG_G)
pmap_invalidate_page(pmap, sva);
else
anychanged = TRUE;
}
return (anychanged);
}
/*
* Set the physical protection on the
* specified range of this map as requested.
*/
void
pmap_protect(pmap_t pmap, vm_offset_t sva, vm_offset_t eva, vm_prot_t prot)
{
vm_offset_t va_next;
pml4_entry_t *pml4e;
pdp_entry_t *pdpe;
pd_entry_t ptpaddr, *pde;
pt_entry_t *pte, PG_G, PG_M, PG_RW, PG_V;
boolean_t anychanged, pv_lists_locked;
KASSERT((prot & ~VM_PROT_ALL) == 0, ("invalid prot %x", prot));
if (prot == VM_PROT_NONE) {
pmap_remove(pmap, sva, eva);
return;
}
if ((prot & (VM_PROT_WRITE|VM_PROT_EXECUTE)) ==
(VM_PROT_WRITE|VM_PROT_EXECUTE))
return;
PG_G = pmap_global_bit(pmap);
PG_M = pmap_modified_bit(pmap);
PG_V = pmap_valid_bit(pmap);
PG_RW = pmap_rw_bit(pmap);
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);
ptpaddr = *pde;
/*
* Weed out invalid mappings.
*/
if (ptpaddr == 0)
continue;
/*
* Check for large page.
*/
if ((ptpaddr & PG_PS) != 0) {
/*
* Are we protecting the entire large page? If not,
* demote the mapping and fall through.
*/
if (sva + NBPDR == va_next && eva >= va_next) {
/*
* The TLB entry for a PG_G mapping is
* invalidated by pmap_protect_pde().
*/
if (pmap_protect_pde(pmap, pde, sva, prot))
anychanged = TRUE;
continue;
} else {
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;
}
}
if (!pmap_demote_pde(pmap, pde, sva)) {
/*
* The large page mapping was
* destroyed.
*/
continue;
}
}
}
if (va_next > eva)
va_next = eva;
for (pte = pmap_pde_to_pte(pde, sva); sva != va_next; pte++,
sva += PAGE_SIZE) {
pt_entry_t obits, pbits;
vm_page_t m;
retry:
obits = pbits = *pte;
if ((pbits & PG_V) == 0)
continue;
if ((prot & VM_PROT_WRITE) == 0) {
if ((pbits & (PG_MANAGED | PG_M | PG_RW)) ==
(PG_MANAGED | PG_M | PG_RW)) {
m = PHYS_TO_VM_PAGE(pbits & PG_FRAME);
vm_page_dirty(m);
}
pbits &= ~(PG_RW | PG_M);
}
if ((prot & VM_PROT_EXECUTE) == 0)
pbits |= pg_nx;
if (pbits != obits) {
if (!atomic_cmpset_long(pte, obits, pbits))
goto retry;
if (obits & PG_G)
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);
}
/*
* Tries to promote the 512, contiguous 4KB page mappings that are within a
* single page table page (PTP) to a single 2MB page mapping. For promotion
* to occur, two conditions must be met: (1) the 4KB page mappings must map
* aligned, contiguous physical memory and (2) the 4KB page mappings must have
* identical characteristics.
*/
static void
pmap_promote_pde(pmap_t pmap, pd_entry_t *pde, vm_offset_t va,
struct rwlock **lockp)
{
pd_entry_t newpde;
pt_entry_t *firstpte, oldpte, pa, *pte;
pt_entry_t PG_G, PG_A, PG_M, PG_RW, PG_V;
vm_page_t mpte;
int PG_PTE_CACHE;
PG_A = pmap_accessed_bit(pmap);
PG_G = pmap_global_bit(pmap);
PG_M = pmap_modified_bit(pmap);
PG_V = pmap_valid_bit(pmap);
PG_RW = pmap_rw_bit(pmap);
PG_PTE_CACHE = pmap_cache_mask(pmap, 0);
PMAP_LOCK_ASSERT(pmap, MA_OWNED);
/*
* Examine the first PTE in the specified PTP. Abort if this PTE is
* either invalid, unused, or does not map the first 4KB physical page
* within a 2MB page.
*/
firstpte = (pt_entry_t *)PHYS_TO_DMAP(*pde & PG_FRAME);
setpde:
newpde = *firstpte;
if ((newpde & ((PG_FRAME & PDRMASK) | PG_A | PG_V)) != (PG_A | PG_V)) {
atomic_add_long(&pmap_pde_p_failures, 1);
CTR2(KTR_PMAP, "pmap_promote_pde: failure for va %#lx"
" in pmap %p", va, pmap);
return;
}
if ((newpde & (PG_M | PG_RW)) == PG_RW) {
/*
* When PG_M is already clear, PG_RW can be cleared without
* a TLB invalidation.
*/
if (!atomic_cmpset_long(firstpte, newpde, newpde & ~PG_RW))
goto setpde;
newpde &= ~PG_RW;
}
/*
* Examine each of the other PTEs in the specified PTP. Abort if this
* PTE maps an unexpected 4KB physical page or does not have identical
* characteristics to the first PTE.
*/
pa = (newpde & (PG_PS_FRAME | PG_A | PG_V)) + NBPDR - PAGE_SIZE;
for (pte = firstpte + NPTEPG - 1; pte > firstpte; pte--) {
setpte:
oldpte = *pte;
if ((oldpte & (PG_FRAME | PG_A | PG_V)) != pa) {
atomic_add_long(&pmap_pde_p_failures, 1);
CTR2(KTR_PMAP, "pmap_promote_pde: failure for va %#lx"
" in pmap %p", va, pmap);
return;
}
if ((oldpte & (PG_M | PG_RW)) == PG_RW) {
/*
* When PG_M is already clear, PG_RW can be cleared
* without a TLB invalidation.
*/
if (!atomic_cmpset_long(pte, oldpte, oldpte & ~PG_RW))
goto setpte;
oldpte &= ~PG_RW;
CTR2(KTR_PMAP, "pmap_promote_pde: protect for va %#lx"
" in pmap %p", (oldpte & PG_FRAME & PDRMASK) |
(va & ~PDRMASK), pmap);
}
if ((oldpte & PG_PTE_PROMOTE) != (newpde & PG_PTE_PROMOTE)) {
atomic_add_long(&pmap_pde_p_failures, 1);
CTR2(KTR_PMAP, "pmap_promote_pde: failure for va %#lx"
" in pmap %p", va, pmap);
return;
}
pa -= PAGE_SIZE;
}
/*
* Save the page table page in its current state until the PDE
* mapping the superpage is demoted by pmap_demote_pde() or
* destroyed by pmap_remove_pde().
*/
mpte = PHYS_TO_VM_PAGE(*pde & PG_FRAME);
KASSERT(mpte >= vm_page_array &&
mpte < &vm_page_array[vm_page_array_size],
("pmap_promote_pde: page table page is out of range"));
KASSERT(mpte->pindex == pmap_pde_pindex(va),
("pmap_promote_pde: page table page's pindex is wrong"));
if (pmap_insert_pt_page(pmap, mpte)) {
atomic_add_long(&pmap_pde_p_failures, 1);
CTR2(KTR_PMAP,
"pmap_promote_pde: failure for va %#lx in pmap %p", va,
pmap);
return;
}
/*
* Promote the pv entries.
*/
if ((newpde & PG_MANAGED) != 0)
pmap_pv_promote_pde(pmap, va, newpde & PG_PS_FRAME, lockp);
/*
* Propagate the PAT index to its proper position.
*/
newpde = pmap_swap_pat(pmap, newpde);
/*
* Map the superpage.
*/
if (workaround_erratum383)
pmap_update_pde(pmap, va, pde, PG_PS | newpde);
else
pde_store(pde, PG_PS | newpde);
atomic_add_long(&pmap_pde_promotions, 1);
CTR2(KTR_PMAP, "pmap_promote_pde: success for va %#lx"
" in pmap %p", va, pmap);
}
/*
* Insert the given physical page (p) at
* the specified virtual address (v) in the
* target physical map with the protection requested.
*
* If specified, the page will be wired down, meaning
* that the related pte can not be reclaimed.
*
* NB: This is the only routine which MAY NOT lazy-evaluate
* or lose information. That is, this routine must actually
* insert this page into the given map NOW.
*/
int
pmap_enter(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_prot_t prot,
u_int flags, int8_t psind __unused)
{
struct rwlock *lock;
pd_entry_t *pde;
pt_entry_t *pte, PG_G, PG_A, PG_M, PG_RW, PG_V;
pt_entry_t newpte, origpte;
pv_entry_t pv;
vm_paddr_t opa, pa;
vm_page_t mpte, om;
boolean_t nosleep;
PG_A = pmap_accessed_bit(pmap);
PG_G = pmap_global_bit(pmap);
PG_M = pmap_modified_bit(pmap);
PG_V = pmap_valid_bit(pmap);
PG_RW = pmap_rw_bit(pmap);
va = trunc_page(va);
KASSERT(va <= VM_MAX_KERNEL_ADDRESS, ("pmap_enter: toobig"));
KASSERT(va < UPT_MIN_ADDRESS || va >= UPT_MAX_ADDRESS,
("pmap_enter: invalid to pmap_enter page table pages (va: 0x%lx)",
va));
KASSERT((m->oflags & VPO_UNMANAGED) != 0 || va < kmi.clean_sva ||
va >= kmi.clean_eva,
("pmap_enter: managed mapping within the clean submap"));
if ((m->oflags & VPO_UNMANAGED) == 0 && !vm_page_xbusied(m))
VM_OBJECT_ASSERT_LOCKED(m->object);
pa = VM_PAGE_TO_PHYS(m);
newpte = (pt_entry_t)(pa | PG_A | PG_V);
if ((flags & VM_PROT_WRITE) != 0)
newpte |= PG_M;
if ((prot & VM_PROT_WRITE) != 0)
newpte |= PG_RW;
KASSERT((newpte & (PG_M | PG_RW)) != PG_M,
("pmap_enter: flags includes VM_PROT_WRITE but prot doesn't"));
if ((prot & VM_PROT_EXECUTE) == 0)
newpte |= pg_nx;
if ((flags & PMAP_ENTER_WIRED) != 0)
newpte |= PG_W;
if (va < VM_MAXUSER_ADDRESS)
newpte |= PG_U;
if (pmap == kernel_pmap)
newpte |= PG_G;
newpte |= pmap_cache_bits(pmap, m->md.pat_mode, 0);
/*
* Set modified bit gratuitously for writeable mappings if
* the page is unmanaged. We do not want to take a fault
* to do the dirty bit accounting for these mappings.
*/
if ((m->oflags & VPO_UNMANAGED) != 0) {
if ((newpte & PG_RW) != 0)
newpte |= PG_M;
}
mpte = NULL;
lock = NULL;
rw_rlock(&pvh_global_lock);
PMAP_LOCK(pmap);
/*
* In the case that a page table page is not
* resident, we are creating it here.
*/
retry:
pde = pmap_pde(pmap, va);
if (pde != NULL && (*pde & PG_V) != 0 && ((*pde & PG_PS) == 0 ||
pmap_demote_pde_locked(pmap, pde, va, &lock))) {
pte = pmap_pde_to_pte(pde, va);
if (va < VM_MAXUSER_ADDRESS && mpte == NULL) {
mpte = PHYS_TO_VM_PAGE(*pde & PG_FRAME);
mpte->wire_count++;
}
} else if (va < VM_MAXUSER_ADDRESS) {
/*
* Here if the pte page isn't mapped, or if it has been
* deallocated.
*/
nosleep = (flags & PMAP_ENTER_NOSLEEP) != 0;
mpte = _pmap_allocpte(pmap, pmap_pde_pindex(va),
nosleep ? NULL : &lock);
if (mpte == NULL && nosleep) {
if (lock != NULL)
rw_wunlock(lock);
rw_runlock(&pvh_global_lock);
PMAP_UNLOCK(pmap);
return (KERN_RESOURCE_SHORTAGE);
}
goto retry;
} else
panic("pmap_enter: invalid page directory va=%#lx", va);
origpte = *pte;
/*
* Is the specified virtual address already mapped?
*/
if ((origpte & PG_V) != 0) {
/*
* Wiring change, just update stats. We don't worry about
* wiring PT pages as they remain resident as long as there
* are valid mappings in them. Hence, if a user page is wired,
* the PT page will be also.
*/
if ((newpte & PG_W) != 0 && (origpte & PG_W) == 0)
pmap->pm_stats.wired_count++;
else if ((newpte & PG_W) == 0 && (origpte & PG_W) != 0)
pmap->pm_stats.wired_count--;
/*
* Remove the extra PT page reference.
*/
if (mpte != NULL) {
mpte->wire_count--;
KASSERT(mpte->wire_count > 0,
("pmap_enter: missing reference to page table page,"
" va: 0x%lx", va));
}
/*
* Has the physical page changed?
*/
opa = origpte & PG_FRAME;
if (opa == pa) {
/*
* No, might be a protection or wiring change.
*/
if ((origpte & PG_MANAGED) != 0) {
newpte |= PG_MANAGED;
if ((newpte & PG_RW) != 0)
vm_page_aflag_set(m, PGA_WRITEABLE);
}
if (((origpte ^ newpte) & ~(PG_M | PG_A)) == 0)
goto unchanged;
goto validate;
}
} else {
/*
* Increment the counters.
*/
if ((newpte & PG_W) != 0)
pmap->pm_stats.wired_count++;
pmap_resident_count_inc(pmap, 1);
}
/*
* Enter on the PV list if part of our managed memory.
*/
if ((m->oflags & VPO_UNMANAGED) == 0) {
newpte |= PG_MANAGED;
pv = get_pv_entry(pmap, &lock);
pv->pv_va = va;
CHANGE_PV_LIST_LOCK_TO_PHYS(&lock, pa);
TAILQ_INSERT_TAIL(&m->md.pv_list, pv, pv_next);
m->md.pv_gen++;
if ((newpte & PG_RW) != 0)
vm_page_aflag_set(m, PGA_WRITEABLE);
}
/*
* Update the PTE.
*/
if ((origpte & PG_V) != 0) {
validate:
origpte = pte_load_store(pte, newpte);
opa = origpte & PG_FRAME;
if (opa != pa) {
if ((origpte & PG_MANAGED) != 0) {
om = PHYS_TO_VM_PAGE(opa);
if ((origpte & (PG_M | PG_RW)) == (PG_M |
PG_RW))
vm_page_dirty(om);
if ((origpte & PG_A) != 0)
vm_page_aflag_set(om, PGA_REFERENCED);
CHANGE_PV_LIST_LOCK_TO_PHYS(&lock, opa);
pmap_pvh_free(&om->md, pmap, va);
if ((om->aflags & PGA_WRITEABLE) != 0 &&
TAILQ_EMPTY(&om->md.pv_list) &&
((om->flags & PG_FICTITIOUS) != 0 ||
TAILQ_EMPTY(&pa_to_pvh(opa)->pv_list)))
vm_page_aflag_clear(om, PGA_WRITEABLE);
}
} else if ((newpte & PG_M) == 0 && (origpte & (PG_M |
PG_RW)) == (PG_M | PG_RW)) {
if ((origpte & PG_MANAGED) != 0)
vm_page_dirty(m);
/*
* Although the PTE may still have PG_RW set, TLB
* invalidation may nonetheless be required because
* the PTE no longer has PG_M set.
*/
} else if ((origpte & PG_NX) != 0 || (newpte & PG_NX) == 0) {
/*
* This PTE change does not require TLB invalidation.
*/
goto unchanged;
}
if ((origpte & PG_A) != 0)
pmap_invalidate_page(pmap, va);
} else
pte_store(pte, newpte);
unchanged:
/*
* If both the page table page and the reservation are fully
* populated, then attempt promotion.
*/
if ((mpte == NULL || mpte->wire_count == NPTEPG) &&
pmap_ps_enabled(pmap) &&
(m->flags & PG_FICTITIOUS) == 0 &&
vm_reserv_level_iffullpop(m) == 0)
pmap_promote_pde(pmap, pde, va, &lock);
if (lock != NULL)
rw_wunlock(lock);
rw_runlock(&pvh_global_lock);
PMAP_UNLOCK(pmap);
return (KERN_SUCCESS);
}
/*
* Tries to create a 2MB page mapping. Returns TRUE if successful and FALSE
* otherwise. Fails if (1) a page table page cannot be allocated without
* blocking, (2) a mapping already exists at the specified virtual address, or
* (3) a pv entry cannot be allocated without reclaiming another pv entry.
*/
static boolean_t
pmap_enter_pde(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_prot_t prot,
struct rwlock **lockp)
{
pd_entry_t *pde, newpde;
pt_entry_t PG_V;
vm_page_t mpde;
struct spglist free;
PG_V = pmap_valid_bit(pmap);
rw_assert(&pvh_global_lock, RA_LOCKED);
PMAP_LOCK_ASSERT(pmap, MA_OWNED);
if ((mpde = pmap_allocpde(pmap, va, NULL)) == NULL) {
CTR2(KTR_PMAP, "pmap_enter_pde: failure for va %#lx"
" in pmap %p", va, pmap);
return (FALSE);
}
pde = (pd_entry_t *)PHYS_TO_DMAP(VM_PAGE_TO_PHYS(mpde));
pde = &pde[pmap_pde_index(va)];
if ((*pde & PG_V) != 0) {
KASSERT(mpde->wire_count > 1,
("pmap_enter_pde: mpde's wire count is too low"));
mpde->wire_count--;
CTR2(KTR_PMAP, "pmap_enter_pde: failure for va %#lx"
" in pmap %p", va, pmap);
return (FALSE);
}
newpde = VM_PAGE_TO_PHYS(m) | pmap_cache_bits(pmap, m->md.pat_mode, 1) |
PG_PS | PG_V;
if ((m->oflags & VPO_UNMANAGED) == 0) {
newpde |= PG_MANAGED;
/*
* Abort this mapping if its PV entry could not be created.
*/
if (!pmap_pv_insert_pde(pmap, va, VM_PAGE_TO_PHYS(m),
lockp)) {
SLIST_INIT(&free);
if (pmap_unwire_ptp(pmap, va, mpde, &free)) {
/*
* Although "va" is not mapped, paging-
* structure caches could nonetheless have
* entries that refer to the freed page table
* pages. Invalidate those entries.
*/
pmap_invalidate_page(pmap, va);
pmap_free_zero_pages(&free);
}
CTR2(KTR_PMAP, "pmap_enter_pde: failure for va %#lx"
" in pmap %p", va, pmap);
return (FALSE);
}
}
if ((prot & VM_PROT_EXECUTE) == 0)
newpde |= pg_nx;
if (va < VM_MAXUSER_ADDRESS)
newpde |= PG_U;
/*
* Increment counters.
*/
pmap_resident_count_inc(pmap, NBPDR / PAGE_SIZE);
/*
* Map the superpage.
*/
pde_store(pde, newpde);
atomic_add_long(&pmap_pde_mappings, 1);
CTR2(KTR_PMAP, "pmap_enter_pde: success for va %#lx"
" in pmap %p", va, pmap);
return (TRUE);
}
/*
* Maps a sequence of resident pages belonging to the same object.
* The sequence begins with the given page m_start. This page is
* mapped at the given virtual address start. Each subsequent page is
* mapped at a virtual address that is offset from start by the same
* amount as the page is offset from m_start within the object. The
* last page in the sequence is the page with the largest offset from
* m_start that can be mapped at a virtual address less than the given
* virtual address end. Not every virtual page between start and end
* is mapped; only those for which a resident page exists with the
* corresponding offset from m_start are mapped.
*/
void
pmap_enter_object(pmap_t pmap, vm_offset_t start, vm_offset_t end,
vm_page_t m_start, vm_prot_t prot)
{
struct rwlock *lock;
vm_offset_t va;
vm_page_t m, mpte;
vm_pindex_t diff, psize;
VM_OBJECT_ASSERT_LOCKED(m_start->object);
psize = atop(end - start);
mpte = NULL;
m = m_start;
lock = NULL;
rw_rlock(&pvh_global_lock);
PMAP_LOCK(pmap);
while (m != NULL && (diff = m->pindex - m_start->pindex) < psize) {
va = start + ptoa(diff);
if ((va & PDRMASK) == 0 && va + NBPDR <= end &&
m->psind == 1 && pmap_ps_enabled(pmap) &&
pmap_enter_pde(pmap, va, m, prot, &lock))
m = &m[NBPDR / PAGE_SIZE - 1];
else
mpte = pmap_enter_quick_locked(pmap, va, m, prot,
mpte, &lock);
m = TAILQ_NEXT(m, listq);
}
if (lock != NULL)
rw_wunlock(lock);
rw_runlock(&pvh_global_lock);
PMAP_UNLOCK(pmap);
}
/*
* this code makes some *MAJOR* assumptions:
* 1. Current pmap & pmap exists.
* 2. Not wired.
* 3. Read access.
* 4. No page table pages.
* but is *MUCH* faster than pmap_enter...
*/
void
pmap_enter_quick(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_prot_t prot)
{
struct rwlock *lock;
lock = NULL;
rw_rlock(&pvh_global_lock);
PMAP_LOCK(pmap);
(void)pmap_enter_quick_locked(pmap, va, m, prot, NULL, &lock);
if (lock != NULL)
rw_wunlock(lock);
rw_runlock(&pvh_global_lock);
PMAP_UNLOCK(pmap);
}
static vm_page_t
pmap_enter_quick_locked(pmap_t pmap, vm_offset_t va, vm_page_t m,
vm_prot_t prot, vm_page_t mpte, struct rwlock **lockp)
{
struct spglist free;
pt_entry_t *pte, PG_V;
vm_paddr_t pa;
KASSERT(va < kmi.clean_sva || va >= kmi.clean_eva ||
(m->oflags & VPO_UNMANAGED) != 0,
("pmap_enter_quick_locked: managed mapping within the clean submap"));
PG_V = pmap_valid_bit(pmap);
rw_assert(&pvh_global_lock, RA_LOCKED);
PMAP_LOCK_ASSERT(pmap, MA_OWNED);
/*
* In the case that a page table page is not
* resident, we are creating it here.
*/
if (va < VM_MAXUSER_ADDRESS) {
vm_pindex_t ptepindex;
pd_entry_t *ptepa;
/*
* Calculate pagetable page index
*/
ptepindex = pmap_pde_pindex(va);
if (mpte && (mpte->pindex == ptepindex)) {
mpte->wire_count++;
} else {
/*
* Get the page directory entry
*/
ptepa = pmap_pde(pmap, va);
/*
* If the page table page is mapped, we just increment
* the hold count, and activate it. Otherwise, we
* attempt to allocate a page table page. If this
* attempt fails, we don't retry. Instead, we give up.
*/
if (ptepa && (*ptepa & PG_V) != 0) {
if (*ptepa & PG_PS)
return (NULL);
mpte = PHYS_TO_VM_PAGE(*ptepa & PG_FRAME);
mpte->wire_count++;
} else {
/*
* Pass NULL instead of the PV list lock
* pointer, because we don't intend to sleep.
*/
mpte = _pmap_allocpte(pmap, ptepindex, NULL);
if (mpte == NULL)
return (mpte);
}
}
pte = (pt_entry_t *)PHYS_TO_DMAP(VM_PAGE_TO_PHYS(mpte));
pte = &pte[pmap_pte_index(va)];
} else {
mpte = NULL;
pte = vtopte(va);
}
if (*pte) {
if (mpte != NULL) {
mpte->wire_count--;
mpte = NULL;
}
return (mpte);
}
/*
* Enter on the PV list if part of our managed memory.
*/
if ((m->oflags & VPO_UNMANAGED) == 0 &&
!pmap_try_insert_pv_entry(pmap, va, m, lockp)) {
if (mpte != NULL) {
SLIST_INIT(&free);
if (pmap_unwire_ptp(pmap, va, mpte, &free)) {
/*
* Although "va" is not mapped, paging-
* structure caches could nonetheless have
* entries that refer to the freed page table
* pages. Invalidate those entries.
*/
pmap_invalidate_page(pmap, va);
pmap_free_zero_pages(&free);
}
mpte = NULL;
}
return (mpte);
}
/*
* Increment counters
*/
pmap_resident_count_inc(pmap, 1);
pa = VM_PAGE_TO_PHYS(m) | pmap_cache_bits(pmap, m->md.pat_mode, 0);
if ((prot & VM_PROT_EXECUTE) == 0)
pa |= pg_nx;
/*
* Now validate mapping with RO protection
*/
if ((m->oflags & VPO_UNMANAGED) != 0)
pte_store(pte, pa | PG_V | PG_U);
else
pte_store(pte, pa | PG_V | PG_U | PG_MANAGED);
return (mpte);
}
/*
* Make a temporary mapping for a physical address. This is only intended
* to be used for panic dumps.
*/
void *
pmap_kenter_temporary(vm_paddr_t pa, int i)
{
vm_offset_t va;
va = (vm_offset_t)crashdumpmap + (i * PAGE_SIZE);
pmap_kenter(va, pa);
invlpg(va);
return ((void *)crashdumpmap);
}
/*
* This code maps large physical mmap regions into the
* processor address space. Note that some shortcuts
* are taken, but the code works.
*/
void
pmap_object_init_pt(pmap_t pmap, vm_offset_t addr, vm_object_t object,
vm_pindex_t pindex, vm_size_t size)
{
pd_entry_t *pde;
pt_entry_t PG_A, PG_M, PG_RW, PG_V;
vm_paddr_t pa, ptepa;
vm_page_t p, pdpg;
int pat_mode;
PG_A = pmap_accessed_bit(pmap);
PG_M = pmap_modified_bit(pmap);
PG_V = pmap_valid_bit(pmap);
PG_RW = pmap_rw_bit(pmap);
VM_OBJECT_ASSERT_WLOCKED(object);
KASSERT(object->type == OBJT_DEVICE || object->type == OBJT_SG,
("pmap_object_init_pt: non-device object"));
if ((addr & (NBPDR - 1)) == 0 && (size & (NBPDR - 1)) == 0) {
if (!pmap_ps_enabled(pmap))
return;
if (!vm_object_populate(object, pindex, pindex + atop(size)))
return;
p = vm_page_lookup(object, pindex);
KASSERT(p->valid == VM_PAGE_BITS_ALL,
("pmap_object_init_pt: invalid page %p", p));
pat_mode = p->md.pat_mode;
/*
* Abort the mapping if the first page is not physically
* aligned to a 2MB page boundary.
*/
ptepa = VM_PAGE_TO_PHYS(p);
if (ptepa & (NBPDR - 1))
return;
/*
* Skip the first page. Abort the mapping if the rest of
* the pages are not physically contiguous or have differing
* memory attributes.
*/
p = TAILQ_NEXT(p, listq);
for (pa = ptepa + PAGE_SIZE; pa < ptepa + size;
pa += PAGE_SIZE) {
KASSERT(p->valid == VM_PAGE_BITS_ALL,
("pmap_object_init_pt: invalid page %p", p));
if (pa != VM_PAGE_TO_PHYS(p) ||
pat_mode != p->md.pat_mode)
return;
p = TAILQ_NEXT(p, listq);
}
/*
* Map using 2MB pages. Since "ptepa" is 2M aligned and
* "size" is a multiple of 2M, adding the PAT setting to "pa"
* will not affect the termination of this loop.
*/
PMAP_LOCK(pmap);
for (pa = ptepa | pmap_cache_bits(pmap, pat_mode, 1);
pa < ptepa + size; pa += NBPDR) {
pdpg = pmap_allocpde(pmap, addr, NULL);
if (pdpg == NULL) {
/*
* The creation of mappings below is only an
* optimization. If a page directory page
* cannot be allocated without blocking,
* continue on to the next mapping rather than
* blocking.
*/
addr += NBPDR;
continue;
}
pde = (pd_entry_t *)PHYS_TO_DMAP(VM_PAGE_TO_PHYS(pdpg));
pde = &pde[pmap_pde_index(addr)];
if ((*pde & PG_V) == 0) {
pde_store(pde, pa | PG_PS | PG_M | PG_A |
PG_U | PG_RW | PG_V);
pmap_resident_count_inc(pmap, NBPDR / PAGE_SIZE);
atomic_add_long(&pmap_pde_mappings, 1);
} else {
/* Continue on if the PDE is already valid. */
pdpg->wire_count--;
KASSERT(pdpg->wire_count > 0,
("pmap_object_init_pt: missing reference "
"to page directory page, va: 0x%lx", addr));
}
addr += NBPDR;
}
PMAP_UNLOCK(pmap);
}
}
/*
* Clear the wired attribute from the mappings for the specified range of
* addresses in the given pmap. Every valid mapping within that range
* must have the wired attribute set. In contrast, invalid mappings
* cannot have the wired attribute set, so they are ignored.
*
* The wired attribute of the page table entry is not a hardware feature,
* so there is no need to invalidate any TLB entries.
*/
void
pmap_unwire(pmap_t pmap, vm_offset_t sva, vm_offset_t eva)
{
vm_offset_t va_next;
pml4_entry_t *pml4e;
pdp_entry_t *pdpe;
pd_entry_t *pde;
pt_entry_t *pte, PG_V;
boolean_t pv_lists_locked;
PG_V = pmap_valid_bit(pmap);
pv_lists_locked = FALSE;
resume:
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);
if ((*pde & PG_V) == 0)
continue;
if ((*pde & PG_PS) != 0) {
if ((*pde & PG_W) == 0)
panic("pmap_unwire: pde %#jx is missing PG_W",
(uintmax_t)*pde);
/*
* Are we unwiring the entire large page? If not,
* demote the mapping and fall through.
*/
if (sva + NBPDR == va_next && eva >= va_next) {
atomic_clear_long(pde, PG_W);
pmap->pm_stats.wired_count -= NBPDR /
PAGE_SIZE;
continue;
} else {
if (!pv_lists_locked) {
pv_lists_locked = TRUE;
if (!rw_try_rlock(&pvh_global_lock)) {
PMAP_UNLOCK(pmap);
rw_rlock(&pvh_global_lock);
/* Repeat sva. */
goto resume;
}
}
if (!pmap_demote_pde(pmap, pde, sva))
panic("pmap_unwire: demotion failed");
}
}
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_V) == 0)
continue;
if ((*pte & PG_W) == 0)
panic("pmap_unwire: pte %#jx is missing PG_W",
(uintmax_t)*pte);
/*
* PG_W must be cleared atomically. Although the pmap
* lock synchronizes access to PG_W, another processor
* could be setting PG_M and/or PG_A concurrently.
*/
atomic_clear_long(pte, PG_W);
pmap->pm_stats.wired_count--;
}
}
if (pv_lists_locked)
rw_runlock(&pvh_global_lock);
PMAP_UNLOCK(pmap);
}
/*
* Copy the range specified by src_addr/len
* from the source map to the range dst_addr/len
* in the destination map.
*
* This routine is only advisory and need not do anything.
*/
void
pmap_copy(pmap_t dst_pmap, pmap_t src_pmap, vm_offset_t dst_addr, vm_size_t len,
vm_offset_t src_addr)
{
struct rwlock *lock;
struct spglist free;
vm_offset_t addr;
vm_offset_t end_addr = src_addr + len;
vm_offset_t va_next;
pt_entry_t PG_A, PG_M, PG_V;
if (dst_addr != src_addr)
return;
if (dst_pmap->pm_type != src_pmap->pm_type)
return;
/*
* EPT page table entries that require emulation of A/D bits are
* sensitive to clearing the PG_A bit (aka EPT_PG_READ). Although
* we clear PG_M (aka EPT_PG_WRITE) concomitantly, the PG_U bit
* (aka EPT_PG_EXECUTE) could still be set. Since some EPT
* implementations flag an EPT misconfiguration for exec-only
* mappings we skip this function entirely for emulated pmaps.
*/
if (pmap_emulate_ad_bits(dst_pmap))
return;
lock = NULL;
rw_rlock(&pvh_global_lock);
if (dst_pmap < src_pmap) {
PMAP_LOCK(dst_pmap);
PMAP_LOCK(src_pmap);
} else {
PMAP_LOCK(src_pmap);
PMAP_LOCK(dst_pmap);
}
PG_A = pmap_accessed_bit(dst_pmap);
PG_M = pmap_modified_bit(dst_pmap);
PG_V = pmap_valid_bit(dst_pmap);
for (addr = src_addr; addr < end_addr; addr = va_next) {
pt_entry_t *src_pte, *dst_pte;
vm_page_t dstmpde, dstmpte, srcmpte;
pml4_entry_t *pml4e;
pdp_entry_t *pdpe;
pd_entry_t srcptepaddr, *pde;
KASSERT(addr < UPT_MIN_ADDRESS,
("pmap_copy: invalid to pmap_copy page tables"));
pml4e = pmap_pml4e(src_pmap, addr);
if ((*pml4e & PG_V) == 0) {
va_next = (addr + NBPML4) & ~PML4MASK;
if (va_next < addr)
va_next = end_addr;
continue;
}
pdpe = pmap_pml4e_to_pdpe(pml4e, addr);
if ((*pdpe & PG_V) == 0) {
va_next = (addr + NBPDP) & ~PDPMASK;
if (va_next < addr)
va_next = end_addr;
continue;
}
va_next = (addr + NBPDR) & ~PDRMASK;
if (va_next < addr)
va_next = end_addr;
pde = pmap_pdpe_to_pde(pdpe, addr);
srcptepaddr = *pde;
if (srcptepaddr == 0)
continue;
if (srcptepaddr & PG_PS) {
if ((addr & PDRMASK) != 0 || addr + NBPDR > end_addr)
continue;
dstmpde = pmap_allocpde(dst_pmap, addr, NULL);
if (dstmpde == NULL)
break;
pde = (pd_entry_t *)
PHYS_TO_DMAP(VM_PAGE_TO_PHYS(dstmpde));
pde = &pde[pmap_pde_index(addr)];
if (*pde == 0 && ((srcptepaddr & PG_MANAGED) == 0 ||
pmap_pv_insert_pde(dst_pmap, addr, srcptepaddr &
PG_PS_FRAME, &lock))) {
*pde = srcptepaddr & ~PG_W;
pmap_resident_count_inc(dst_pmap, NBPDR / PAGE_SIZE);
atomic_add_long(&pmap_pde_mappings, 1);
} else
dstmpde->wire_count--;
continue;
}
srcptepaddr &= PG_FRAME;
srcmpte = PHYS_TO_VM_PAGE(srcptepaddr);
KASSERT(srcmpte->wire_count > 0,
("pmap_copy: source page table page is unused"));
if (va_next > end_addr)
va_next = end_addr;
src_pte = (pt_entry_t *)PHYS_TO_DMAP(srcptepaddr);
src_pte = &src_pte[pmap_pte_index(addr)];
dstmpte = NULL;
while (addr < va_next) {
pt_entry_t ptetemp;
ptetemp = *src_pte;
/*
* we only virtual copy managed pages
*/
if ((ptetemp & PG_MANAGED) != 0) {
if (dstmpte != NULL &&
dstmpte->pindex == pmap_pde_pindex(addr))
dstmpte->wire_count++;
else if ((dstmpte = pmap_allocpte(dst_pmap,
addr, NULL)) == NULL)
goto out;
dst_pte = (pt_entry_t *)
PHYS_TO_DMAP(VM_PAGE_TO_PHYS(dstmpte));
dst_pte = &dst_pte[pmap_pte_index(addr)];
if (*dst_pte == 0 &&
pmap_try_insert_pv_entry(dst_pmap, addr,
PHYS_TO_VM_PAGE(ptetemp & PG_FRAME),
&lock)) {
/*
* Clear the wired, modified, and
* accessed (referenced) bits
* during the copy.
*/
*dst_pte = ptetemp & ~(PG_W | PG_M |
PG_A);
pmap_resident_count_inc(dst_pmap, 1);
} else {
SLIST_INIT(&free);
if (pmap_unwire_ptp(dst_pmap, addr,
dstmpte, &free)) {
/*
* Although "addr" is not
* mapped, paging-structure
* caches could nonetheless
* have entries that refer to
* the freed page table pages.
* Invalidate those entries.
*/
pmap_invalidate_page(dst_pmap,
addr);
pmap_free_zero_pages(&free);
}
goto out;
}
if (dstmpte->wire_count >= srcmpte->wire_count)
break;
}
addr += PAGE_SIZE;
src_pte++;
}
}
out:
if (lock != NULL)
rw_wunlock(lock);
rw_runlock(&pvh_global_lock);
PMAP_UNLOCK(src_pmap);
PMAP_UNLOCK(dst_pmap);
}
/*
* pmap_zero_page zeros the specified hardware page by mapping
* the page into KVM and using bzero to clear its contents.
*/
void
pmap_zero_page(vm_page_t m)
{
vm_offset_t va = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(m));
pagezero((void *)va);
}
/*
* pmap_zero_page_area zeros the specified hardware page by mapping
* the page into KVM and using bzero to clear its contents.
*
* off and size may not cover an area beyond a single hardware page.
*/
void
pmap_zero_page_area(vm_page_t m, int off, int size)
{
vm_offset_t va = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(m));
if (off == 0 && size == PAGE_SIZE)
pagezero((void *)va);
else
bzero((char *)va + off, size);
}
/*
* pmap_zero_page_idle zeros the specified hardware page by mapping
* the page into KVM and using bzero to clear its contents. This
* is intended to be called from the vm_pagezero process only and
* outside of Giant.
*/
void
pmap_zero_page_idle(vm_page_t m)
{
vm_offset_t va = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(m));
pagezero((void *)va);
}
/*
* pmap_copy_page copies the specified (machine independent)
* page by mapping the page into virtual memory and using
* bcopy to copy the page, one machine dependent page at a
* time.
*/
void
pmap_copy_page(vm_page_t msrc, vm_page_t mdst)
{
vm_offset_t src = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(msrc));
vm_offset_t dst = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(mdst));
pagecopy((void *)src, (void *)dst);
}
int unmapped_buf_allowed = 1;
void
pmap_copy_pages(vm_page_t ma[], vm_offset_t a_offset, vm_page_t mb[],
vm_offset_t b_offset, int xfersize)
{
void *a_cp, *b_cp;
vm_page_t pages[2];
vm_offset_t vaddr[2], a_pg_offset, b_pg_offset;
int cnt;
boolean_t mapped;
while (xfersize > 0) {
a_pg_offset = a_offset & PAGE_MASK;
pages[0] = ma[a_offset >> PAGE_SHIFT];
b_pg_offset = b_offset & PAGE_MASK;
pages[1] = mb[b_offset >> PAGE_SHIFT];
cnt = min(xfersize, PAGE_SIZE - a_pg_offset);
cnt = min(cnt, PAGE_SIZE - b_pg_offset);
mapped = pmap_map_io_transient(pages, vaddr, 2, FALSE);
a_cp = (char *)vaddr[0] + a_pg_offset;
b_cp = (char *)vaddr[1] + b_pg_offset;
bcopy(a_cp, b_cp, cnt);
if (__predict_false(mapped))
pmap_unmap_io_transient(pages, vaddr, 2, FALSE);
a_offset += cnt;
b_offset += cnt;
xfersize -= cnt;
}
}
/*
* Returns true if the pmap's pv is one of the first
* 16 pvs linked to from this page. This count may
* be changed upwards or downwards in the future; it
* is only necessary that true be returned for a small
* subset of pmaps for proper page aging.
*/
boolean_t
pmap_page_exists_quick(pmap_t pmap, vm_page_t m)
{
struct md_page *pvh;
struct rwlock *lock;
pv_entry_t pv;
int loops = 0;
boolean_t rv;
KASSERT((m->oflags & VPO_UNMANAGED) == 0,
("pmap_page_exists_quick: page %p is not managed", m));
rv = FALSE;
rw_rlock(&pvh_global_lock);
lock = VM_PAGE_TO_PV_LIST_LOCK(m);
rw_rlock(lock);
TAILQ_FOREACH(pv, &m->md.pv_list, pv_next) {
if (PV_PMAP(pv) == pmap) {
rv = TRUE;
break;
}
loops++;
if (loops >= 16)
break;
}
if (!rv && loops < 16 && (m->flags & PG_FICTITIOUS) == 0) {
pvh = pa_to_pvh(VM_PAGE_TO_PHYS(m));
TAILQ_FOREACH(pv, &pvh->pv_list, pv_next) {
if (PV_PMAP(pv) == pmap) {
rv = TRUE;
break;
}
loops++;
if (loops >= 16)
break;
}
}
rw_runlock(lock);
rw_runlock(&pvh_global_lock);
return (rv);
}
/*
* pmap_page_wired_mappings:
*
* Return the number of managed mappings to the given physical page
* that are wired.
*/
int
pmap_page_wired_mappings(vm_page_t m)
{
struct rwlock *lock;
struct md_page *pvh;
pmap_t pmap;
pt_entry_t *pte;
pv_entry_t pv;
int count, md_gen, pvh_gen;
if ((m->oflags & VPO_UNMANAGED) != 0)
return (0);
rw_rlock(&pvh_global_lock);
lock = VM_PAGE_TO_PV_LIST_LOCK(m);
rw_rlock(lock);
restart:
count = 0;
TAILQ_FOREACH(pv, &m->md.pv_list, pv_next) {
pmap = PV_PMAP(pv);
if (!PMAP_TRYLOCK(pmap)) {
md_gen = m->md.pv_gen;
rw_runlock(lock);
PMAP_LOCK(pmap);
rw_rlock(lock);
if (md_gen != m->md.pv_gen) {
PMAP_UNLOCK(pmap);
goto restart;
}
}
pte = pmap_pte(pmap, pv->pv_va);
if ((*pte & PG_W) != 0)
count++;
PMAP_UNLOCK(pmap);
}
if ((m->flags & PG_FICTITIOUS) == 0) {
pvh = pa_to_pvh(VM_PAGE_TO_PHYS(m));
TAILQ_FOREACH(pv, &pvh->pv_list, pv_next) {
pmap = PV_PMAP(pv);
if (!PMAP_TRYLOCK(pmap)) {
md_gen = m->md.pv_gen;
pvh_gen = pvh->pv_gen;
rw_runlock(lock);
PMAP_LOCK(pmap);
rw_rlock(lock);
if (md_gen != m->md.pv_gen ||
pvh_gen != pvh->pv_gen) {
PMAP_UNLOCK(pmap);
goto restart;
}
}
pte = pmap_pde(pmap, pv->pv_va);
if ((*pte & PG_W) != 0)
count++;
PMAP_UNLOCK(pmap);
}
}
rw_runlock(lock);
rw_runlock(&pvh_global_lock);
return (count);
}
/*
* Returns TRUE if the given page is mapped individually or as part of
* a 2mpage. Otherwise, returns FALSE.
*/
boolean_t
pmap_page_is_mapped(vm_page_t m)
{
struct rwlock *lock;
boolean_t rv;
if ((m->oflags & VPO_UNMANAGED) != 0)
return (FALSE);
rw_rlock(&pvh_global_lock);
lock = VM_PAGE_TO_PV_LIST_LOCK(m);
rw_rlock(lock);
rv = !TAILQ_EMPTY(&m->md.pv_list) ||
((m->flags & PG_FICTITIOUS) == 0 &&
!TAILQ_EMPTY(&pa_to_pvh(VM_PAGE_TO_PHYS(m))->pv_list));
rw_runlock(lock);
rw_runlock(&pvh_global_lock);
return (rv);
}
/*
* Destroy all managed, non-wired mappings in the given user-space
* pmap. This pmap cannot be active on any processor besides the
* caller.
*
* This function cannot be applied to the kernel pmap. Moreover, it
* is not intended for general use. It is only to be used during
* process termination. Consequently, it can be implemented in ways
* that make it faster than pmap_remove(). First, it can more quickly
* destroy mappings by iterating over the pmap's collection of PV
* entries, rather than searching the page table. Second, it doesn't
* have to test and clear the page table entries atomically, because
* no processor is currently accessing the user address space. In
* particular, a page table entry's dirty bit won't change state once
* this function starts.
*/
void
pmap_remove_pages(pmap_t pmap)
{
pd_entry_t ptepde;
pt_entry_t *pte, tpte;
pt_entry_t PG_M, PG_RW, PG_V;
struct spglist free;
vm_page_t m, mpte, mt;
pv_entry_t pv;
struct md_page *pvh;
struct pv_chunk *pc, *npc;
struct rwlock *lock;
int64_t bit;
uint64_t inuse, bitmask;
int allfree, field, freed, idx;
boolean_t superpage;
vm_paddr_t pa;
/*
* Assert that the given pmap is only active on the current
* CPU. Unfortunately, we cannot block another CPU from
* activating the pmap while this function is executing.
*/
KASSERT(pmap == PCPU_GET(curpmap), ("non-current pmap %p", pmap));
#ifdef INVARIANTS
{
cpuset_t other_cpus;
other_cpus = all_cpus;
critical_enter();
CPU_CLR(PCPU_GET(cpuid), &other_cpus);
CPU_AND(&other_cpus, &pmap->pm_active);
critical_exit();
KASSERT(CPU_EMPTY(&other_cpus), ("pmap active %p", pmap));
}
#endif
lock = NULL;
PG_M = pmap_modified_bit(pmap);
PG_V = pmap_valid_bit(pmap);
PG_RW = pmap_rw_bit(pmap);
SLIST_INIT(&free);
rw_rlock(&pvh_global_lock);
PMAP_LOCK(pmap);
TAILQ_FOREACH_SAFE(pc, &pmap->pm_pvchunk, pc_list, npc) {
allfree = 1;
freed = 0;
for (field = 0; field < _NPCM; field++) {
inuse = ~pc->pc_map[field] & pc_freemask[field];
while (inuse != 0) {
bit = bsfq(inuse);
bitmask = 1UL << bit;
idx = field * 64 + bit;
pv = &pc->pc_pventry[idx];
inuse &= ~bitmask;
pte = pmap_pdpe(pmap, pv->pv_va);
ptepde = *pte;
pte = pmap_pdpe_to_pde(pte, pv->pv_va);
tpte = *pte;
if ((tpte & (PG_PS | PG_V)) == PG_V) {
superpage = FALSE;
ptepde = tpte;
pte = (pt_entry_t *)PHYS_TO_DMAP(tpte &
PG_FRAME);
pte = &pte[pmap_pte_index(pv->pv_va)];
tpte = *pte;
} else {
/*
* Keep track whether 'tpte' is a
* superpage explicitly instead of
* relying on PG_PS being set.
*
* This is because PG_PS is numerically
* identical to PG_PTE_PAT and thus a
* regular page could be mistaken for
* a superpage.
*/
superpage = TRUE;
}
if ((tpte & PG_V) == 0) {
panic("bad pte va %lx pte %lx",
pv->pv_va, tpte);
}
/*
* We cannot remove wired pages from a process' mapping at this time
*/
if (tpte & PG_W) {
allfree = 0;
continue;
}
if (superpage)
pa = tpte & PG_PS_FRAME;
else
pa = tpte & PG_FRAME;
m = PHYS_TO_VM_PAGE(pa);
KASSERT(m->phys_addr == pa,
("vm_page_t %p phys_addr mismatch %016jx %016jx",
m, (uintmax_t)m->phys_addr,
(uintmax_t)tpte));
KASSERT((m->flags & PG_FICTITIOUS) != 0 ||
m < &vm_page_array[vm_page_array_size],
("pmap_remove_pages: bad tpte %#jx",
(uintmax_t)tpte));
pte_clear(pte);
/*
* Update the vm_page_t clean/reference bits.
*/
if ((tpte & (PG_M | PG_RW)) == (PG_M | PG_RW)) {
if (superpage) {
for (mt = m; mt < &m[NBPDR / PAGE_SIZE]; mt++)
vm_page_dirty(mt);
} else
vm_page_dirty(m);
}
CHANGE_PV_LIST_LOCK_TO_VM_PAGE(&lock, m);
/* Mark free */
pc->pc_map[field] |= bitmask;
if (superpage) {
pmap_resident_count_dec(pmap, NBPDR / PAGE_SIZE);
pvh = pa_to_pvh(tpte & PG_PS_FRAME);
TAILQ_REMOVE(&pvh->pv_list, pv, pv_next);
pvh->pv_gen++;
if (TAILQ_EMPTY(&pvh->pv_list)) {
for (mt = m; mt < &m[NBPDR / PAGE_SIZE]; mt++)
if ((mt->aflags & PGA_WRITEABLE) != 0 &&
TAILQ_EMPTY(&mt->md.pv_list))
vm_page_aflag_clear(mt, PGA_WRITEABLE);
}
mpte = pmap_lookup_pt_page(pmap, pv->pv_va);
if (mpte != NULL) {
pmap_remove_pt_page(pmap, mpte);
pmap_resident_count_dec(pmap, 1);
KASSERT(mpte->wire_count == NPTEPG,
("pmap_remove_pages: pte page wire count error"));
mpte->wire_count = 0;
pmap_add_delayed_free_list(mpte, &free, FALSE);
atomic_subtract_int(&vm_cnt.v_wire_count, 1);
}
} else {
pmap_resident_count_dec(pmap, 1);
TAILQ_REMOVE(&m->md.pv_list, pv, pv_next);
m->md.pv_gen++;
if ((m->aflags & PGA_WRITEABLE) != 0 &&
TAILQ_EMPTY(&m->md.pv_list) &&
(m->flags & PG_FICTITIOUS) == 0) {
pvh = pa_to_pvh(VM_PAGE_TO_PHYS(m));
if (TAILQ_EMPTY(&pvh->pv_list))
vm_page_aflag_clear(m, PGA_WRITEABLE);
}
}
pmap_unuse_pt(pmap, pv->pv_va, ptepde, &free);
freed++;
}
}
PV_STAT(atomic_add_long(&pv_entry_frees, freed));
PV_STAT(atomic_add_int(&pv_entry_spare, freed));
PV_STAT(atomic_subtract_long(&pv_entry_count, freed));
if (allfree) {
TAILQ_REMOVE(&pmap->pm_pvchunk, pc, pc_list);
free_pv_chunk(pc);
}
}
if (lock != NULL)
rw_wunlock(lock);
pmap_invalidate_all(pmap);
rw_runlock(&pvh_global_lock);
PMAP_UNLOCK(pmap);
pmap_free_zero_pages(&free);
}
static boolean_t
pmap_page_test_mappings(vm_page_t m, boolean_t accessed, boolean_t modified)
{
struct rwlock *lock;
pv_entry_t pv;
struct md_page *pvh;
pt_entry_t *pte, mask;
pt_entry_t PG_A, PG_M, PG_RW, PG_V;
pmap_t pmap;
int md_gen, pvh_gen;
boolean_t rv;
rv = FALSE;
rw_rlock(&pvh_global_lock);
lock = VM_PAGE_TO_PV_LIST_LOCK(m);
rw_rlock(lock);
restart:
TAILQ_FOREACH(pv, &m->md.pv_list, pv_next) {
pmap = PV_PMAP(pv);
if (!PMAP_TRYLOCK(pmap)) {
md_gen = m->md.pv_gen;
rw_runlock(lock);
PMAP_LOCK(pmap);
rw_rlock(lock);
if (md_gen != m->md.pv_gen) {
PMAP_UNLOCK(pmap);
goto restart;
}
}
pte = pmap_pte(pmap, pv->pv_va);
mask = 0;
if (modified) {
PG_M = pmap_modified_bit(pmap);
PG_RW = pmap_rw_bit(pmap);
mask |= PG_RW | PG_M;
}
if (accessed) {
PG_A = pmap_accessed_bit(pmap);
PG_V = pmap_valid_bit(pmap);
mask |= PG_V | PG_A;
}
rv = (*pte & mask) == mask;
PMAP_UNLOCK(pmap);
if (rv)
goto out;
}
if ((m->flags & PG_FICTITIOUS) == 0) {
pvh = pa_to_pvh(VM_PAGE_TO_PHYS(m));
TAILQ_FOREACH(pv, &pvh->pv_list, pv_next) {
pmap = PV_PMAP(pv);
if (!PMAP_TRYLOCK(pmap)) {
md_gen = m->md.pv_gen;
pvh_gen = pvh->pv_gen;
rw_runlock(lock);
PMAP_LOCK(pmap);
rw_rlock(lock);
if (md_gen != m->md.pv_gen ||
pvh_gen != pvh->pv_gen) {
PMAP_UNLOCK(pmap);
goto restart;
}
}
pte = pmap_pde(pmap, pv->pv_va);
mask = 0;
if (modified) {
PG_M = pmap_modified_bit(pmap);
PG_RW = pmap_rw_bit(pmap);
mask |= PG_RW | PG_M;
}
if (accessed) {
PG_A = pmap_accessed_bit(pmap);
PG_V = pmap_valid_bit(pmap);
mask |= PG_V | PG_A;
}
rv = (*pte & mask) == mask;
PMAP_UNLOCK(pmap);
if (rv)
goto out;
}
}
out:
rw_runlock(lock);
rw_runlock(&pvh_global_lock);
return (rv);
}
/*
* pmap_is_modified:
*
* Return whether or not the specified physical page was modified
* in any physical maps.
*/
boolean_t
pmap_is_modified(vm_page_t m)
{
KASSERT((m->oflags & VPO_UNMANAGED) == 0,
("pmap_is_modified: page %p is not managed", m));
/*
* If the page is not exclusive busied, then PGA_WRITEABLE cannot be
* concurrently set while the object is locked. Thus, if PGA_WRITEABLE
* is clear, no PTEs can have PG_M set.
*/
VM_OBJECT_ASSERT_WLOCKED(m->object);
if (!vm_page_xbusied(m) && (m->aflags & PGA_WRITEABLE) == 0)
return (FALSE);
return (pmap_page_test_mappings(m, FALSE, TRUE));
}
/*
* pmap_is_prefaultable:
*
* Return whether or not the specified virtual address is eligible
* for prefault.
*/
boolean_t
pmap_is_prefaultable(pmap_t pmap, vm_offset_t addr)
{
pd_entry_t *pde;
pt_entry_t *pte, PG_V;
boolean_t rv;
PG_V = pmap_valid_bit(pmap);
rv = FALSE;
PMAP_LOCK(pmap);
pde = pmap_pde(pmap, addr);
if (pde != NULL && (*pde & (PG_PS | PG_V)) == PG_V) {
pte = pmap_pde_to_pte(pde, addr);
rv = (*pte & PG_V) == 0;
}
PMAP_UNLOCK(pmap);
return (rv);
}
/*
* pmap_is_referenced:
*
* Return whether or not the specified physical page was referenced
* in any physical maps.
*/
boolean_t
pmap_is_referenced(vm_page_t m)
{
KASSERT((m->oflags & VPO_UNMANAGED) == 0,
("pmap_is_referenced: page %p is not managed", m));
return (pmap_page_test_mappings(m, TRUE, FALSE));
}
/*
* Clear the write and modified bits in each of the given page's mappings.
*/
void
pmap_remove_write(vm_page_t m)
{
struct md_page *pvh;
pmap_t pmap;
struct rwlock *lock;
pv_entry_t next_pv, pv;
pd_entry_t *pde;
pt_entry_t oldpte, *pte, PG_M, PG_RW;
vm_offset_t va;
int pvh_gen, md_gen;
KASSERT((m->oflags & VPO_UNMANAGED) == 0,
("pmap_remove_write: page %p is not managed", m));
/*
* If the page is not exclusive busied, then PGA_WRITEABLE cannot be
* set by another thread while the object is locked. Thus,
* if PGA_WRITEABLE is clear, no page table entries need updating.
*/
VM_OBJECT_ASSERT_WLOCKED(m->object);
if (!vm_page_xbusied(m) && (m->aflags & PGA_WRITEABLE) == 0)
return;
rw_rlock(&pvh_global_lock);
lock = VM_PAGE_TO_PV_LIST_LOCK(m);
pvh = pa_to_pvh(VM_PAGE_TO_PHYS(m));
retry_pv_loop:
rw_wlock(lock);
if ((m->flags & PG_FICTITIOUS) != 0)
goto small_mappings;
TAILQ_FOREACH_SAFE(pv, &pvh->pv_list, pv_next, next_pv) {
pmap = PV_PMAP(pv);
if (!PMAP_TRYLOCK(pmap)) {
pvh_gen = pvh->pv_gen;
rw_wunlock(lock);
PMAP_LOCK(pmap);
rw_wlock(lock);
if (pvh_gen != pvh->pv_gen) {
PMAP_UNLOCK(pmap);
rw_wunlock(lock);
goto retry_pv_loop;
}
}
PG_RW = pmap_rw_bit(pmap);
va = pv->pv_va;
pde = pmap_pde(pmap, va);
if ((*pde & PG_RW) != 0)
(void)pmap_demote_pde_locked(pmap, pde, va, &lock);
KASSERT(lock == VM_PAGE_TO_PV_LIST_LOCK(m),
("inconsistent pv lock %p %p for page %p",
lock, VM_PAGE_TO_PV_LIST_LOCK(m), m));
PMAP_UNLOCK(pmap);
}
small_mappings:
TAILQ_FOREACH(pv, &m->md.pv_list, pv_next) {
pmap = PV_PMAP(pv);
if (!PMAP_TRYLOCK(pmap)) {
pvh_gen = pvh->pv_gen;
md_gen = m->md.pv_gen;
rw_wunlock(lock);
PMAP_LOCK(pmap);
rw_wlock(lock);
if (pvh_gen != pvh->pv_gen ||
md_gen != m->md.pv_gen) {
PMAP_UNLOCK(pmap);
rw_wunlock(lock);
goto retry_pv_loop;
}
}
PG_M = pmap_modified_bit(pmap);
PG_RW = pmap_rw_bit(pmap);
pde = pmap_pde(pmap, pv->pv_va);
KASSERT((*pde & PG_PS) == 0,
("pmap_remove_write: found a 2mpage in page %p's pv list",
m));
pte = pmap_pde_to_pte(pde, pv->pv_va);
retry:
oldpte = *pte;
if (oldpte & PG_RW) {
if (!atomic_cmpset_long(pte, oldpte, oldpte &
~(PG_RW | PG_M)))
goto retry;
if ((oldpte & PG_M) != 0)
vm_page_dirty(m);
pmap_invalidate_page(pmap, pv->pv_va);
}
PMAP_UNLOCK(pmap);
}
rw_wunlock(lock);
vm_page_aflag_clear(m, PGA_WRITEABLE);
rw_runlock(&pvh_global_lock);
}
static __inline boolean_t
safe_to_clear_referenced(pmap_t pmap, pt_entry_t pte)
{
if (!pmap_emulate_ad_bits(pmap))
return (TRUE);
KASSERT(pmap->pm_type == PT_EPT, ("invalid pm_type %d", pmap->pm_type));
/*
* XWR = 010 or 110 will cause an unconditional EPT misconfiguration
* so we don't let the referenced (aka EPT_PG_READ) bit to be cleared
* if the EPT_PG_WRITE bit is set.
*/
if ((pte & EPT_PG_WRITE) != 0)
return (FALSE);
/*
* XWR = 100 is allowed only if the PMAP_SUPPORTS_EXEC_ONLY is set.
*/
if ((pte & EPT_PG_EXECUTE) == 0 ||
((pmap->pm_flags & PMAP_SUPPORTS_EXEC_ONLY) != 0))
return (TRUE);
else
return (FALSE);
}
#define PMAP_TS_REFERENCED_MAX 5
/*
* pmap_ts_referenced:
*
* Return a count of reference bits for a page, clearing those bits.
* It is not necessary for every reference bit to be cleared, but it
* is necessary that 0 only be returned when there are truly no
* reference bits set.
*
* XXX: The exact number of bits to check and clear is a matter that
* should be tested and standardized at some point in the future for
* optimal aging of shared pages.
*/
int
pmap_ts_referenced(vm_page_t m)
{
struct md_page *pvh;
pv_entry_t pv, pvf;
pmap_t pmap;
struct rwlock *lock;
pd_entry_t oldpde, *pde;
pt_entry_t *pte, PG_A;
vm_offset_t va;
vm_paddr_t pa;
int cleared, md_gen, not_cleared, pvh_gen;
struct spglist free;
boolean_t demoted;
KASSERT((m->oflags & VPO_UNMANAGED) == 0,
("pmap_ts_referenced: page %p is not managed", m));
SLIST_INIT(&free);
cleared = 0;
pa = VM_PAGE_TO_PHYS(m);
lock = PHYS_TO_PV_LIST_LOCK(pa);
pvh = pa_to_pvh(pa);
rw_rlock(&pvh_global_lock);
rw_wlock(lock);
retry:
not_cleared = 0;
if ((m->flags & PG_FICTITIOUS) != 0 ||
(pvf = TAILQ_FIRST(&pvh->pv_list)) == NULL)
goto small_mappings;
pv = pvf;
do {
if (pvf == NULL)
pvf = pv;
pmap = PV_PMAP(pv);
if (!PMAP_TRYLOCK(pmap)) {
pvh_gen = pvh->pv_gen;
rw_wunlock(lock);
PMAP_LOCK(pmap);
rw_wlock(lock);
if (pvh_gen != pvh->pv_gen) {
PMAP_UNLOCK(pmap);
goto retry;
}
}
PG_A = pmap_accessed_bit(pmap);
va = pv->pv_va;
pde = pmap_pde(pmap, pv->pv_va);
oldpde = *pde;
if ((*pde & PG_A) != 0) {
/*
* Since this reference bit is shared by 512 4KB
* pages, it should not be cleared every time it is
* tested. Apply a simple "hash" function on the
* physical page number, the virtual superpage number,
* and the pmap address to select one 4KB page out of
* the 512 on which testing the reference bit will
* result in clearing that reference bit. This
* function is designed to avoid the selection of the
* same 4KB page for every 2MB page mapping.
*
* On demotion, a mapping that hasn't been referenced
* is simply destroyed. To avoid the possibility of a
* subsequent page fault on a demoted wired mapping,
* always leave its reference bit set. Moreover,
* since the superpage is wired, the current state of
* its reference bit won't affect page replacement.
*/
if ((((pa >> PAGE_SHIFT) ^ (pv->pv_va >> PDRSHIFT) ^
(uintptr_t)pmap) & (NPTEPG - 1)) == 0 &&
(*pde & PG_W) == 0) {
if (safe_to_clear_referenced(pmap, oldpde)) {
atomic_clear_long(pde, PG_A);
pmap_invalidate_page(pmap, pv->pv_va);
demoted = FALSE;
} else if (pmap_demote_pde_locked(pmap, pde,
pv->pv_va, &lock)) {
/*
* 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.
*/
demoted = TRUE;
va += VM_PAGE_TO_PHYS(m) - (oldpde &
PG_PS_FRAME);
pte = pmap_pde_to_pte(pde, va);
pmap_remove_pte(pmap, pte, va, *pde,
NULL, &lock);
pmap_invalidate_page(pmap, va);
} else
demoted = TRUE;
if (demoted) {
/*
* The superpage mapping was removed
* entirely and therefore 'pv' is no
* longer valid.
*/
if (pvf == pv)
pvf = NULL;
pv = NULL;
}
cleared++;
KASSERT(lock == VM_PAGE_TO_PV_LIST_LOCK(m),
("inconsistent pv lock %p %p for page %p",
lock, VM_PAGE_TO_PV_LIST_LOCK(m), m));
} else
not_cleared++;
}
PMAP_UNLOCK(pmap);
/* Rotate the PV list if it has more than one entry. */
if (pv != NULL && TAILQ_NEXT(pv, pv_next) != NULL) {
TAILQ_REMOVE(&pvh->pv_list, pv, pv_next);
TAILQ_INSERT_TAIL(&pvh->pv_list, pv, pv_next);
pvh->pv_gen++;
}
if (cleared + not_cleared >= PMAP_TS_REFERENCED_MAX)
goto out;
} while ((pv = TAILQ_FIRST(&pvh->pv_list)) != pvf);
small_mappings:
if ((pvf = TAILQ_FIRST(&m->md.pv_list)) == NULL)
goto out;
pv = pvf;
do {
if (pvf == NULL)
pvf = pv;
pmap = PV_PMAP(pv);
if (!PMAP_TRYLOCK(pmap)) {
pvh_gen = pvh->pv_gen;
md_gen = m->md.pv_gen;
rw_wunlock(lock);
PMAP_LOCK(pmap);
rw_wlock(lock);
if (pvh_gen != pvh->pv_gen || md_gen != m->md.pv_gen) {
PMAP_UNLOCK(pmap);
goto retry;
}
}
PG_A = pmap_accessed_bit(pmap);
pde = pmap_pde(pmap, pv->pv_va);
KASSERT((*pde & PG_PS) == 0,
("pmap_ts_referenced: found a 2mpage in page %p's pv list",
m));
pte = pmap_pde_to_pte(pde, pv->pv_va);
if ((*pte & PG_A) != 0) {
if (safe_to_clear_referenced(pmap, *pte)) {
atomic_clear_long(pte, PG_A);
pmap_invalidate_page(pmap, pv->pv_va);
cleared++;
} else if ((*pte & PG_W) == 0) {
/*
* Wired pages cannot be paged out so
* doing accessed bit emulation for
* them is wasted effort. We do the
* hard work for unwired pages only.
*/
pmap_remove_pte(pmap, pte, pv->pv_va,
*pde, &free, &lock);
pmap_invalidate_page(pmap, pv->pv_va);
cleared++;
if (pvf == pv)
pvf = NULL;
pv = NULL;
KASSERT(lock == VM_PAGE_TO_PV_LIST_LOCK(m),
("inconsistent pv lock %p %p for page %p",
lock, VM_PAGE_TO_PV_LIST_LOCK(m), m));
} else
not_cleared++;
}
PMAP_UNLOCK(pmap);
/* Rotate the PV list if it has more than one entry. */
if (pv != NULL && TAILQ_NEXT(pv, pv_next) != NULL) {
TAILQ_REMOVE(&m->md.pv_list, pv, pv_next);
TAILQ_INSERT_TAIL(&m->md.pv_list, pv, pv_next);
m->md.pv_gen++;
}
} while ((pv = TAILQ_FIRST(&m->md.pv_list)) != pvf && cleared +
not_cleared < PMAP_TS_REFERENCED_MAX);
out:
rw_wunlock(lock);
rw_runlock(&pvh_global_lock);
pmap_free_zero_pages(&free);
return (cleared + not_cleared);
}
/*
* 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, PG_A, PG_G, PG_M, PG_RW, PG_V;
vm_offset_t va_next;
vm_page_t m;
boolean_t anychanged, pv_lists_locked;
if (advice != MADV_DONTNEED && advice != MADV_FREE)
return;
/*
* A/D bit emulation requires an alternate code path when clearing
* the modified and accessed bits below. Since this function is
* advisory in nature we skip it entirely for pmaps that require
* A/D bit emulation.
*/
if (pmap_emulate_ad_bits(pmap))
return;
PG_A = pmap_accessed_bit(pmap);
PG_G = pmap_global_bit(pmap);
PG_M = pmap_modified_bit(pmap);
PG_V = pmap_valid_bit(pmap);
PG_RW = pmap_rw_bit(pmap);
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
pmap_clear_modify(vm_page_t m)
{
struct md_page *pvh;
pmap_t pmap;
pv_entry_t next_pv, pv;
pd_entry_t oldpde, *pde;
pt_entry_t oldpte, *pte, PG_M, PG_RW, PG_V;
struct rwlock *lock;
vm_offset_t va;
int md_gen, pvh_gen;
KASSERT((m->oflags & VPO_UNMANAGED) == 0,
("pmap_clear_modify: page %p is not managed", m));
VM_OBJECT_ASSERT_WLOCKED(m->object);
KASSERT(!vm_page_xbusied(m),
("pmap_clear_modify: page %p is exclusive busied", m));
/*
* If the page is not PGA_WRITEABLE, then no PTEs can have PG_M set.
* If the object containing the page is locked and the page is not
* exclusive busied, then PGA_WRITEABLE cannot be concurrently set.
*/
if ((m->aflags & PGA_WRITEABLE) == 0)
return;
pvh = pa_to_pvh(VM_PAGE_TO_PHYS(m));
rw_rlock(&pvh_global_lock);
lock = VM_PAGE_TO_PV_LIST_LOCK(m);
rw_wlock(lock);
restart:
if ((m->flags & PG_FICTITIOUS) != 0)
goto small_mappings;
TAILQ_FOREACH_SAFE(pv, &pvh->pv_list, pv_next, next_pv) {
pmap = PV_PMAP(pv);
if (!PMAP_TRYLOCK(pmap)) {
pvh_gen = pvh->pv_gen;
rw_wunlock(lock);
PMAP_LOCK(pmap);
rw_wlock(lock);
if (pvh_gen != pvh->pv_gen) {
PMAP_UNLOCK(pmap);
goto restart;
}
}
PG_M = pmap_modified_bit(pmap);
PG_V = pmap_valid_bit(pmap);
PG_RW = pmap_rw_bit(pmap);
va = pv->pv_va;
pde = pmap_pde(pmap, va);
oldpde = *pde;
if ((oldpde & PG_RW) != 0) {
if (pmap_demote_pde_locked(pmap, pde, va, &lock)) {
if ((oldpde & PG_W) == 0) {
/*
* Write protect the mapping to a
* single page so that a subsequent
* write access may repromote.
*/
va += VM_PAGE_TO_PHYS(m) - (oldpde &
PG_PS_FRAME);
pte = pmap_pde_to_pte(pde, va);
oldpte = *pte;
if ((oldpte & PG_V) != 0) {
while (!atomic_cmpset_long(pte,
oldpte,
oldpte & ~(PG_M | PG_RW)))
oldpte = *pte;
vm_page_dirty(m);
pmap_invalidate_page(pmap, va);
}
}
}
}
PMAP_UNLOCK(pmap);
}
small_mappings:
TAILQ_FOREACH(pv, &m->md.pv_list, pv_next) {
pmap = PV_PMAP(pv);
if (!PMAP_TRYLOCK(pmap)) {
md_gen = m->md.pv_gen;
pvh_gen = pvh->pv_gen;
rw_wunlock(lock);
PMAP_LOCK(pmap);
rw_wlock(lock);
if (pvh_gen != pvh->pv_gen || md_gen != m->md.pv_gen) {
PMAP_UNLOCK(pmap);
goto restart;
}
}
PG_M = pmap_modified_bit(pmap);
PG_RW = pmap_rw_bit(pmap);
pde = pmap_pde(pmap, pv->pv_va);
KASSERT((*pde & PG_PS) == 0, ("pmap_clear_modify: found"
" a 2mpage in page %p's pv list", m));
pte = pmap_pde_to_pte(pde, pv->pv_va);
if ((*pte & (PG_M | PG_RW)) == (PG_M | PG_RW)) {
atomic_clear_long(pte, PG_M);
pmap_invalidate_page(pmap, pv->pv_va);
}
PMAP_UNLOCK(pmap);
}
rw_wunlock(lock);
rw_runlock(&pvh_global_lock);
}
/*
* Miscellaneous support routines follow
*/
/* Adjust the cache mode for a 4KB page mapped via a PTE. */
static __inline void
pmap_pte_attr(pt_entry_t *pte, int cache_bits, int mask)
{
u_int opte, npte;
/*
* The cache mode bits are all in the low 32-bits of the
* PTE, so we can just spin on updating the low 32-bits.
*/
do {
opte = *(u_int *)pte;
npte = opte & ~mask;
npte |= cache_bits;
} while (npte != opte && !atomic_cmpset_int((u_int *)pte, opte, npte));
}
/* Adjust the cache mode for a 2MB page mapped via a PDE. */
static __inline void
pmap_pde_attr(pd_entry_t *pde, int cache_bits, int mask)
{
u_int opde, npde;
/*
* The cache mode bits are all in the low 32-bits of the
* PDE, so we can just spin on updating the low 32-bits.
*/
do {
opde = *(u_int *)pde;
npde = opde & ~mask;
npde |= cache_bits;
} while (npde != opde && !atomic_cmpset_int((u_int *)pde, opde, npde));
}
/*
* Map a set of physical memory pages into the kernel virtual
* address space. Return a pointer to where it is mapped. This
* routine is intended to be used for mapping device memory,
* NOT real memory.
*/
void *
pmap_mapdev_attr(vm_paddr_t pa, vm_size_t size, int mode)
{
struct pmap_preinit_mapping *ppim;
vm_offset_t va, offset;
vm_size_t tmpsize;
int i;
offset = pa & PAGE_MASK;
size = round_page(offset + size);
pa = trunc_page(pa);
if (!pmap_initialized) {
va = 0;
for (i = 0; i < PMAP_PREINIT_MAPPING_COUNT; i++) {
ppim = pmap_preinit_mapping + i;
if (ppim->va == 0) {
ppim->pa = pa;
ppim->sz = size;
ppim->mode = mode;
ppim->va = virtual_avail;
virtual_avail += size;
va = ppim->va;
break;
}
}
if (va == 0)
panic("%s: too many preinit mappings", __func__);
} else {
/*
* If we have a preinit mapping, re-use it.
*/
for (i = 0; i < PMAP_PREINIT_MAPPING_COUNT; i++) {
ppim = pmap_preinit_mapping + i;
if (ppim->pa == pa && ppim->sz == size &&
ppim->mode == mode)
return ((void *)(ppim->va + offset));
}
/*
* If the specified range of physical addresses fits within
* the direct map window, use the direct map.
*/
if (pa < dmaplimit && pa + size < dmaplimit) {
va = PHYS_TO_DMAP(pa);
if (!pmap_change_attr(va, size, mode))
return ((void *)(va + offset));
}
va = kva_alloc(size);
if (va == 0)
panic("%s: Couldn't allocate KVA", __func__);
}
for (tmpsize = 0; tmpsize < size; tmpsize += PAGE_SIZE)
pmap_kenter_attr(va + tmpsize, pa + tmpsize, mode);
pmap_invalidate_range(kernel_pmap, va, va + tmpsize);
pmap_invalidate_cache_range(va, va + tmpsize, FALSE);
return ((void *)(va + offset));
}
void *
pmap_mapdev(vm_paddr_t pa, vm_size_t size)
{
return (pmap_mapdev_attr(pa, size, PAT_UNCACHEABLE));
}
void *
pmap_mapbios(vm_paddr_t pa, vm_size_t size)
{
return (pmap_mapdev_attr(pa, size, PAT_WRITE_BACK));
}
void
pmap_unmapdev(vm_offset_t va, vm_size_t size)
{
struct pmap_preinit_mapping *ppim;
vm_offset_t offset;
int i;
/* If we gave a direct map region in pmap_mapdev, do nothing */
if (va >= DMAP_MIN_ADDRESS && va < DMAP_MAX_ADDRESS)
return;
offset = va & PAGE_MASK;
size = round_page(offset + size);
va = trunc_page(va);
for (i = 0; i < PMAP_PREINIT_MAPPING_COUNT; i++) {
ppim = pmap_preinit_mapping + i;
if (ppim->va == va && ppim->sz == size) {
if (pmap_initialized)
return;
ppim->pa = 0;
ppim->va = 0;
ppim->sz = 0;
ppim->mode = 0;
if (va + size == virtual_avail)
virtual_avail = va;
return;
}
}
if (pmap_initialized)
kva_free(va, size);
}
/*
* Tries to demote a 1GB page mapping.
*/
static boolean_t
pmap_demote_pdpe(pmap_t pmap, pdp_entry_t *pdpe, vm_offset_t va)
{
pdp_entry_t newpdpe, oldpdpe;
pd_entry_t *firstpde, newpde, *pde;
pt_entry_t PG_A, PG_M, PG_RW, PG_V;
vm_paddr_t mpdepa;
vm_page_t mpde;
PG_A = pmap_accessed_bit(pmap);
PG_M = pmap_modified_bit(pmap);
PG_V = pmap_valid_bit(pmap);
PG_RW = pmap_rw_bit(pmap);
PMAP_LOCK_ASSERT(pmap, MA_OWNED);
oldpdpe = *pdpe;
KASSERT((oldpdpe & (PG_PS | PG_V)) == (PG_PS | PG_V),
("pmap_demote_pdpe: oldpdpe is missing PG_PS and/or PG_V"));
if ((mpde = vm_page_alloc(NULL, va >> PDPSHIFT, VM_ALLOC_INTERRUPT |
VM_ALLOC_NOOBJ | VM_ALLOC_WIRED)) == NULL) {
CTR2(KTR_PMAP, "pmap_demote_pdpe: failure for va %#lx"
" in pmap %p", va, pmap);
return (FALSE);
}
mpdepa = VM_PAGE_TO_PHYS(mpde);
firstpde = (pd_entry_t *)PHYS_TO_DMAP(mpdepa);
newpdpe = mpdepa | PG_M | PG_A | (oldpdpe & PG_U) | PG_RW | PG_V;
KASSERT((oldpdpe & PG_A) != 0,
("pmap_demote_pdpe: oldpdpe is missing PG_A"));
KASSERT((oldpdpe & (PG_M | PG_RW)) != PG_RW,
("pmap_demote_pdpe: oldpdpe is missing PG_M"));
newpde = oldpdpe;
/*
* Initialize the page directory page.
*/
for (pde = firstpde; pde < firstpde + NPDEPG; pde++) {
*pde = newpde;
newpde += NBPDR;
}
/*
* Demote the mapping.
*/
*pdpe = newpdpe;
/*
* Invalidate a stale recursive mapping of the page directory page.
*/
pmap_invalidate_page(pmap, (vm_offset_t)vtopde(va));
pmap_pdpe_demotions++;
CTR2(KTR_PMAP, "pmap_demote_pdpe: success for va %#lx"
" in pmap %p", va, pmap);
return (TRUE);
}
/*
* Sets the memory attribute for the specified page.
*/
void
pmap_page_set_memattr(vm_page_t m, vm_memattr_t ma)
{
m->md.pat_mode = ma;
/*
* If "m" is a normal page, update its direct mapping. This update
* can be relied upon to perform any cache operations that are
* required for data coherence.
*/
if ((m->flags & PG_FICTITIOUS) == 0 &&
pmap_change_attr(PHYS_TO_DMAP(VM_PAGE_TO_PHYS(m)), PAGE_SIZE,
m->md.pat_mode))
panic("memory attribute change on the direct map failed");
}
/*
* Changes the specified virtual address range's memory type to that given by
* the parameter "mode". The specified virtual address range must be
* completely contained within either the direct map or the kernel map. If
* the virtual address range is contained within the kernel map, then the
* memory type for each of the corresponding ranges of the direct map is also
* changed. (The corresponding ranges of the direct map are those ranges that
* map the same physical pages as the specified virtual address range.) These
* changes to the direct map are necessary because Intel describes the
* behavior of their processors as "undefined" if two or more mappings to the
* same physical page have different memory types.
*
* Returns zero if the change completed successfully, and either EINVAL or
* ENOMEM if the change failed. Specifically, EINVAL is returned if some part
* of the virtual address range was not mapped, and ENOMEM is returned if
* there was insufficient memory available to complete the change. In the
* latter case, the memory type may have been changed on some part of the
* virtual address range or the direct map.
*/
int
pmap_change_attr(vm_offset_t va, vm_size_t size, int mode)
{
int error;
PMAP_LOCK(kernel_pmap);
error = pmap_change_attr_locked(va, size, mode);
PMAP_UNLOCK(kernel_pmap);
return (error);
}
static int
pmap_change_attr_locked(vm_offset_t va, vm_size_t size, int mode)
{
vm_offset_t base, offset, tmpva;
vm_paddr_t pa_start, pa_end;
pdp_entry_t *pdpe;
pd_entry_t *pde;
pt_entry_t *pte;
int cache_bits_pte, cache_bits_pde, error;
boolean_t changed;
PMAP_LOCK_ASSERT(kernel_pmap, MA_OWNED);
base = trunc_page(va);
offset = va & PAGE_MASK;
size = round_page(offset + size);
/*
* Only supported on kernel virtual addresses, including the direct
* map but excluding the recursive map.
*/
if (base < DMAP_MIN_ADDRESS)
return (EINVAL);
cache_bits_pde = pmap_cache_bits(kernel_pmap, mode, 1);
cache_bits_pte = pmap_cache_bits(kernel_pmap, mode, 0);
changed = FALSE;
/*
* Pages that aren't mapped aren't supported. Also break down 2MB pages
* into 4KB pages if required.
*/
for (tmpva = base; tmpva < base + size; ) {
pdpe = pmap_pdpe(kernel_pmap, tmpva);
if (pdpe == NULL || *pdpe == 0)
return (EINVAL);
if (*pdpe & PG_PS) {
/*
* If the current 1GB page already has the required
* memory type, then we need not demote this page. Just
* increment tmpva to the next 1GB page frame.
*/
if ((*pdpe & X86_PG_PDE_CACHE) == cache_bits_pde) {
tmpva = trunc_1gpage(tmpva) + NBPDP;
continue;
}
/*
* If the current offset aligns with a 1GB page frame
* and there is at least 1GB left within the range, then
* we need not break down this page into 2MB pages.
*/
if ((tmpva & PDPMASK) == 0 &&
tmpva + PDPMASK < base + size) {
tmpva += NBPDP;
continue;
}
if (!pmap_demote_pdpe(kernel_pmap, pdpe, tmpva))
return (ENOMEM);
}
pde = pmap_pdpe_to_pde(pdpe, tmpva);
if (*pde == 0)
return (EINVAL);
if (*pde & PG_PS) {
/*
* If the current 2MB page already has the required
* memory type, then we need not demote this page. Just
* increment tmpva to the next 2MB page frame.
*/
if ((*pde & X86_PG_PDE_CACHE) == cache_bits_pde) {
tmpva = trunc_2mpage(tmpva) + NBPDR;
continue;
}
/*
* If the current offset aligns with a 2MB page frame
* and there is at least 2MB left within the range, then
* we need not break down this page into 4KB pages.
*/
if ((tmpva & PDRMASK) == 0 &&
tmpva + PDRMASK < base + size) {
tmpva += NBPDR;
continue;
}
if (!pmap_demote_pde(kernel_pmap, pde, tmpva))
return (ENOMEM);
}
pte = pmap_pde_to_pte(pde, tmpva);
if (*pte == 0)
return (EINVAL);
tmpva += PAGE_SIZE;
}
error = 0;
/*
* Ok, all the pages exist, so run through them updating their
* cache mode if required.
*/
pa_start = pa_end = 0;
for (tmpva = base; tmpva < base + size; ) {
pdpe = pmap_pdpe(kernel_pmap, tmpva);
if (*pdpe & PG_PS) {
if ((*pdpe & X86_PG_PDE_CACHE) != cache_bits_pde) {
pmap_pde_attr(pdpe, cache_bits_pde,
X86_PG_PDE_CACHE);
changed = TRUE;
}
if (tmpva >= VM_MIN_KERNEL_ADDRESS &&
(*pdpe & PG_PS_FRAME) < dmaplimit) {
if (pa_start == pa_end) {
/* Start physical address run. */
pa_start = *pdpe & PG_PS_FRAME;
pa_end = pa_start + NBPDP;
} else if (pa_end == (*pdpe & PG_PS_FRAME))
pa_end += NBPDP;
else {
/* Run ended, update direct map. */
error = pmap_change_attr_locked(
PHYS_TO_DMAP(pa_start),
pa_end - pa_start, mode);
if (error != 0)
break;
/* Start physical address run. */
pa_start = *pdpe & PG_PS_FRAME;
pa_end = pa_start + NBPDP;
}
}
tmpva = trunc_1gpage(tmpva) + NBPDP;
continue;
}
pde = pmap_pdpe_to_pde(pdpe, tmpva);
if (*pde & PG_PS) {
if ((*pde & X86_PG_PDE_CACHE) != cache_bits_pde) {
pmap_pde_attr(pde, cache_bits_pde,
X86_PG_PDE_CACHE);
changed = TRUE;
}
if (tmpva >= VM_MIN_KERNEL_ADDRESS &&
(*pde & PG_PS_FRAME) < dmaplimit) {
if (pa_start == pa_end) {
/* Start physical address run. */
pa_start = *pde & PG_PS_FRAME;
pa_end = pa_start + NBPDR;
} else if (pa_end == (*pde & PG_PS_FRAME))
pa_end += NBPDR;
else {
/* Run ended, update direct map. */
error = pmap_change_attr_locked(
PHYS_TO_DMAP(pa_start),
pa_end - pa_start, mode);
if (error != 0)
break;
/* Start physical address run. */
pa_start = *pde & PG_PS_FRAME;
pa_end = pa_start + NBPDR;
}
}
tmpva = trunc_2mpage(tmpva) + NBPDR;
} else {
pte = pmap_pde_to_pte(pde, tmpva);
if ((*pte & X86_PG_PTE_CACHE) != cache_bits_pte) {
pmap_pte_attr(pte, cache_bits_pte,
X86_PG_PTE_CACHE);
changed = TRUE;
}
if (tmpva >= VM_MIN_KERNEL_ADDRESS &&
(*pte & PG_PS_FRAME) < dmaplimit) {
if (pa_start == pa_end) {
/* Start physical address run. */
pa_start = *pte & PG_FRAME;
pa_end = pa_start + PAGE_SIZE;
} else if (pa_end == (*pte & PG_FRAME))
pa_end += PAGE_SIZE;
else {
/* Run ended, update direct map. */
error = pmap_change_attr_locked(
PHYS_TO_DMAP(pa_start),
pa_end - pa_start, mode);
if (error != 0)
break;
/* Start physical address run. */
pa_start = *pte & PG_FRAME;
pa_end = pa_start + PAGE_SIZE;
}
}
tmpva += PAGE_SIZE;
}
}
if (error == 0 && pa_start != pa_end)
error = pmap_change_attr_locked(PHYS_TO_DMAP(pa_start),
pa_end - pa_start, mode);
/*
* Flush CPU caches if required to make sure any data isn't cached that
* shouldn't be, etc.
*/
if (changed) {
pmap_invalidate_range(kernel_pmap, base, tmpva);
pmap_invalidate_cache_range(base, tmpva, FALSE);
}
return (error);
}
/*
* Demotes any mapping within the direct map region that covers more than the
* specified range of physical addresses. This range's size must be a power
* of two and its starting address must be a multiple of its size. Since the
* demotion does not change any attributes of the mapping, a TLB invalidation
* is not mandatory. The caller may, however, request a TLB invalidation.
*/
void
pmap_demote_DMAP(vm_paddr_t base, vm_size_t len, boolean_t invalidate)
{
pdp_entry_t *pdpe;
pd_entry_t *pde;
vm_offset_t va;
boolean_t changed;
if (len == 0)
return;
KASSERT(powerof2(len), ("pmap_demote_DMAP: len is not a power of 2"));
KASSERT((base & (len - 1)) == 0,
("pmap_demote_DMAP: base is not a multiple of len"));
if (len < NBPDP && base < dmaplimit) {
va = PHYS_TO_DMAP(base);
changed = FALSE;
PMAP_LOCK(kernel_pmap);
pdpe = pmap_pdpe(kernel_pmap, va);
if ((*pdpe & X86_PG_V) == 0)
panic("pmap_demote_DMAP: invalid PDPE");
if ((*pdpe & PG_PS) != 0) {
if (!pmap_demote_pdpe(kernel_pmap, pdpe, va))
panic("pmap_demote_DMAP: PDPE failed");
changed = TRUE;
}
if (len < NBPDR) {
pde = pmap_pdpe_to_pde(pdpe, va);
if ((*pde & X86_PG_V) == 0)
panic("pmap_demote_DMAP: invalid PDE");
if ((*pde & PG_PS) != 0) {
if (!pmap_demote_pde(kernel_pmap, pde, va))
panic("pmap_demote_DMAP: PDE failed");
changed = TRUE;
}
}
if (changed && invalidate)
pmap_invalidate_page(kernel_pmap, va);
PMAP_UNLOCK(kernel_pmap);
}
}
/*
* perform the pmap work for mincore
*/
int
pmap_mincore(pmap_t pmap, vm_offset_t addr, vm_paddr_t *locked_pa)
{
pd_entry_t *pdep;
pt_entry_t pte, PG_A, PG_M, PG_RW, PG_V;
vm_paddr_t pa;
int val;
PG_A = pmap_accessed_bit(pmap);
PG_M = pmap_modified_bit(pmap);
PG_V = pmap_valid_bit(pmap);
PG_RW = pmap_rw_bit(pmap);
PMAP_LOCK(pmap);
retry:
pdep = pmap_pde(pmap, addr);
if (pdep != NULL && (*pdep & PG_V)) {
if (*pdep & PG_PS) {
pte = *pdep;
/* Compute the physical address of the 4KB page. */
pa = ((*pdep & PG_PS_FRAME) | (addr & PDRMASK)) &
PG_FRAME;
val = MINCORE_SUPER;
} else {
pte = *pmap_pde_to_pte(pdep, addr);
pa = pte & PG_FRAME;
val = 0;
}
} else {
pte = 0;
pa = 0;
val = 0;
}
if ((pte & PG_V) != 0) {
val |= MINCORE_INCORE;
if ((pte & (PG_M | PG_RW)) == (PG_M | PG_RW))
val |= MINCORE_MODIFIED | MINCORE_MODIFIED_OTHER;
if ((pte & PG_A) != 0)
val |= MINCORE_REFERENCED | MINCORE_REFERENCED_OTHER;
}
if ((val & (MINCORE_MODIFIED_OTHER | MINCORE_REFERENCED_OTHER)) !=
(MINCORE_MODIFIED_OTHER | MINCORE_REFERENCED_OTHER) &&
(pte & (PG_MANAGED | PG_V)) == (PG_MANAGED | PG_V)) {
/* Ensure that "PHYS_TO_VM_PAGE(pa)->object" doesn't change. */
if (vm_page_pa_tryrelock(pmap, pa, locked_pa))
goto retry;
} else
PA_UNLOCK_COND(*locked_pa);
PMAP_UNLOCK(pmap);
return (val);
}
static uint64_t
pmap_pcid_alloc(pmap_t pmap, u_int cpuid)
{
uint32_t gen, new_gen, pcid_next;
CRITICAL_ASSERT(curthread);
gen = PCPU_GET(pcid_gen);
if (pmap->pm_pcids[cpuid].pm_pcid == PMAP_PCID_KERN ||
pmap->pm_pcids[cpuid].pm_gen == gen)
return (CR3_PCID_SAVE);
pcid_next = PCPU_GET(pcid_next);
KASSERT(pcid_next <= PMAP_PCID_OVERMAX, ("cpu %d pcid_next %#x",
cpuid, pcid_next));
if (pcid_next == PMAP_PCID_OVERMAX) {
new_gen = gen + 1;
if (new_gen == 0)
new_gen = 1;
PCPU_SET(pcid_gen, new_gen);
pcid_next = PMAP_PCID_KERN + 1;
} else {
new_gen = gen;
}
pmap->pm_pcids[cpuid].pm_pcid = pcid_next;
pmap->pm_pcids[cpuid].pm_gen = new_gen;
PCPU_SET(pcid_next, pcid_next + 1);
return (0);
}
void
pmap_activate_sw(struct thread *td)
{
pmap_t oldpmap, pmap;
uint64_t cached, cr3;
u_int cpuid;
oldpmap = PCPU_GET(curpmap);
pmap = vmspace_pmap(td->td_proc->p_vmspace);
if (oldpmap == pmap)
return;
cpuid = PCPU_GET(cpuid);
#ifdef SMP
CPU_SET_ATOMIC(cpuid, &pmap->pm_active);
#else
CPU_SET(cpuid, &pmap->pm_active);
#endif
cr3 = rcr3();
if (pmap_pcid_enabled) {
cached = pmap_pcid_alloc(pmap, cpuid);
KASSERT(pmap->pm_pcids[cpuid].pm_pcid >= 0 &&
pmap->pm_pcids[cpuid].pm_pcid < PMAP_PCID_OVERMAX,
("pmap %p cpu %d pcid %#x", pmap, cpuid,
pmap->pm_pcids[cpuid].pm_pcid));
KASSERT(pmap->pm_pcids[cpuid].pm_pcid != PMAP_PCID_KERN ||
pmap == kernel_pmap,
("non-kernel pmap thread %p pmap %p cpu %d pcid %#x",
td, pmap, cpuid, pmap->pm_pcids[cpuid].pm_pcid));
if (!cached || (cr3 & ~CR3_PCID_MASK) != pmap->pm_cr3) {
load_cr3(pmap->pm_cr3 | pmap->pm_pcids[cpuid].pm_pcid |
cached);
if (cached)
PCPU_INC(pm_save_cnt);
}
} else if (cr3 != pmap->pm_cr3) {
load_cr3(pmap->pm_cr3);
}
PCPU_SET(curpmap, pmap);
#ifdef SMP
CPU_CLR_ATOMIC(cpuid, &oldpmap->pm_active);
#else
CPU_CLR(cpuid, &oldpmap->pm_active);
#endif
}
void
pmap_activate(struct thread *td)
{
critical_enter();
pmap_activate_sw(td);
critical_exit();
}
void
pmap_sync_icache(pmap_t pm, vm_offset_t va, vm_size_t sz)
{
}
/*
* Increase the starting virtual address of the given mapping if a
* different alignment might result in more superpage mappings.
*/
void
pmap_align_superpage(vm_object_t object, vm_ooffset_t offset,
vm_offset_t *addr, vm_size_t size)
{
vm_offset_t superpage_offset;
if (size < NBPDR)
return;
if (object != NULL && (object->flags & OBJ_COLORED) != 0)
offset += ptoa(object->pg_color);
superpage_offset = offset & PDRMASK;
if (size - ((NBPDR - superpage_offset) & PDRMASK) < NBPDR ||
(*addr & PDRMASK) == superpage_offset)
return;
if ((*addr & PDRMASK) < superpage_offset)
*addr = (*addr & ~PDRMASK) + superpage_offset;
else
*addr = ((*addr + PDRMASK) & ~PDRMASK) + superpage_offset;
}
#ifdef INVARIANTS
static unsigned long num_dirty_emulations;
SYSCTL_ULONG(_vm_pmap, OID_AUTO, num_dirty_emulations, CTLFLAG_RW,
&num_dirty_emulations, 0, NULL);
static unsigned long num_accessed_emulations;
SYSCTL_ULONG(_vm_pmap, OID_AUTO, num_accessed_emulations, CTLFLAG_RW,
&num_accessed_emulations, 0, NULL);
static unsigned long num_superpage_accessed_emulations;
SYSCTL_ULONG(_vm_pmap, OID_AUTO, num_superpage_accessed_emulations, CTLFLAG_RW,
&num_superpage_accessed_emulations, 0, NULL);
static unsigned long ad_emulation_superpage_promotions;
SYSCTL_ULONG(_vm_pmap, OID_AUTO, ad_emulation_superpage_promotions, CTLFLAG_RW,
&ad_emulation_superpage_promotions, 0, NULL);
#endif /* INVARIANTS */
int
pmap_emulate_accessed_dirty(pmap_t pmap, vm_offset_t va, int ftype)
{
int rv;
struct rwlock *lock;
vm_page_t m, mpte;
pd_entry_t *pde;
pt_entry_t *pte, PG_A, PG_M, PG_RW, PG_V;
boolean_t pv_lists_locked;
KASSERT(ftype == VM_PROT_READ || ftype == VM_PROT_WRITE,
("pmap_emulate_accessed_dirty: invalid fault type %d", ftype));
if (!pmap_emulate_ad_bits(pmap))
return (-1);
PG_A = pmap_accessed_bit(pmap);
PG_M = pmap_modified_bit(pmap);
PG_V = pmap_valid_bit(pmap);
PG_RW = pmap_rw_bit(pmap);
rv = -1;
lock = NULL;
pv_lists_locked = FALSE;
retry:
PMAP_LOCK(pmap);
pde = pmap_pde(pmap, va);
if (pde == NULL || (*pde & PG_V) == 0)
goto done;
if ((*pde & PG_PS) != 0) {
if (ftype == VM_PROT_READ) {
#ifdef INVARIANTS
atomic_add_long(&num_superpage_accessed_emulations, 1);
#endif
*pde |= PG_A;
rv = 0;
}
goto done;
}
pte = pmap_pde_to_pte(pde, va);
if ((*pte & PG_V) == 0)
goto done;
if (ftype == VM_PROT_WRITE) {
if ((*pte & PG_RW) == 0)
goto done;
/*
* Set the modified and accessed bits simultaneously.
*
* Intel EPT PTEs that do software emulation of A/D bits map
* PG_A and PG_M to EPT_PG_READ and EPT_PG_WRITE respectively.
* An EPT misconfiguration is triggered if the PTE is writable
* but not readable (WR=10). This is avoided by setting PG_A
* and PG_M simultaneously.
*/
*pte |= PG_M | PG_A;
} else {
*pte |= PG_A;
}
/* try to promote the mapping */
if (va < VM_MAXUSER_ADDRESS)
mpte = PHYS_TO_VM_PAGE(*pde & PG_FRAME);
else
mpte = NULL;
m = PHYS_TO_VM_PAGE(*pte & PG_FRAME);
if ((mpte == NULL || mpte->wire_count == NPTEPG) &&
pmap_ps_enabled(pmap) &&
(m->flags & PG_FICTITIOUS) == 0 &&
vm_reserv_level_iffullpop(m) == 0) {
if (!pv_lists_locked) {
pv_lists_locked = TRUE;
if (!rw_try_rlock(&pvh_global_lock)) {
PMAP_UNLOCK(pmap);
rw_rlock(&pvh_global_lock);
goto retry;
}
}
pmap_promote_pde(pmap, pde, va, &lock);
#ifdef INVARIANTS
atomic_add_long(&ad_emulation_superpage_promotions, 1);
#endif
}
#ifdef INVARIANTS
if (ftype == VM_PROT_WRITE)
atomic_add_long(&num_dirty_emulations, 1);
else
atomic_add_long(&num_accessed_emulations, 1);
#endif
rv = 0; /* success */
done:
if (lock != NULL)
rw_wunlock(lock);
if (pv_lists_locked)
rw_runlock(&pvh_global_lock);
PMAP_UNLOCK(pmap);
return (rv);
}
void
pmap_get_mapping(pmap_t pmap, vm_offset_t va, uint64_t *ptr, int *num)
{
pml4_entry_t *pml4;
pdp_entry_t *pdp;
pd_entry_t *pde;
pt_entry_t *pte, PG_V;
int idx;
idx = 0;
PG_V = pmap_valid_bit(pmap);
PMAP_LOCK(pmap);
pml4 = pmap_pml4e(pmap, va);
ptr[idx++] = *pml4;
if ((*pml4 & PG_V) == 0)
goto done;
pdp = pmap_pml4e_to_pdpe(pml4, va);
ptr[idx++] = *pdp;
if ((*pdp & PG_V) == 0 || (*pdp & PG_PS) != 0)
goto done;
pde = pmap_pdpe_to_pde(pdp, va);
ptr[idx++] = *pde;
if ((*pde & PG_V) == 0 || (*pde & PG_PS) != 0)
goto done;
pte = pmap_pde_to_pte(pde, va);
ptr[idx++] = *pte;
done:
PMAP_UNLOCK(pmap);
*num = idx;
}
/**
* Get the kernel virtual address of a set of physical pages. If there are
* physical addresses not covered by the DMAP perform a transient mapping
* that will be removed when calling pmap_unmap_io_transient.
*
* \param page The pages the caller wishes to obtain the virtual
* address on the kernel memory map.
* \param vaddr On return contains the kernel virtual memory address
* of the pages passed in the page parameter.
* \param count Number of pages passed in.
* \param can_fault TRUE if the thread using the mapped pages can take
* page faults, FALSE otherwise.
*
* \returns TRUE if the caller must call pmap_unmap_io_transient when
* finished or FALSE otherwise.
*
*/
boolean_t
pmap_map_io_transient(vm_page_t page[], vm_offset_t vaddr[], int count,
boolean_t can_fault)
{
vm_paddr_t paddr;
boolean_t needs_mapping;
pt_entry_t *pte;
int cache_bits, error, i;
/*
* Allocate any KVA space that we need, this is done in a separate
* loop to prevent calling vmem_alloc while pinned.
*/
needs_mapping = FALSE;
for (i = 0; i < count; i++) {
paddr = VM_PAGE_TO_PHYS(page[i]);
if (__predict_false(paddr >= dmaplimit)) {
error = vmem_alloc(kernel_arena, PAGE_SIZE,
M_BESTFIT | M_WAITOK, &vaddr[i]);
KASSERT(error == 0, ("vmem_alloc failed: %d", error));
needs_mapping = TRUE;
} else {
vaddr[i] = PHYS_TO_DMAP(paddr);
}
}
/* Exit early if everything is covered by the DMAP */
if (!needs_mapping)
return (FALSE);
/*
* NB: The sequence of updating a page table followed by accesses
* to the corresponding pages used in the !DMAP case is subject to
* the situation described in the "AMD64 Architecture Programmer's
* Manual Volume 2: System Programming" rev. 3.23, "7.3.1 Special
* Coherency Considerations". Therefore, issuing the INVLPG right
* after modifying the PTE bits is crucial.
*/
if (!can_fault)
sched_pin();
for (i = 0; i < count; i++) {
paddr = VM_PAGE_TO_PHYS(page[i]);
if (paddr >= dmaplimit) {
if (can_fault) {
/*
* Slow path, since we can get page faults
* while mappings are active don't pin the
* thread to the CPU and instead add a global
* mapping visible to all CPUs.
*/
pmap_qenter(vaddr[i], &page[i], 1);
} else {
pte = vtopte(vaddr[i]);
cache_bits = pmap_cache_bits(kernel_pmap,
page[i]->md.pat_mode, 0);
pte_store(pte, paddr | X86_PG_RW | X86_PG_V |
cache_bits);
invlpg(vaddr[i]);
}
}
}
return (needs_mapping);
}
void
pmap_unmap_io_transient(vm_page_t page[], vm_offset_t vaddr[], int count,
boolean_t can_fault)
{
vm_paddr_t paddr;
int i;
if (!can_fault)
sched_unpin();
for (i = 0; i < count; i++) {
paddr = VM_PAGE_TO_PHYS(page[i]);
if (paddr >= dmaplimit) {
if (can_fault)
pmap_qremove(vaddr[i], 1);
vmem_free(kernel_arena, vaddr[i], PAGE_SIZE);
}
}
}
vm_offset_t
pmap_quick_enter_page(vm_page_t m)
{
vm_paddr_t paddr;
paddr = VM_PAGE_TO_PHYS(m);
if (paddr < dmaplimit)
return (PHYS_TO_DMAP(paddr));
mtx_lock_spin(&qframe_mtx);
KASSERT(*vtopte(qframe) == 0, ("qframe busy"));
pte_store(vtopte(qframe), paddr | X86_PG_RW | X86_PG_V | X86_PG_A |
X86_PG_M | pmap_cache_bits(kernel_pmap, m->md.pat_mode, 0));
return (qframe);
}
void
pmap_quick_remove_page(vm_offset_t addr)
{
if (addr != qframe)
return;
pte_store(vtopte(qframe), 0);
invlpg(qframe);
mtx_unlock_spin(&qframe_mtx);
}
#include "opt_ddb.h"
#ifdef DDB
#include <ddb/ddb.h>
DB_SHOW_COMMAND(pte, pmap_print_pte)
{
pmap_t pmap;
pml4_entry_t *pml4;
pdp_entry_t *pdp;
pd_entry_t *pde;
pt_entry_t *pte, PG_V;
vm_offset_t va;
if (have_addr) {
va = (vm_offset_t)addr;
pmap = PCPU_GET(curpmap); /* XXX */
} else {
db_printf("show pte addr\n");
return;
}
PG_V = pmap_valid_bit(pmap);
pml4 = pmap_pml4e(pmap, va);
db_printf("VA %#016lx pml4e %#016lx", va, *pml4);
if ((*pml4 & PG_V) == 0) {
db_printf("\n");
return;
}
pdp = pmap_pml4e_to_pdpe(pml4, va);
db_printf(" pdpe %#016lx", *pdp);
if ((*pdp & PG_V) == 0 || (*pdp & PG_PS) != 0) {
db_printf("\n");
return;
}
pde = pmap_pdpe_to_pde(pdp, va);
db_printf(" pde %#016lx", *pde);
if ((*pde & PG_V) == 0 || (*pde & PG_PS) != 0) {
db_printf("\n");
return;
}
pte = pmap_pde_to_pte(pde, va);
db_printf(" pte %#016lx\n", *pte);
}
DB_SHOW_COMMAND(phys2dmap, pmap_phys2dmap)
{
vm_paddr_t a;
if (have_addr) {
a = (vm_paddr_t)addr;
db_printf("0x%jx\n", (uintmax_t)PHYS_TO_DMAP(a));
} else {
db_printf("show phys2dmap addr\n");
}
}
#endif
Index: user/ngie/bsnmp_cleanup/sys/arm/allwinner/a10_ehci.c
===================================================================
--- user/ngie/bsnmp_cleanup/sys/arm/allwinner/a10_ehci.c (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/arm/allwinner/a10_ehci.c (revision 299697)
@@ -1,354 +1,355 @@
/*-
* Copyright (c) 2012 Ganbold Tsagaankhuu <ganbold@freebsd.org>
* 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.
*/
/*
* Allwinner A10 attachment driver for the USB Enhanced Host Controller.
*/
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
#include "opt_bus.h"
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/bus.h>
#include <sys/rman.h>
#include <sys/condvar.h>
#include <sys/kernel.h>
#include <sys/module.h>
#include <machine/bus.h>
#include <dev/ofw/ofw_bus.h>
#include <dev/ofw/ofw_bus_subr.h>
#include <dev/usb/usb.h>
#include <dev/usb/usbdi.h>
#include <dev/usb/usb_core.h>
#include <dev/usb/usb_busdma.h>
#include <dev/usb/usb_process.h>
#include <dev/usb/usb_util.h>
#include <dev/usb/usb_controller.h>
#include <dev/usb/usb_bus.h>
#include <dev/usb/controller/ehci.h>
#include <dev/usb/controller/ehcireg.h>
#include <arm/allwinner/allwinner_machdep.h>
#include <dev/extres/clk/clk.h>
#include <dev/extres/hwreset/hwreset.h>
#define EHCI_HC_DEVSTR "Allwinner Integrated USB 2.0 controller"
#define SW_USB_PMU_IRQ_ENABLE 0x800
#define SW_SDRAM_REG_HPCR_USB1 (0x250 + ((1 << 2) * 4))
#define SW_SDRAM_REG_HPCR_USB2 (0x250 + ((1 << 2) * 5))
#define SW_SDRAM_BP_HPCR_ACCESS (1 << 0)
#define SW_ULPI_BYPASS (1 << 0)
#define SW_AHB_INCRX_ALIGN (1 << 8)
#define SW_AHB_INCR4 (1 << 9)
#define SW_AHB_INCR8 (1 << 10)
#define USB_CONF(d) \
(void *)ofw_bus_search_compatible((d), compat_data)->ocd_data
#define A10_READ_4(sc, reg) \
bus_space_read_4((sc)->sc_io_tag, (sc)->sc_io_hdl, reg)
#define A10_WRITE_4(sc, reg, data) \
bus_space_write_4((sc)->sc_io_tag, (sc)->sc_io_hdl, reg, data)
static device_attach_t a10_ehci_attach;
static device_detach_t a10_ehci_detach;
bs_r_1_proto(reversed);
bs_w_1_proto(reversed);
struct aw_ehci_softc {
ehci_softc_t sc;
clk_t clk;
hwreset_t rst;
};
struct aw_ehci_conf {
bool sdram_init;
};
static const struct aw_ehci_conf a10_ehci_conf = {
.sdram_init = true,
};
static const struct aw_ehci_conf a31_ehci_conf = {
.sdram_init = false,
};
static struct ofw_compat_data compat_data[] = {
{ "allwinner,sun4i-a10-ehci", (uintptr_t)&a10_ehci_conf },
{ "allwinner,sun6i-a31-ehci", (uintptr_t)&a31_ehci_conf },
{ "allwinner,sun7i-a20-ehci", (uintptr_t)&a10_ehci_conf },
{ "allwinner,sun8i-a83t-ehci", (uintptr_t)&a31_ehci_conf },
+ { "allwinner,sun8i-h3-ehci", (uintptr_t)&a31_ehci_conf },
{ NULL, (uintptr_t)NULL }
};
static int
a10_ehci_probe(device_t self)
{
if (!ofw_bus_status_okay(self))
return (ENXIO);
if (ofw_bus_search_compatible(self, compat_data)->ocd_data == 0)
return (ENXIO);
device_set_desc(self, EHCI_HC_DEVSTR);
return (BUS_PROBE_DEFAULT);
}
static int
a10_ehci_attach(device_t self)
{
struct aw_ehci_softc *aw_sc = device_get_softc(self);
ehci_softc_t *sc = &aw_sc->sc;
const struct aw_ehci_conf *conf;
bus_space_handle_t bsh;
int err;
int rid;
uint32_t reg_value = 0;
conf = USB_CONF(self);
/* initialise some bus fields */
sc->sc_bus.parent = self;
sc->sc_bus.devices = sc->sc_devices;
sc->sc_bus.devices_max = EHCI_MAX_DEVICES;
sc->sc_bus.dma_bits = 32;
/* get all DMA memory */
if (usb_bus_mem_alloc_all(&sc->sc_bus,
USB_GET_DMA_TAG(self), &ehci_iterate_hw_softc)) {
return (ENOMEM);
}
sc->sc_bus.usbrev = USB_REV_2_0;
rid = 0;
sc->sc_io_res = bus_alloc_resource_any(self, SYS_RES_MEMORY, &rid, RF_ACTIVE);
if (!sc->sc_io_res) {
device_printf(self, "Could not map memory\n");
goto error;
}
sc->sc_io_tag = rman_get_bustag(sc->sc_io_res);
sc->sc_io_hdl = rman_get_bushandle(sc->sc_io_res);
bsh = rman_get_bushandle(sc->sc_io_res);
sc->sc_io_size = rman_get_size(sc->sc_io_res);
if (bus_space_subregion(sc->sc_io_tag, bsh, 0x00,
sc->sc_io_size, &sc->sc_io_hdl) != 0)
panic("%s: unable to subregion USB host registers",
device_get_name(self));
rid = 0;
sc->sc_irq_res = bus_alloc_resource_any(self, SYS_RES_IRQ, &rid,
RF_SHAREABLE | RF_ACTIVE);
if (sc->sc_irq_res == NULL) {
device_printf(self, "Could not allocate irq\n");
goto error;
}
sc->sc_bus.bdev = device_add_child(self, "usbus", -1);
if (!sc->sc_bus.bdev) {
device_printf(self, "Could not add USB device\n");
goto error;
}
device_set_ivars(sc->sc_bus.bdev, &sc->sc_bus);
device_set_desc(sc->sc_bus.bdev, EHCI_HC_DEVSTR);
sprintf(sc->sc_vendor, "Allwinner");
err = bus_setup_intr(self, sc->sc_irq_res, INTR_TYPE_BIO | INTR_MPSAFE,
NULL, (driver_intr_t *)ehci_interrupt, sc, &sc->sc_intr_hdl);
if (err) {
device_printf(self, "Could not setup irq, %d\n", err);
sc->sc_intr_hdl = NULL;
goto error;
}
sc->sc_flags |= EHCI_SCFLG_DONTRESET;
/* De-assert reset */
if (hwreset_get_by_ofw_idx(self, 0, &aw_sc->rst) == 0) {
err = hwreset_deassert(aw_sc->rst);
if (err != 0) {
device_printf(self, "Could not de-assert reset\n");
goto error;
}
}
/* Enable clock for USB */
err = clk_get_by_ofw_index(self, 0, &aw_sc->clk);
if (err != 0) {
device_printf(self, "Could not get clock\n");
goto error;
}
err = clk_enable(aw_sc->clk);
if (err != 0) {
device_printf(self, "Could not enable clock\n");
goto error;
}
/* Enable passby */
reg_value = A10_READ_4(sc, SW_USB_PMU_IRQ_ENABLE);
reg_value |= SW_AHB_INCR8; /* AHB INCR8 enable */
reg_value |= SW_AHB_INCR4; /* AHB burst type INCR4 enable */
reg_value |= SW_AHB_INCRX_ALIGN; /* AHB INCRX align enable */
reg_value |= SW_ULPI_BYPASS; /* ULPI bypass enable */
A10_WRITE_4(sc, SW_USB_PMU_IRQ_ENABLE, reg_value);
/* Configure port */
if (conf->sdram_init) {
reg_value = A10_READ_4(sc, SW_SDRAM_REG_HPCR_USB2);
reg_value |= SW_SDRAM_BP_HPCR_ACCESS;
A10_WRITE_4(sc, SW_SDRAM_REG_HPCR_USB2, reg_value);
}
err = ehci_init(sc);
if (!err) {
err = device_probe_and_attach(sc->sc_bus.bdev);
}
if (err) {
device_printf(self, "USB init failed err=%d\n", err);
goto error;
}
return (0);
error:
if (aw_sc->clk)
clk_release(aw_sc->clk);
a10_ehci_detach(self);
return (ENXIO);
}
static int
a10_ehci_detach(device_t self)
{
struct aw_ehci_softc *aw_sc = device_get_softc(self);
ehci_softc_t *sc = &aw_sc->sc;
const struct aw_ehci_conf *conf;
device_t bdev;
int err;
uint32_t reg_value = 0;
conf = USB_CONF(self);
if (sc->sc_bus.bdev) {
bdev = sc->sc_bus.bdev;
device_detach(bdev);
device_delete_child(self, bdev);
}
/* during module unload there are lots of children leftover */
device_delete_children(self);
if (sc->sc_irq_res && sc->sc_intr_hdl) {
/*
* only call ehci_detach() after ehci_init()
*/
ehci_detach(sc);
err = bus_teardown_intr(self, sc->sc_irq_res, sc->sc_intr_hdl);
if (err)
/* XXX or should we panic? */
device_printf(self, "Could not tear down irq, %d\n",
err);
sc->sc_intr_hdl = NULL;
}
if (sc->sc_irq_res) {
bus_release_resource(self, SYS_RES_IRQ, 0, sc->sc_irq_res);
sc->sc_irq_res = NULL;
}
if (sc->sc_io_res) {
bus_release_resource(self, SYS_RES_MEMORY, 0,
sc->sc_io_res);
sc->sc_io_res = NULL;
}
usb_bus_mem_free_all(&sc->sc_bus, &ehci_iterate_hw_softc);
/* Disable configure port */
if (conf->sdram_init) {
reg_value = A10_READ_4(sc, SW_SDRAM_REG_HPCR_USB2);
reg_value &= ~SW_SDRAM_BP_HPCR_ACCESS;
A10_WRITE_4(sc, SW_SDRAM_REG_HPCR_USB2, reg_value);
}
/* Disable passby */
reg_value = A10_READ_4(sc, SW_USB_PMU_IRQ_ENABLE);
reg_value &= ~SW_AHB_INCR8; /* AHB INCR8 disable */
reg_value &= ~SW_AHB_INCR4; /* AHB burst type INCR4 disable */
reg_value &= ~SW_AHB_INCRX_ALIGN; /* AHB INCRX align disable */
reg_value &= ~SW_ULPI_BYPASS; /* ULPI bypass disable */
A10_WRITE_4(sc, SW_USB_PMU_IRQ_ENABLE, reg_value);
/* Disable clock for USB */
clk_disable(aw_sc->clk);
clk_release(aw_sc->clk);
/* Assert reset */
if (aw_sc->rst != NULL) {
hwreset_assert(aw_sc->rst);
hwreset_release(aw_sc->rst);
}
return (0);
}
static device_method_t ehci_methods[] = {
/* Device interface */
DEVMETHOD(device_probe, a10_ehci_probe),
DEVMETHOD(device_attach, a10_ehci_attach),
DEVMETHOD(device_detach, a10_ehci_detach),
DEVMETHOD(device_suspend, bus_generic_suspend),
DEVMETHOD(device_resume, bus_generic_resume),
DEVMETHOD(device_shutdown, bus_generic_shutdown),
DEVMETHOD_END
};
static driver_t ehci_driver = {
.name = "ehci",
.methods = ehci_methods,
.size = sizeof(ehci_softc_t),
};
static devclass_t ehci_devclass;
DRIVER_MODULE(ehci, simplebus, ehci_driver, ehci_devclass, 0, 0);
MODULE_DEPEND(ehci, usb, 1, 1, 1);
Index: user/ngie/bsnmp_cleanup/sys/arm/allwinner/a10_gpio.c
===================================================================
--- user/ngie/bsnmp_cleanup/sys/arm/allwinner/a10_gpio.c (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/arm/allwinner/a10_gpio.c (revision 299697)
@@ -1,701 +1,711 @@
/*-
* Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@freebsd.org>
* Copyright (c) 2012 Oleksandr Tymoshenko <gonzo@freebsd.org>
* Copyright (c) 2012 Luiz Otavio O Souza.
* 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/systm.h>
#include <sys/bus.h>
#include <sys/kernel.h>
#include <sys/module.h>
#include <sys/rman.h>
#include <sys/lock.h>
#include <sys/mutex.h>
#include <sys/gpio.h>
#include <machine/bus.h>
#include <machine/cpu.h>
#include <machine/cpufunc.h>
#include <machine/resource.h>
#include <machine/intr.h>
#include <dev/fdt/fdt_common.h>
#include <dev/fdt/fdt_pinctrl.h>
#include <dev/gpio/gpiobusvar.h>
#include <dev/ofw/ofw_bus.h>
#include <dev/ofw/ofw_bus_subr.h>
#include <arm/allwinner/allwinner_machdep.h>
#include <arm/allwinner/allwinner_pinctrl.h>
#include <dev/extres/clk/clk.h>
#include <dev/extres/hwreset/hwreset.h>
#include "gpio_if.h"
#define A10_GPIO_DEFAULT_CAPS (GPIO_PIN_INPUT | GPIO_PIN_OUTPUT | \
GPIO_PIN_PULLUP | GPIO_PIN_PULLDOWN)
#define A10_GPIO_NONE 0
#define A10_GPIO_PULLUP 1
#define A10_GPIO_PULLDOWN 2
#define A10_GPIO_INPUT 0
#define A10_GPIO_OUTPUT 1
#define AW_GPIO_DRV_MASK 0x3
#define AW_GPIO_PUD_MASK 0x3
#define AW_PINCTRL 1
#define AW_R_PINCTRL 2
/* Defined in a10_padconf.c */
#ifdef SOC_ALLWINNER_A10
extern const struct allwinner_padconf a10_padconf;
#endif
/* Defined in a20_padconf.c */
#ifdef SOC_ALLWINNER_A20
extern const struct allwinner_padconf a20_padconf;
#endif
/* Defined in a31_padconf.c */
#ifdef SOC_ALLWINNER_A31
extern const struct allwinner_padconf a31_padconf;
#endif
/* Defined in a31s_padconf.c */
#ifdef SOC_ALLWINNER_A31S
extern const struct allwinner_padconf a31s_padconf;
#endif
#if defined(SOC_ALLWINNER_A31) || defined(SOC_ALLWINNER_A31S)
extern const struct allwinner_padconf a31_r_padconf;
#endif
+/* Defined in h3_padconf.c */
+#ifdef SOC_ALLWINNER_H3
+extern const struct allwinner_padconf h3_padconf;
+extern const struct allwinner_padconf h3_r_padconf;
+#endif
+
/* Defined in a83t_padconf.c */
#ifdef SOC_ALLWINNER_A83T
extern const struct allwinner_padconf a83t_padconf;
extern const struct allwinner_padconf a83t_r_padconf;
#endif
static struct ofw_compat_data compat_data[] = {
#ifdef SOC_ALLWINNER_A10
{"allwinner,sun4i-a10-pinctrl", (uintptr_t)&a10_padconf},
#endif
#ifdef SOC_ALLWINNER_A20
{"allwinner,sun7i-a20-pinctrl", (uintptr_t)&a20_padconf},
#endif
#ifdef SOC_ALLWINNER_A31
{"allwinner,sun6i-a31-pinctrl", (uintptr_t)&a31_padconf},
#endif
#ifdef SOC_ALLWINNER_A31S
{"allwinner,sun6i-a31s-pinctrl", (uintptr_t)&a31s_padconf},
#endif
#if defined(SOC_ALLWINNER_A31) || defined(SOC_ALLWINNER_A31S)
{"allwinner,sun6i-a31-r-pinctrl", (uintptr_t)&a31_r_padconf},
#endif
#ifdef SOC_ALLWINNER_A83T
{"allwinner,sun8i-a83t-pinctrl", (uintptr_t)&a83t_padconf},
{"allwinner,sun8i-a83t-r-pinctrl", (uintptr_t)&a83t_r_padconf},
+#endif
+#ifdef SOC_ALLWINNER_H3
+ {"allwinner,sun8i-h3-pinctrl", (uintptr_t)&h3_padconf},
+ {"allwinner,sun8i-h3-r-pinctrl", (uintptr_t)&h3_r_padconf},
#endif
{NULL, 0}
};
struct a10_gpio_softc {
device_t sc_dev;
device_t sc_busdev;
struct mtx sc_mtx;
struct resource * sc_mem_res;
struct resource * sc_irq_res;
bus_space_tag_t sc_bst;
bus_space_handle_t sc_bsh;
void * sc_intrhand;
const struct allwinner_padconf * padconf;
};
#define A10_GPIO_LOCK(_sc) mtx_lock_spin(&(_sc)->sc_mtx)
#define A10_GPIO_UNLOCK(_sc) mtx_unlock_spin(&(_sc)->sc_mtx)
#define A10_GPIO_LOCK_ASSERT(_sc) mtx_assert(&(_sc)->sc_mtx, MA_OWNED)
#define A10_GPIO_GP_CFG(_bank, _idx) 0x00 + ((_bank) * 0x24) + ((_idx) << 2)
#define A10_GPIO_GP_DAT(_bank) 0x10 + ((_bank) * 0x24)
#define A10_GPIO_GP_DRV(_bank, _idx) 0x14 + ((_bank) * 0x24) + ((_idx) << 2)
#define A10_GPIO_GP_PUL(_bank, _idx) 0x1c + ((_bank) * 0x24) + ((_idx) << 2)
#define A10_GPIO_GP_INT_CFG0 0x200
#define A10_GPIO_GP_INT_CFG1 0x204
#define A10_GPIO_GP_INT_CFG2 0x208
#define A10_GPIO_GP_INT_CFG3 0x20c
#define A10_GPIO_GP_INT_CTL 0x210
#define A10_GPIO_GP_INT_STA 0x214
#define A10_GPIO_GP_INT_DEB 0x218
#define A10_GPIO_WRITE(_sc, _off, _val) \
bus_space_write_4(_sc->sc_bst, _sc->sc_bsh, _off, _val)
#define A10_GPIO_READ(_sc, _off) \
bus_space_read_4(_sc->sc_bst, _sc->sc_bsh, _off)
static uint32_t
a10_gpio_get_function(struct a10_gpio_softc *sc, uint32_t pin)
{
uint32_t bank, func, offset;
/* Must be called with lock held. */
A10_GPIO_LOCK_ASSERT(sc);
if (pin > sc->padconf->npins)
return (0);
bank = sc->padconf->pins[pin].port;
pin = sc->padconf->pins[pin].pin;
offset = ((pin & 0x07) << 2);
func = A10_GPIO_READ(sc, A10_GPIO_GP_CFG(bank, pin >> 3));
switch ((func >> offset) & 0x7) {
case A10_GPIO_INPUT:
return (GPIO_PIN_INPUT);
case A10_GPIO_OUTPUT:
return (GPIO_PIN_OUTPUT);
}
return (0);
}
static void
a10_gpio_set_function(struct a10_gpio_softc *sc, uint32_t pin, uint32_t f)
{
uint32_t bank, data, offset;
/* Must be called with lock held. */
A10_GPIO_LOCK_ASSERT(sc);
bank = sc->padconf->pins[pin].port;
pin = sc->padconf->pins[pin].pin;
offset = ((pin & 0x07) << 2);
data = A10_GPIO_READ(sc, A10_GPIO_GP_CFG(bank, pin >> 3));
data &= ~(7 << offset);
data |= (f << offset);
A10_GPIO_WRITE(sc, A10_GPIO_GP_CFG(bank, pin >> 3), data);
}
static uint32_t
a10_gpio_get_pud(struct a10_gpio_softc *sc, uint32_t pin)
{
uint32_t bank, offset, val;
/* Must be called with lock held. */
A10_GPIO_LOCK_ASSERT(sc);
bank = sc->padconf->pins[pin].port;
pin = sc->padconf->pins[pin].pin;
offset = ((pin & 0x0f) << 1);
val = A10_GPIO_READ(sc, A10_GPIO_GP_PUL(bank, pin >> 4));
switch ((val >> offset) & 0x3) {
case A10_GPIO_PULLDOWN:
return (GPIO_PIN_PULLDOWN);
case A10_GPIO_PULLUP:
return (GPIO_PIN_PULLUP);
}
return (0);
}
static void
a10_gpio_set_pud(struct a10_gpio_softc *sc, uint32_t pin, uint32_t state)
{
uint32_t bank, offset, val;
/* Must be called with lock held. */
A10_GPIO_LOCK_ASSERT(sc);
bank = sc->padconf->pins[pin].port;
pin = sc->padconf->pins[pin].pin;
offset = ((pin & 0x0f) << 1);
val = A10_GPIO_READ(sc, A10_GPIO_GP_PUL(bank, pin >> 4));
val &= ~(AW_GPIO_PUD_MASK << offset);
val |= (state << offset);
A10_GPIO_WRITE(sc, A10_GPIO_GP_PUL(bank, pin >> 4), val);
}
static void
a10_gpio_set_drv(struct a10_gpio_softc *sc, uint32_t pin, uint32_t drive)
{
uint32_t bank, offset, val;
/* Must be called with lock held. */
A10_GPIO_LOCK_ASSERT(sc);
bank = sc->padconf->pins[pin].port;
pin = sc->padconf->pins[pin].pin;
offset = ((pin & 0x0f) << 1);
val = A10_GPIO_READ(sc, A10_GPIO_GP_DRV(bank, pin >> 4));
val &= ~(AW_GPIO_DRV_MASK << offset);
val |= (drive << offset);
A10_GPIO_WRITE(sc, A10_GPIO_GP_DRV(bank, pin >> 4), val);
}
static void
a10_gpio_pin_configure(struct a10_gpio_softc *sc, uint32_t pin, uint32_t flags)
{
/* Must be called with lock held. */
A10_GPIO_LOCK_ASSERT(sc);
/* Manage input/output. */
if (flags & (GPIO_PIN_INPUT | GPIO_PIN_OUTPUT)) {
if (flags & GPIO_PIN_OUTPUT)
a10_gpio_set_function(sc, pin, A10_GPIO_OUTPUT);
else
a10_gpio_set_function(sc, pin, A10_GPIO_INPUT);
}
/* Manage Pull-up/pull-down. */
if (flags & (GPIO_PIN_PULLUP | GPIO_PIN_PULLDOWN)) {
if (flags & GPIO_PIN_PULLUP)
a10_gpio_set_pud(sc, pin, A10_GPIO_PULLUP);
else
a10_gpio_set_pud(sc, pin, A10_GPIO_PULLDOWN);
} else
a10_gpio_set_pud(sc, pin, A10_GPIO_NONE);
}
static device_t
a10_gpio_get_bus(device_t dev)
{
struct a10_gpio_softc *sc;
sc = device_get_softc(dev);
return (sc->sc_busdev);
}
static int
a10_gpio_pin_max(device_t dev, int *maxpin)
{
struct a10_gpio_softc *sc;
sc = device_get_softc(dev);
*maxpin = sc->padconf->npins - 1;
return (0);
}
static int
a10_gpio_pin_getcaps(device_t dev, uint32_t pin, uint32_t *caps)
{
struct a10_gpio_softc *sc;
sc = device_get_softc(dev);
if (pin >= sc->padconf->npins)
return (EINVAL);
*caps = A10_GPIO_DEFAULT_CAPS;
return (0);
}
static int
a10_gpio_pin_getflags(device_t dev, uint32_t pin, uint32_t *flags)
{
struct a10_gpio_softc *sc;
sc = device_get_softc(dev);
if (pin >= sc->padconf->npins)
return (EINVAL);
A10_GPIO_LOCK(sc);
*flags = a10_gpio_get_function(sc, pin);
*flags |= a10_gpio_get_pud(sc, pin);
A10_GPIO_UNLOCK(sc);
return (0);
}
static int
a10_gpio_pin_getname(device_t dev, uint32_t pin, char *name)
{
struct a10_gpio_softc *sc;
sc = device_get_softc(dev);
if (pin >= sc->padconf->npins)
return (EINVAL);
snprintf(name, GPIOMAXNAME - 1, "%s",
sc->padconf->pins[pin].name);
name[GPIOMAXNAME - 1] = '\0';
return (0);
}
static int
a10_gpio_pin_setflags(device_t dev, uint32_t pin, uint32_t flags)
{
struct a10_gpio_softc *sc;
sc = device_get_softc(dev);
if (pin > sc->padconf->npins)
return (EINVAL);
A10_GPIO_LOCK(sc);
a10_gpio_pin_configure(sc, pin, flags);
A10_GPIO_UNLOCK(sc);
return (0);
}
static int
a10_gpio_pin_set(device_t dev, uint32_t pin, unsigned int value)
{
struct a10_gpio_softc *sc;
uint32_t bank, data;
sc = device_get_softc(dev);
if (pin > sc->padconf->npins)
return (EINVAL);
bank = sc->padconf->pins[pin].port;
pin = sc->padconf->pins[pin].pin;
A10_GPIO_LOCK(sc);
data = A10_GPIO_READ(sc, A10_GPIO_GP_DAT(bank));
if (value)
data |= (1 << pin);
else
data &= ~(1 << pin);
A10_GPIO_WRITE(sc, A10_GPIO_GP_DAT(bank), data);
A10_GPIO_UNLOCK(sc);
return (0);
}
static int
a10_gpio_pin_get(device_t dev, uint32_t pin, unsigned int *val)
{
struct a10_gpio_softc *sc;
uint32_t bank, reg_data;
sc = device_get_softc(dev);
if (pin > sc->padconf->npins)
return (EINVAL);
bank = sc->padconf->pins[pin].port;
pin = sc->padconf->pins[pin].pin;
A10_GPIO_LOCK(sc);
reg_data = A10_GPIO_READ(sc, A10_GPIO_GP_DAT(bank));
A10_GPIO_UNLOCK(sc);
*val = (reg_data & (1 << pin)) ? 1 : 0;
return (0);
}
static int
a10_gpio_pin_toggle(device_t dev, uint32_t pin)
{
struct a10_gpio_softc *sc;
uint32_t bank, data;
sc = device_get_softc(dev);
if (pin > sc->padconf->npins)
return (EINVAL);
bank = sc->padconf->pins[pin].port;
pin = sc->padconf->pins[pin].pin;
A10_GPIO_LOCK(sc);
data = A10_GPIO_READ(sc, A10_GPIO_GP_DAT(bank));
if (data & (1 << pin))
data &= ~(1 << pin);
else
data |= (1 << pin);
A10_GPIO_WRITE(sc, A10_GPIO_GP_DAT(bank), data);
A10_GPIO_UNLOCK(sc);
return (0);
}
static int
aw_find_pinnum_by_name(struct a10_gpio_softc *sc, const char *pinname)
{
int i;
for (i = 0; i < sc->padconf->npins; i++)
if (!strcmp(pinname, sc->padconf->pins[i].name))
return i;
return (-1);
}
static int
aw_find_pin_func(struct a10_gpio_softc *sc, int pin, const char *func)
{
int i;
for (i = 0; i < AW_MAX_FUNC_BY_PIN; i++)
if (sc->padconf->pins[pin].functions[i] &&
!strcmp(func, sc->padconf->pins[pin].functions[i]))
return (i);
return (-1);
}
static int
aw_fdt_configure_pins(device_t dev, phandle_t cfgxref)
{
struct a10_gpio_softc *sc;
phandle_t node;
const char **pinlist = NULL;
char *pin_function = NULL;
uint32_t pin_drive, pin_pull;
int pins_nb, pin_num, pin_func, i, ret;
sc = device_get_softc(dev);
node = OF_node_from_xref(cfgxref);
ret = 0;
/* Getting all prop for configuring pins */
pins_nb = ofw_bus_string_list_to_array(node, "allwinner,pins", &pinlist);
if (pins_nb <= 0)
return (ENOENT);
if (OF_getprop_alloc(node, "allwinner,function",
sizeof(*pin_function),
(void **)&pin_function) == -1) {
ret = ENOENT;
goto out;
}
if (OF_getencprop(node, "allwinner,drive",
&pin_drive, sizeof(pin_drive)) == -1) {
ret = ENOENT;
goto out;
}
if (OF_getencprop(node, "allwinner,pull",
&pin_pull, sizeof(pin_pull)) == -1) {
ret = ENOENT;
goto out;
}
/* Configure each pin to the correct function, drive and pull */
for (i = 0; i < pins_nb; i++) {
pin_num = aw_find_pinnum_by_name(sc, pinlist[i]);
if (pin_num == -1) {
ret = ENOENT;
goto out;
}
pin_func = aw_find_pin_func(sc, pin_num, pin_function);
if (pin_func == -1) {
ret = ENOENT;
goto out;
}
A10_GPIO_LOCK(sc);
a10_gpio_set_function(sc, pin_num, pin_func);
a10_gpio_set_drv(sc, pin_num, pin_drive);
a10_gpio_set_pud(sc, pin_num, pin_pull);
A10_GPIO_UNLOCK(sc);
}
out:
free(pinlist, M_OFWPROP);
free(pin_function, M_OFWPROP);
return (ret);
}
static int
a10_gpio_probe(device_t dev)
{
if (!ofw_bus_status_okay(dev))
return (ENXIO);
if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0)
return (ENXIO);
device_set_desc(dev, "Allwinner GPIO/Pinmux controller");
return (BUS_PROBE_DEFAULT);
}
static int
a10_gpio_attach(device_t dev)
{
int rid, error;
phandle_t gpio;
struct a10_gpio_softc *sc;
clk_t clk;
hwreset_t rst;
sc = device_get_softc(dev);
sc->sc_dev = dev;
mtx_init(&sc->sc_mtx, "a10 gpio", "gpio", MTX_SPIN);
rid = 0;
sc->sc_mem_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid,
RF_ACTIVE);
if (!sc->sc_mem_res) {
device_printf(dev, "cannot allocate memory window\n");
goto fail;
}
sc->sc_bst = rman_get_bustag(sc->sc_mem_res);
sc->sc_bsh = rman_get_bushandle(sc->sc_mem_res);
rid = 0;
sc->sc_irq_res = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid,
RF_ACTIVE);
if (!sc->sc_irq_res) {
device_printf(dev, "cannot allocate interrupt\n");
goto fail;
}
/* Find our node. */
gpio = ofw_bus_get_node(sc->sc_dev);
if (!OF_hasprop(gpio, "gpio-controller"))
/* Node is not a GPIO controller. */
goto fail;
/* Use the right pin data for the current SoC */
sc->padconf = (struct allwinner_padconf *)ofw_bus_search_compatible(dev,
compat_data)->ocd_data;
if (hwreset_get_by_ofw_idx(dev, 0, &rst) == 0) {
error = hwreset_deassert(rst);
if (error != 0) {
device_printf(dev, "cannot de-assert reset\n");
return (error);
}
}
if (clk_get_by_ofw_index(dev, 0, &clk) == 0) {
error = clk_enable(clk);
if (error != 0) {
device_printf(dev, "could not enable clock\n");
return (error);
}
}
sc->sc_busdev = gpiobus_attach_bus(dev);
if (sc->sc_busdev == NULL)
goto fail;
/*
* Register as a pinctrl device
*/
fdt_pinctrl_register(dev, "allwinner,pins");
fdt_pinctrl_configure_tree(dev);
return (0);
fail:
if (sc->sc_irq_res)
bus_release_resource(dev, SYS_RES_IRQ, 0, sc->sc_irq_res);
if (sc->sc_mem_res)
bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->sc_mem_res);
mtx_destroy(&sc->sc_mtx);
return (ENXIO);
}
static int
a10_gpio_detach(device_t dev)
{
return (EBUSY);
}
static phandle_t
a10_gpio_get_node(device_t dev, device_t bus)
{
/* We only have one child, the GPIO bus, which needs our own node. */
return (ofw_bus_get_node(dev));
}
static int
a10_gpio_map_gpios(device_t bus, phandle_t dev, phandle_t gparent, int gcells,
pcell_t *gpios, uint32_t *pin, uint32_t *flags)
{
struct a10_gpio_softc *sc;
int i;
sc = device_get_softc(bus);
/* The GPIO pins are mapped as: <gpio-phandle bank pin flags>. */
for (i = 0; i < sc->padconf->npins; i++)
if (sc->padconf->pins[i].port == gpios[0] &&
sc->padconf->pins[i].pin == gpios[1]) {
*pin = i;
break;
}
*flags = gpios[gcells - 1];
return (0);
}
static device_method_t a10_gpio_methods[] = {
/* Device interface */
DEVMETHOD(device_probe, a10_gpio_probe),
DEVMETHOD(device_attach, a10_gpio_attach),
DEVMETHOD(device_detach, a10_gpio_detach),
/* GPIO protocol */
DEVMETHOD(gpio_get_bus, a10_gpio_get_bus),
DEVMETHOD(gpio_pin_max, a10_gpio_pin_max),
DEVMETHOD(gpio_pin_getname, a10_gpio_pin_getname),
DEVMETHOD(gpio_pin_getflags, a10_gpio_pin_getflags),
DEVMETHOD(gpio_pin_getcaps, a10_gpio_pin_getcaps),
DEVMETHOD(gpio_pin_setflags, a10_gpio_pin_setflags),
DEVMETHOD(gpio_pin_get, a10_gpio_pin_get),
DEVMETHOD(gpio_pin_set, a10_gpio_pin_set),
DEVMETHOD(gpio_pin_toggle, a10_gpio_pin_toggle),
DEVMETHOD(gpio_map_gpios, a10_gpio_map_gpios),
/* ofw_bus interface */
DEVMETHOD(ofw_bus_get_node, a10_gpio_get_node),
/* fdt_pinctrl interface */
DEVMETHOD(fdt_pinctrl_configure,aw_fdt_configure_pins),
DEVMETHOD_END
};
static devclass_t a10_gpio_devclass;
static driver_t a10_gpio_driver = {
"gpio",
a10_gpio_methods,
sizeof(struct a10_gpio_softc),
};
EARLY_DRIVER_MODULE(a10_gpio, simplebus, a10_gpio_driver, a10_gpio_devclass, 0, 0,
BUS_PASS_INTERRUPT + BUS_PASS_ORDER_MIDDLE);
Index: user/ngie/bsnmp_cleanup/sys/arm/allwinner/allwinner_machdep.c
===================================================================
--- user/ngie/bsnmp_cleanup/sys/arm/allwinner/allwinner_machdep.c (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/arm/allwinner/allwinner_machdep.c (revision 299697)
@@ -1,233 +1,257 @@
/*-
* Copyright (c) 2012 Ganbold Tsagaankhuu <ganbold@freebsd.org>
* Copyright (c) 2015-2016 Emmanuel Vadot <manu@bidouilliste.com>
* All rights reserved.
*
* This code is derived from software written for Brini by Mark Brinicombe
*
* 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.
*
* from: FreeBSD: //depot/projects/arm/src/sys/arm/ti/ti_machdep.c
*/
#include "opt_ddb.h"
#include "opt_platform.h"
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
#define _ARM32_BUS_DMA_PRIVATE
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/bus.h>
#include <sys/devmap.h>
#include <vm/vm.h>
#include <vm/pmap.h>
#include <machine/bus.h>
#include <machine/machdep.h>
#include <machine/platformvar.h>
#include <dev/fdt/fdt_common.h>
#include <arm/allwinner/aw_mp.h>
#include <arm/allwinner/aw_wdog.h>
#include <arm/allwinner/allwinner_machdep.h>
#include "platform_if.h"
static u_int soc_type;
static u_int soc_family;
static int
a10_attach(platform_t plat)
{
soc_type = ALLWINNERSOC_A10;
soc_family = ALLWINNERSOC_SUN4I;
return (0);
}
static int
a20_attach(platform_t plat)
{
soc_type = ALLWINNERSOC_A20;
soc_family = ALLWINNERSOC_SUN7I;
return (0);
}
static int
a31_attach(platform_t plat)
{
soc_type = ALLWINNERSOC_A31;
soc_family = ALLWINNERSOC_SUN6I;
return (0);
}
static int
a31s_attach(platform_t plat)
{
soc_type = ALLWINNERSOC_A31S;
soc_family = ALLWINNERSOC_SUN6I;
return (0);
}
static int
a83t_attach(platform_t plat)
{
soc_type = ALLWINNERSOC_A83T;
soc_family = ALLWINNERSOC_SUN8I;
return (0);
}
+static int
+h3_attach(platform_t plat)
+{
+ soc_type = ALLWINNERSOC_H3;
+ soc_family = ALLWINNERSOC_SUN8I;
+
+ return (0);
+}
+
static vm_offset_t
allwinner_lastaddr(platform_t plat)
{
return (devmap_lastaddr());
}
/*
* Set up static device mappings.
*
* This covers all the on-chip device with 1MB section mappings, which is good
* for performance (uses fewer TLB entries for device access).
*
* XXX It also covers a block of SRAM and some GPU (mali400) stuff that maybe
* shouldn't be device-mapped. The original code mapped a 4MB block, but
* perhaps a 1MB block would be more appropriate.
*/
static int
allwinner_devmap_init(platform_t plat)
{
devmap_add_entry(0x01C00000, 0x00400000); /* 4MB */
return (0);
}
struct arm32_dma_range *
bus_dma_get_range(void)
{
return (NULL);
}
int
bus_dma_get_range_nb(void)
{
return (0);
}
void
cpu_reset()
{
aw_wdog_watchdog_reset();
printf("Reset failed!\n");
while (1);
}
#if defined(SOC_ALLWINNER_A10)
static platform_method_t a10_methods[] = {
PLATFORMMETHOD(platform_attach, a10_attach),
PLATFORMMETHOD(platform_lastaddr, allwinner_lastaddr),
PLATFORMMETHOD(platform_devmap_init, allwinner_devmap_init),
PLATFORMMETHOD_END,
};
FDT_PLATFORM_DEF(a10, "a10", 0, "allwinner,sun4i-a10", 200);
#endif
#if defined(SOC_ALLWINNER_A20)
static platform_method_t a20_methods[] = {
PLATFORMMETHOD(platform_attach, a20_attach),
PLATFORMMETHOD(platform_lastaddr, allwinner_lastaddr),
PLATFORMMETHOD(platform_devmap_init, allwinner_devmap_init),
#ifdef SMP
PLATFORMMETHOD(platform_mp_start_ap, aw_mp_start_ap),
PLATFORMMETHOD(platform_mp_setmaxid, aw_mp_setmaxid),
#endif
PLATFORMMETHOD_END,
};
FDT_PLATFORM_DEF(a20, "a20", 0, "allwinner,sun7i-a20", 200);
#endif
#if defined(SOC_ALLWINNER_A31)
static platform_method_t a31_methods[] = {
PLATFORMMETHOD(platform_attach, a31_attach),
PLATFORMMETHOD(platform_lastaddr, allwinner_lastaddr),
PLATFORMMETHOD(platform_devmap_init, allwinner_devmap_init),
#ifdef SMP
PLATFORMMETHOD(platform_mp_start_ap, aw_mp_start_ap),
PLATFORMMETHOD(platform_mp_setmaxid, aw_mp_setmaxid),
#endif
PLATFORMMETHOD_END,
};
FDT_PLATFORM_DEF(a31, "a31", 0, "allwinner,sun6i-a31", 200);
#endif
#if defined(SOC_ALLWINNER_A31S)
static platform_method_t a31s_methods[] = {
PLATFORMMETHOD(platform_attach, a31s_attach),
PLATFORMMETHOD(platform_lastaddr, allwinner_lastaddr),
PLATFORMMETHOD(platform_devmap_init, allwinner_devmap_init),
#ifdef SMP
PLATFORMMETHOD(platform_mp_start_ap, aw_mp_start_ap),
PLATFORMMETHOD(platform_mp_setmaxid, aw_mp_setmaxid),
#endif
PLATFORMMETHOD_END,
};
FDT_PLATFORM_DEF(a31s, "a31s", 0, "allwinner,sun6i-a31s", 200);
#endif
#if defined(SOC_ALLWINNER_A83T)
static platform_method_t a83t_methods[] = {
PLATFORMMETHOD(platform_attach, a83t_attach),
PLATFORMMETHOD(platform_lastaddr, allwinner_lastaddr),
PLATFORMMETHOD(platform_devmap_init, allwinner_devmap_init),
#ifdef SMP
PLATFORMMETHOD(platform_mp_start_ap, a83t_mp_start_ap),
PLATFORMMETHOD(platform_mp_setmaxid, aw_mp_setmaxid),
#endif
PLATFORMMETHOD_END,
};
FDT_PLATFORM_DEF(a83t, "a83t", 0, "allwinner,sun8i-a83t", 200);
+#endif
+
+#if defined(SOC_ALLWINNER_H3)
+static platform_method_t h3_methods[] = {
+ PLATFORMMETHOD(platform_attach, h3_attach),
+ PLATFORMMETHOD(platform_lastaddr, allwinner_lastaddr),
+ PLATFORMMETHOD(platform_devmap_init, allwinner_devmap_init),
+
+#ifdef SMP
+ PLATFORMMETHOD(platform_mp_start_ap, aw_mp_start_ap),
+ PLATFORMMETHOD(platform_mp_setmaxid, aw_mp_setmaxid),
+#endif
+ PLATFORMMETHOD_END,
+};
+FDT_PLATFORM_DEF(h3, "h3", 0, "allwinner,sun8i-h3", 200);
#endif
u_int
allwinner_soc_type(void)
{
return (soc_type);
}
u_int
allwinner_soc_family(void)
{
return (soc_family);
}
Index: user/ngie/bsnmp_cleanup/sys/arm/allwinner/allwinner_machdep.h
===================================================================
--- user/ngie/bsnmp_cleanup/sys/arm/allwinner/allwinner_machdep.h (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/arm/allwinner/allwinner_machdep.h (revision 299697)
@@ -1,50 +1,51 @@
/*-
* Copyright (c) 2015 Emmanuel Vadot <manu@bidouilliste.com>
* 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 AW_MACHDEP_H
#define AW_MACHDEP_H
#define ALLWINNERSOC_A10 0x10000000
#define ALLWINNERSOC_A13 0x13000000
#define ALLWINNERSOC_A10S 0x10000001
#define ALLWINNERSOC_A20 0x20000000
+#define ALLWINNERSOC_H3 0x30000000
#define ALLWINNERSOC_A31 0x31000000
#define ALLWINNERSOC_A31S 0x31000001
#define ALLWINNERSOC_A83T 0x83000000
#define ALLWINNERSOC_SUN4I 0x40000000
#define ALLWINNERSOC_SUN5I 0x50000000
#define ALLWINNERSOC_SUN6I 0x60000000
#define ALLWINNERSOC_SUN7I 0x70000000
#define ALLWINNERSOC_SUN8I 0x80000000
u_int allwinner_soc_type(void);
u_int allwinner_soc_family(void);
#endif /* AW_MACHDEP_H */
Index: user/ngie/bsnmp_cleanup/sys/arm/allwinner/aw_ccu.c
===================================================================
--- user/ngie/bsnmp_cleanup/sys/arm/allwinner/aw_ccu.c (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/arm/allwinner/aw_ccu.c (revision 299697)
@@ -1,299 +1,300 @@
/*-
* Copyright (c) 2016 Jared McNeill <jmcneill@invisible.ca>
* 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$
*/
/*
* Allwinner oscillator clock
*/
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/bus.h>
#include <sys/rman.h>
#include <sys/kernel.h>
#include <sys/module.h>
#include <machine/bus.h>
#include <dev/fdt/simplebus.h>
#include <dev/fdt/fdt_common.h>
#include <dev/ofw/ofw_bus.h>
#include <dev/ofw/ofw_bus_subr.h>
#include <dev/extres/clk/clk.h>
#include "clkdev_if.h"
#define CCU_BASE 0x01c20000
#define CCU_SIZE 0x400
#define PRCM_BASE 0x01f01400
#define PRCM_SIZE 0x200
#define SYSCTRL_BASE 0x01c00000
#define SYSCTRL_SIZE 0x34
struct aw_ccu_softc {
struct simplebus_softc sc;
bus_space_tag_t bst;
bus_space_handle_t ccu_bsh;
bus_space_handle_t prcm_bsh;
bus_space_handle_t sysctrl_bsh;
struct mtx mtx;
int flags;
};
#define CLOCK_CCU (1 << 0)
#define CLOCK_PRCM (1 << 1)
#define CLOCK_SYSCTRL (1 << 2)
static struct ofw_compat_data compat_data[] = {
{ "allwinner,sun4i-a10", CLOCK_CCU },
{ "allwinner,sun7i-a20", CLOCK_CCU },
{ "allwinner,sun6i-a31", CLOCK_CCU },
{ "allwinner,sun6i-a31s", CLOCK_CCU },
{ "allwinner,sun8i-a83t", CLOCK_CCU|CLOCK_PRCM|CLOCK_SYSCTRL },
+ { "allwinner,sun8i-h3", CLOCK_CCU },
{ NULL, 0 }
};
static int
aw_ccu_check_addr(struct aw_ccu_softc *sc, bus_addr_t addr,
bus_space_handle_t *pbsh, bus_size_t *poff)
{
if (addr >= CCU_BASE && addr < (CCU_BASE + CCU_SIZE) &&
(sc->flags & CLOCK_CCU) != 0) {
*poff = addr - CCU_BASE;
*pbsh = sc->ccu_bsh;
return (0);
}
if (addr >= PRCM_BASE && addr < (PRCM_BASE + PRCM_SIZE) &&
(sc->flags & CLOCK_PRCM) != 0) {
*poff = addr - PRCM_BASE;
*pbsh = sc->prcm_bsh;
return (0);
}
if (addr >= SYSCTRL_BASE && addr < (SYSCTRL_BASE + SYSCTRL_SIZE) &&
(sc->flags & CLOCK_SYSCTRL) != 0) {
*poff = addr - SYSCTRL_BASE;
*pbsh = sc->sysctrl_bsh;
return (0);
}
return (EINVAL);
}
static int
aw_ccu_write_4(device_t dev, bus_addr_t addr, uint32_t val)
{
struct aw_ccu_softc *sc;
bus_space_handle_t bsh;
bus_size_t reg;
sc = device_get_softc(dev);
if (aw_ccu_check_addr(sc, addr, &bsh, &reg) != 0)
return (EINVAL);
mtx_assert(&sc->mtx, MA_OWNED);
bus_space_write_4(sc->bst, bsh, reg, val);
return (0);
}
static int
aw_ccu_read_4(device_t dev, bus_addr_t addr, uint32_t *val)
{
struct aw_ccu_softc *sc;
bus_space_handle_t bsh;
bus_size_t reg;
sc = device_get_softc(dev);
if (aw_ccu_check_addr(sc, addr, &bsh, &reg) != 0)
return (EINVAL);
mtx_assert(&sc->mtx, MA_OWNED);
*val = bus_space_read_4(sc->bst, bsh, reg);
return (0);
}
static int
aw_ccu_modify_4(device_t dev, bus_addr_t addr, uint32_t clr, uint32_t set)
{
struct aw_ccu_softc *sc;
bus_space_handle_t bsh;
bus_size_t reg;
uint32_t val;
sc = device_get_softc(dev);
if (aw_ccu_check_addr(sc, addr, &bsh, &reg) != 0)
return (EINVAL);
mtx_assert(&sc->mtx, MA_OWNED);
val = bus_space_read_4(sc->bst, bsh, reg);
val &= ~clr;
val |= set;
bus_space_write_4(sc->bst, bsh, reg, val);
return (0);
}
static void
aw_ccu_device_lock(device_t dev)
{
struct aw_ccu_softc *sc;
sc = device_get_softc(dev);
mtx_lock(&sc->mtx);
}
static void
aw_ccu_device_unlock(device_t dev)
{
struct aw_ccu_softc *sc;
sc = device_get_softc(dev);
mtx_unlock(&sc->mtx);
}
static const struct ofw_compat_data *
aw_ccu_search_compatible(void)
{
const struct ofw_compat_data *compat;
phandle_t root;
root = OF_finddevice("/");
for (compat = compat_data; compat_data->ocd_str != NULL; compat++)
if (fdt_is_compatible(root, compat->ocd_str))
break;
return (compat);
}
static int
aw_ccu_probe(device_t dev)
{
const char *name;
name = ofw_bus_get_name(dev);
if (name == NULL || strcmp(name, "clocks") != 0)
return (ENXIO);
if (aw_ccu_search_compatible()->ocd_data == 0)
return (ENXIO);
device_set_desc(dev, "Allwinner Clock Control Unit");
return (BUS_PROBE_SPECIFIC);
}
static int
aw_ccu_attach(device_t dev)
{
struct aw_ccu_softc *sc;
phandle_t node, child;
device_t cdev;
int error;
sc = device_get_softc(dev);
node = ofw_bus_get_node(dev);
simplebus_init(dev, node);
sc->flags = aw_ccu_search_compatible()->ocd_data;
/*
* Map registers. The DT doesn't have a "reg" property
* for the /clocks node and child nodes have conflicting "reg"
* properties.
*/
sc->bst = bus_get_bus_tag(dev);
if (sc->flags & CLOCK_CCU) {
error = bus_space_map(sc->bst, CCU_BASE, CCU_SIZE, 0,
&sc->ccu_bsh);
if (error != 0) {
device_printf(dev, "couldn't map CCU: %d\n", error);
return (error);
}
}
if (sc->flags & CLOCK_PRCM) {
error = bus_space_map(sc->bst, PRCM_BASE, PRCM_SIZE, 0,
&sc->prcm_bsh);
if (error != 0) {
device_printf(dev, "couldn't map PRCM: %d\n", error);
return (error);
}
}
if (sc->flags & CLOCK_SYSCTRL) {
error = bus_space_map(sc->bst, SYSCTRL_BASE, SYSCTRL_SIZE, 0,
&sc->sysctrl_bsh);
if (error != 0) {
device_printf(dev, "couldn't map SYSCTRL: %d\n", error);
return (error);
}
}
mtx_init(&sc->mtx, device_get_nameunit(dev), NULL, MTX_DEF);
/* Attach child devices */
for (child = OF_child(node); child > 0; child = OF_peer(child)) {
cdev = simplebus_add_device(dev, child, 0, NULL, -1, NULL);
if (cdev != NULL)
device_probe_and_attach(cdev);
}
return (bus_generic_attach(dev));
}
static device_method_t aw_ccu_methods[] = {
/* Device interface */
DEVMETHOD(device_probe, aw_ccu_probe),
DEVMETHOD(device_attach, aw_ccu_attach),
/* clkdev interface */
DEVMETHOD(clkdev_write_4, aw_ccu_write_4),
DEVMETHOD(clkdev_read_4, aw_ccu_read_4),
DEVMETHOD(clkdev_modify_4, aw_ccu_modify_4),
DEVMETHOD(clkdev_device_lock, aw_ccu_device_lock),
DEVMETHOD(clkdev_device_unlock, aw_ccu_device_unlock),
DEVMETHOD_END
};
DEFINE_CLASS_1(aw_ccu, aw_ccu_driver, aw_ccu_methods,
sizeof(struct aw_ccu_softc), simplebus_driver);
static devclass_t aw_ccu_devclass;
EARLY_DRIVER_MODULE(aw_ccu, simplebus, aw_ccu_driver, aw_ccu_devclass,
0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE);
MODULE_VERSION(aw_ccu, 1);
Index: user/ngie/bsnmp_cleanup/sys/arm/allwinner/aw_usbphy.c
===================================================================
--- user/ngie/bsnmp_cleanup/sys/arm/allwinner/aw_usbphy.c (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/arm/allwinner/aw_usbphy.c (revision 299697)
@@ -1,150 +1,151 @@
/*-
* Copyright (c) 2016 Jared McNeill <jmcneill@invisible.ca>
* 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$
*/
/*
* Allwinner USB PHY
*/
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/bus.h>
#include <sys/rman.h>
#include <sys/kernel.h>
#include <sys/module.h>
#include <sys/gpio.h>
#include <dev/ofw/ofw_bus.h>
#include <dev/ofw/ofw_bus_subr.h>
#include <dev/extres/clk/clk.h>
#include <dev/extres/hwreset/hwreset.h>
#include <dev/extres/regulator/regulator.h>
#define USBPHY_NUMOFF 3
static struct ofw_compat_data compat_data[] = {
{ "allwinner,sun4i-a10-usb-phy", 1 },
{ "allwinner,sun5i-a13-usb-phy", 1 },
{ "allwinner,sun6i-a31-usb-phy", 1 },
{ "allwinner,sun7i-a20-usb-phy", 1 },
{ "allwinner,sun8i-a83t-usb-phy", 1 },
+ { "allwinner,sun8i-h3-usb-phy", 1 },
{ NULL, 0 }
};
static int
awusbphy_init(device_t dev)
{
char pname[20];
int error, off;
regulator_t reg;
hwreset_t rst;
clk_t clk;
/* Enable clocks */
for (off = 0; clk_get_by_ofw_index(dev, off, &clk) == 0; off++) {
error = clk_enable(clk);
if (error != 0) {
device_printf(dev, "couldn't enable clock %s\n",
clk_get_name(clk));
return (error);
}
}
/* De-assert resets */
for (off = 0; hwreset_get_by_ofw_idx(dev, off, &rst) == 0; off++) {
error = hwreset_deassert(rst);
if (error != 0) {
device_printf(dev, "couldn't de-assert reset %d\n",
off);
return (error);
}
}
/* Enable regulator(s) */
for (off = 0; off < USBPHY_NUMOFF; off++) {
snprintf(pname, sizeof(pname), "usb%d_vbus-supply", off);
if (regulator_get_by_ofw_property(dev, pname, &reg) != 0)
continue;
error = regulator_enable(reg);
if (error != 0) {
device_printf(dev, "couldn't enable regulator %s\n",
pname);
return (error);
}
}
return (0);
}
static int
awusbphy_probe(device_t dev)
{
if (!ofw_bus_status_okay(dev))
return (ENXIO);
if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0)
return (ENXIO);
device_set_desc(dev, "Allwinner USB PHY");
return (BUS_PROBE_DEFAULT);
}
static int
awusbphy_attach(device_t dev)
{
int error;
error = awusbphy_init(dev);
if (error)
device_printf(dev, "failed to initialize USB PHY, error %d\n",
error);
return (error);
}
static device_method_t awusbphy_methods[] = {
/* Device interface */
DEVMETHOD(device_probe, awusbphy_probe),
DEVMETHOD(device_attach, awusbphy_attach),
DEVMETHOD_END
};
static driver_t awusbphy_driver = {
"awusbphy",
awusbphy_methods,
0,
};
static devclass_t awusbphy_devclass;
DRIVER_MODULE(awusbphy, simplebus, awusbphy_driver, awusbphy_devclass, 0, 0);
MODULE_VERSION(awusbphy, 1);
Index: user/ngie/bsnmp_cleanup/sys/arm/allwinner/clk/aw_gate.c
===================================================================
--- user/ngie/bsnmp_cleanup/sys/arm/allwinner/clk/aw_gate.c (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/arm/allwinner/clk/aw_gate.c (revision 299697)
@@ -1,206 +1,209 @@
/*-
* Copyright (c) 2016 Jared McNeill <jmcneill@invisible.ca>
* 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$
*/
/*
* Allwinner clock gates
*/
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/bus.h>
#include <sys/rman.h>
#include <sys/kernel.h>
#include <sys/module.h>
#include <machine/bus.h>
#include <dev/ofw/ofw_bus.h>
#include <dev/ofw/ofw_bus_subr.h>
#include <dev/ofw/ofw_subr.h>
#include <dev/extres/clk/clk_gate.h>
#define GATE_OFFSET(index) ((index / 32) * 4)
#define GATE_SHIFT(index) (index % 32)
static struct ofw_compat_data compat_data[] = {
{ "allwinner,sun4i-a10-dram-gates-clk",
(uintptr_t)"Allwinner DRAM Clock Gates" },
{ "allwinner,sun4i-a10-ahb-gates-clk",
(uintptr_t)"Allwinner AHB Clock Gates" },
{ "allwinner,sun4i-a10-apb0-gates-clk",
(uintptr_t)"Allwinner APB0 Clock Gates" },
{ "allwinner,sun4i-a10-apb1-gates-clk",
(uintptr_t)"Allwinner APB1 Clock Gates" },
{ "allwinner,sun7i-a20-ahb-gates-clk",
(uintptr_t)"Allwinner AHB Clock Gates" },
{ "allwinner,sun7i-a20-apb0-gates-clk",
(uintptr_t)"Allwinner APB0 Clock Gates" },
{ "allwinner,sun7i-a20-apb1-gates-clk",
(uintptr_t)"Allwinner APB1 Clock Gates" },
{ "allwinner,sun6i-a31-ahb1-gates-clk",
(uintptr_t)"Allwinner AHB1 Clock Gates" },
{ "allwinner,sun6i-a31-apb0-gates-clk",
(uintptr_t)"Allwinner APB0 Clock Gates" },
{ "allwinner,sun6i-a31-apb1-gates-clk",
(uintptr_t)"Allwinner APB1 Clock Gates" },
{ "allwinner,sun6i-a31-apb2-gates-clk",
(uintptr_t)"Allwinner APB2 Clock Gates" },
{ "allwinner,sun8i-a83t-bus-gates-clk",
(uintptr_t)"Allwinner Bus Clock Gates" },
{ "allwinner,sun8i-a83t-apb0-gates-clk",
(uintptr_t)"Allwinner APB0 Clock Gates" },
+ { "allwinner,sun8i-h3-bus-gates-clk",
+ (uintptr_t)"Allwinner Bus Clock Gates"},
+
{ "allwinner,sun9i-a80-apbs-gates-clk",
(uintptr_t)"Allwinner APBS Clock Gates" },
{ NULL, 0 }
};
static int
aw_gate_create(device_t dev, bus_addr_t paddr, struct clkdom *clkdom,
const char *pclkname, const char *clkname, int index)
{
const char *parent_names[1] = { pclkname };
struct clk_gate_def def;
memset(&def, 0, sizeof(def));
def.clkdef.id = index;
def.clkdef.name = clkname;
def.clkdef.parent_names = parent_names;
def.clkdef.parent_cnt = 1;
def.offset = paddr + GATE_OFFSET(index);
def.shift = GATE_SHIFT(index);
def.mask = 1;
def.on_value = 1;
def.off_value = 0;
return (clknode_gate_register(clkdom, &def));
}
static int
aw_gate_probe(device_t dev)
{
const char *d;
if (!ofw_bus_status_okay(dev))
return (ENXIO);
d = (const char *)ofw_bus_search_compatible(dev, compat_data)->ocd_data;
if (d == NULL)
return (ENXIO);
device_set_desc(dev, d);
return (BUS_PROBE_DEFAULT);
}
static int
aw_gate_attach(device_t dev)
{
struct clkdom *clkdom;
const char **names;
int index, nout, error;
uint32_t *indices;
clk_t clk_parent;
bus_addr_t paddr;
bus_size_t psize;
phandle_t node;
node = ofw_bus_get_node(dev);
indices = NULL;
if (ofw_reg_to_paddr(node, 0, &paddr, &psize, NULL) != 0) {
device_printf(dev, "cannot parse 'reg' property\n");
return (ENXIO);
}
clkdom = clkdom_create(dev);
nout = clk_parse_ofw_out_names(dev, node, &names, &indices);
if (nout == 0) {
device_printf(dev, "no clock outputs found\n");
error = ENOENT;
goto fail;
}
if (indices == NULL) {
device_printf(dev, "no clock-indices property\n");
error = ENXIO;
goto fail;
}
error = clk_get_by_ofw_index(dev, 0, &clk_parent);
if (error != 0) {
device_printf(dev, "cannot parse clock parent\n");
return (ENXIO);
}
for (index = 0; index < nout; index++) {
error = aw_gate_create(dev, paddr, clkdom,
clk_get_name(clk_parent), names[index], indices[index]);
if (error)
goto fail;
}
if (clkdom_finit(clkdom) != 0) {
device_printf(dev, "cannot finalize clkdom initialization\n");
error = ENXIO;
goto fail;
}
if (bootverbose)
clkdom_dump(clkdom);
return (0);
fail:
return (error);
}
static device_method_t aw_gate_methods[] = {
/* Device interface */
DEVMETHOD(device_probe, aw_gate_probe),
DEVMETHOD(device_attach, aw_gate_attach),
DEVMETHOD_END
};
static driver_t aw_gate_driver = {
"aw_gate",
aw_gate_methods,
0
};
static devclass_t aw_gate_devclass;
EARLY_DRIVER_MODULE(aw_gate, simplebus, aw_gate_driver,
aw_gate_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE);
Index: user/ngie/bsnmp_cleanup/sys/arm/allwinner/clk/aw_pll.c
===================================================================
--- user/ngie/bsnmp_cleanup/sys/arm/allwinner/clk/aw_pll.c (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/arm/allwinner/clk/aw_pll.c (revision 299697)
@@ -1,784 +1,815 @@
/*-
* Copyright (c) 2016 Jared McNeill <jmcneill@invisible.ca>
* 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$
*/
/*
* Allwinner PLL clock
*/
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/bus.h>
#include <sys/rman.h>
#include <sys/kernel.h>
#include <sys/module.h>
#include <machine/bus.h>
#include <dev/ofw/ofw_bus.h>
#include <dev/ofw/ofw_bus_subr.h>
#include <dev/ofw/ofw_subr.h>
#include <dev/extres/clk/clk.h>
#include <dt-bindings/clock/sun4i-a10-pll2.h>
#include "clkdev_if.h"
#define AW_PLL_ENABLE (1 << 31)
#define A10_PLL1_OUT_EXT_DIVP (0x3 << 16)
#define A10_PLL1_OUT_EXT_DIVP_SHIFT 16
#define A10_PLL1_FACTOR_N (0x1f << 8)
#define A10_PLL1_FACTOR_N_SHIFT 8
#define A10_PLL1_FACTOR_K (0x3 << 4)
#define A10_PLL1_FACTOR_K_SHIFT 4
#define A10_PLL1_FACTOR_M (0x3 << 0)
#define A10_PLL1_FACTOR_M_SHIFT 0
#define A10_PLL2_POST_DIV (0xf << 26)
#define A10_PLL2_POST_DIV_SHIFT 26
#define A10_PLL2_FACTOR_N (0x7f << 8)
#define A10_PLL2_FACTOR_N_SHIFT 8
#define A10_PLL2_PRE_DIV (0x1f << 0)
#define A10_PLL2_PRE_DIV_SHIFT 0
#define A10_PLL3_MODE_SEL (0x1 << 15)
#define A10_PLL3_MODE_SEL_FRACT (0 << 15)
#define A10_PLL3_MODE_SEL_INT (1 << 15)
#define A10_PLL3_FUNC_SET (0x1 << 14)
#define A10_PLL3_FUNC_SET_270MHZ (0 << 14)
#define A10_PLL3_FUNC_SET_297MHZ (1 << 14)
#define A10_PLL3_FACTOR_M (0x7f << 0)
#define A10_PLL3_FACTOR_M_SHIFT 0
#define A10_PLL3_REF_FREQ 3000000
#define A10_PLL5_OUT_EXT_DIVP (0x3 << 16)
#define A10_PLL5_OUT_EXT_DIVP_SHIFT 16
#define A10_PLL5_FACTOR_N (0x1f << 8)
#define A10_PLL5_FACTOR_N_SHIFT 8
#define A10_PLL5_FACTOR_K (0x3 << 4)
#define A10_PLL5_FACTOR_K_SHIFT 4
#define A10_PLL5_FACTOR_M1 (0x3 << 2)
#define A10_PLL5_FACTOR_M1_SHIFT 2
#define A10_PLL5_FACTOR_M (0x3 << 0)
#define A10_PLL5_FACTOR_M_SHIFT 0
#define A10_PLL6_BYPASS_EN (1 << 30)
#define A10_PLL6_SATA_CLK_EN (1 << 14)
#define A10_PLL6_FACTOR_N (0x1f << 8)
#define A10_PLL6_FACTOR_N_SHIFT 8
#define A10_PLL6_FACTOR_K (0x3 << 4)
#define A10_PLL6_FACTOR_K_SHIFT 4
#define A10_PLL6_FACTOR_M (0x3 << 0)
#define A10_PLL6_FACTOR_M_SHIFT 0
#define A10_PLL2_POST_DIV (0xf << 26)
+#define A23_PLL1_FACTOR_N (0x1f << 8)
+#define A23_PLL1_FACTOR_N_SHIFT 8
+#define A23_PLL1_FACTOR_K (0x3 << 4)
+#define A23_PLL1_FACTOR_K_SHIFT 4
+#define A23_PLL1_FACTOR_M (0x3 << 0)
+#define A23_PLL1_FACTOR_M_SHIFT 0
+#define A23_PLL1_FACTOR_P (0x3 << 16)
+#define A23_PLL1_FACTOR_P_SHIFT 16
+
#define A31_PLL1_LOCK (1 << 28)
#define A31_PLL1_CPU_SIGMA_DELTA_EN (1 << 24)
#define A31_PLL1_FACTOR_N (0x1f << 8)
#define A31_PLL1_FACTOR_N_SHIFT 8
#define A31_PLL1_FACTOR_K (0x3 << 4)
#define A31_PLL1_FACTOR_K_SHIFT 4
#define A31_PLL1_FACTOR_M (0x3 << 0)
#define A31_PLL1_FACTOR_M_SHIFT 0
#define A31_PLL6_LOCK (1 << 28)
#define A31_PLL6_BYPASS_EN (1 << 25)
#define A31_PLL6_CLK_OUT_EN (1 << 24)
#define A31_PLL6_24M_OUT_EN (1 << 18)
#define A31_PLL6_24M_POST_DIV (0x3 << 16)
#define A31_PLL6_24M_POST_DIV_SHIFT 16
#define A31_PLL6_FACTOR_N (0x1f << 8)
#define A31_PLL6_FACTOR_N_SHIFT 8
#define A31_PLL6_FACTOR_K (0x3 << 4)
#define A31_PLL6_FACTOR_K_SHIFT 4
#define A31_PLL6_DEFAULT_N 0x18
#define A31_PLL6_DEFAULT_K 0x1
#define A31_PLL6_TIMEOUT 10
#define A80_PLL4_CLK_OUT_EN (1 << 20)
#define A80_PLL4_PLL_DIV2 (1 << 18)
#define A80_PLL4_PLL_DIV1 (1 << 16)
#define A80_PLL4_FACTOR_N (0xff << 8)
#define A80_PLL4_FACTOR_N_SHIFT 8
#define CLKID_A10_PLL3_1X 0
#define CLKID_A10_PLL3_2X 1
#define CLKID_A10_PLL5_DDR 0
#define CLKID_A10_PLL5_OTHER 1
#define CLKID_A10_PLL6_SATA 0
#define CLKID_A10_PLL6_OTHER 1
#define CLKID_A10_PLL6 2
#define CLKID_A10_PLL6_DIV_4 3
#define CLKID_A31_PLL6 0
#define CLKID_A31_PLL6_X2 1
enum aw_pll_type {
AWPLL_A10_PLL1 = 1,
AWPLL_A10_PLL2,
AWPLL_A10_PLL3,
AWPLL_A10_PLL5,
AWPLL_A10_PLL6,
+ AWPLL_A23_PLL1,
AWPLL_A31_PLL1,
AWPLL_A31_PLL6,
AWPLL_A80_PLL4,
};
struct aw_pll_sc {
enum aw_pll_type type;
device_t clkdev;
bus_addr_t reg;
int id;
};
struct aw_pll_funcs {
int (*recalc)(struct aw_pll_sc *, uint64_t *);
int (*set_freq)(struct aw_pll_sc *, uint64_t, uint64_t *, int);
int (*init)(device_t, bus_addr_t, struct clknode_init_def *);
};
#define PLL_READ(sc, val) CLKDEV_READ_4((sc)->clkdev, (sc)->reg, (val))
#define PLL_WRITE(sc, val) CLKDEV_WRITE_4((sc)->clkdev, (sc)->reg, (val))
#define DEVICE_LOCK(sc) CLKDEV_DEVICE_LOCK((sc)->clkdev)
#define DEVICE_UNLOCK(sc) CLKDEV_DEVICE_UNLOCK((sc)->clkdev)
static int
a10_pll1_recalc(struct aw_pll_sc *sc, uint64_t *freq)
{
uint32_t val, m, n, k, p;
DEVICE_LOCK(sc);
PLL_READ(sc, &val);
DEVICE_UNLOCK(sc);
p = 1 << ((val & A10_PLL1_OUT_EXT_DIVP) >> A10_PLL1_OUT_EXT_DIVP_SHIFT);
m = ((val & A10_PLL1_FACTOR_M) >> A10_PLL1_FACTOR_M_SHIFT) + 1;
k = ((val & A10_PLL1_FACTOR_K) >> A10_PLL1_FACTOR_K_SHIFT) + 1;
n = (val & A10_PLL1_FACTOR_N) >> A10_PLL1_FACTOR_N_SHIFT;
if (n == 0)
n = 1;
*freq = (*freq * n * k) / (m * p);
return (0);
}
static int
a10_pll2_recalc(struct aw_pll_sc *sc, uint64_t *freq)
{
uint32_t val, post_div, n, pre_div;
DEVICE_LOCK(sc);
PLL_READ(sc, &val);
DEVICE_UNLOCK(sc);
post_div = (val & A10_PLL2_POST_DIV) >> A10_PLL2_POST_DIV_SHIFT;
if (post_div == 0)
post_div = 1;
n = (val & A10_PLL2_FACTOR_N) >> A10_PLL2_FACTOR_N_SHIFT;
if (n == 0)
n = 1;
pre_div = (val & A10_PLL2_PRE_DIV) >> A10_PLL2_PRE_DIV_SHIFT;
if (pre_div == 0)
pre_div = 1;
switch (sc->id) {
case SUN4I_A10_PLL2_1X:
*freq = (*freq * 2 * n) / pre_div / post_div / 2;
break;
case SUN4I_A10_PLL2_2X:
*freq = (*freq * 2 * n) / pre_div / 4;
break;
case SUN4I_A10_PLL2_4X:
*freq = (*freq * 2 * n) / pre_div / 2;
break;
case SUN4I_A10_PLL2_8X:
*freq = (*freq * 2 * n) / pre_div;
break;
default:
return (EINVAL);
}
return (0);
}
static int
a10_pll2_set_freq(struct aw_pll_sc *sc, uint64_t fin, uint64_t *fout,
int flags)
{
uint32_t val, post_div, n, pre_div;
if (sc->id != SUN4I_A10_PLL2_1X)
return (ENXIO);
/*
* Audio Codec needs PLL2-1X to be either 24576000 or 22579200.
*
* PLL2-1X output frequency is (48MHz * n) / pre_div / post_div / 2.
* To get as close as possible to the desired rate, we use a
* pre-divider of 21 and a post-divider of 4. With these values,
* a multiplier of 86 or 79 gets us close to the target rates.
*/
if (*fout != 24576000 && *fout != 22579200)
return (EINVAL);
pre_div = 21;
post_div = 4;
n = (*fout * pre_div * post_div * 2) / (2 * fin);
DEVICE_LOCK(sc);
PLL_READ(sc, &val);
val &= ~(A10_PLL2_POST_DIV | A10_PLL2_FACTOR_N | A10_PLL2_PRE_DIV);
val |= (post_div << A10_PLL2_POST_DIV_SHIFT);
val |= (n << A10_PLL2_FACTOR_N_SHIFT);
val |= (pre_div << A10_PLL2_PRE_DIV_SHIFT);
PLL_WRITE(sc, val);
DEVICE_UNLOCK(sc);
return (0);
}
static int
a10_pll3_recalc(struct aw_pll_sc *sc, uint64_t *freq)
{
uint32_t val, m;
DEVICE_LOCK(sc);
PLL_READ(sc, &val);
DEVICE_UNLOCK(sc);
if ((val & A10_PLL3_MODE_SEL) == A10_PLL3_MODE_SEL_INT) {
/* In integer mode, output is 3MHz * m */
m = (val & A10_PLL3_FACTOR_M) >> A10_PLL3_FACTOR_M_SHIFT;
*freq = A10_PLL3_REF_FREQ * m;
} else {
/* In fractional mode, output is either 270MHz or 297MHz */
if ((val & A10_PLL3_FUNC_SET) == A10_PLL3_FUNC_SET_270MHZ)
*freq = 270000000;
else
*freq = 297000000;
}
if (sc->id == CLKID_A10_PLL3_2X)
*freq *= 2;
return (0);
}
static int
a10_pll3_set_freq(struct aw_pll_sc *sc, uint64_t fin, uint64_t *fout,
int flags)
{
uint32_t val, m, mode, func;
m = *fout / A10_PLL3_REF_FREQ;
if (sc->id == CLKID_A10_PLL3_2X)
m /= 2;
mode = A10_PLL3_MODE_SEL_INT;
func = 0;
*fout = m * A10_PLL3_REF_FREQ;
if (sc->id == CLKID_A10_PLL3_2X)
*fout *= 2;
DEVICE_LOCK(sc);
PLL_READ(sc, &val);
val &= ~(A10_PLL3_MODE_SEL | A10_PLL3_FUNC_SET | A10_PLL3_FACTOR_M);
val |= mode;
val |= func;
val |= (m << A10_PLL3_FACTOR_M_SHIFT);
PLL_WRITE(sc, val);
DEVICE_UNLOCK(sc);
return (0);
}
static int
a10_pll3_init(device_t dev, bus_addr_t reg, struct clknode_init_def *def)
{
uint32_t val;
/* Allow changing PLL frequency while enabled */
def->flags = CLK_NODE_GLITCH_FREE;
/* Set PLL to 297MHz */
CLKDEV_DEVICE_LOCK(dev);
CLKDEV_READ_4(dev, reg, &val);
val &= ~(A10_PLL3_MODE_SEL | A10_PLL3_FUNC_SET | A10_PLL3_FACTOR_M);
val |= A10_PLL3_MODE_SEL_FRACT;
val |= A10_PLL3_FUNC_SET_297MHZ;
CLKDEV_WRITE_4(dev, reg, val);
CLKDEV_DEVICE_UNLOCK(dev);
return (0);
}
static int
a10_pll5_recalc(struct aw_pll_sc *sc, uint64_t *freq)
{
uint32_t val, m, n, k, p;
DEVICE_LOCK(sc);
PLL_READ(sc, &val);
DEVICE_UNLOCK(sc);
p = 1 << ((val & A10_PLL5_OUT_EXT_DIVP) >> A10_PLL5_OUT_EXT_DIVP_SHIFT);
m = ((val & A10_PLL5_FACTOR_M) >> A10_PLL5_FACTOR_M_SHIFT) + 1;
k = ((val & A10_PLL5_FACTOR_K) >> A10_PLL5_FACTOR_K_SHIFT) + 1;
n = (val & A10_PLL5_FACTOR_N) >> A10_PLL5_FACTOR_N_SHIFT;
if (n == 0)
return (ENXIO);
switch (sc->id) {
case CLKID_A10_PLL5_DDR:
*freq = (*freq * n * k) / m;
break;
case CLKID_A10_PLL5_OTHER:
*freq = (*freq * n * k) / p;
break;
default:
return (ENXIO);
}
return (0);
}
static int
a10_pll6_init(device_t dev, bus_addr_t reg, struct clknode_init_def *def)
{
uint32_t val, m, n, k;
/*
* SATA needs PLL6 to be a 100MHz clock.
*
* The SATA output frequency is (24MHz * n * k) / m / 6.
* To get to 100MHz, k & m must be equal and n must be 25.
*/
m = k = 0;
n = 25;
CLKDEV_DEVICE_LOCK(dev);
CLKDEV_READ_4(dev, reg, &val);
val &= ~(A10_PLL6_FACTOR_N | A10_PLL6_FACTOR_K | A10_PLL6_FACTOR_M);
val &= ~A10_PLL6_BYPASS_EN;
val |= A10_PLL6_SATA_CLK_EN;
val |= (n << A10_PLL6_FACTOR_N_SHIFT);
val |= (k << A10_PLL6_FACTOR_K_SHIFT);
val |= (m << A10_PLL6_FACTOR_M_SHIFT);
CLKDEV_WRITE_4(dev, reg, val);
CLKDEV_DEVICE_UNLOCK(dev);
return (0);
}
static int
a10_pll6_recalc(struct aw_pll_sc *sc, uint64_t *freq)
{
uint32_t val, m, k, n;
DEVICE_LOCK(sc);
PLL_READ(sc, &val);
DEVICE_UNLOCK(sc);
m = ((val & A10_PLL6_FACTOR_M) >> A10_PLL6_FACTOR_M_SHIFT) + 1;
k = ((val & A10_PLL6_FACTOR_K) >> A10_PLL6_FACTOR_K_SHIFT) + 1;
n = (val & A10_PLL6_FACTOR_N) >> A10_PLL6_FACTOR_N_SHIFT;
if (n == 0)
return (ENXIO);
switch (sc->id) {
case CLKID_A10_PLL6_SATA:
*freq = (*freq * n * k) / m / 6;
break;
case CLKID_A10_PLL6_OTHER:
*freq = (*freq * n * k) / 2;
break;
case CLKID_A10_PLL6:
*freq = (*freq * n * k);
break;
case CLKID_A10_PLL6_DIV_4:
*freq = (*freq * n * k) / 4;
break;
default:
return (ENXIO);
}
return (0);
}
static int
a10_pll6_set_freq(struct aw_pll_sc *sc, uint64_t fin, uint64_t *fout,
int flags)
{
if (sc->id != CLKID_A10_PLL6_SATA)
return (ENXIO);
/* PLL6 SATA output has been set to 100MHz in a10_pll6_init */
if (*fout != 100000000)
return (ERANGE);
return (0);
}
static int
+a23_pll1_recalc(struct aw_pll_sc *sc, uint64_t *freq)
+{
+ uint32_t val, m, n, k, p;
+
+ DEVICE_LOCK(sc);
+ PLL_READ(sc, &val);
+ DEVICE_UNLOCK(sc);
+
+ m = ((val & A23_PLL1_FACTOR_M) >> A23_PLL1_FACTOR_M_SHIFT) + 1;
+ k = ((val & A23_PLL1_FACTOR_K) >> A23_PLL1_FACTOR_K_SHIFT) + 1;
+ n = ((val & A23_PLL1_FACTOR_N) >> A23_PLL1_FACTOR_N_SHIFT) + 1;
+ p = ((val & A23_PLL1_FACTOR_P) >> A23_PLL1_FACTOR_P_SHIFT) + 1;
+
+ *freq = (*freq * n * k) / (m * p);
+
+ return (0);
+}
+
+static int
a31_pll1_recalc(struct aw_pll_sc *sc, uint64_t *freq)
{
uint32_t val, m, n, k;
DEVICE_LOCK(sc);
PLL_READ(sc, &val);
DEVICE_UNLOCK(sc);
m = ((val & A31_PLL1_FACTOR_M) >> A31_PLL1_FACTOR_M_SHIFT) + 1;
k = ((val & A31_PLL1_FACTOR_K) >> A31_PLL1_FACTOR_K_SHIFT) + 1;
n = ((val & A31_PLL1_FACTOR_N) >> A31_PLL1_FACTOR_N_SHIFT) + 1;
*freq = (*freq * n * k) / m;
return (0);
}
static int
a31_pll6_init(device_t dev, bus_addr_t reg, struct clknode_init_def *def)
{
uint32_t val;
int retry;
if (def->id != CLKID_A31_PLL6)
return (0);
/*
* The datasheet recommends that PLL6 output should be fixed to
* 600MHz.
*/
CLKDEV_DEVICE_LOCK(dev);
CLKDEV_READ_4(dev, reg, &val);
val &= ~(A31_PLL6_FACTOR_N | A31_PLL6_FACTOR_K | A31_PLL6_BYPASS_EN);
val |= (A31_PLL6_DEFAULT_N << A31_PLL6_FACTOR_N_SHIFT);
val |= (A31_PLL6_DEFAULT_K << A31_PLL6_FACTOR_K_SHIFT);
CLKDEV_WRITE_4(dev, reg, val);
/* Wait for PLL to become stable */
for (retry = A31_PLL6_TIMEOUT; retry > 0; retry--) {
CLKDEV_READ_4(dev, reg, &val);
if ((val & A31_PLL6_LOCK) == A31_PLL6_LOCK)
break;
DELAY(1);
}
CLKDEV_DEVICE_UNLOCK(dev);
if (retry == 0)
return (ETIMEDOUT);
return (0);
}
static int
a31_pll6_recalc(struct aw_pll_sc *sc, uint64_t *freq)
{
uint32_t val, k, n;
DEVICE_LOCK(sc);
PLL_READ(sc, &val);
DEVICE_UNLOCK(sc);
k = ((val & A10_PLL6_FACTOR_K) >> A10_PLL6_FACTOR_K_SHIFT) + 1;
n = ((val & A10_PLL6_FACTOR_N) >> A10_PLL6_FACTOR_N_SHIFT) + 1;
switch (sc->id) {
case CLKID_A31_PLL6:
*freq = (*freq * n * k) / 2;
break;
case CLKID_A31_PLL6_X2:
*freq = *freq * n * k;
break;
default:
return (ENXIO);
}
return (0);
}
static int
a80_pll4_recalc(struct aw_pll_sc *sc, uint64_t *freq)
{
uint32_t val, n, div1, div2;
DEVICE_LOCK(sc);
PLL_READ(sc, &val);
DEVICE_UNLOCK(sc);
n = (val & A80_PLL4_FACTOR_N) >> A80_PLL4_FACTOR_N_SHIFT;
div1 = (val & A80_PLL4_PLL_DIV1) == 0 ? 1 : 2;
div2 = (val & A80_PLL4_PLL_DIV2) == 0 ? 1 : 2;
*freq = (*freq * n) / div1 / div2;
return (0);
}
#define PLL(_type, _recalc, _set_freq, _init) \
[(_type)] = { \
.recalc = (_recalc), \
.set_freq = (_set_freq), \
.init = (_init) \
}
static struct aw_pll_funcs aw_pll_func[] = {
PLL(AWPLL_A10_PLL1, a10_pll1_recalc, NULL, NULL),
PLL(AWPLL_A10_PLL2, a10_pll2_recalc, a10_pll2_set_freq, NULL),
PLL(AWPLL_A10_PLL3, a10_pll3_recalc, a10_pll3_set_freq, a10_pll3_init),
PLL(AWPLL_A10_PLL5, a10_pll5_recalc, NULL, NULL),
PLL(AWPLL_A10_PLL6, a10_pll6_recalc, a10_pll6_set_freq, a10_pll6_init),
+ PLL(AWPLL_A23_PLL1, a23_pll1_recalc, NULL, NULL),
PLL(AWPLL_A31_PLL1, a31_pll1_recalc, NULL, NULL),
PLL(AWPLL_A31_PLL6, a31_pll6_recalc, NULL, a31_pll6_init),
PLL(AWPLL_A80_PLL4, a80_pll4_recalc, NULL, NULL),
};
static struct ofw_compat_data compat_data[] = {
{ "allwinner,sun4i-a10-pll1-clk", AWPLL_A10_PLL1 },
{ "allwinner,sun4i-a10-pll2-clk", AWPLL_A10_PLL2 },
{ "allwinner,sun4i-a10-pll3-clk", AWPLL_A10_PLL3 },
{ "allwinner,sun4i-a10-pll5-clk", AWPLL_A10_PLL5 },
{ "allwinner,sun4i-a10-pll6-clk", AWPLL_A10_PLL6 },
{ "allwinner,sun6i-a31-pll1-clk", AWPLL_A31_PLL1 },
{ "allwinner,sun6i-a31-pll6-clk", AWPLL_A31_PLL6 },
+ { "allwinner,sun8i-a23-pll1-clk", AWPLL_A23_PLL1 },
{ "allwinner,sun9i-a80-pll4-clk", AWPLL_A80_PLL4 },
{ NULL, 0 }
};
static int
aw_pll_init(struct clknode *clk, device_t dev)
{
clknode_init_parent_idx(clk, 0);
return (0);
}
static int
aw_pll_set_gate(struct clknode *clk, bool enable)
{
struct aw_pll_sc *sc;
uint32_t val;
sc = clknode_get_softc(clk);
DEVICE_LOCK(sc);
PLL_READ(sc, &val);
if (enable)
val |= AW_PLL_ENABLE;
else
val &= ~AW_PLL_ENABLE;
PLL_WRITE(sc, val);
DEVICE_UNLOCK(sc);
return (0);
}
static int
aw_pll_recalc(struct clknode *clk, uint64_t *freq)
{
struct aw_pll_sc *sc;
sc = clknode_get_softc(clk);
if (aw_pll_func[sc->type].recalc == NULL)
return (ENXIO);
return (aw_pll_func[sc->type].recalc(sc, freq));
}
static int
aw_pll_set_freq(struct clknode *clk, uint64_t fin, uint64_t *fout,
int flags, int *stop)
{
struct aw_pll_sc *sc;
sc = clknode_get_softc(clk);
*stop = 1;
if (aw_pll_func[sc->type].set_freq == NULL)
return (ENXIO);
return (aw_pll_func[sc->type].set_freq(sc, fin, fout, flags));
}
static clknode_method_t aw_pll_clknode_methods[] = {
/* Device interface */
CLKNODEMETHOD(clknode_init, aw_pll_init),
CLKNODEMETHOD(clknode_set_gate, aw_pll_set_gate),
CLKNODEMETHOD(clknode_recalc_freq, aw_pll_recalc),
CLKNODEMETHOD(clknode_set_freq, aw_pll_set_freq),
CLKNODEMETHOD_END
};
DEFINE_CLASS_1(aw_pll_clknode, aw_pll_clknode_class, aw_pll_clknode_methods,
sizeof(struct aw_pll_sc), clknode_class);
static int
aw_pll_create(device_t dev, bus_addr_t paddr, struct clkdom *clkdom,
const char *pclkname, const char *clkname, int index)
{
enum aw_pll_type type;
struct clknode_init_def clkdef;
struct aw_pll_sc *sc;
struct clknode *clk;
int error;
type = ofw_bus_search_compatible(dev, compat_data)->ocd_data;
memset(&clkdef, 0, sizeof(clkdef));
clkdef.id = index;
clkdef.name = clkname;
if (pclkname != NULL) {
clkdef.parent_names = malloc(sizeof(char *), M_OFWPROP,
M_WAITOK);
clkdef.parent_names[0] = pclkname;
clkdef.parent_cnt = 1;
} else
clkdef.parent_cnt = 0;
if (aw_pll_func[type].init != NULL) {
error = aw_pll_func[type].init(device_get_parent(dev),
paddr, &clkdef);
if (error != 0) {
device_printf(dev, "clock %s init failed\n", clkname);
return (error);
}
}
clk = clknode_create(clkdom, &aw_pll_clknode_class, &clkdef);
if (clk == NULL) {
device_printf(dev, "cannot create clock node\n");
return (ENXIO);
}
sc = clknode_get_softc(clk);
sc->clkdev = device_get_parent(dev);
sc->reg = paddr;
sc->type = type;
sc->id = clkdef.id;
clknode_register(clkdom, clk);
free(__DECONST(char *, clkdef.parent_names), M_OFWPROP);
return (0);
}
static int
aw_pll_probe(device_t dev)
{
if (!ofw_bus_status_okay(dev))
return (ENXIO);
if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0)
return (ENXIO);
device_set_desc(dev, "Allwinner PLL Clock");
return (BUS_PROBE_DEFAULT);
}
static int
aw_pll_attach(device_t dev)
{
struct clkdom *clkdom;
const char **names;
int index, nout, error;
clk_t clk_parent;
uint32_t *indices;
bus_addr_t paddr;
bus_size_t psize;
phandle_t node;
node = ofw_bus_get_node(dev);
if (ofw_reg_to_paddr(node, 0, &paddr, &psize, NULL) != 0) {
device_printf(dev, "couldn't parse 'reg' property\n");
return (ENXIO);
}
clkdom = clkdom_create(dev);
nout = clk_parse_ofw_out_names(dev, node, &names, &indices);
if (nout == 0) {
device_printf(dev, "no clock outputs found\n");
error = ENOENT;
goto fail;
}
if (clk_get_by_ofw_index(dev, 0, &clk_parent) != 0)
clk_parent = NULL;
for (index = 0; index < nout; index++) {
error = aw_pll_create(dev, paddr, clkdom,
clk_parent ? clk_get_name(clk_parent) : NULL,
names[index], nout == 1 ? 1 : index);
if (error)
goto fail;
}
if (clkdom_finit(clkdom) != 0) {
device_printf(dev, "cannot finalize clkdom initialization\n");
error = ENXIO;
goto fail;
}
if (bootverbose)
clkdom_dump(clkdom);
return (0);
fail:
return (error);
}
static device_method_t aw_pll_methods[] = {
/* Device interface */
DEVMETHOD(device_probe, aw_pll_probe),
DEVMETHOD(device_attach, aw_pll_attach),
DEVMETHOD_END
};
static driver_t aw_pll_driver = {
"aw_pll",
aw_pll_methods,
0,
};
static devclass_t aw_pll_devclass;
EARLY_DRIVER_MODULE(aw_pll, simplebus, aw_pll_driver,
aw_pll_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE);
Index: user/ngie/bsnmp_cleanup/sys/arm/allwinner/clk/aw_usbclk.c
===================================================================
--- user/ngie/bsnmp_cleanup/sys/arm/allwinner/clk/aw_usbclk.c (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/arm/allwinner/clk/aw_usbclk.c (revision 299697)
@@ -1,259 +1,265 @@
/*-
* Copyright (c) 2016 Jared McNeill <jmcneill@invisible.ca>
* 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$
*/
/*
* Allwinner USB clocks
*/
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/bus.h>
#include <sys/rman.h>
#include <sys/kernel.h>
#include <sys/module.h>
#include <machine/bus.h>
#include <dev/ofw/ofw_bus.h>
#include <dev/ofw/ofw_bus_subr.h>
#include <dev/ofw/ofw_subr.h>
#include <dev/extres/clk/clk_gate.h>
#include <dev/extres/hwreset/hwreset.h>
#include "clkdev_if.h"
#include "hwreset_if.h"
#define A10_SCLK_GATING_USBPHY (1 << 8)
#define A10_SCLK_GATING_OHCI1 (1 << 7)
#define A10_SCLK_GATING_OHCI0 (1 << 6)
#define USBPHY2_RST (1 << 2)
#define USBPHY1_RST (1 << 1)
#define USBPHY0_RST (1 << 0)
enum aw_usbclk_type {
AW_A10_USBCLK = 1,
AW_A31_USBCLK,
AW_A83T_USBCLK,
+ AW_H3_USBCLK,
};
static struct ofw_compat_data compat_data[] = {
{ "allwinner,sun4i-a10-usb-clk", AW_A10_USBCLK },
{ "allwinner,sun6i-a31-usb-clk", AW_A31_USBCLK },
{ "allwinner,sun8i-a83t-usb-clk", AW_A83T_USBCLK },
+ { "allwinner,sun8i-h3-usb-clk", AW_H3_USBCLK },
{ NULL, 0 }
};
/* Clock indices for A10, as there is no clock-indices property in the DT */
static uint32_t aw_usbclk_indices_a10[] = { 6, 7, 8 };
+/* Clock indices for H3, as there is no clock-indices property in the DT */
+static uint32_t aw_usbclk_indices_h3[] = { 8, 9, 10, 11, 16, 17, 18, 19 };
struct aw_usbclk_softc {
bus_addr_t reg;
};
static int
aw_usbclk_hwreset_assert(device_t dev, intptr_t id, bool value)
{
struct aw_usbclk_softc *sc;
uint32_t mask;
device_t pdev;
int error;
sc = device_get_softc(dev);
pdev = device_get_parent(dev);
mask = USBPHY0_RST << id;
CLKDEV_DEVICE_LOCK(pdev);
error = CLKDEV_MODIFY_4(pdev, sc->reg, mask, value ? 0 : mask);
CLKDEV_DEVICE_UNLOCK(pdev);
return (error);
}
static int
aw_usbclk_hwreset_is_asserted(device_t dev, intptr_t id, bool *value)
{
struct aw_usbclk_softc *sc;
uint32_t mask, val;
device_t pdev;
int error;
sc = device_get_softc(dev);
pdev = device_get_parent(dev);
mask = USBPHY0_RST << id;
CLKDEV_DEVICE_LOCK(pdev);
error = CLKDEV_READ_4(pdev, sc->reg, &val);
CLKDEV_DEVICE_UNLOCK(pdev);
if (error)
return (error);
*value = (val & mask) != 0 ? false : true;
return (0);
}
static int
aw_usbclk_create(device_t dev, bus_addr_t paddr, struct clkdom *clkdom,
const char *pclkname, const char *clkname, int index)
{
const char *parent_names[1] = { pclkname };
struct clk_gate_def def;
memset(&def, 0, sizeof(def));
def.clkdef.id = index;
def.clkdef.name = clkname;
def.clkdef.parent_names = parent_names;
def.clkdef.parent_cnt = 1;
def.offset = paddr;
def.shift = index;
def.mask = 1;
def.on_value = 1;
def.off_value = 0;
return (clknode_gate_register(clkdom, &def));
}
static int
aw_usbclk_probe(device_t dev)
{
if (!ofw_bus_status_okay(dev))
return (ENXIO);
if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0)
return (ENXIO);
device_set_desc(dev, "Allwinner USB Clocks");
return (BUS_PROBE_DEFAULT);
}
static int
aw_usbclk_attach(device_t dev)
{
struct aw_usbclk_softc *sc;
struct clkdom *clkdom;
const char **names;
const char *pname;
int index, nout, error;
enum aw_usbclk_type type;
uint32_t *indices;
clk_t clk_parent, clk_parent_pll;
bus_size_t psize;
phandle_t node;
sc = device_get_softc(dev);
node = ofw_bus_get_node(dev);
indices = NULL;
type = ofw_bus_search_compatible(dev, compat_data)->ocd_data;
if (ofw_reg_to_paddr(node, 0, &sc->reg, &psize, NULL) != 0) {
device_printf(dev, "cannot parse 'reg' property\n");
return (ENXIO);
}
clkdom = clkdom_create(dev);
nout = clk_parse_ofw_out_names(dev, node, &names, &indices);
if (nout == 0) {
device_printf(dev, "no clock outputs found\n");
error = ENOENT;
goto fail;
}
if (indices == NULL && type == AW_A10_USBCLK)
indices = aw_usbclk_indices_a10;
+ else if (indices == NULL && type == AW_H3_USBCLK)
+ indices = aw_usbclk_indices_h3;
error = clk_get_by_ofw_index(dev, 0, &clk_parent);
if (error != 0) {
device_printf(dev, "cannot parse clock parent\n");
return (ENXIO);
}
if (type == AW_A83T_USBCLK) {
error = clk_get_by_ofw_index(dev, 1, &clk_parent_pll);
if (error != 0) {
device_printf(dev, "cannot parse pll clock parent\n");
return (ENXIO);
}
}
for (index = 0; index < nout; index++) {
if (strcmp(names[index], "usb_hsic_pll") == 0)
pname = clk_get_name(clk_parent_pll);
else
pname = clk_get_name(clk_parent);
error = aw_usbclk_create(dev, sc->reg, clkdom, pname,
names[index], indices != NULL ? indices[index] : index);
if (error)
goto fail;
}
if (clkdom_finit(clkdom) != 0) {
device_printf(dev, "cannot finalize clkdom initialization\n");
error = ENXIO;
goto fail;
}
if (bootverbose)
clkdom_dump(clkdom);
hwreset_register_ofw_provider(dev);
return (0);
fail:
return (error);
}
static device_method_t aw_usbclk_methods[] = {
/* Device interface */
DEVMETHOD(device_probe, aw_usbclk_probe),
DEVMETHOD(device_attach, aw_usbclk_attach),
/* Reset interface */
DEVMETHOD(hwreset_assert, aw_usbclk_hwreset_assert),
DEVMETHOD(hwreset_is_asserted, aw_usbclk_hwreset_is_asserted),
DEVMETHOD_END
};
static driver_t aw_usbclk_driver = {
"aw_usbclk",
aw_usbclk_methods,
sizeof(struct aw_usbclk_softc)
};
static devclass_t aw_usbclk_devclass;
EARLY_DRIVER_MODULE(aw_usbclk, simplebus, aw_usbclk_driver,
aw_usbclk_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE);
Index: user/ngie/bsnmp_cleanup/sys/arm/allwinner/h3/files.h3
===================================================================
--- user/ngie/bsnmp_cleanup/sys/arm/allwinner/h3/files.h3 (nonexistent)
+++ user/ngie/bsnmp_cleanup/sys/arm/allwinner/h3/files.h3 (revision 299697)
@@ -0,0 +1,4 @@
+# $FreeBSD$
+
+arm/allwinner/h3/h3_padconf.c standard
+arm/allwinner/h3/h3_r_padconf.c standard
Property changes on: user/ngie/bsnmp_cleanup/sys/arm/allwinner/h3/files.h3
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+FreeBSD=%H
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: user/ngie/bsnmp_cleanup/sys/arm/allwinner/h3/h3_padconf.c
===================================================================
--- user/ngie/bsnmp_cleanup/sys/arm/allwinner/h3/h3_padconf.c (nonexistent)
+++ user/ngie/bsnmp_cleanup/sys/arm/allwinner/h3/h3_padconf.c (revision 299697)
@@ -0,0 +1,147 @@
+/*-
+ * Copyright (c) 2016 Emmanuel Vadot <manu@freebsd.org>
+ * 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/systm.h>
+#include <sys/kernel.h>
+#include <sys/types.h>
+
+#include <arm/allwinner/allwinner_pinctrl.h>
+
+#ifdef SOC_ALLWINNER_H3
+
+const static struct allwinner_pins h3_pins[] = {
+ {"PA0", 0, 0, {"gpio_in", "gpio_out", "uart2", "jtag", NULL, NULL, "eint", NULL}},
+ {"PA1", 0, 1, {"gpio_in", "gpio_out", "uart2", "jtag", NULL, NULL, "eint", NULL}},
+ {"PA2", 0, 2, {"gpio_in", "gpio_out", "uart2", "jtag", NULL, NULL, "eint", NULL}},
+ {"PA3", 0, 3, {"gpio_in", "gpio_out", "uart2", "jtag", NULL, NULL, "eint", NULL}},
+ {"PA4", 0, 4, {"gpio_in", "gpio_out", "uart0", NULL, NULL, NULL, "eint", NULL}},
+ {"PA5", 0, 5, {"gpio_in", "gpio_out", "uart0", "pwm0", NULL, NULL, "eint", NULL}},
+ {"PA6", 0, 6, {"gpio_in", "gpio_out", "sim", NULL, NULL, NULL, "eint", NULL}},
+ {"PA7", 0, 7, {"gpio_in", "gpio_out", "sim", NULL, NULL, NULL, "eint", NULL}},
+ {"PA8", 0, 8, {"gpio_in", "gpio_out", "sim", NULL, NULL, NULL, "eint", NULL}},
+ {"PA9", 0, 9, {"gpio_in", "gpio_out", "sim", NULL, NULL, NULL, "eint", NULL}},
+ {"PA10", 0, 10, {"gpio_in", "gpio_out", "sim", NULL, NULL, NULL, "eint", NULL}},
+ {"PA11", 0, 11, {"gpio_in", "gpio_out", "i2c0", "di", NULL, NULL, "eint", NULL}},
+ {"PA12", 0, 12, {"gpio_in", "gpio_out", "i2c0", "di", NULL, NULL, "eint", NULL}},
+ {"PA13", 0, 13, {"gpio_in", "gpio_out", "spi1", "uart3", NULL, NULL, "eint", NULL}},
+ {"PA14", 0, 14, {"gpio_in", "gpio_out", "spi1", "uart3", NULL, NULL, "eint", NULL}},
+ {"PA15", 0, 15, {"gpio_in", "gpio_out", "spi1", "uart3", NULL, NULL, "eint", NULL}},
+ {"PA16", 0, 16, {"gpio_in", "gpio_out", "spi1", "uart3", NULL, NULL, "eint", NULL}},
+ {"PA17", 0, 17, {"gpio_in", "gpio_out", "spdif", NULL, NULL, NULL, "eint", NULL}},
+ {"PA18", 0, 18, {"gpio_in", "gpio_out", "i2s0", "i2c1", NULL, NULL, "eint", NULL}},
+ {"PA19", 0, 19, {"gpio_in", "gpio_out", "i2s0", "i2c1", NULL, NULL, "eint", NULL}},
+ {"PA20", 0, 20, {"gpio_in", "gpio_out", "i2s0", "sim", NULL, NULL, "eint", NULL}},
+ {"PA21", 0, 21, {"gpio_in", "gpio_out", "i2s0", "sim", NULL, NULL, "eint", NULL}},
+
+ {"PC0", 2, 0, {"gpio_in", "gpio_out", "nand", "spi0", NULL, NULL, NULL, NULL}},
+ {"PC1", 2, 1, {"gpio_in", "gpio_out", "nand", "spi0", NULL, NULL, NULL, NULL}},
+ {"PC2", 2, 2, {"gpio_in", "gpio_out", "nand", "spi0", NULL, NULL, NULL, NULL}},
+ {"PC3", 2, 3, {"gpio_in", "gpio_out", "nand", "spi0", NULL, NULL, NULL, NULL}},
+ {"PC4", 2, 4, {"gpio_in", "gpio_out", "nand", NULL, NULL, NULL, NULL, NULL}},
+ {"PC5", 2, 5, {"gpio_in", "gpio_out", "nand", "mmc2", NULL, NULL, NULL, NULL}},
+ {"PC6", 2, 6, {"gpio_in", "gpio_out", "nand", "mmc2", NULL, NULL, NULL, NULL}},
+ {"PC7", 2, 7, {"gpio_in", "gpio_out", "nand", NULL, NULL, NULL, NULL, NULL}},
+ {"PC8", 2, 8, {"gpio_in", "gpio_out", "nand", "mmc2", NULL, NULL, NULL, NULL}},
+ {"PC9", 2, 9, {"gpio_in", "gpio_out", "nand", "mmc2", NULL, NULL, NULL, NULL}},
+ {"PC10", 2, 10, {"gpio_in", "gpio_out", "nand", "mmc2", NULL, NULL, NULL, NULL}},
+ {"PC11", 2, 11, {"gpio_in", "gpio_out", "nand", "mmc2", NULL, NULL, NULL, NULL}},
+ {"PC12", 2, 12, {"gpio_in", "gpio_out", "nand", "mmc2", NULL, NULL, NULL, NULL}},
+ {"PC13", 2, 13, {"gpio_in", "gpio_out", "nand", "mmc2", NULL, NULL, NULL, NULL}},
+ {"PC14", 2, 14, {"gpio_in", "gpio_out", "nand", "mmc2", NULL, NULL, NULL, NULL}},
+ {"PC15", 2, 15, {"gpio_in", "gpio_out", "nand", "mmc2", NULL, NULL, NULL, NULL}},
+ {"PC16", 2, 16, {"gpio_in", "gpio_out", "nand", "mmc2", NULL, NULL, NULL, NULL}},
+
+ {"PD0", 3, 0, {"gpio_in", "gpio_out", "emac", NULL, NULL, NULL, NULL, NULL}},
+ {"PD1", 3, 1, {"gpio_in", "gpio_out", "emac", NULL, NULL, NULL, NULL, NULL}},
+ {"PD2", 3, 2, {"gpio_in", "gpio_out", "emac", NULL, NULL, NULL, NULL, NULL}},
+ {"PD3", 3, 3, {"gpio_in", "gpio_out", "emac", NULL, NULL, NULL, NULL, NULL}},
+ {"PD4", 3, 4, {"gpio_in", "gpio_out", "emac", NULL, NULL, NULL, NULL, NULL}},
+ {"PD5", 3, 5, {"gpio_in", "gpio_out", "emac", NULL, NULL, NULL, NULL, NULL}},
+ {"PD6", 3, 6, {"gpio_in", "gpio_out", "emac", NULL, NULL, NULL, NULL, NULL}},
+ {"PD7", 3, 7, {"gpio_in", "gpio_out", "emac", NULL, NULL, NULL, NULL, NULL}},
+ {"PD8", 3, 8, {"gpio_in", "gpio_out", "emac", NULL, NULL, NULL, NULL, NULL}},
+ {"PD9", 3, 9, {"gpio_in", "gpio_out", "emac", NULL, NULL, NULL, NULL, NULL}},
+ {"PD10", 3, 10, {"gpio_in", "gpio_out", "emac", NULL, NULL, NULL, NULL, NULL}},
+ {"PD11", 3, 11, {"gpio_in", "gpio_out", "emac", NULL, NULL, NULL, NULL, NULL}},
+ {"PD12", 3, 12, {"gpio_in", "gpio_out", "emac", NULL, NULL, NULL, NULL, NULL}},
+ {"PD13", 3, 13, {"gpio_in", "gpio_out", "emac", NULL, NULL, NULL, NULL, NULL}},
+ {"PD14", 3, 14, {"gpio_in", "gpio_out", "emac", NULL, NULL, NULL, NULL, NULL}},
+ {"PD15", 3, 15, {"gpio_in", "gpio_out", "emac", NULL, NULL, NULL, NULL, NULL}},
+ {"PD16", 3, 16, {"gpio_in", "gpio_out", "emac", NULL, NULL, NULL, NULL, NULL}},
+ {"PD17", 3, 17, {"gpio_in", "gpio_out", "emac", NULL, NULL, NULL, NULL, NULL}},
+
+ {"PE0", 4, 0, {"gpio_in", "gpio_out", "csi", "ts", NULL, NULL, NULL, NULL}},
+ {"PE1", 4, 1, {"gpio_in", "gpio_out", "csi", "ts", NULL, NULL, NULL, NULL}},
+ {"PE2", 4, 2, {"gpio_in", "gpio_out", "csi", "ts", NULL, NULL, NULL, NULL}},
+ {"PE3", 4, 3, {"gpio_in", "gpio_out", "csi", "ts", NULL, NULL, NULL, NULL}},
+ {"PE4", 4, 4, {"gpio_in", "gpio_out", "csi", "ts", NULL, NULL, NULL, NULL}},
+ {"PE5", 4, 5, {"gpio_in", "gpio_out", "csi", "ts", NULL, NULL, NULL, NULL}},
+ {"PE6", 4, 6, {"gpio_in", "gpio_out", "csi", "ts", NULL, NULL, NULL, NULL}},
+ {"PE7", 4, 7, {"gpio_in", "gpio_out", "csi", "ts", NULL, NULL, NULL, NULL}},
+ {"PE8", 4, 8, {"gpio_in", "gpio_out", "csi", "ts", NULL, NULL, NULL, NULL}},
+ {"PE9", 4, 9, {"gpio_in", "gpio_out", "csi", "ts", NULL, NULL, NULL, NULL}},
+ {"PE10", 4, 10, {"gpio_in", "gpio_out", "csi", "ts", NULL, NULL, NULL, NULL}},
+ {"PE11", 4, 11, {"gpio_in", "gpio_out", "csi", "ts", NULL, NULL, NULL, NULL}},
+ {"PE12", 4, 12, {"gpio_in", "gpio_out", "csi", "i2c2", NULL, NULL, NULL, NULL}},
+ {"PE13", 4, 13, {"gpio_in", "gpio_out", "csi", "i2c2", NULL, NULL, NULL, NULL}},
+ {"PE14", 4, 14, {"gpio_in", "gpio_out", NULL, NULL, NULL, NULL, NULL, NULL}},
+ {"PE15", 4, 15, {"gpio_in", "gpio_out", NULL, NULL, NULL, NULL, NULL, NULL}},
+
+ {"PF0", 5, 0, {"gpio_in", "gpio_out", "mmc0", "jtag", NULL, NULL, NULL, NULL}},
+ {"PF1", 5, 1, {"gpio_in", "gpio_out", "mmc0", "jtag", NULL, NULL, NULL, NULL}},
+ {"PF2", 5, 2, {"gpio_in", "gpio_out", "mmc0", "uart0", NULL, NULL, NULL, NULL}},
+ {"PF3", 5, 3, {"gpio_in", "gpio_out", "mmc0", "jtag", NULL, NULL, NULL, NULL}},
+ {"PF4", 5, 4, {"gpio_in", "gpio_out", "mmc0", "uart0", NULL, NULL, NULL, NULL}},
+ {"PF5", 5, 5, {"gpio_in", "gpio_out", "mmc0", "jtag", NULL, NULL, NULL, NULL}},
+ {"PF6", 5, 6, {"gpio_in", "gpio_out", NULL, NULL, NULL, NULL, NULL, NULL}},
+
+ {"PG0", 6, 0, {"gpio_in", "gpio_out", "mmc1", NULL, NULL, NULL, NULL, "eint"}},
+ {"PG1", 6, 1, {"gpio_in", "gpio_out", "mmc1", NULL, NULL, NULL, NULL, "eint"}},
+ {"PG2", 6, 2, {"gpio_in", "gpio_out", "mmc1", NULL, NULL, NULL, NULL, "eint"}},
+ {"PG3", 6, 3, {"gpio_in", "gpio_out", "mmc1", NULL, NULL, NULL, NULL, "eint"}},
+ {"PG4", 6, 4, {"gpio_in", "gpio_out", "mmc1", NULL, NULL, NULL, NULL, "eint"}},
+ {"PG5", 6, 5, {"gpio_in", "gpio_out", "mmc1", NULL, NULL, NULL, NULL, "eint"}},
+ {"PG6", 6, 6, {"gpio_in", "gpio_out", "uart1", NULL, NULL, NULL, NULL, "eint"}},
+ {"PG7", 6, 7, {"gpio_in", "gpio_out", "uart1", NULL, NULL, NULL, NULL, "eint"}},
+ {"PG8", 6, 8, {"gpio_in", "gpio_out", "uart1", NULL, NULL, NULL, NULL, "eint"}},
+ {"PG9", 6, 9, {"gpio_in", "gpio_out", "uart1", NULL, NULL, NULL, NULL, "eint"}},
+ {"PG10", 6, 10, {"gpio_in", "gpio_out", "i2s1", NULL, NULL, NULL, NULL, "eint"}},
+ {"PG11", 6, 11, {"gpio_in", "gpio_out", "i2s1", NULL, NULL, NULL, NULL, "eint"}},
+ {"PG12", 6, 11, {"gpio_in", "gpio_out", "i2s1", NULL, NULL, NULL, NULL, "eint"}},
+ {"PG13", 6, 11, {"gpio_in", "gpio_out", "i2s1", NULL, NULL, NULL, NULL, "eint"}},
+};
+
+const struct allwinner_padconf h3_padconf = {
+ .npins = nitems(h3_pins),
+ .pins = h3_pins,
+};
+
+#endif /* SOC_ALLWINNER_H3 */
Property changes on: user/ngie/bsnmp_cleanup/sys/arm/allwinner/h3/h3_padconf.c
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+FreeBSD=%H
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: user/ngie/bsnmp_cleanup/sys/arm/allwinner/h3/h3_r_padconf.c
===================================================================
--- user/ngie/bsnmp_cleanup/sys/arm/allwinner/h3/h3_r_padconf.c (nonexistent)
+++ user/ngie/bsnmp_cleanup/sys/arm/allwinner/h3/h3_r_padconf.c (revision 299697)
@@ -0,0 +1,60 @@
+/*-
+ * Copyright (c) 2016 Emmanuel Vadot <manu@freebsd.org>
+ * 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/systm.h>
+#include <sys/kernel.h>
+#include <sys/types.h>
+
+#include <arm/allwinner/allwinner_pinctrl.h>
+
+#ifdef SOC_ALLWINNER_H3
+
+const static struct allwinner_pins h3_r_pins[] = {
+ {"PL0", 0, 0, {"gpio_in", "gpio_out", "s_twi", NULL, NULL, NULL, NULL, "eint"}},
+ {"PL1", 0, 1, {"gpio_in", "gpio_out", "s_twi", NULL, NULL, NULL, NULL, "eint"}},
+ {"PL2", 0, 2, {"gpio_in", "gpio_out", "s_uart", NULL, NULL, NULL, NULL, "eint"}},
+ {"PL3", 0, 3, {"gpio_in", "gpio_out", "s_uart", NULL, NULL, NULL, NULL, "eint"}},
+ {"PL4", 0, 4, {"gpio_in", "gpio_out", "s_jtag", NULL, NULL, NULL, NULL, "eint"}},
+ {"PL5", 0, 5, {"gpio_in", "gpio_out", "s_jtag", NULL, NULL, NULL, NULL, "eint"}},
+ {"PL6", 0, 6, {"gpio_in", "gpio_out", "s_jtag", NULL, NULL, NULL, NULL, "eint"}},
+ {"PL7", 0, 7, {"gpio_in", "gpio_out", "s_jtag", NULL, NULL, NULL, NULL, "eint"}},
+ {"PL8", 0, 8, {"gpio_in", "gpio_out", NULL, NULL, NULL, NULL, NULL, "eint"}},
+ {"PL9", 0, 9, {"gpio_in", "gpio_out", NULL, NULL, NULL, NULL, NULL, "eint"}},
+ {"PL10", 0, 10, {"gpio_in", "gpio_out", "s_pwm", NULL, NULL, NULL, NULL, "eint"}},
+ {"PL11", 0, 11, {"gpio_in", "gpio_out", "s_cir_rx", NULL, NULL, NULL, NULL, "eint"}},
+};
+
+const struct allwinner_padconf h3_r_padconf = {
+ .npins = nitems(h3_r_pins),
+ .pins = h3_r_pins,
+};
+
+#endif /* SOC_ALLWINNER_H3 */
Property changes on: user/ngie/bsnmp_cleanup/sys/arm/allwinner/h3/h3_r_padconf.c
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+FreeBSD=%H
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: user/ngie/bsnmp_cleanup/sys/arm/allwinner/h3/std.h3
===================================================================
--- user/ngie/bsnmp_cleanup/sys/arm/allwinner/h3/std.h3 (nonexistent)
+++ user/ngie/bsnmp_cleanup/sys/arm/allwinner/h3/std.h3 (revision 299697)
@@ -0,0 +1,15 @@
+# Allwinner H3 common options
+#$FreeBSD$
+
+cpu CPU_CORTEXA
+machine arm armv6
+makeoptions CONF_CFLAGS="-march=armv7a"
+
+makeoptions KERNVIRTADDR=0xc0200000
+options KERNVIRTADDR=0xc0200000
+
+options IPI_IRQ_START=0
+options IPI_IRQ_END=15
+
+files "../allwinner/files.allwinner"
+files "../allwinner/h3/files.h3"
Property changes on: user/ngie/bsnmp_cleanup/sys/arm/allwinner/h3/std.h3
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+FreeBSD=%H
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: user/ngie/bsnmp_cleanup/sys/arm/allwinner/std.allwinner
===================================================================
--- user/ngie/bsnmp_cleanup/sys/arm/allwinner/std.allwinner (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/arm/allwinner/std.allwinner (revision 299697)
@@ -1,17 +1,18 @@
# Allwinner common options
#$FreeBSD$
cpu CPU_CORTEXA
machine arm armv6
makeoptions CONF_CFLAGS="-march=armv7a"
makeoptions KERNVIRTADDR=0xc0200000
options KERNVIRTADDR=0xc0200000
options IPI_IRQ_START=0
options IPI_IRQ_END=15
files "../allwinner/files.allwinner"
files "../allwinner/a20/files.a20"
files "../allwinner/a31/files.a31"
files "../allwinner/a83t/files.a83t"
+files "../allwinner/h3/files.h3"
Index: user/ngie/bsnmp_cleanup/sys/arm/conf/ALLWINNER
===================================================================
--- user/ngie/bsnmp_cleanup/sys/arm/conf/ALLWINNER (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/arm/conf/ALLWINNER (revision 299697)
@@ -1,146 +1,147 @@
#
# ALLWINNER -- Custom configuration for the Allwinner A20 and A31 ARM SoC
#
# For more information on this file, please read the config(5) manual page,
# and/or the handbook section on Kernel Configuration Files:
#
# http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-config.html
#
# The handbook is also available locally in /usr/share/doc/handbook
# if you've installed the doc distribution, otherwise always see the
# FreeBSD World Wide Web server (http://www.FreeBSD.org/) for the
# latest information.
#
# An exhaustive list of options and more detailed explanations of the
# device lines is also present in the ../../conf/NOTES and NOTES files.
# If you are in doubt as to the purpose or necessity of a line, check first
# in NOTES.
#
# $FreeBSD$
ident ALLWINNER
include "std.armv6"
include "../allwinner/std.allwinner"
options INTRNG
options SOC_ALLWINNER_A20
options SOC_ALLWINNER_A31
options SOC_ALLWINNER_A31S
options SOC_ALLWINNER_A83T
+options SOC_ALLWINNER_H3
options HZ=100
options SCHED_ULE # ULE scheduler
options SMP # Enable multiple cores
options PLATFORM
options PLATFORM_SMP
options MULTIDELAY
# Debugging for use in -current
makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols
options ALT_BREAK_TO_DEBUGGER
#options VERBOSE_SYSINIT # Enable verbose sysinit messages
options KDB # Enable kernel debugger support
# For minimum debugger support (stable branch) use:
#options KDB_TRACE # Print a stack trace for a panic
# For full debugger support use this instead:
options DDB # Enable the kernel debugger
options INVARIANTS # Enable calls of extra sanity checking
options INVARIANT_SUPPORT # Extra sanity checks of internal structures, required by INVARIANTS
options WITNESS # Enable checks to detect deadlocks and cycles
options WITNESS_SKIPSPIN # Don't run witness on spinlocks for speed
#options DIAGNOSTIC
# NFS root from boopt/dhcp
#options BOOTP
#options BOOTP_NFSROOT
#options BOOTP_COMPAT
#options BOOTP_NFSV3
#options BOOTP_WIRED_TO=dwc0
# EXT_RESOURCES pseudo devices
options EXT_RESOURCES
device clk
device phy
device hwreset
device regulator
# Interrupt controller
device gic
# ARM Generic Timer
device generic_timer
# MMC/SD/SDIO Card slot support
device mmc # mmc/sd bus
device mmcsd # mmc/sd flash cards
# ATA controllers
device ahci # AHCI-compatible SATA controllers
#device ata # Legacy ATA/SATA controllers
# Console and misc
device uart
device uart_snps
device pty
device snp
device md
device random # Entropy device
# I2C support
device iicbus
device iic
device twsi
device axp209 # AXP209 Power Management Unit
# GPIO
device gpio
device gpioled
device scbus # SCSI bus (required for ATA/SCSI)
device da # Direct Access (disks)
device pass # Passthrough device (direct ATA/SCSI access)
# USB support
options USB_HOST_ALIGN=64 # Align usb buffers to cache line size.
device usb
options USB_DEBUG
#options USB_REQ_DEBUG
#options USB_VERBOSE
#device uhci
#device ohci
device ehci
device umass
# Ethernet
device loop
device ether
device mii
device bpf
#device emac # 10/100 integrated EMAC controller
device dwc # 10/100/1000 integrated GMAC controller
device awg # 10/100/1000 integrated EMAC controller
# USB ethernet support, requires miibus
device miibus
# Sound support
device sound
# Framebuffer support
device vt
device kbdmux
device ums
device ukbd
device videomode
device hdmi
# Pinmux
device fdt_pinctrl
# Flattened Device Tree
options FDT # Configure using FDT/DTB data
makeoptions MODULES_EXTRA=dtb/allwinner
Index: user/ngie/bsnmp_cleanup/sys/arm64/arm64/busdma_bounce.c
===================================================================
--- user/ngie/bsnmp_cleanup/sys/arm64/arm64/busdma_bounce.c (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/arm64/arm64/busdma_bounce.c (revision 299697)
@@ -1,1137 +1,1312 @@
/*-
* Copyright (c) 1997, 1998 Justin T. Gibbs.
- * Copyright (c) 2015 The FreeBSD Foundation
+ * Copyright (c) 2015-2016 The FreeBSD Foundation
* All rights reserved.
*
+ * Portions of this software were developed by Andrew Turner
+ * under sponsorship of the FreeBSD Foundation.
+ *
* Portions of this software were developed by Semihalf
* under sponsorship of the FreeBSD Foundation.
*
* 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,
* without modification, immediately at the beginning of the file.
* 2. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* 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/systm.h>
#include <sys/malloc.h>
#include <sys/bus.h>
#include <sys/interrupt.h>
#include <sys/kernel.h>
#include <sys/ktr.h>
#include <sys/lock.h>
#include <sys/proc.h>
#include <sys/memdesc.h>
#include <sys/mutex.h>
#include <sys/sysctl.h>
#include <sys/uio.h>
#include <vm/vm.h>
#include <vm/vm_extern.h>
#include <vm/vm_kern.h>
#include <vm/vm_page.h>
#include <vm/vm_map.h>
#include <machine/atomic.h>
#include <machine/bus.h>
#include <machine/md_var.h>
#include <arm64/include/bus_dma_impl.h>
#define MAX_BPAGES 4096
enum {
BF_COULD_BOUNCE = 0x01,
BF_MIN_ALLOC_COMP = 0x02,
BF_KMEM_ALLOC = 0x04,
+ BF_COHERENT = 0x10,
};
struct bounce_zone;
struct bus_dma_tag {
struct bus_dma_tag_common common;
int map_count;
int bounce_flags;
bus_dma_segment_t *segments;
struct bounce_zone *bounce_zone;
};
struct bounce_page {
vm_offset_t vaddr; /* kva of bounce buffer */
bus_addr_t busaddr; /* Physical address */
vm_offset_t datavaddr; /* kva of client data */
vm_page_t datapage; /* physical page of client data */
vm_offset_t dataoffs; /* page offset of client data */
bus_size_t datacount; /* client data count */
STAILQ_ENTRY(bounce_page) links;
};
int busdma_swi_pending;
struct bounce_zone {
STAILQ_ENTRY(bounce_zone) links;
STAILQ_HEAD(bp_list, bounce_page) bounce_page_list;
int total_bpages;
int free_bpages;
int reserved_bpages;
int active_bpages;
int total_bounced;
int total_deferred;
int map_count;
bus_size_t alignment;
bus_addr_t lowaddr;
char zoneid[8];
char lowaddrid[20];
struct sysctl_ctx_list sysctl_tree;
struct sysctl_oid *sysctl_tree_top;
};
static struct mtx bounce_lock;
static int total_bpages;
static int busdma_zonecount;
static STAILQ_HEAD(, bounce_zone) bounce_zone_list;
static SYSCTL_NODE(_hw, OID_AUTO, busdma, CTLFLAG_RD, 0, "Busdma parameters");
SYSCTL_INT(_hw_busdma, OID_AUTO, total_bpages, CTLFLAG_RD, &total_bpages, 0,
"Total bounce pages");
+struct sync_list {
+ vm_offset_t vaddr; /* kva of client data */
+ bus_addr_t paddr; /* physical address */
+ vm_page_t pages; /* starting page of client data */
+ bus_size_t datacount; /* client data count */
+};
+
struct bus_dmamap {
struct bp_list bpages;
int pagesneeded;
int pagesreserved;
bus_dma_tag_t dmat;
struct memdesc mem;
bus_dmamap_callback_t *callback;
void *callback_arg;
STAILQ_ENTRY(bus_dmamap) links;
u_int flags;
#define DMAMAP_COULD_BOUNCE (1 << 0)
#define DMAMAP_FROM_DMAMEM (1 << 1)
+ int sync_count;
+ struct sync_list slist[];
};
static STAILQ_HEAD(, bus_dmamap) bounce_map_waitinglist;
static STAILQ_HEAD(, bus_dmamap) bounce_map_callbacklist;
static void init_bounce_pages(void *dummy);
static int alloc_bounce_zone(bus_dma_tag_t dmat);
static int alloc_bounce_pages(bus_dma_tag_t dmat, u_int numpages);
static int reserve_bounce_pages(bus_dma_tag_t dmat, bus_dmamap_t map,
int commit);
static bus_addr_t add_bounce_page(bus_dma_tag_t dmat, bus_dmamap_t map,
vm_offset_t vaddr, bus_addr_t addr, bus_size_t size);
static void free_bounce_page(bus_dma_tag_t dmat, struct bounce_page *bpage);
int run_filter(bus_dma_tag_t dmat, bus_addr_t paddr);
static void _bus_dmamap_count_pages(bus_dma_tag_t dmat, bus_dmamap_t map,
pmap_t pmap, void *buf, bus_size_t buflen, int flags);
static void _bus_dmamap_count_phys(bus_dma_tag_t dmat, bus_dmamap_t map,
vm_paddr_t buf, bus_size_t buflen, int flags);
static int _bus_dmamap_reserve_pages(bus_dma_tag_t dmat, bus_dmamap_t map,
int flags);
/*
* Allocate a device specific dma_tag.
*/
static int
bounce_bus_dma_tag_create(bus_dma_tag_t parent, bus_size_t alignment,
bus_addr_t boundary, bus_addr_t lowaddr, bus_addr_t highaddr,
bus_dma_filter_t *filter, void *filterarg, bus_size_t maxsize,
int nsegments, bus_size_t maxsegsz, int flags, bus_dma_lock_t *lockfunc,
void *lockfuncarg, bus_dma_tag_t *dmat)
{
bus_dma_tag_t newtag;
int error;
*dmat = NULL;
error = common_bus_dma_tag_create(parent != NULL ? &parent->common :
NULL, alignment, boundary, lowaddr, highaddr, filter, filterarg,
maxsize, nsegments, maxsegsz, flags, lockfunc, lockfuncarg,
sizeof (struct bus_dma_tag), (void **)&newtag);
if (error != 0)
return (error);
newtag->common.impl = &bus_dma_bounce_impl;
newtag->map_count = 0;
newtag->segments = NULL;
- if (parent != NULL && ((newtag->common.filter != NULL) ||
- ((parent->bounce_flags & BF_COULD_BOUNCE) != 0)))
- newtag->bounce_flags |= BF_COULD_BOUNCE;
+#ifdef notyet
+ if ((flags & BUS_DMA_COHERENT) != 0)
+ newtag->bounce_flags |= BF_COHERENT;
+#endif
+ if (parent != NULL) {
+ if ((newtag->common.filter != NULL ||
+ (parent->bounce_flags & BF_COULD_BOUNCE) != 0))
+ newtag->bounce_flags |= BF_COULD_BOUNCE;
+
+ /* Copy some flags from the parent */
+ newtag->bounce_flags |= parent->bounce_flags & BF_COHERENT;
+ }
+
if (newtag->common.lowaddr < ptoa((vm_paddr_t)Maxmem) ||
newtag->common.alignment > 1)
newtag->bounce_flags |= BF_COULD_BOUNCE;
if (((newtag->bounce_flags & BF_COULD_BOUNCE) != 0) &&
(flags & BUS_DMA_ALLOCNOW) != 0) {
struct bounce_zone *bz;
/* Must bounce */
if ((error = alloc_bounce_zone(newtag)) != 0) {
free(newtag, M_DEVBUF);
return (error);
}
bz = newtag->bounce_zone;
if (ptoa(bz->total_bpages) < maxsize) {
int pages;
pages = atop(maxsize) - bz->total_bpages;
/* Add pages to our bounce pool */
if (alloc_bounce_pages(newtag, pages) < pages)
error = ENOMEM;
}
/* Performed initial allocation */
newtag->bounce_flags |= BF_MIN_ALLOC_COMP;
} else
error = 0;
if (error != 0)
free(newtag, M_DEVBUF);
else
*dmat = newtag;
CTR4(KTR_BUSDMA, "%s returned tag %p tag flags 0x%x error %d",
__func__, newtag, (newtag != NULL ? newtag->common.flags : 0),
error);
return (error);
}
static int
bounce_bus_dma_tag_destroy(bus_dma_tag_t dmat)
{
bus_dma_tag_t dmat_copy, parent;
int error;
error = 0;
dmat_copy = dmat;
if (dmat != NULL) {
if (dmat->map_count != 0) {
error = EBUSY;
goto out;
}
while (dmat != NULL) {
parent = (bus_dma_tag_t)dmat->common.parent;
atomic_subtract_int(&dmat->common.ref_count, 1);
if (dmat->common.ref_count == 0) {
if (dmat->segments != NULL)
free(dmat->segments, M_DEVBUF);
free(dmat, M_DEVBUF);
/*
* Last reference count, so
* release our reference
* count on our parent.
*/
dmat = parent;
} else
dmat = NULL;
}
}
out:
CTR3(KTR_BUSDMA, "%s tag %p error %d", __func__, dmat_copy, error);
return (error);
}
static bus_dmamap_t
-alloc_dmamap(int flags)
+alloc_dmamap(bus_dma_tag_t dmat, int flags)
{
+ u_long mapsize;
bus_dmamap_t map;
- map = malloc(sizeof(*map), M_DEVBUF, flags | M_ZERO);
+ mapsize = sizeof(*map);
+ mapsize += sizeof(struct sync_list) * dmat->common.nsegments;
+ map = malloc(mapsize, M_DEVBUF, flags | M_ZERO);
if (map == NULL)
return (NULL);
/* Initialize the new map */
STAILQ_INIT(&map->bpages);
return (map);
}
/*
* Allocate a handle for mapping from kva/uva/physical
* address space into bus device space.
*/
static int
bounce_bus_dmamap_create(bus_dma_tag_t dmat, int flags, bus_dmamap_t *mapp)
{
struct bounce_zone *bz;
int error, maxpages, pages;
error = 0;
if (dmat->segments == NULL) {
dmat->segments = (bus_dma_segment_t *)malloc(
sizeof(bus_dma_segment_t) * dmat->common.nsegments,
M_DEVBUF, M_NOWAIT);
if (dmat->segments == NULL) {
CTR3(KTR_BUSDMA, "%s: tag %p error %d",
__func__, dmat, ENOMEM);
return (ENOMEM);
}
}
- *mapp = alloc_dmamap(M_NOWAIT);
+ *mapp = alloc_dmamap(dmat, M_NOWAIT);
if (*mapp == NULL) {
CTR3(KTR_BUSDMA, "%s: tag %p error %d",
__func__, dmat, ENOMEM);
return (ENOMEM);
}
/*
* Bouncing might be required if the driver asks for an active
* exclusion region, a data alignment that is stricter than 1, and/or
* an active address boundary.
*/
if (dmat->bounce_flags & BF_COULD_BOUNCE) {
/* Must bounce */
if (dmat->bounce_zone == NULL) {
if ((error = alloc_bounce_zone(dmat)) != 0) {
free(*mapp, M_DEVBUF);
return (error);
}
}
bz = dmat->bounce_zone;
(*mapp)->flags = DMAMAP_COULD_BOUNCE;
/*
* Attempt to add pages to our pool on a per-instance
* basis up to a sane limit.
*/
if (dmat->common.alignment > 1)
maxpages = MAX_BPAGES;
else
maxpages = MIN(MAX_BPAGES, Maxmem -
atop(dmat->common.lowaddr));
if ((dmat->bounce_flags & BF_MIN_ALLOC_COMP) == 0 ||
(bz->map_count > 0 && bz->total_bpages < maxpages)) {
pages = MAX(atop(dmat->common.maxsize), 1);
pages = MIN(maxpages - bz->total_bpages, pages);
pages = MAX(pages, 1);
if (alloc_bounce_pages(dmat, pages) < pages)
error = ENOMEM;
if ((dmat->bounce_flags & BF_MIN_ALLOC_COMP)
== 0) {
if (error == 0) {
dmat->bounce_flags |=
BF_MIN_ALLOC_COMP;
}
} else
error = 0;
}
bz->map_count++;
}
if (error == 0)
dmat->map_count++;
else
free(*mapp, M_DEVBUF);
CTR4(KTR_BUSDMA, "%s: tag %p tag flags 0x%x error %d",
__func__, dmat, dmat->common.flags, error);
return (error);
}
/*
* Destroy a handle for mapping from kva/uva/physical
* address space into bus device space.
*/
static int
bounce_bus_dmamap_destroy(bus_dma_tag_t dmat, bus_dmamap_t map)
{
/* Check we are destroying the correct map type */
if ((map->flags & DMAMAP_FROM_DMAMEM) != 0)
panic("bounce_bus_dmamap_destroy: Invalid map freed\n");
- if (STAILQ_FIRST(&map->bpages) != NULL) {
+ if (STAILQ_FIRST(&map->bpages) != NULL || map->sync_count != 0) {
CTR3(KTR_BUSDMA, "%s: tag %p error %d", __func__, dmat, EBUSY);
return (EBUSY);
}
if (dmat->bounce_zone) {
KASSERT((map->flags & DMAMAP_COULD_BOUNCE) != 0,
("%s: Bounce zone when cannot bounce", __func__));
dmat->bounce_zone->map_count--;
}
free(map, M_DEVBUF);
dmat->map_count--;
CTR2(KTR_BUSDMA, "%s: tag %p error 0", __func__, dmat);
return (0);
}
/*
* Allocate a piece of memory that can be efficiently mapped into
* bus device space based on the constraints lited in the dma tag.
* A dmamap to for use with dmamap_load is also allocated.
*/
static int
bounce_bus_dmamem_alloc(bus_dma_tag_t dmat, void** vaddr, int flags,
bus_dmamap_t *mapp)
{
/*
* XXX ARM64TODO:
* This bus_dma implementation requires IO-Coherent architecutre.
* If IO-Coherency is not guaranteed, the BUS_DMA_COHERENT flag has
* to be implented using non-cacheable memory.
*/
vm_memattr_t attr;
int mflags;
if (flags & BUS_DMA_NOWAIT)
mflags = M_NOWAIT;
else
mflags = M_WAITOK;
if (dmat->segments == NULL) {
dmat->segments = (bus_dma_segment_t *)malloc(
sizeof(bus_dma_segment_t) * dmat->common.nsegments,
M_DEVBUF, mflags);
if (dmat->segments == NULL) {
CTR4(KTR_BUSDMA, "%s: tag %p tag flags 0x%x error %d",
__func__, dmat, dmat->common.flags, ENOMEM);
return (ENOMEM);
}
}
if (flags & BUS_DMA_ZERO)
mflags |= M_ZERO;
if (flags & BUS_DMA_NOCACHE)
attr = VM_MEMATTR_UNCACHEABLE;
else
attr = VM_MEMATTR_DEFAULT;
/*
* Create the map, but don't set the could bounce flag as
* this allocation should never bounce;
*/
- *mapp = alloc_dmamap(mflags);
+ *mapp = alloc_dmamap(dmat, mflags);
if (*mapp == NULL) {
CTR4(KTR_BUSDMA, "%s: tag %p tag flags 0x%x error %d",
__func__, dmat, dmat->common.flags, ENOMEM);
return (ENOMEM);
}
(*mapp)->flags = DMAMAP_FROM_DMAMEM;
/*
* XXX:
* (dmat->alignment <= dmat->maxsize) is just a quick hack; the exact
* alignment guarantees of malloc need to be nailed down, and the
* code below should be rewritten to take that into account.
*
* In the meantime, we'll warn the user if malloc gets it wrong.
*/
if ((dmat->common.maxsize <= PAGE_SIZE) &&
(dmat->common.alignment <= dmat->common.maxsize) &&
dmat->common.lowaddr >= ptoa((vm_paddr_t)Maxmem) &&
attr == VM_MEMATTR_DEFAULT) {
*vaddr = malloc(dmat->common.maxsize, M_DEVBUF, mflags);
} else if (dmat->common.nsegments >= btoc(dmat->common.maxsize) &&
dmat->common.alignment <= PAGE_SIZE &&
(dmat->common.boundary == 0 ||
dmat->common.boundary >= dmat->common.lowaddr)) {
/* Page-based multi-segment allocations allowed */
*vaddr = (void *)kmem_alloc_attr(kernel_arena,
dmat->common.maxsize, mflags, 0ul, dmat->common.lowaddr,
attr);
dmat->bounce_flags |= BF_KMEM_ALLOC;
} else {
*vaddr = (void *)kmem_alloc_contig(kernel_arena,
dmat->common.maxsize, mflags, 0ul, dmat->common.lowaddr,
dmat->common.alignment != 0 ? dmat->common.alignment : 1ul,
dmat->common.boundary, attr);
dmat->bounce_flags |= BF_KMEM_ALLOC;
}
if (*vaddr == NULL) {
CTR4(KTR_BUSDMA, "%s: tag %p tag flags 0x%x error %d",
__func__, dmat, dmat->common.flags, ENOMEM);
free(*mapp, M_DEVBUF);
return (ENOMEM);
} else if (vtophys(*vaddr) & (dmat->common.alignment - 1)) {
printf("bus_dmamem_alloc failed to align memory properly.\n");
}
dmat->map_count++;
CTR4(KTR_BUSDMA, "%s: tag %p tag flags 0x%x error %d",
__func__, dmat, dmat->common.flags, 0);
return (0);
}
/*
* Free a piece of memory and it's allociated dmamap, that was allocated
* via bus_dmamem_alloc. Make the same choice for free/contigfree.
*/
static void
bounce_bus_dmamem_free(bus_dma_tag_t dmat, void *vaddr, bus_dmamap_t map)
{
/*
* Check the map came from bounce_bus_dmamem_alloc, so the map
* should be NULL and the BF_KMEM_ALLOC flag cleared if malloc()
* was used and set if kmem_alloc_contig() was used.
*/
if ((map->flags & DMAMAP_FROM_DMAMEM) == 0)
panic("bus_dmamem_free: Invalid map freed\n");
if ((dmat->bounce_flags & BF_KMEM_ALLOC) == 0)
free(vaddr, M_DEVBUF);
else
kmem_free(kernel_arena, (vm_offset_t)vaddr,
dmat->common.maxsize);
free(map, M_DEVBUF);
dmat->map_count--;
CTR3(KTR_BUSDMA, "%s: tag %p flags 0x%x", __func__, dmat,
dmat->bounce_flags);
}
static void
_bus_dmamap_count_phys(bus_dma_tag_t dmat, bus_dmamap_t map, vm_paddr_t buf,
bus_size_t buflen, int flags)
{
bus_addr_t curaddr;
bus_size_t sgsize;
if ((map->flags & DMAMAP_COULD_BOUNCE) != 0 && map->pagesneeded == 0) {
/*
* Count the number of bounce pages
* needed in order to complete this transfer
*/
curaddr = buf;
while (buflen != 0) {
sgsize = MIN(buflen, dmat->common.maxsegsz);
if (bus_dma_run_filter(&dmat->common, curaddr)) {
sgsize = MIN(sgsize,
PAGE_SIZE - (curaddr & PAGE_MASK));
map->pagesneeded++;
}
curaddr += sgsize;
buflen -= sgsize;
}
CTR1(KTR_BUSDMA, "pagesneeded= %d\n", map->pagesneeded);
}
}
static void
_bus_dmamap_count_pages(bus_dma_tag_t dmat, bus_dmamap_t map, pmap_t pmap,
void *buf, bus_size_t buflen, int flags)
{
vm_offset_t vaddr;
vm_offset_t vendaddr;
bus_addr_t paddr;
bus_size_t sg_len;
if ((map->flags & DMAMAP_COULD_BOUNCE) != 0 && map->pagesneeded == 0) {
CTR4(KTR_BUSDMA, "lowaddr= %d Maxmem= %d, boundary= %d, "
"alignment= %d", dmat->common.lowaddr,
ptoa((vm_paddr_t)Maxmem),
dmat->common.boundary, dmat->common.alignment);
CTR2(KTR_BUSDMA, "map= %p, pagesneeded= %d", map,
map->pagesneeded);
/*
* Count the number of bounce pages
* needed in order to complete this transfer
*/
vaddr = (vm_offset_t)buf;
vendaddr = (vm_offset_t)buf + buflen;
while (vaddr < vendaddr) {
sg_len = PAGE_SIZE - ((vm_offset_t)vaddr & PAGE_MASK);
if (pmap == kernel_pmap)
paddr = pmap_kextract(vaddr);
else
paddr = pmap_extract(pmap, vaddr);
if (bus_dma_run_filter(&dmat->common, paddr) != 0) {
sg_len = roundup2(sg_len,
dmat->common.alignment);
map->pagesneeded++;
}
vaddr += sg_len;
}
CTR1(KTR_BUSDMA, "pagesneeded= %d\n", map->pagesneeded);
}
}
static int
_bus_dmamap_reserve_pages(bus_dma_tag_t dmat, bus_dmamap_t map, int flags)
{
/* Reserve Necessary Bounce Pages */
mtx_lock(&bounce_lock);
if (flags & BUS_DMA_NOWAIT) {
if (reserve_bounce_pages(dmat, map, 0) != 0) {
mtx_unlock(&bounce_lock);
return (ENOMEM);
}
} else {
if (reserve_bounce_pages(dmat, map, 1) != 0) {
/* Queue us for resources */
STAILQ_INSERT_TAIL(&bounce_map_waitinglist, map, links);
mtx_unlock(&bounce_lock);
return (EINPROGRESS);
}
}
mtx_unlock(&bounce_lock);
return (0);
}
/*
* Add a single contiguous physical range to the segment list.
*/
static int
_bus_dmamap_addseg(bus_dma_tag_t dmat, bus_dmamap_t map, bus_addr_t curaddr,
bus_size_t sgsize, bus_dma_segment_t *segs, int *segp)
{
bus_addr_t baddr, bmask;
int seg;
/*
* Make sure we don't cross any boundaries.
*/
bmask = ~(dmat->common.boundary - 1);
if (dmat->common.boundary > 0) {
baddr = (curaddr + dmat->common.boundary) & bmask;
if (sgsize > (baddr - curaddr))
sgsize = (baddr - curaddr);
}
/*
* Insert chunk into a segment, coalescing with
* previous segment if possible.
*/
seg = *segp;
if (seg == -1) {
seg = 0;
segs[seg].ds_addr = curaddr;
segs[seg].ds_len = sgsize;
} else {
if (curaddr == segs[seg].ds_addr + segs[seg].ds_len &&
(segs[seg].ds_len + sgsize) <= dmat->common.maxsegsz &&
(dmat->common.boundary == 0 ||
(segs[seg].ds_addr & bmask) == (curaddr & bmask)))
segs[seg].ds_len += sgsize;
else {
if (++seg >= dmat->common.nsegments)
return (0);
segs[seg].ds_addr = curaddr;
segs[seg].ds_len = sgsize;
}
}
*segp = seg;
return (sgsize);
}
/*
* Utility function to load a physical buffer. segp contains
* the starting segment on entrace, and the ending segment on exit.
*/
static int
bounce_bus_dmamap_load_phys(bus_dma_tag_t dmat, bus_dmamap_t map,
vm_paddr_t buf, bus_size_t buflen, int flags, bus_dma_segment_t *segs,
int *segp)
{
+ struct sync_list *sl;
bus_size_t sgsize;
- bus_addr_t curaddr;
+ bus_addr_t curaddr, sl_end;
int error;
if (segs == NULL)
segs = dmat->segments;
if ((dmat->bounce_flags & BF_COULD_BOUNCE) != 0) {
_bus_dmamap_count_phys(dmat, map, buf, buflen, flags);
if (map->pagesneeded != 0) {
error = _bus_dmamap_reserve_pages(dmat, map, flags);
if (error)
return (error);
}
}
+ sl = map->slist + map->sync_count - 1;
+ sl_end = 0;
+
while (buflen > 0) {
curaddr = buf;
sgsize = MIN(buflen, dmat->common.maxsegsz);
if (((dmat->bounce_flags & BF_COULD_BOUNCE) != 0) &&
map->pagesneeded != 0 &&
bus_dma_run_filter(&dmat->common, curaddr)) {
sgsize = MIN(sgsize, PAGE_SIZE - (curaddr & PAGE_MASK));
curaddr = add_bounce_page(dmat, map, 0, curaddr,
sgsize);
+ } else if ((dmat->bounce_flags & BF_COHERENT) == 0) {
+ if (map->sync_count > 0)
+ sl_end = sl->paddr + sl->datacount;
+
+ if (map->sync_count == 0 || curaddr != sl_end) {
+ if (++map->sync_count > dmat->common.nsegments)
+ break;
+ sl++;
+ sl->vaddr = 0;
+ sl->paddr = curaddr;
+ sl->datacount = sgsize;
+ sl->pages = PHYS_TO_VM_PAGE(curaddr);
+ KASSERT(sl->pages != NULL,
+ ("%s: page at PA:0x%08lx is not in "
+ "vm_page_array", __func__, curaddr));
+ } else
+ sl->datacount += sgsize;
}
sgsize = _bus_dmamap_addseg(dmat, map, curaddr, sgsize, segs,
segp);
if (sgsize == 0)
break;
buf += sgsize;
buflen -= sgsize;
}
/*
* Did we fit?
*/
return (buflen != 0 ? EFBIG : 0); /* XXX better return value here? */
}
/*
* Utility function to load a linear buffer. segp contains
* the starting segment on entrace, and the ending segment on exit.
*/
static int
bounce_bus_dmamap_load_buffer(bus_dma_tag_t dmat, bus_dmamap_t map, void *buf,
bus_size_t buflen, pmap_t pmap, int flags, bus_dma_segment_t *segs,
int *segp)
{
+ struct sync_list *sl;
bus_size_t sgsize, max_sgsize;
- bus_addr_t curaddr;
- vm_offset_t kvaddr, vaddr;
+ bus_addr_t curaddr, sl_pend;
+ vm_offset_t kvaddr, vaddr, sl_vend;
int error;
if (segs == NULL)
segs = dmat->segments;
if ((dmat->bounce_flags & BF_COULD_BOUNCE) != 0) {
_bus_dmamap_count_pages(dmat, map, pmap, buf, buflen, flags);
if (map->pagesneeded != 0) {
error = _bus_dmamap_reserve_pages(dmat, map, flags);
if (error)
return (error);
}
}
+ sl = map->slist + map->sync_count - 1;
vaddr = (vm_offset_t)buf;
+ sl_pend = 0;
+ sl_vend = 0;
+
while (buflen > 0) {
/*
* Get the physical address for this segment.
*/
if (pmap == kernel_pmap) {
curaddr = pmap_kextract(vaddr);
kvaddr = vaddr;
} else {
curaddr = pmap_extract(pmap, vaddr);
kvaddr = 0;
}
/*
* Compute the segment size, and adjust counts.
*/
max_sgsize = MIN(buflen, dmat->common.maxsegsz);
sgsize = PAGE_SIZE - (curaddr & PAGE_MASK);
if (((dmat->bounce_flags & BF_COULD_BOUNCE) != 0) &&
map->pagesneeded != 0 &&
bus_dma_run_filter(&dmat->common, curaddr)) {
sgsize = roundup2(sgsize, dmat->common.alignment);
sgsize = MIN(sgsize, max_sgsize);
curaddr = add_bounce_page(dmat, map, kvaddr, curaddr,
sgsize);
+ } else if ((dmat->bounce_flags & BF_COHERENT) == 0) {
+ sgsize = MIN(sgsize, max_sgsize);
+ if (map->sync_count > 0) {
+ sl_pend = sl->paddr + sl->datacount;
+ sl_vend = sl->vaddr + sl->datacount;
+ }
+
+ if (map->sync_count == 0 ||
+ (kvaddr != 0 && kvaddr != sl_vend) ||
+ (curaddr != sl_pend)) {
+
+ if (++map->sync_count > dmat->common.nsegments)
+ goto cleanup;
+ sl++;
+ sl->vaddr = kvaddr;
+ sl->paddr = curaddr;
+ if (kvaddr != 0) {
+ sl->pages = NULL;
+ } else {
+ sl->pages = PHYS_TO_VM_PAGE(curaddr);
+ KASSERT(sl->pages != NULL,
+ ("%s: page at PA:0x%08lx is not "
+ "in vm_page_array", __func__,
+ curaddr));
+ }
+ sl->datacount = sgsize;
+ } else
+ sl->datacount += sgsize;
} else {
sgsize = MIN(sgsize, max_sgsize);
}
sgsize = _bus_dmamap_addseg(dmat, map, curaddr, sgsize, segs,
segp);
if (sgsize == 0)
break;
vaddr += sgsize;
buflen -= sgsize;
}
+cleanup:
/*
* Did we fit?
*/
return (buflen != 0 ? EFBIG : 0); /* XXX better return value here? */
}
static void
bounce_bus_dmamap_waitok(bus_dma_tag_t dmat, bus_dmamap_t map,
struct memdesc *mem, bus_dmamap_callback_t *callback, void *callback_arg)
{
if ((map->flags & DMAMAP_COULD_BOUNCE) == 0)
return;
map->mem = *mem;
map->dmat = dmat;
map->callback = callback;
map->callback_arg = callback_arg;
}
static bus_dma_segment_t *
bounce_bus_dmamap_complete(bus_dma_tag_t dmat, bus_dmamap_t map,
bus_dma_segment_t *segs, int nsegs, int error)
{
if (segs == NULL)
segs = dmat->segments;
return (segs);
}
/*
* Release the mapping held by map.
*/
static void
bounce_bus_dmamap_unload(bus_dma_tag_t dmat, bus_dmamap_t map)
{
struct bounce_page *bpage;
- if ((map->flags & DMAMAP_COULD_BOUNCE) == 0)
- return;
-
while ((bpage = STAILQ_FIRST(&map->bpages)) != NULL) {
STAILQ_REMOVE_HEAD(&map->bpages, links);
free_bounce_page(dmat, bpage);
}
+
+ map->sync_count = 0;
}
static void
+dma_preread_safe(vm_offset_t va, vm_size_t size)
+{
+ /*
+ * Write back any partial cachelines immediately before and
+ * after the DMA region.
+ */
+ if (va & (dcache_line_size - 1))
+ cpu_dcache_wb_range(va, 1);
+ if ((va + size) & (dcache_line_size - 1))
+ cpu_dcache_wb_range(va + size, 1);
+
+ cpu_dcache_inv_range(va, size);
+}
+
+static void
+dma_dcache_sync(struct sync_list *sl, bus_dmasync_op_t op)
+{
+ uint32_t len, offset;
+ vm_page_t m;
+ vm_paddr_t pa;
+ vm_offset_t va, tempva;
+ bus_size_t size;
+
+ offset = sl->paddr & PAGE_MASK;
+ m = sl->pages;
+ size = sl->datacount;
+ pa = sl->paddr;
+
+ for ( ; size != 0; size -= len, pa += len, offset = 0, ++m) {
+ tempva = 0;
+ if (sl->vaddr == 0) {
+ len = min(PAGE_SIZE - offset, size);
+ tempva = pmap_quick_enter_page(m);
+ va = tempva | offset;
+ KASSERT(pa == (VM_PAGE_TO_PHYS(m) | offset),
+ ("unexpected vm_page_t phys: 0x%16lx != 0x%16lx",
+ VM_PAGE_TO_PHYS(m) | offset, pa));
+ } else {
+ len = sl->datacount;
+ va = sl->vaddr;
+ }
+
+ switch (op) {
+ case BUS_DMASYNC_PREWRITE:
+ case BUS_DMASYNC_PREWRITE | BUS_DMASYNC_PREREAD:
+ cpu_dcache_wb_range(va, len);
+ break;
+ case BUS_DMASYNC_PREREAD:
+ /*
+ * An mbuf may start in the middle of a cacheline. There
+ * will be no cpu writes to the beginning of that line
+ * (which contains the mbuf header) while dma is in
+ * progress. Handle that case by doing a writeback of
+ * just the first cacheline before invalidating the
+ * overall buffer. Any mbuf in a chain may have this
+ * misalignment. Buffers which are not mbufs bounce if
+ * they are not aligned to a cacheline.
+ */
+ dma_preread_safe(va, len);
+ break;
+ case BUS_DMASYNC_POSTREAD:
+ case BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE:
+ cpu_dcache_inv_range(va, len);
+ break;
+ default:
+ panic("unsupported combination of sync operations: "
+ "0x%08x\n", op);
+ }
+
+ if (tempva != 0)
+ pmap_quick_remove_page(tempva);
+ }
+}
+
+static void
bounce_bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t map,
bus_dmasync_op_t op)
{
struct bounce_page *bpage;
+ struct sync_list *sl, *end;
vm_offset_t datavaddr, tempvaddr;
- /*
- * XXX ARM64TODO:
- * This bus_dma implementation requires IO-Coherent architecutre.
- * If IO-Coherency is not guaranteed, cache operations have to be
- * added to this function.
- */
-
if ((op & BUS_DMASYNC_POSTREAD) != 0) {
/*
* Wait for any DMA operations to complete before the bcopy.
*/
dsb(sy);
}
if ((bpage = STAILQ_FIRST(&map->bpages)) != NULL) {
CTR4(KTR_BUSDMA, "%s: tag %p tag flags 0x%x op 0x%x "
"performing bounce", __func__, dmat, dmat->common.flags,
op);
if ((op & BUS_DMASYNC_PREWRITE) != 0) {
while (bpage != NULL) {
tempvaddr = 0;
datavaddr = bpage->datavaddr;
if (datavaddr == 0) {
tempvaddr = pmap_quick_enter_page(
bpage->datapage);
datavaddr = tempvaddr | bpage->dataoffs;
}
bcopy((void *)datavaddr,
(void *)bpage->vaddr, bpage->datacount);
if (tempvaddr != 0)
pmap_quick_remove_page(tempvaddr);
+ if ((dmat->bounce_flags & BF_COHERENT) == 0)
+ cpu_dcache_wb_range(bpage->vaddr,
+ bpage->datacount);
bpage = STAILQ_NEXT(bpage, links);
}
dmat->bounce_zone->total_bounced++;
+ } else if ((op & BUS_DMASYNC_PREREAD) != 0) {
+ while (bpage != NULL) {
+ if ((dmat->bounce_flags & BF_COHERENT) == 0)
+ cpu_dcache_wbinv_range(bpage->vaddr,
+ bpage->datacount);
+ bpage = STAILQ_NEXT(bpage, links);
+ }
}
if ((op & BUS_DMASYNC_POSTREAD) != 0) {
while (bpage != NULL) {
+ if ((dmat->bounce_flags & BF_COHERENT) == 0)
+ cpu_dcache_inv_range(bpage->vaddr,
+ bpage->datacount);
tempvaddr = 0;
datavaddr = bpage->datavaddr;
if (datavaddr == 0) {
tempvaddr = pmap_quick_enter_page(
bpage->datapage);
datavaddr = tempvaddr | bpage->dataoffs;
}
bcopy((void *)bpage->vaddr,
(void *)datavaddr, bpage->datacount);
if (tempvaddr != 0)
pmap_quick_remove_page(tempvaddr);
bpage = STAILQ_NEXT(bpage, links);
}
dmat->bounce_zone->total_bounced++;
}
}
- if ((op & BUS_DMASYNC_PREWRITE) != 0) {
+ /*
+ * Cache maintenance for normal (non-COHERENT non-bounce) buffers.
+ */
+ if (map->sync_count != 0) {
+ sl = &map->slist[0];
+ end = &map->slist[map->sync_count];
+ CTR3(KTR_BUSDMA, "%s: tag %p op 0x%x "
+ "performing sync", __func__, dmat, op);
+
+ for ( ; sl != end; ++sl)
+ dma_dcache_sync(sl, op);
+ }
+
+ if ((op & (BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE)) != 0) {
/*
* Wait for the bcopy to complete before any DMA operations.
*/
dsb(sy);
}
}
static void
init_bounce_pages(void *dummy __unused)
{
total_bpages = 0;
STAILQ_INIT(&bounce_zone_list);
STAILQ_INIT(&bounce_map_waitinglist);
STAILQ_INIT(&bounce_map_callbacklist);
mtx_init(&bounce_lock, "bounce pages lock", NULL, MTX_DEF);
}
SYSINIT(bpages, SI_SUB_LOCK, SI_ORDER_ANY, init_bounce_pages, NULL);
static struct sysctl_ctx_list *
busdma_sysctl_tree(struct bounce_zone *bz)
{
return (&bz->sysctl_tree);
}
static struct sysctl_oid *
busdma_sysctl_tree_top(struct bounce_zone *bz)
{
return (bz->sysctl_tree_top);
}
static int
alloc_bounce_zone(bus_dma_tag_t dmat)
{
struct bounce_zone *bz;
/* Check to see if we already have a suitable zone */
STAILQ_FOREACH(bz, &bounce_zone_list, links) {
if ((dmat->common.alignment <= bz->alignment) &&
(dmat->common.lowaddr >= bz->lowaddr)) {
dmat->bounce_zone = bz;
return (0);
}
}
if ((bz = (struct bounce_zone *)malloc(sizeof(*bz), M_DEVBUF,
M_NOWAIT | M_ZERO)) == NULL)
return (ENOMEM);
STAILQ_INIT(&bz->bounce_page_list);
bz->free_bpages = 0;
bz->reserved_bpages = 0;
bz->active_bpages = 0;
bz->lowaddr = dmat->common.lowaddr;
bz->alignment = MAX(dmat->common.alignment, PAGE_SIZE);
bz->map_count = 0;
snprintf(bz->zoneid, 8, "zone%d", busdma_zonecount);
busdma_zonecount++;
snprintf(bz->lowaddrid, 18, "%#jx", (uintmax_t)bz->lowaddr);
STAILQ_INSERT_TAIL(&bounce_zone_list, bz, links);
dmat->bounce_zone = bz;
sysctl_ctx_init(&bz->sysctl_tree);
bz->sysctl_tree_top = SYSCTL_ADD_NODE(&bz->sysctl_tree,
SYSCTL_STATIC_CHILDREN(_hw_busdma), OID_AUTO, bz->zoneid,
CTLFLAG_RD, 0, "");
if (bz->sysctl_tree_top == NULL) {
sysctl_ctx_free(&bz->sysctl_tree);
return (0); /* XXX error code? */
}
SYSCTL_ADD_INT(busdma_sysctl_tree(bz),
SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO,
"total_bpages", CTLFLAG_RD, &bz->total_bpages, 0,
"Total bounce pages");
SYSCTL_ADD_INT(busdma_sysctl_tree(bz),
SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO,
"free_bpages", CTLFLAG_RD, &bz->free_bpages, 0,
"Free bounce pages");
SYSCTL_ADD_INT(busdma_sysctl_tree(bz),
SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO,
"reserved_bpages", CTLFLAG_RD, &bz->reserved_bpages, 0,
"Reserved bounce pages");
SYSCTL_ADD_INT(busdma_sysctl_tree(bz),
SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO,
"active_bpages", CTLFLAG_RD, &bz->active_bpages, 0,
"Active bounce pages");
SYSCTL_ADD_INT(busdma_sysctl_tree(bz),
SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO,
"total_bounced", CTLFLAG_RD, &bz->total_bounced, 0,
"Total bounce requests");
SYSCTL_ADD_INT(busdma_sysctl_tree(bz),
SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO,
"total_deferred", CTLFLAG_RD, &bz->total_deferred, 0,
"Total bounce requests that were deferred");
SYSCTL_ADD_STRING(busdma_sysctl_tree(bz),
SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO,
"lowaddr", CTLFLAG_RD, bz->lowaddrid, 0, "");
SYSCTL_ADD_UAUTO(busdma_sysctl_tree(bz),
SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO,
"alignment", CTLFLAG_RD, &bz->alignment, "");
return (0);
}
static int
alloc_bounce_pages(bus_dma_tag_t dmat, u_int numpages)
{
struct bounce_zone *bz;
int count;
bz = dmat->bounce_zone;
count = 0;
while (numpages > 0) {
struct bounce_page *bpage;
bpage = (struct bounce_page *)malloc(sizeof(*bpage), M_DEVBUF,
M_NOWAIT | M_ZERO);
if (bpage == NULL)
break;
bpage->vaddr = (vm_offset_t)contigmalloc(PAGE_SIZE, M_DEVBUF,
M_NOWAIT, 0ul, bz->lowaddr, PAGE_SIZE, 0);
if (bpage->vaddr == 0) {
free(bpage, M_DEVBUF);
break;
}
bpage->busaddr = pmap_kextract(bpage->vaddr);
mtx_lock(&bounce_lock);
STAILQ_INSERT_TAIL(&bz->bounce_page_list, bpage, links);
total_bpages++;
bz->total_bpages++;
bz->free_bpages++;
mtx_unlock(&bounce_lock);
count++;
numpages--;
}
return (count);
}
static int
reserve_bounce_pages(bus_dma_tag_t dmat, bus_dmamap_t map, int commit)
{
struct bounce_zone *bz;
int pages;
mtx_assert(&bounce_lock, MA_OWNED);
bz = dmat->bounce_zone;
pages = MIN(bz->free_bpages, map->pagesneeded - map->pagesreserved);
if (commit == 0 && map->pagesneeded > (map->pagesreserved + pages))
return (map->pagesneeded - (map->pagesreserved + pages));
bz->free_bpages -= pages;
bz->reserved_bpages += pages;
map->pagesreserved += pages;
pages = map->pagesneeded - map->pagesreserved;
return (pages);
}
static bus_addr_t
add_bounce_page(bus_dma_tag_t dmat, bus_dmamap_t map, vm_offset_t vaddr,
bus_addr_t addr, bus_size_t size)
{
struct bounce_zone *bz;
struct bounce_page *bpage;
KASSERT(dmat->bounce_zone != NULL, ("no bounce zone in dma tag"));
KASSERT((map->flags & DMAMAP_COULD_BOUNCE) != 0,
("add_bounce_page: bad map %p", map));
bz = dmat->bounce_zone;
if (map->pagesneeded == 0)
panic("add_bounce_page: map doesn't need any pages");
map->pagesneeded--;
if (map->pagesreserved == 0)
panic("add_bounce_page: map doesn't need any pages");
map->pagesreserved--;
mtx_lock(&bounce_lock);
bpage = STAILQ_FIRST(&bz->bounce_page_list);
if (bpage == NULL)
panic("add_bounce_page: free page list is empty");
STAILQ_REMOVE_HEAD(&bz->bounce_page_list, links);
bz->reserved_bpages--;
bz->active_bpages++;
mtx_unlock(&bounce_lock);
if (dmat->common.flags & BUS_DMA_KEEP_PG_OFFSET) {
/* Page offset needs to be preserved. */
bpage->vaddr |= addr & PAGE_MASK;
bpage->busaddr |= addr & PAGE_MASK;
}
bpage->datavaddr = vaddr;
bpage->datapage = PHYS_TO_VM_PAGE(addr);
bpage->dataoffs = addr & PAGE_MASK;
bpage->datacount = size;
STAILQ_INSERT_TAIL(&(map->bpages), bpage, links);
return (bpage->busaddr);
}
static void
free_bounce_page(bus_dma_tag_t dmat, struct bounce_page *bpage)
{
struct bus_dmamap *map;
struct bounce_zone *bz;
bz = dmat->bounce_zone;
bpage->datavaddr = 0;
bpage->datacount = 0;
if (dmat->common.flags & BUS_DMA_KEEP_PG_OFFSET) {
/*
* Reset the bounce page to start at offset 0. Other uses
* of this bounce page may need to store a full page of
* data and/or assume it starts on a page boundary.
*/
bpage->vaddr &= ~PAGE_MASK;
bpage->busaddr &= ~PAGE_MASK;
}
mtx_lock(&bounce_lock);
STAILQ_INSERT_HEAD(&bz->bounce_page_list, bpage, links);
bz->free_bpages++;
bz->active_bpages--;
if ((map = STAILQ_FIRST(&bounce_map_waitinglist)) != NULL) {
if (reserve_bounce_pages(map->dmat, map, 1) == 0) {
STAILQ_REMOVE_HEAD(&bounce_map_waitinglist, links);
STAILQ_INSERT_TAIL(&bounce_map_callbacklist,
map, links);
busdma_swi_pending = 1;
bz->total_deferred++;
swi_sched(vm_ih, 0);
}
}
mtx_unlock(&bounce_lock);
}
void
busdma_swi(void)
{
bus_dma_tag_t dmat;
struct bus_dmamap *map;
mtx_lock(&bounce_lock);
while ((map = STAILQ_FIRST(&bounce_map_callbacklist)) != NULL) {
STAILQ_REMOVE_HEAD(&bounce_map_callbacklist, links);
mtx_unlock(&bounce_lock);
dmat = map->dmat;
(dmat->common.lockfunc)(dmat->common.lockfuncarg, BUS_DMA_LOCK);
bus_dmamap_load_mem(map->dmat, map, &map->mem,
map->callback, map->callback_arg, BUS_DMA_WAITOK);
(dmat->common.lockfunc)(dmat->common.lockfuncarg,
BUS_DMA_UNLOCK);
mtx_lock(&bounce_lock);
}
mtx_unlock(&bounce_lock);
}
struct bus_dma_impl bus_dma_bounce_impl = {
.tag_create = bounce_bus_dma_tag_create,
.tag_destroy = bounce_bus_dma_tag_destroy,
.map_create = bounce_bus_dmamap_create,
.map_destroy = bounce_bus_dmamap_destroy,
.mem_alloc = bounce_bus_dmamem_alloc,
.mem_free = bounce_bus_dmamem_free,
.load_phys = bounce_bus_dmamap_load_phys,
.load_buffer = bounce_bus_dmamap_load_buffer,
.load_ma = bus_dmamap_load_ma_triv,
.map_waitok = bounce_bus_dmamap_waitok,
.map_complete = bounce_bus_dmamap_complete,
.map_unload = bounce_bus_dmamap_unload,
.map_sync = bounce_bus_dmamap_sync
};
Index: user/ngie/bsnmp_cleanup/sys/arm64/include/cpufunc.h
===================================================================
--- user/ngie/bsnmp_cleanup/sys/arm64/include/cpufunc.h (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/arm64/include/cpufunc.h (revision 299697)
@@ -1,147 +1,152 @@
/*-
* Copyright (c) 2014 Andrew Turner
* 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 _MACHINE_CPUFUNC_H_
#define _MACHINE_CPUFUNC_H_
#ifdef _KERNEL
#include <machine/armreg.h>
static __inline void
breakpoint(void)
{
__asm("brk #0");
}
static __inline register_t
dbg_disable(void)
{
uint32_t ret;
__asm __volatile(
"mrs %x0, daif \n"
"msr daifset, #8 \n"
: "=&r" (ret));
return (ret);
}
static __inline void
dbg_enable(void)
{
__asm __volatile("msr daifclr, #8");
}
static __inline register_t
intr_disable(void)
{
/* DAIF is a 32-bit register */
uint32_t ret;
__asm __volatile(
"mrs %x0, daif \n"
"msr daifset, #2 \n"
: "=&r" (ret));
return (ret);
}
static __inline void
intr_restore(register_t s)
{
WRITE_SPECIALREG(daif, s);
}
static __inline void
intr_enable(void)
{
__asm __volatile("msr daifclr, #2");
}
static __inline register_t
get_midr(void)
{
uint64_t midr;
midr = READ_SPECIALREG(midr_el1);
return (midr);
}
static __inline register_t
get_mpidr(void)
{
uint64_t mpidr;
mpidr = READ_SPECIALREG(mpidr_el1);
return (mpidr);
}
static __inline void
clrex(void)
{
/*
* Ensure compiler barrier, otherwise the monitor clear might
* occur too late for us ?
*/
__asm __volatile("clrex" : : : "memory");
}
+extern int64_t dcache_line_size;
+extern int64_t icache_line_size;
+extern int64_t idcache_line_size;
+extern int64_t dczva_line_size;
+
#define cpu_nullop() arm64_nullop()
#define cpufunc_nullop() arm64_nullop()
#define cpu_setttb(a) arm64_setttb(a)
#define cpu_tlb_flushID() arm64_tlb_flushID()
#define cpu_tlb_flushID_SE(e) arm64_tlb_flushID_SE(e)
#define cpu_dcache_wbinv_range(a, s) arm64_dcache_wbinv_range((a), (s))
#define cpu_dcache_inv_range(a, s) arm64_dcache_inv_range((a), (s))
#define cpu_dcache_wb_range(a, s) arm64_dcache_wb_range((a), (s))
#define cpu_idcache_wbinv_range(a, s) arm64_idcache_wbinv_range((a), (s))
#define cpu_icache_sync_range(a, s) arm64_icache_sync_range((a), (s))
void arm64_nullop(void);
void arm64_setttb(vm_offset_t);
void arm64_tlb_flushID(void);
void arm64_tlb_flushID_SE(vm_offset_t);
void arm64_icache_sync_range(vm_offset_t, vm_size_t);
void arm64_idcache_wbinv_range(vm_offset_t, vm_size_t);
void arm64_dcache_wbinv_range(vm_offset_t, vm_size_t);
void arm64_dcache_inv_range(vm_offset_t, vm_size_t);
void arm64_dcache_wb_range(vm_offset_t, vm_size_t);
#endif /* _KERNEL */
#endif /* _MACHINE_CPUFUNC_H_ */
Index: user/ngie/bsnmp_cleanup/sys/boot/common/boot.c
===================================================================
--- user/ngie/bsnmp_cleanup/sys/boot/common/boot.c (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/boot/common/boot.c (revision 299697)
@@ -1,408 +1,409 @@
/*-
* Copyright (c) 1998 Michael Smith <msmith@freebsd.org>
* 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$");
/*
* Loading modules, booting the system
*/
#include <stand.h>
#include <string.h>
+#include <strings.h>
#include "bootstrap.h"
static char *getbootfile(int try);
static int loadakernel(int try, int argc, char* argv[]);
/* List of kernel names to try (may be overwritten by boot.config) XXX should move from here? */
static const char *default_bootfiles = "kernel";
static int autoboot_tried;
/*
* The user wants us to boot.
*/
COMMAND_SET(boot, "boot", "boot a file or loaded kernel", command_boot);
static int
command_boot(int argc, char *argv[])
{
struct preloaded_file *fp;
/*
* See if the user has specified an explicit kernel to boot.
*/
if ((argc > 1) && (argv[1][0] != '-')) {
/* XXX maybe we should discard everything and start again? */
if (file_findfile(NULL, NULL) != NULL) {
sprintf(command_errbuf, "can't boot '%s', kernel module already loaded", argv[1]);
return(CMD_ERROR);
}
/* find/load the kernel module */
if (mod_loadkld(argv[1], argc - 2, argv + 2) != 0)
return(CMD_ERROR);
/* we have consumed all arguments */
argc = 1;
}
/*
* See if there is a kernel module already loaded
*/
if (file_findfile(NULL, NULL) == NULL)
if (loadakernel(0, argc - 1, argv + 1))
/* we have consumed all arguments */
argc = 1;
/*
* Loaded anything yet?
*/
if ((fp = file_findfile(NULL, NULL)) == NULL) {
command_errmsg = "no bootable kernel";
return(CMD_ERROR);
}
/*
* If we were given arguments, discard any previous.
* XXX should we merge arguments? Hard to DWIM.
*/
if (argc > 1) {
if (fp->f_args != NULL)
free(fp->f_args);
fp->f_args = unargv(argc - 1, argv + 1);
}
/* Hook for platform-specific autoloading of modules */
if (archsw.arch_autoload() != 0)
return(CMD_ERROR);
/* Call the exec handler from the loader matching the kernel */
file_formats[fp->f_loader]->l_exec(fp);
return(CMD_ERROR);
}
/*
* Autoboot after a delay
*/
COMMAND_SET(autoboot, "autoboot", "boot automatically after a delay", command_autoboot);
static int
command_autoboot(int argc, char *argv[])
{
int howlong;
char *cp, *prompt;
prompt = NULL;
howlong = -1;
switch(argc) {
case 3:
prompt = argv[2];
/* FALLTHROUGH */
case 2:
howlong = strtol(argv[1], &cp, 0);
if (*cp != 0) {
sprintf(command_errbuf, "bad delay '%s'", argv[1]);
return(CMD_ERROR);
}
/* FALLTHROUGH */
case 1:
return(autoboot(howlong, prompt));
}
command_errmsg = "too many arguments";
return(CMD_ERROR);
}
/*
* Called before we go interactive. If we think we can autoboot, and
* we haven't tried already, try now.
*/
void
autoboot_maybe()
{
char *cp;
cp = getenv("autoboot_delay");
if ((autoboot_tried == 0) && ((cp == NULL) || strcasecmp(cp, "NO")))
autoboot(-1, NULL); /* try to boot automatically */
}
int
autoboot(int timeout, char *prompt)
{
time_t when, otime, ntime;
int c, yes;
char *argv[2], *cp, *ep;
char *kernelname;
#ifdef BOOT_PROMPT_123
const char *seq = "123", *p = seq;
#endif
autoboot_tried = 1;
if (timeout == -1) {
timeout = 10;
/* try to get a delay from the environment */
if ((cp = getenv("autoboot_delay"))) {
timeout = strtol(cp, &ep, 0);
if (cp == ep)
timeout = 10; /* Unparseable? Set default! */
}
}
kernelname = getenv("kernelname");
if (kernelname == NULL) {
argv[0] = NULL;
loadakernel(0, 0, argv);
kernelname = getenv("kernelname");
if (kernelname == NULL) {
command_errmsg = "no valid kernel found";
return(CMD_ERROR);
}
}
if (timeout >= 0) {
otime = time(NULL);
when = otime + timeout; /* when to boot */
yes = 0;
#ifdef BOOT_PROMPT_123
printf("%s\n", (prompt == NULL) ? "Hit [Enter] to boot immediately, or "
"1 2 3 sequence for command prompt." : prompt);
#else
printf("%s\n", (prompt == NULL) ? "Hit [Enter] to boot immediately, or any other key for command prompt." : prompt);
#endif
for (;;) {
if (ischar()) {
c = getchar();
#ifdef BOOT_PROMPT_123
if ((c == '\r') || (c == '\n')) {
yes = 1;
break;
} else if (c != *p++)
p = seq;
if (*p == 0)
break;
#else
if ((c == '\r') || (c == '\n'))
yes = 1;
break;
#endif
}
ntime = time(NULL);
if (ntime >= when) {
yes = 1;
break;
}
if (ntime != otime) {
printf("\rBooting [%s] in %d second%s... ",
kernelname, (int)(when - ntime),
(when-ntime)==1?"":"s");
otime = ntime;
}
}
} else {
yes = 1;
}
if (yes)
printf("\rBooting [%s]... ", kernelname);
putchar('\n');
if (yes) {
argv[0] = "boot";
argv[1] = NULL;
return(command_boot(1, argv));
}
return(CMD_OK);
}
/*
* Scrounge for the name of the (try)'th file we will try to boot.
*/
static char *
getbootfile(int try)
{
static char *name = NULL;
const char *spec, *ep;
size_t len;
/* we use dynamic storage */
if (name != NULL) {
free(name);
name = NULL;
}
/*
* Try $bootfile, then try our builtin default
*/
if ((spec = getenv("bootfile")) == NULL)
spec = default_bootfiles;
while ((try > 0) && (spec != NULL)) {
spec = strchr(spec, ';');
if (spec)
spec++; /* skip over the leading ';' */
try--;
}
if (spec != NULL) {
if ((ep = strchr(spec, ';')) != NULL) {
len = ep - spec;
} else {
len = strlen(spec);
}
name = malloc(len + 1);
strncpy(name, spec, len);
name[len] = 0;
}
if (name && name[0] == 0) {
free(name);
name = NULL;
}
return(name);
}
/*
* Try to find the /etc/fstab file on the filesystem (rootdev),
* which should be be the root filesystem, and parse it to find
* out what the kernel ought to think the root filesystem is.
*
* If we're successful, set vfs.root.mountfrom to <vfstype>:<path>
* so that the kernel can tell both which VFS and which node to use
* to mount the device. If this variable's already set, don't
* overwrite it.
*/
int
getrootmount(char *rootdev)
{
char lbuf[128], *cp, *ep, *dev, *fstyp, *options;
int fd, error;
if (getenv("vfs.root.mountfrom") != NULL)
return(0);
error = 1;
sprintf(lbuf, "%s/etc/fstab", rootdev);
if ((fd = open(lbuf, O_RDONLY)) < 0)
goto notfound;
/* loop reading lines from /etc/fstab What was that about sscanf again? */
while (fgetstr(lbuf, sizeof(lbuf), fd) >= 0) {
if ((lbuf[0] == 0) || (lbuf[0] == '#'))
continue;
/* skip device name */
for (cp = lbuf; (*cp != 0) && !isspace(*cp); cp++)
;
if (*cp == 0) /* misformatted */
continue;
/* delimit and save */
*cp++ = 0;
dev = strdup(lbuf);
/* skip whitespace up to mountpoint */
while ((*cp != 0) && isspace(*cp))
cp++;
/* must have /<space> to be root */
if ((*cp == 0) || (*cp != '/') || !isspace(*(cp + 1)))
continue;
/* skip whitespace up to fstype */
cp += 2;
while ((*cp != 0) && isspace(*cp))
cp++;
if (*cp == 0) /* misformatted */
continue;
/* skip text to end of fstype and delimit */
ep = cp;
while ((*cp != 0) && !isspace(*cp))
cp++;
*cp = 0;
fstyp = strdup(ep);
/* skip whitespace up to mount options */
cp += 1;
while ((*cp != 0) && isspace(*cp))
cp++;
if (*cp == 0) /* misformatted */
continue;
/* skip text to end of mount options and delimit */
ep = cp;
while ((*cp != 0) && !isspace(*cp))
cp++;
*cp = 0;
options = strdup(ep);
/* Build the <fstype>:<device> and save it in vfs.root.mountfrom */
sprintf(lbuf, "%s:%s", fstyp, dev);
free(dev);
free(fstyp);
setenv("vfs.root.mountfrom", lbuf, 0);
/* Don't override vfs.root.mountfrom.options if it is already set */
if (getenv("vfs.root.mountfrom.options") == NULL) {
/* save mount options */
setenv("vfs.root.mountfrom.options", options, 0);
}
free(options);
error = 0;
break;
}
close(fd);
notfound:
if (error) {
const char *currdev;
currdev = getenv("currdev");
if (currdev != NULL && strncmp("zfs:", currdev, 4) == 0) {
cp = strdup(currdev);
cp[strlen(cp) - 1] = '\0';
setenv("vfs.root.mountfrom", cp, 0);
error = 0;
}
}
return(error);
}
static int
loadakernel(int try, int argc, char* argv[])
{
char *cp;
for (try = 0; (cp = getbootfile(try)) != NULL; try++)
if (mod_loadkld(cp, argc - 1, argv + 1) != 0)
printf("can't load '%s'\n", cp);
else
return 1;
return 0;
}
Index: user/ngie/bsnmp_cleanup/sys/boot/geli/geliboot.c
===================================================================
--- user/ngie/bsnmp_cleanup/sys/boot/geli/geliboot.c (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/boot/geli/geliboot.c (revision 299697)
@@ -1,310 +1,310 @@
/*-
* Copyright (c) 2015 Allan Jude <allanjude@FreeBSD.org>
* Copyright (c) 2005-2011 Pawel Jakub Dawidek <pawel@dawidek.net>
* 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 AUTHORS 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 AUTHORS 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 "geliboot.h"
SLIST_HEAD(geli_list, geli_entry) geli_head = SLIST_HEAD_INITIALIZER(geli_head);
struct geli_list *geli_headp;
static int
geli_same_device(struct geli_entry *ge, struct dsk *dskp)
{
if (geli_e->dsk->drive == dskp->drive &&
dskp->part == 255 && geli_e->dsk->part == dskp->slice) {
/*
* Sometimes slice = slice, and sometimes part = slice
* If the incoming struct dsk has part=255, it means look at
* the slice instead of the part number
*/
return (0);
}
/* Is this the same device? */
if (geli_e->dsk->drive != dskp->drive ||
geli_e->dsk->slice != dskp->slice ||
geli_e->dsk->part != dskp->part) {
return (1);
}
return (0);
}
void
geli_init(void)
{
geli_count = 0;
SLIST_INIT(&geli_head);
}
/*
* Read the last sector of the drive or partition pointed to by dsk and see
* if it is GELI encrypted
*/
int
geli_taste(int read_func(void *vdev, void *priv, off_t off, void *buf,
size_t bytes), struct dsk *dskp, daddr_t lastsector)
{
struct g_eli_metadata md;
u_char buf[DEV_GELIBOOT_BSIZE];
int error;
off_t alignsector;
alignsector = (lastsector * DEV_BSIZE) &
~(off_t)(DEV_GELIBOOT_BSIZE - 1);
error = read_func(NULL, dskp, alignsector, &buf, DEV_GELIBOOT_BSIZE);
if (error != 0) {
return (error);
}
/* Extract the last DEV_BSIZE bytes from the block. */
error = eli_metadata_decode(buf + (DEV_GELIBOOT_BSIZE - DEV_BSIZE),
&md);
if (error != 0) {
return (error);
}
if (!(md.md_flags & G_ELI_FLAG_GELIBOOT)) {
/* The GELIBOOT feature is not activated */
return (1);
}
if ((md.md_flags & G_ELI_FLAG_ONETIME)) {
/* Swap device, skip it. */
return (1);
}
if (md.md_iterations < 0) {
/* XXX TODO: Support loading key files. */
/* Disk does not have a passphrase, skip it. */
return (1);
}
geli_e = malloc(sizeof(struct geli_entry));
if (geli_e == NULL)
return (2);
geli_e->dsk = malloc(sizeof(struct dsk));
if (geli_e->dsk == NULL)
return (2);
memcpy(geli_e->dsk, dskp, sizeof(struct dsk));
geli_e->part_end = lastsector;
if (dskp->part == 255) {
geli_e->dsk->part = dskp->slice;
}
geli_e->md = md;
eli_metadata_softc(&geli_e->sc, &md, DEV_BSIZE,
(lastsector + DEV_BSIZE) * DEV_BSIZE);
SLIST_INSERT_HEAD(&geli_head, geli_e, entries);
geli_count++;
return (0);
}
/*
* Attempt to decrypt the device
*/
int
geli_attach(struct dsk *dskp, const char *passphrase)
{
u_char key[G_ELI_USERKEYLEN], mkey[G_ELI_DATAIVKEYLEN], *mkp;
u_int keynum;
struct hmac_ctx ctx;
int error;
SLIST_FOREACH_SAFE(geli_e, &geli_head, entries, geli_e_tmp) {
if (geli_same_device(geli_e, dskp) != 0) {
continue;
}
g_eli_crypto_hmac_init(&ctx, NULL, 0);
/*
* Prepare Derived-Key from the user passphrase.
*/
if (geli_e->md.md_iterations < 0) {
/* XXX TODO: Support loading key files. */
return (1);
} else if (geli_e->md.md_iterations == 0) {
g_eli_crypto_hmac_update(&ctx, geli_e->md.md_salt,
sizeof(geli_e->md.md_salt));
g_eli_crypto_hmac_update(&ctx, passphrase,
strlen(passphrase));
} else if (geli_e->md.md_iterations > 0) {
- printf("Calculating GELI Decryption Key disk%dp%d @ %lu"
+ printf("Calculating GELI Decryption Key disk%dp%d @ %d"
" iterations...\n", dskp->unit,
(dskp->slice > 0 ? dskp->slice : dskp->part),
geli_e->md.md_iterations);
u_char dkey[G_ELI_USERKEYLEN];
pkcs5v2_genkey(dkey, sizeof(dkey), geli_e->md.md_salt,
sizeof(geli_e->md.md_salt), passphrase,
geli_e->md.md_iterations);
g_eli_crypto_hmac_update(&ctx, dkey, sizeof(dkey));
bzero(&dkey, sizeof(dkey));
}
g_eli_crypto_hmac_final(&ctx, key, 0);
error = g_eli_mkey_decrypt(&geli_e->md, key, mkey, &keynum);
bzero(&key, sizeof(key));
if (error == -1) {
bzero(&mkey, sizeof(mkey));
printf("Bad GELI key: %d\n", error);
return (error);
} else if (error != 0) {
bzero(&mkey, sizeof(mkey));
printf("Failed to decrypt GELI master key: %d\n", error);
return (error);
}
/* Store the keys */
bcopy(mkey, geli_e->sc.sc_mkey, sizeof(geli_e->sc.sc_mkey));
bcopy(mkey, geli_e->sc.sc_ivkey, sizeof(geli_e->sc.sc_ivkey));
mkp = mkey + sizeof(geli_e->sc.sc_ivkey);
if ((geli_e->sc.sc_flags & G_ELI_FLAG_AUTH) == 0) {
bcopy(mkp, geli_e->sc.sc_ekey, G_ELI_DATAKEYLEN);
} else {
/*
* The encryption key is: ekey = HMAC_SHA512(Data-Key, 0x10)
*/
g_eli_crypto_hmac(mkp, G_ELI_MAXKEYLEN, "\x10", 1,
geli_e->sc.sc_ekey, 0);
}
bzero(&mkey, sizeof(mkey));
/* Initialize the per-sector IV. */
switch (geli_e->sc.sc_ealgo) {
case CRYPTO_AES_XTS:
break;
default:
SHA256_Init(&geli_e->sc.sc_ivctx);
SHA256_Update(&geli_e->sc.sc_ivctx, geli_e->sc.sc_ivkey,
sizeof(geli_e->sc.sc_ivkey));
break;
}
return (0);
}
/* Disk not found. */
return (2);
}
int
is_geli(struct dsk *dskp)
{
SLIST_FOREACH_SAFE(geli_e, &geli_head, entries, geli_e_tmp) {
if (geli_same_device(geli_e, dskp) == 0) {
return (0);
}
}
return (1);
}
int
geli_read(struct dsk *dskp, off_t offset, u_char *buf, size_t bytes)
{
u_char iv[G_ELI_IVKEYLEN];
u_char *pbuf;
int error;
off_t dstoff;
uint64_t keyno;
size_t n, nsec, secsize;
struct g_eli_key gkey;
pbuf = buf;
SLIST_FOREACH_SAFE(geli_e, &geli_head, entries, geli_e_tmp) {
if (geli_same_device(geli_e, dskp) != 0) {
continue;
}
secsize = geli_e->sc.sc_sectorsize;
nsec = bytes / secsize;
if (nsec == 0) {
/*
* A read of less than the GELI sector size has been
* requested. The caller provided destination buffer may
* not be big enough to boost the read to a full sector,
* so just attempt to decrypt the truncated sector.
*/
secsize = bytes;
nsec = 1;
}
for (n = 0, dstoff = offset; n < nsec; n++, dstoff += secsize) {
g_eli_crypto_ivgen(&geli_e->sc, dstoff, iv,
G_ELI_IVKEYLEN);
/* Get the key that corresponds to this offset. */
keyno = (dstoff >> G_ELI_KEY_SHIFT) / secsize;
g_eli_key_fill(&geli_e->sc, &gkey, keyno);
error = geliboot_crypt(geli_e->sc.sc_ealgo, 0, pbuf,
secsize, gkey.gek_key,
geli_e->sc.sc_ekeylen, iv);
if (error != 0) {
bzero(&gkey, sizeof(gkey));
printf("Failed to decrypt in geli_read()!");
return (error);
}
pbuf += secsize;
}
bzero(&gkey, sizeof(gkey));
return (0);
}
printf("GELI provider not found\n");
return (1);
}
int
geli_passphrase(char *pw, int disk, int parttype, int part, struct dsk *dskp)
{
int i;
/* TODO: Implement GELI keyfile(s) support */
for (i = 0; i < 3; i++) {
/* Try cached passphrase */
if (i == 0 && pw[0] != '\0') {
if (geli_attach(dskp, pw) == 0) {
return (0);
}
}
printf("GELI Passphrase for disk%d%c%d: ", disk, parttype, part);
pwgets(pw, GELI_PW_MAXLEN);
printf("\n");
if (geli_attach(dskp, pw) == 0) {
return (0);
}
}
return (1);
}
Index: user/ngie/bsnmp_cleanup/sys/boot/geli/geliboot.h
===================================================================
--- user/ngie/bsnmp_cleanup/sys/boot/geli/geliboot.h (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/boot/geli/geliboot.h (revision 299697)
@@ -1,89 +1,92 @@
/*-
* Copyright (c) 2015 Allan Jude <allanjude@FreeBSD.org>
* Copyright (c) 2005-2011 Pawel Jakub Dawidek <pawel@dawidek.net>
* 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 AUTHORS 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 AUTHORS 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/endian.h>
#include <sys/queue.h>
#ifndef _GELIBOOT_H_
#define _GELIBOOT_H_
#define _STRING_H_
#define _STRINGS_H_
#define _STDIO_H_
#include <geom/eli/g_eli.h>
#include <geom/eli/pkcs5v2.h>
/* Pull in the md5, sha256, and sha512 implementations */
#include <md5.h>
#include <crypto/sha2/sha256.h>
#include <crypto/sha2/sha512.h>
/* Pull in AES implementation */
#include <crypto/rijndael/rijndael-api-fst.h>
/* AES-XTS implementation */
#define _STAND
#define STAND_H /* We don't want stand.h in {gpt,zfs,gptzfs}boot */
#include <opencrypto/xform_enc.h>
#ifndef DEV_BSIZE
#define DEV_BSIZE 512
#endif
#ifndef DEV_GELIBOOT_BSIZE
#define DEV_GELIBOOT_BSIZE 4096
#endif
#ifndef MIN
#define MIN(a,b) (((a) < (b)) ? (a) : (b))
#endif
#define GELI_PW_MAXLEN 256
extern void pwgets(char *buf, int n);
struct geli_entry {
struct dsk *dsk;
off_t part_end;
struct g_eli_softc sc;
struct g_eli_metadata md;
SLIST_ENTRY(geli_entry) entries;
} *geli_e, *geli_e_tmp;
int geli_count;
void geli_init(void);
int geli_taste(int read_func(void *vdev, void *priv, off_t off,
void *buf, size_t bytes), struct dsk *dsk, daddr_t lastsector);
int geli_attach(struct dsk *dskp, const char *passphrase);
int is_geli(struct dsk *dsk);
int geli_read(struct dsk *dsk, off_t offset, u_char *buf, size_t bytes);
int geli_decrypt(u_int algo, u_char *data, size_t datasize,
const u_char *key, size_t keysize, const uint8_t* iv);
int geli_passphrase(char *pw, int disk, int parttype, int part, struct dsk *dskp);
+int geliboot_crypt(u_int algo, int enc, u_char *data, size_t datasize,
+ const u_char *key, size_t keysize, u_char *iv);
+
#endif /* _GELIBOOT_H_ */
Index: user/ngie/bsnmp_cleanup/sys/boot/i386/common/cons.h
===================================================================
--- user/ngie/bsnmp_cleanup/sys/boot/i386/common/cons.h (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/boot/i386/common/cons.h (revision 299697)
@@ -1,34 +1,35 @@
/*-
* Copyright (c) 1998 Robert Nordier
* All rights reserved.
*
* Redistribution and use in source and binary forms are freely
* permitted provided that the above copyright notice and this
* paragraph and the following disclaimer are duplicated in all
* such forms.
*
* This software is provided "AS IS" and without any express or
* implied warranties, including, without limitation, the implied
* warranties of merchantability and fitness for a particular
* purpose.
*
* $FreeBSD$
*/
#ifndef _CONS_H_
#define _CONS_H_
#define IO_KEYBOARD 1
#define IO_SERIAL 2
extern uint8_t ioctrl;
void putc(int c);
void xputc(int c);
void putchar(int c);
int getc(int fn);
int xgetc(int fn);
+int getchar(void);
int keyhit(unsigned int secs);
void getstr(char *cmdstr, size_t cmdstrsize);
#endif /* !_CONS_H_ */
Index: user/ngie/bsnmp_cleanup/sys/boot/i386/zfsboot/zfsboot.c
===================================================================
--- user/ngie/bsnmp_cleanup/sys/boot/i386/zfsboot/zfsboot.c (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/boot/i386/zfsboot/zfsboot.c (revision 299697)
@@ -1,947 +1,948 @@
/*-
* Copyright (c) 1998 Robert Nordier
* All rights reserved.
*
* Redistribution and use in source and binary forms are freely
* permitted provided that the above copyright notice and this
* paragraph and the following disclaimer are duplicated in all
* such forms.
*
* This software is provided "AS IS" and without any express or
* implied warranties, including, without limitation, the implied
* warranties of merchantability and fitness for a particular
* purpose.
*/
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
#include <sys/param.h>
#include <sys/errno.h>
#include <sys/diskmbr.h>
#ifdef GPT
#include <sys/gpt.h>
#endif
#include <sys/reboot.h>
#include <sys/queue.h>
#include <machine/bootinfo.h>
#include <machine/elf.h>
#include <machine/pc/bios.h>
#include <stdarg.h>
#include <stddef.h>
#include <a.out.h>
#include <btxv86.h>
#include "lib.h"
#include "rbx.h"
#include "drv.h"
#include "util.h"
#include "cons.h"
#include "bootargs.h"
#include "paths.h"
#include "libzfs.h"
#define ARGS 0x900
#define NOPT 14
#define NDEV 3
#define BIOS_NUMDRIVES 0x475
#define DRV_HARD 0x80
#define DRV_MASK 0x7f
#define TYPE_AD 0
#define TYPE_DA 1
#define TYPE_MAXHARD TYPE_DA
#define TYPE_FD 2
#define DEV_GELIBOOT_BSIZE 4096
extern uint32_t _end;
#ifdef GPT
static const uuid_t freebsd_zfs_uuid = GPT_ENT_TYPE_FREEBSD_ZFS;
#endif
static const char optstr[NOPT] = "DhaCcdgmnpqrsv"; /* Also 'P', 'S' */
static const unsigned char flags[NOPT] = {
RBX_DUAL,
RBX_SERIAL,
RBX_ASKNAME,
RBX_CDROM,
RBX_CONFIG,
RBX_KDB,
RBX_GDB,
RBX_MUTE,
RBX_NOINTR,
RBX_PAUSE,
RBX_QUIET,
RBX_DFLTROOT,
RBX_SINGLE,
RBX_VERBOSE
};
uint32_t opts;
-static const char *const dev_nm[NDEV] = {"ad", "da", "fd"};
static const unsigned char dev_maj[NDEV] = {30, 4, 2};
static char cmd[512];
static char cmddup[512];
static char kname[1024];
static char rootname[256];
static int comspeed = SIOSPD;
static struct bootinfo bootinfo;
static uint32_t bootdev;
static struct zfs_boot_args zfsargs;
static struct zfsmount zfsmount;
vm_offset_t high_heap_base;
uint32_t bios_basemem, bios_extmem, high_heap_size;
static struct bios_smap smap;
/*
* The minimum amount of memory to reserve in bios_extmem for the heap.
*/
#define HEAP_MIN (3 * 1024 * 1024)
static char *heap_next;
static char *heap_end;
/* Buffers that must not span a 64k boundary. */
#define READ_BUF_SIZE 8192
struct dmadat {
char rdbuf[READ_BUF_SIZE]; /* for reading large things */
char secbuf[READ_BUF_SIZE]; /* for MBR/disklabel */
};
static struct dmadat *dmadat;
void exit(int);
static void load(void);
static int parse(void);
static void bios_getmem(void);
void *malloc(size_t n);
void free(void *ptr);
void *
malloc(size_t n)
{
char *p = heap_next;
if (p + n > heap_end) {
printf("malloc failure\n");
for (;;)
;
/* NOTREACHED */
return (0);
}
heap_next += n;
return (p);
}
void
free(void *ptr)
{
return;
}
static char *
strdup(const char *s)
{
char *p = malloc(strlen(s) + 1);
strcpy(p, s);
return (p);
}
#ifdef LOADER_GELI_SUPPORT
#include "geliboot.c"
static char gelipw[GELI_PW_MAXLEN];
#endif
#include "zfsimpl.c"
/*
* Read from a dnode (which must be from a ZPL filesystem).
*/
static int
zfs_read(spa_t *spa, const dnode_phys_t *dnode, off_t *offp, void *start, size_t size)
{
const znode_phys_t *zp = (const znode_phys_t *) dnode->dn_bonus;
size_t n;
int rc;
n = size;
if (*offp + n > zp->zp_size)
n = zp->zp_size - *offp;
rc = dnode_read(spa, dnode, *offp, start, n);
if (rc)
return (-1);
*offp += n;
return (n);
}
/*
* Current ZFS pool
*/
static spa_t *spa;
static spa_t *primary_spa;
static vdev_t *primary_vdev;
/*
* A wrapper for dskread that doesn't have to worry about whether the
* buffer pointer crosses a 64k boundary.
*/
static int
vdev_read(vdev_t *vdev, void *priv, off_t off, void *buf, size_t bytes)
{
char *p;
daddr_t lba, alignlba;
off_t alignoff, diff;
unsigned int nb, alignnb;
struct dsk *dsk = (struct dsk *) priv;
if ((off & (DEV_BSIZE - 1)) || (bytes & (DEV_BSIZE - 1)))
return -1;
p = buf;
lba = off / DEV_BSIZE;
lba += dsk->start;
/* Align reads to 4k else 4k sector GELIs will not decrypt. */
alignoff = off & ~ (off_t)(DEV_GELIBOOT_BSIZE - 1);
/* Round LBA down to nearest multiple of DEV_GELIBOOT_BSIZE bytes. */
alignlba = alignoff / DEV_BSIZE;
/*
* The read must be aligned to DEV_GELIBOOT_BSIZE bytes relative to the
* start of the GELI partition, not the start of the actual disk.
*/
alignlba += dsk->start;
diff = (lba - alignlba) * DEV_BSIZE;
while (bytes > 0) {
nb = bytes / DEV_BSIZE;
/*
* Ensure that the read size plus the leading offset does not
* exceed the size of the read buffer.
*/
if (nb > (READ_BUF_SIZE - diff) / DEV_BSIZE)
nb = (READ_BUF_SIZE - diff) / DEV_BSIZE;
/*
* Round the number of blocks to read up to the nearest multiple
* of DEV_GELIBOOT_BSIZE.
*/
alignnb = roundup2(nb * DEV_BSIZE + diff, DEV_GELIBOOT_BSIZE)
/ DEV_BSIZE;
if (drvread(dsk, dmadat->rdbuf, alignlba, alignnb))
return -1;
#ifdef LOADER_GELI_SUPPORT
/* decrypt */
if (is_geli(dsk) == 0) {
if (geli_read(dsk, ((alignlba - dsk->start) *
DEV_BSIZE), dmadat->rdbuf, alignnb * DEV_BSIZE))
return (-1);
}
#endif
memcpy(p, dmadat->rdbuf + diff, nb * DEV_BSIZE);
p += nb * DEV_BSIZE;
lba += nb;
alignlba += alignnb;
bytes -= nb * DEV_BSIZE;
/* Don't need the leading offset after the first block. */
diff = 0;
}
return 0;
}
static int
xfsread(const dnode_phys_t *dnode, off_t *offp, void *buf, size_t nbyte)
{
if ((size_t)zfs_read(spa, dnode, offp, buf, nbyte) != nbyte) {
printf("Invalid format\n");
return -1;
}
return 0;
}
static void
bios_getmem(void)
{
uint64_t size;
/* Parse system memory map */
v86.ebx = 0;
do {
v86.ctl = V86_FLAGS;
v86.addr = 0x15; /* int 0x15 function 0xe820*/
v86.eax = 0xe820;
v86.ecx = sizeof(struct bios_smap);
v86.edx = SMAP_SIG;
v86.es = VTOPSEG(&smap);
v86.edi = VTOPOFF(&smap);
v86int();
if (V86_CY(v86.efl) || (v86.eax != SMAP_SIG))
break;
/* look for a low-memory segment that's large enough */
if ((smap.type == SMAP_TYPE_MEMORY) && (smap.base == 0) &&
(smap.length >= (512 * 1024)))
bios_basemem = smap.length;
/* look for the first segment in 'extended' memory */
if ((smap.type == SMAP_TYPE_MEMORY) && (smap.base == 0x100000)) {
bios_extmem = smap.length;
}
/*
* Look for the largest segment in 'extended' memory beyond
* 1MB but below 4GB.
*/
if ((smap.type == SMAP_TYPE_MEMORY) && (smap.base > 0x100000) &&
(smap.base < 0x100000000ull)) {
size = smap.length;
/*
* If this segment crosses the 4GB boundary, truncate it.
*/
if (smap.base + size > 0x100000000ull)
size = 0x100000000ull - smap.base;
if (size > high_heap_size) {
high_heap_size = size;
high_heap_base = smap.base;
}
}
} while (v86.ebx != 0);
/* Fall back to the old compatibility function for base memory */
if (bios_basemem == 0) {
v86.ctl = 0;
v86.addr = 0x12; /* int 0x12 */
v86int();
bios_basemem = (v86.eax & 0xffff) * 1024;
}
/* Fall back through several compatibility functions for extended memory */
if (bios_extmem == 0) {
v86.ctl = V86_FLAGS;
v86.addr = 0x15; /* int 0x15 function 0xe801*/
v86.eax = 0xe801;
v86int();
if (!V86_CY(v86.efl)) {
bios_extmem = ((v86.ecx & 0xffff) + ((v86.edx & 0xffff) * 64)) * 1024;
}
}
if (bios_extmem == 0) {
v86.ctl = 0;
v86.addr = 0x15; /* int 0x15 function 0x88*/
v86.eax = 0x8800;
v86int();
bios_extmem = (v86.eax & 0xffff) * 1024;
}
/*
* If we have extended memory and did not find a suitable heap
* region in the SMAP, use the last 3MB of 'extended' memory as a
* high heap candidate.
*/
if (bios_extmem >= HEAP_MIN && high_heap_size < HEAP_MIN) {
high_heap_size = HEAP_MIN;
high_heap_base = bios_extmem + 0x100000 - HEAP_MIN;
}
}
/*
* Try to detect a device supported by the legacy int13 BIOS
*/
static int
int13probe(int drive)
{
v86.ctl = V86_FLAGS;
v86.addr = 0x13;
v86.eax = 0x800;
v86.edx = drive;
v86int();
if (!V86_CY(v86.efl) && /* carry clear */
((v86.edx & 0xff) != (drive & DRV_MASK))) { /* unit # OK */
if ((v86.ecx & 0x3f) == 0) { /* absurd sector size */
return(0); /* skip device */
}
return (1);
}
return(0);
}
/*
* We call this when we find a ZFS vdev - ZFS consumes the dsk
* structure so we must make a new one.
*/
static struct dsk *
copy_dsk(struct dsk *dsk)
{
struct dsk *newdsk;
newdsk = malloc(sizeof(struct dsk));
*newdsk = *dsk;
return (newdsk);
}
static void
probe_drive(struct dsk *dsk)
{
#ifdef GPT
struct gpt_hdr hdr;
struct gpt_ent *ent;
unsigned part, entries_per_sec;
#endif
+#ifdef LOADER_GELI_SUPPORT
daddr_t slba, elba;
+#endif
struct dos_partition *dp;
char *sec;
unsigned i;
/*
* If we find a vdev on the whole disk, stop here.
*/
if (vdev_probe(vdev_read, dsk, NULL) == 0)
return;
#ifdef LOADER_GELI_SUPPORT
/*
* Taste the disk, if it is GELI encrypted, decrypt it and check to see if
* it is a usable vdev then. Otherwise dig
* out the partition table and probe each slice/partition
* in turn for a vdev or GELI encrypted vdev.
*/
elba = drvsize(dsk);
if (elba > 0) {
elba--;
}
if (geli_taste(vdev_read, dsk, elba) == 0) {
if (geli_passphrase(&gelipw, dsk->unit, ':', 0, dsk) == 0) {
if (vdev_probe(vdev_read, dsk, NULL) == 0) {
return;
}
}
}
#endif /* LOADER_GELI_SUPPORT */
sec = dmadat->secbuf;
dsk->start = 0;
#ifdef GPT
/*
* First check for GPT.
*/
if (drvread(dsk, sec, 1, 1)) {
return;
}
memcpy(&hdr, sec, sizeof(hdr));
if (memcmp(hdr.hdr_sig, GPT_HDR_SIG, sizeof(hdr.hdr_sig)) != 0 ||
hdr.hdr_lba_self != 1 || hdr.hdr_revision < 0x00010000 ||
hdr.hdr_entsz < sizeof(*ent) || DEV_BSIZE % hdr.hdr_entsz != 0) {
goto trymbr;
}
/*
* Probe all GPT partitions for the presence of ZFS pools. We
* return the spa_t for the first we find (if requested). This
* will have the effect of booting from the first pool on the
* disk.
*
* If no vdev is found, GELI decrypting the device and try again
*/
entries_per_sec = DEV_BSIZE / hdr.hdr_entsz;
slba = hdr.hdr_lba_table;
elba = slba + hdr.hdr_entries / entries_per_sec;
while (slba < elba) {
dsk->start = 0;
if (drvread(dsk, sec, slba, 1))
return;
for (part = 0; part < entries_per_sec; part++) {
ent = (struct gpt_ent *)(sec + part * hdr.hdr_entsz);
if (memcmp(&ent->ent_type, &freebsd_zfs_uuid,
sizeof(uuid_t)) == 0) {
dsk->start = ent->ent_lba_start;
dsk->slice = part + 1;
dsk->part = 255;
if (vdev_probe(vdev_read, dsk, NULL) == 0) {
/*
* This slice had a vdev. We need a new dsk
* structure now since the vdev now owns this one.
*/
dsk = copy_dsk(dsk);
}
#ifdef LOADER_GELI_SUPPORT
else if (geli_taste(vdev_read, dsk, ent->ent_lba_end -
ent->ent_lba_start) == 0) {
if (geli_passphrase(&gelipw, dsk->unit, 'p', dsk->slice, dsk) == 0) {
/*
* This slice has GELI, check it for ZFS.
*/
if (vdev_probe(vdev_read, dsk, NULL) == 0) {
/*
* This slice had a vdev. We need a new dsk
* structure now since the vdev now owns this one.
*/
dsk = copy_dsk(dsk);
}
break;
}
}
#endif /* LOADER_GELI_SUPPORT */
}
}
slba++;
}
return;
trymbr:
#endif /* GPT */
if (drvread(dsk, sec, DOSBBSECTOR, 1))
return;
dp = (void *)(sec + DOSPARTOFF);
for (i = 0; i < NDOSPART; i++) {
if (!dp[i].dp_typ)
continue;
dsk->start = dp[i].dp_start;
dsk->slice = i + 1;
if (vdev_probe(vdev_read, dsk, NULL) == 0) {
dsk = copy_dsk(dsk);
}
#ifdef LOADER_GELI_SUPPORT
else if (geli_taste(vdev_read, dsk, dp[i].dp_size -
dp[i].dp_start) == 0) {
if (geli_passphrase(&gelipw, dsk->unit, 's', i, dsk) == 0) {
/*
* This slice has GELI, check it for ZFS.
*/
if (vdev_probe(vdev_read, dsk, NULL) == 0) {
/*
* This slice had a vdev. We need a new dsk
* structure now since the vdev now owns this one.
*/
dsk = copy_dsk(dsk);
}
break;
}
}
#endif /* LOADER_GELI_SUPPORT */
}
}
int
main(void)
{
int autoboot, i;
dnode_phys_t dn;
off_t off;
struct dsk *dsk;
dmadat = (void *)(roundup2(__base + (int32_t)&_end, 0x10000) - __base);
bios_getmem();
if (high_heap_size > 0) {
heap_end = PTOV(high_heap_base + high_heap_size);
heap_next = PTOV(high_heap_base);
} else {
heap_next = (char *)dmadat + sizeof(*dmadat);
heap_end = (char *)PTOV(bios_basemem);
}
dsk = malloc(sizeof(struct dsk));
dsk->drive = *(uint8_t *)PTOV(ARGS);
dsk->type = dsk->drive & DRV_HARD ? TYPE_AD : TYPE_FD;
dsk->unit = dsk->drive & DRV_MASK;
dsk->slice = *(uint8_t *)PTOV(ARGS + 1) + 1;
dsk->part = 0;
dsk->start = 0;
dsk->init = 0;
bootinfo.bi_version = BOOTINFO_VERSION;
bootinfo.bi_size = sizeof(bootinfo);
bootinfo.bi_basemem = bios_basemem / 1024;
bootinfo.bi_extmem = bios_extmem / 1024;
bootinfo.bi_memsizes_valid++;
bootinfo.bi_bios_dev = dsk->drive;
bootdev = MAKEBOOTDEV(dev_maj[dsk->type],
dsk->slice, dsk->unit, dsk->part),
/* Process configuration file */
autoboot = 1;
#ifdef LOADER_GELI_SUPPORT
geli_init();
#endif
zfs_init();
/*
* Probe the boot drive first - we will try to boot from whatever
* pool we find on that drive.
*/
probe_drive(dsk);
/*
* Probe the rest of the drives that the bios knows about. This
* will find any other available pools and it may fill in missing
* vdevs for the boot pool.
*/
#ifndef VIRTUALBOX
for (i = 0; i < *(unsigned char *)PTOV(BIOS_NUMDRIVES); i++)
#else
for (i = 0; i < MAXBDDEV; i++)
#endif
{
if ((i | DRV_HARD) == *(uint8_t *)PTOV(ARGS))
continue;
if (!int13probe(i | DRV_HARD))
break;
dsk = malloc(sizeof(struct dsk));
dsk->drive = i | DRV_HARD;
dsk->type = dsk->drive & TYPE_AD;
dsk->unit = i;
dsk->slice = 0;
dsk->part = 0;
dsk->start = 0;
dsk->init = 0;
probe_drive(dsk);
}
/*
* The first discovered pool, if any, is the pool.
*/
spa = spa_get_primary();
if (!spa) {
printf("%s: No ZFS pools located, can't boot\n", BOOTPROG);
for (;;)
;
}
primary_spa = spa;
primary_vdev = spa_get_primary_vdev(spa);
if (zfs_spa_init(spa) != 0 || zfs_mount(spa, 0, &zfsmount) != 0) {
printf("%s: failed to mount default pool %s\n",
BOOTPROG, spa->spa_name);
autoboot = 0;
} else if (zfs_lookup(&zfsmount, PATH_CONFIG, &dn) == 0 ||
zfs_lookup(&zfsmount, PATH_DOTCONFIG, &dn) == 0) {
off = 0;
zfs_read(spa, &dn, &off, cmd, sizeof(cmd));
}
if (*cmd) {
/*
* Note that parse() is destructive to cmd[] and we also want
* to honor RBX_QUIET option that could be present in cmd[].
*/
memcpy(cmddup, cmd, sizeof(cmd));
if (parse())
autoboot = 0;
if (!OPT_CHECK(RBX_QUIET))
printf("%s: %s\n", PATH_CONFIG, cmddup);
/* Do not process this command twice */
*cmd = 0;
}
/*
* Try to exec /boot/loader. If interrupted by a keypress,
* or in case of failure, try to load a kernel directly instead.
*/
if (autoboot && !*kname) {
memcpy(kname, PATH_LOADER_ZFS, sizeof(PATH_LOADER_ZFS));
if (!keyhit(3)) {
load();
memcpy(kname, PATH_KERNEL, sizeof(PATH_KERNEL));
}
}
/* Present the user with the boot2 prompt. */
for (;;) {
if (!autoboot || !OPT_CHECK(RBX_QUIET)) {
printf("\nFreeBSD/x86 boot\n");
if (zfs_rlookup(spa, zfsmount.rootobj, rootname) != 0)
printf("Default: %s/<0x%llx>:%s\n"
"boot: ",
spa->spa_name, zfsmount.rootobj, kname);
else if (rootname[0] != '\0')
printf("Default: %s/%s:%s\n"
"boot: ",
spa->spa_name, rootname, kname);
else
printf("Default: %s:%s\n"
"boot: ",
spa->spa_name, kname);
}
if (ioctrl & IO_SERIAL)
sio_flush();
if (!autoboot || keyhit(5))
getstr(cmd, sizeof(cmd));
else if (!autoboot || !OPT_CHECK(RBX_QUIET))
putchar('\n');
autoboot = 0;
if (parse())
putchar('\a');
else
load();
}
}
/* XXX - Needed for btxld to link the boot2 binary; do not remove. */
void
exit(int x)
{
}
static void
load(void)
{
union {
struct exec ex;
Elf32_Ehdr eh;
} hdr;
static Elf32_Phdr ep[2];
static Elf32_Shdr es[2];
caddr_t p;
dnode_phys_t dn;
off_t off;
uint32_t addr, x;
int fmt, i, j;
if (zfs_lookup(&zfsmount, kname, &dn)) {
printf("\nCan't find %s\n", kname);
return;
}
off = 0;
if (xfsread(&dn, &off, &hdr, sizeof(hdr)))
return;
if (N_GETMAGIC(hdr.ex) == ZMAGIC)
fmt = 0;
else if (IS_ELF(hdr.eh))
fmt = 1;
else {
printf("Invalid %s\n", "format");
return;
}
if (fmt == 0) {
addr = hdr.ex.a_entry & 0xffffff;
p = PTOV(addr);
off = PAGE_SIZE;
if (xfsread(&dn, &off, p, hdr.ex.a_text))
return;
p += roundup2(hdr.ex.a_text, PAGE_SIZE);
if (xfsread(&dn, &off, p, hdr.ex.a_data))
return;
p += hdr.ex.a_data + roundup2(hdr.ex.a_bss, PAGE_SIZE);
bootinfo.bi_symtab = VTOP(p);
memcpy(p, &hdr.ex.a_syms, sizeof(hdr.ex.a_syms));
p += sizeof(hdr.ex.a_syms);
if (hdr.ex.a_syms) {
if (xfsread(&dn, &off, p, hdr.ex.a_syms))
return;
p += hdr.ex.a_syms;
if (xfsread(&dn, &off, p, sizeof(int)))
return;
x = *(uint32_t *)p;
p += sizeof(int);
x -= sizeof(int);
if (xfsread(&dn, &off, p, x))
return;
p += x;
}
} else {
off = hdr.eh.e_phoff;
for (j = i = 0; i < hdr.eh.e_phnum && j < 2; i++) {
if (xfsread(&dn, &off, ep + j, sizeof(ep[0])))
return;
if (ep[j].p_type == PT_LOAD)
j++;
}
for (i = 0; i < 2; i++) {
p = PTOV(ep[i].p_paddr & 0xffffff);
off = ep[i].p_offset;
if (xfsread(&dn, &off, p, ep[i].p_filesz))
return;
}
p += roundup2(ep[1].p_memsz, PAGE_SIZE);
bootinfo.bi_symtab = VTOP(p);
if (hdr.eh.e_shnum == hdr.eh.e_shstrndx + 3) {
off = hdr.eh.e_shoff + sizeof(es[0]) *
(hdr.eh.e_shstrndx + 1);
if (xfsread(&dn, &off, &es, sizeof(es)))
return;
for (i = 0; i < 2; i++) {
memcpy(p, &es[i].sh_size, sizeof(es[i].sh_size));
p += sizeof(es[i].sh_size);
off = es[i].sh_offset;
if (xfsread(&dn, &off, p, es[i].sh_size))
return;
p += es[i].sh_size;
}
}
addr = hdr.eh.e_entry & 0xffffff;
}
bootinfo.bi_esymtab = VTOP(p);
bootinfo.bi_kernelname = VTOP(kname);
zfsargs.size = sizeof(zfsargs);
zfsargs.pool = zfsmount.spa->spa_guid;
zfsargs.root = zfsmount.rootobj;
zfsargs.primary_pool = primary_spa->spa_guid;
#ifdef LOADER_GELI_SUPPORT
bcopy(gelipw, zfsargs.gelipw, sizeof(zfsargs.gelipw));
bzero(gelipw, sizeof(gelipw));
#else
zfsargs.gelipw[0] = '\0';
#endif
if (primary_vdev != NULL)
zfsargs.primary_vdev = primary_vdev->v_guid;
else
printf("failed to detect primary vdev\n");
__exec((caddr_t)addr, RB_BOOTINFO | (opts & RBX_MASK),
bootdev,
KARGS_FLAGS_ZFS | KARGS_FLAGS_EXTARG,
(uint32_t) spa->spa_guid,
(uint32_t) (spa->spa_guid >> 32),
VTOP(&bootinfo),
zfsargs);
}
static int
zfs_mount_ds(char *dsname)
{
uint64_t newroot;
spa_t *newspa;
char *q;
q = strchr(dsname, '/');
if (q)
*q++ = '\0';
newspa = spa_find_by_name(dsname);
if (newspa == NULL) {
printf("\nCan't find ZFS pool %s\n", dsname);
return -1;
}
if (zfs_spa_init(newspa))
return -1;
newroot = 0;
if (q) {
if (zfs_lookup_dataset(newspa, q, &newroot)) {
printf("\nCan't find dataset %s in ZFS pool %s\n",
q, newspa->spa_name);
return -1;
}
}
if (zfs_mount(newspa, newroot, &zfsmount)) {
printf("\nCan't mount ZFS dataset\n");
return -1;
}
spa = newspa;
return (0);
}
static int
parse(void)
{
char *arg = cmd;
char *ep, *p, *q;
const char *cp;
int c, i, j;
while ((c = *arg++)) {
if (c == ' ' || c == '\t' || c == '\n')
continue;
for (p = arg; *p && *p != '\n' && *p != ' ' && *p != '\t'; p++);
ep = p;
if (*p)
*p++ = 0;
if (c == '-') {
while ((c = *arg++)) {
if (c == 'P') {
if (*(uint8_t *)PTOV(0x496) & 0x10) {
cp = "yes";
} else {
opts |= OPT_SET(RBX_DUAL) | OPT_SET(RBX_SERIAL);
cp = "no";
}
printf("Keyboard: %s\n", cp);
continue;
} else if (c == 'S') {
j = 0;
while ((unsigned int)(i = *arg++ - '0') <= 9)
j = j * 10 + i;
if (j > 0 && i == -'0') {
comspeed = j;
break;
}
/* Fall through to error below ('S' not in optstr[]). */
}
for (i = 0; c != optstr[i]; i++)
if (i == NOPT - 1)
return -1;
opts ^= OPT_SET(flags[i]);
}
ioctrl = OPT_CHECK(RBX_DUAL) ? (IO_SERIAL|IO_KEYBOARD) :
OPT_CHECK(RBX_SERIAL) ? IO_SERIAL : IO_KEYBOARD;
if (ioctrl & IO_SERIAL) {
if (sio_init(115200 / comspeed) != 0)
ioctrl &= ~IO_SERIAL;
}
} if (c == '?') {
dnode_phys_t dn;
if (zfs_lookup(&zfsmount, arg, &dn) == 0) {
zap_list(spa, &dn);
}
return -1;
} else {
arg--;
/*
* Report pool status if the comment is 'status'. Lets
* hope no-one wants to load /status as a kernel.
*/
if (!strcmp(arg, "status")) {
spa_all_status();
return -1;
}
/*
* If there is "zfs:" prefix simply ignore it.
*/
if (strncmp(arg, "zfs:", 4) == 0)
arg += 4;
/*
* If there is a colon, switch pools.
*/
q = strchr(arg, ':');
if (q) {
*q++ = '\0';
if (zfs_mount_ds(arg) != 0)
return -1;
arg = q;
}
if ((i = ep - arg)) {
if ((size_t)i >= sizeof(kname))
return -1;
memcpy(kname, arg, i + 1);
}
}
arg = p;
}
return 0;
}
Index: user/ngie/bsnmp_cleanup/sys/cddl/boot/zfs/lz4.c
===================================================================
--- user/ngie/bsnmp_cleanup/sys/cddl/boot/zfs/lz4.c (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/cddl/boot/zfs/lz4.c (revision 299697)
@@ -1,327 +1,329 @@
/*
* LZ4 - Fast LZ compression algorithm
* Header File
* Copyright (C) 2011-2013, Yann Collet.
* BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following disclaimer
* in the documentation and/or other materials provided with the
* distribution.
*
* 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.
*
* You can contact the author at :
* - LZ4 homepage : http://fastcompression.blogspot.com/p/lz4.html
* - LZ4 source repository : http://code.google.com/p/lz4/
*
* $FreeBSD$
*/
+#include <arpa/inet.h>
+
static int LZ4_uncompress_unknownOutputSize(const char *source, char *dest,
int isize, int maxOutputSize);
/* ARGSUSED */
static int
lz4_decompress(void *s_start, void *d_start, size_t s_len, size_t d_len, int dummy __unused)
{
const uint8_t *src = s_start;
uint32_t bufsiz = htonl(*(uint32_t *)src);
/* invalid compressed buffer size encoded at start */
if (bufsiz + 4 > s_len)
return (1);
/*
* Returns 0 on success (decompression function returned non-negative)
* and non-zero on failure (decompression function returned negative).
*/
return (LZ4_uncompress_unknownOutputSize((const char *)s_start + 4, d_start, bufsiz,
d_len) < 0);
}
/*
* CPU Feature Detection
*/
/* 32 or 64 bits ? */
#if (defined(__x86_64__) || defined(__x86_64) || defined(__amd64__) || \
defined(__amd64) || defined(__ppc64__) || defined(_WIN64) || \
defined(__LP64__) || defined(_LP64))
#define LZ4_ARCH64 1
#else
#define LZ4_ARCH64 0
#endif
/*
* Little Endian or Big Endian?
* Note: overwrite the below #define if you know your architecture endianess.
*/
#if BYTE_ORDER == BIG_ENDIAN
#define LZ4_BIG_ENDIAN 1
#else
/*
* Little Endian assumed. PDP Endian and other very rare endian format
* are unsupported.
*/
#endif
/*
* Unaligned memory access is automatically enabled for "common" CPU,
* such as x86. For others CPU, the compiler will be more cautious, and
* insert extra code to ensure aligned access is respected. If you know
* your target CPU supports unaligned memory access, you may want to
* force this option manually to improve performance
*/
#if defined(__ARM_FEATURE_UNALIGNED)
#define LZ4_FORCE_UNALIGNED_ACCESS 1
#endif
/*
* Compiler Options
*/
#if __STDC_VERSION__ >= 199901L /* C99 */
/* "restrict" is a known keyword */
#else
/* Disable restrict */
#define restrict
#endif
#define GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__)
#define lz4_bswap16(x) ((unsigned short int) ((((x) >> 8) & 0xffu) \
| (((x) & 0xffu) << 8)))
#if (GCC_VERSION >= 302) || (__INTEL_COMPILER >= 800) || defined(__clang__)
#define expect(expr, value) (__builtin_expect((expr), (value)))
#else
#define expect(expr, value) (expr)
#endif
#define likely(expr) expect((expr) != 0, 1)
#define unlikely(expr) expect((expr) != 0, 0)
/* Basic types */
#define BYTE uint8_t
#define U16 uint16_t
#define U32 uint32_t
#define S32 int32_t
#define U64 uint64_t
#ifndef LZ4_FORCE_UNALIGNED_ACCESS
#pragma pack(1)
#endif
typedef struct _U16_S {
U16 v;
} U16_S;
typedef struct _U32_S {
U32 v;
} U32_S;
typedef struct _U64_S {
U64 v;
} U64_S;
#ifndef LZ4_FORCE_UNALIGNED_ACCESS
#pragma pack()
#endif
#define A64(x) (((U64_S *)(x))->v)
#define A32(x) (((U32_S *)(x))->v)
#define A16(x) (((U16_S *)(x))->v)
/*
* Constants
*/
#define MINMATCH 4
#define COPYLENGTH 8
#define LASTLITERALS 5
#define ML_BITS 4
#define ML_MASK ((1U<<ML_BITS)-1)
#define RUN_BITS (8-ML_BITS)
#define RUN_MASK ((1U<<RUN_BITS)-1)
/*
* Architecture-specific macros
*/
#if LZ4_ARCH64
#define STEPSIZE 8
#define UARCH U64
#define AARCH A64
#define LZ4_COPYSTEP(s, d) A64(d) = A64(s); d += 8; s += 8;
#define LZ4_COPYPACKET(s, d) LZ4_COPYSTEP(s, d)
#define LZ4_SECURECOPY(s, d, e) if (d < e) LZ4_WILDCOPY(s, d, e)
#define HTYPE U32
#define INITBASE(base) const BYTE* const base = ip
#else
#define STEPSIZE 4
#define UARCH U32
#define AARCH A32
#define LZ4_COPYSTEP(s, d) A32(d) = A32(s); d += 4; s += 4;
#define LZ4_COPYPACKET(s, d) LZ4_COPYSTEP(s, d); LZ4_COPYSTEP(s, d);
#define LZ4_SECURECOPY LZ4_WILDCOPY
#define HTYPE const BYTE*
#define INITBASE(base) const int base = 0
#endif
#if (defined(LZ4_BIG_ENDIAN) && !defined(BIG_ENDIAN_NATIVE_BUT_INCOMPATIBLE))
#define LZ4_READ_LITTLEENDIAN_16(d, s, p) \
{ U16 v = A16(p); v = lz4_bswap16(v); d = (s) - v; }
#define LZ4_WRITE_LITTLEENDIAN_16(p, i) \
{ U16 v = (U16)(i); v = lz4_bswap16(v); A16(p) = v; p += 2; }
#else
#define LZ4_READ_LITTLEENDIAN_16(d, s, p) { d = (s) - A16(p); }
#define LZ4_WRITE_LITTLEENDIAN_16(p, v) { A16(p) = v; p += 2; }
#endif
/* Macros */
#define LZ4_WILDCOPY(s, d, e) do { LZ4_COPYPACKET(s, d) } while (d < e);
/* Decompression functions */
static int
LZ4_uncompress_unknownOutputSize(const char *source,
char *dest, int isize, int maxOutputSize)
{
/* Local Variables */
const BYTE *restrict ip = (const BYTE *) source;
const BYTE *const iend = ip + isize;
const BYTE *restrict ref;
BYTE *restrict op = (BYTE *) dest;
BYTE *const oend = op + maxOutputSize;
BYTE *cpy;
size_t dec[] = { 0, 3, 2, 3, 0, 0, 0, 0 };
/* Main Loop */
while (ip < iend) {
BYTE token;
int length;
/* get runlength */
token = *ip++;
if ((length = (token >> ML_BITS)) == RUN_MASK) {
int s = 255;
while ((ip < iend) && (s == 255)) {
s = *ip++;
length += s;
}
}
/* copy literals */
cpy = op + length;
if ((cpy > oend - COPYLENGTH) ||
(ip + length > iend - COPYLENGTH)) {
if (cpy > oend)
/*
* Error: request to write beyond destination
* buffer.
*/
goto _output_error;
if (ip + length > iend)
/*
* Error : request to read beyond source
* buffer.
*/
goto _output_error;
memcpy(op, ip, length);
op += length;
ip += length;
if (ip < iend)
/* Error : LZ4 format violation */
goto _output_error;
/* Necessarily EOF, due to parsing restrictions. */
break;
}
LZ4_WILDCOPY(ip, op, cpy);
ip -= (op - cpy);
op = cpy;
/* get offset */
LZ4_READ_LITTLEENDIAN_16(ref, cpy, ip);
ip += 2;
if (ref < (BYTE * const) dest)
/*
* Error: offset creates reference outside of
* destination buffer.
*/
goto _output_error;
/* get matchlength */
if ((length = (token & ML_MASK)) == ML_MASK) {
while (ip < iend) {
int s = *ip++;
length += s;
if (s == 255)
continue;
break;
}
}
/* copy repeated sequence */
if unlikely(op - ref < STEPSIZE) {
#if LZ4_ARCH64
size_t dec2table[] = { 0, 0, 0, -1, 0, 1, 2, 3 };
size_t dec2 = dec2table[op - ref];
#else
const int dec2 = 0;
#endif
*op++ = *ref++;
*op++ = *ref++;
*op++ = *ref++;
*op++ = *ref++;
ref -= dec[op - ref];
A32(op) = A32(ref);
op += STEPSIZE - 4;
ref -= dec2;
} else {
LZ4_COPYSTEP(ref, op);
}
cpy = op + length - (STEPSIZE - 4);
if (cpy > oend - COPYLENGTH) {
if (cpy > oend)
/*
* Error: request to write outside of
* destination buffer.
*/
goto _output_error;
LZ4_SECURECOPY(ref, op, (oend - COPYLENGTH));
while (op < cpy)
*op++ = *ref++;
op = cpy;
if (op == oend)
/*
* Check EOF (should never happen, since last
* 5 bytes are supposed to be literals).
*/
break;
continue;
}
LZ4_SECURECOPY(ref, op, cpy);
op = cpy; /* correction */
}
/* end of decoding */
return (int)(((char *)op) - dest);
/* write overflow error detected */
_output_error:
return (int)(-(((char *)ip) - source));
}
Index: user/ngie/bsnmp_cleanup/sys/compat/linuxkpi/common/include/asm/pgtable.h
===================================================================
--- user/ngie/bsnmp_cleanup/sys/compat/linuxkpi/common/include/asm/pgtable.h (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/compat/linuxkpi/common/include/asm/pgtable.h (revision 299697)
@@ -1,36 +1,36 @@
/*-
* Copyright (c) 2010 Isilon Systems, Inc.
* Copyright (c) 2010 iX Systems, Inc.
* Copyright (c) 2010 Panasas, Inc.
* Copyright (c) 2013, 2014 Mellanox Technologies, Ltd.
* 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 unmodified, 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 _ASM_PGTABLE_H_
#define _ASM_PGTABLE_H_
-typedef int pgprot_t;
+#include <linux/page.h>
#endif /* _ASM_PGTABLE_H_ */
Index: user/ngie/bsnmp_cleanup/sys/compat/linuxkpi/common/include/linux/compiler.h
===================================================================
--- user/ngie/bsnmp_cleanup/sys/compat/linuxkpi/common/include/linux/compiler.h (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/compat/linuxkpi/common/include/linux/compiler.h (revision 299697)
@@ -1,91 +1,101 @@
/*-
* Copyright (c) 2010 Isilon Systems, Inc.
* Copyright (c) 2010 iX Systems, Inc.
* Copyright (c) 2010 Panasas, Inc.
- * Copyright (c) 2013-2015 Mellanox Technologies, Ltd.
+ * Copyright (c) 2013-2016 Mellanox Technologies, Ltd.
* Copyright (c) 2015 François Tigeot
* 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 unmodified, 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 _LINUX_COMPILER_H_
#define _LINUX_COMPILER_H_
#include <sys/cdefs.h>
#define __user
#define __kernel
#define __safe
#define __force
#define __nocast
#define __iomem
#define __chk_user_ptr(x) 0
#define __chk_io_ptr(x) 0
#define __builtin_warning(x, y...) (1)
#define __acquires(x)
#define __releases(x)
#define __acquire(x) 0
#define __release(x) 0
#define __cond_lock(x,c) (c)
#define __bitwise
#define __devinitdata
+#define __deprecated
#define __init
#define __devinit
#define __devexit
#define __exit
+#define __rcu
#define __stringify(x) #x
#define __attribute_const__ __attribute__((__const__))
#undef __always_inline
#define __always_inline inline
+#define ____cacheline_aligned __aligned(CACHE_LINE_SIZE)
#define likely(x) __builtin_expect(!!(x), 1)
#define unlikely(x) __builtin_expect(!!(x), 0)
#define typeof(x) __typeof(x)
#define uninitialized_var(x) x = x
#define __read_mostly __attribute__((__section__(".data.read_mostly")))
#define __always_unused __unused
#define __must_check __result_use_check
#define __printf(a,b) __printflike(a,b)
#define barrier() __asm__ __volatile__("": : :"memory")
+#define ___PASTE(a,b) a##b
+#define __PASTE(a,b) ___PASTE(a,b)
+
#define ACCESS_ONCE(x) (*(volatile __typeof(x) *)&(x))
#define WRITE_ONCE(x,v) do { \
barrier(); \
ACCESS_ONCE(x) = (v); \
barrier(); \
} while (0)
#define READ_ONCE(x) ({ \
__typeof(x) __var; \
barrier(); \
__var = ACCESS_ONCE(x); \
barrier(); \
__var; \
})
-
+
+#define lockless_dereference(p) READ_ONCE(p)
+
+#define _AT(T,X) ((T)(X))
+
#endif /* _LINUX_COMPILER_H_ */
Index: user/ngie/bsnmp_cleanup/sys/compat/linuxkpi/common/include/linux/device.h
===================================================================
--- user/ngie/bsnmp_cleanup/sys/compat/linuxkpi/common/include/linux/device.h (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/compat/linuxkpi/common/include/linux/device.h (revision 299697)
@@ -1,332 +1,336 @@
/*-
* Copyright (c) 2010 Isilon Systems, Inc.
* Copyright (c) 2010 iX Systems, Inc.
* Copyright (c) 2010 Panasas, Inc.
- * Copyright (c) 2013, 2014 Mellanox Technologies, Ltd.
+ * Copyright (c) 2013-2016 Mellanox Technologies, Ltd.
* 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 unmodified, 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 _LINUX_DEVICE_H_
#define _LINUX_DEVICE_H_
#include <linux/types.h>
#include <linux/kobject.h>
#include <linux/sysfs.h>
#include <linux/list.h>
#include <linux/compiler.h>
#include <linux/types.h>
#include <linux/module.h>
#include <linux/workqueue.h>
#include <linux/sysfs.h>
#include <linux/kdev_t.h>
#include <asm/atomic.h>
#include <sys/bus.h>
enum irqreturn { IRQ_NONE = 0, IRQ_HANDLED, IRQ_WAKE_THREAD, };
typedef enum irqreturn irqreturn_t;
struct class {
const char *name;
struct module *owner;
struct kobject kobj;
devclass_t bsdclass;
void (*class_release)(struct class *class);
void (*dev_release)(struct device *dev);
char * (*devnode)(struct device *dev, umode_t *mode);
};
struct device {
struct device *parent;
struct list_head irqents;
device_t bsddev;
dev_t devt;
struct class *class;
void (*release)(struct device *dev);
struct kobject kobj;
uint64_t *dma_mask;
void *driver_data;
unsigned int irq;
unsigned int msix;
unsigned int msix_max;
};
extern struct device linux_root_device;
extern struct kobject linux_class_root;
extern const struct kobj_type linux_dev_ktype;
extern const struct kobj_type linux_class_ktype;
struct class_attribute {
struct attribute attr;
ssize_t (*show)(struct class *, struct class_attribute *, char *);
ssize_t (*store)(struct class *, struct class_attribute *, const char *, size_t);
const void *(*namespace)(struct class *, const struct class_attribute *);
};
#define CLASS_ATTR(_name, _mode, _show, _store) \
struct class_attribute class_attr_##_name = \
{ { #_name, NULL, _mode }, _show, _store }
struct device_attribute {
struct attribute attr;
ssize_t (*show)(struct device *,
struct device_attribute *, char *);
ssize_t (*store)(struct device *,
struct device_attribute *, const char *,
size_t);
};
#define DEVICE_ATTR(_name, _mode, _show, _store) \
struct device_attribute dev_attr_##_name = \
{ { #_name, NULL, _mode }, _show, _store }
/* Simple class attribute that is just a static string */
struct class_attribute_string {
struct class_attribute attr;
char *str;
};
static inline ssize_t
show_class_attr_string(struct class *class,
struct class_attribute *attr, char *buf)
{
struct class_attribute_string *cs;
cs = container_of(attr, struct class_attribute_string, attr);
return snprintf(buf, PAGE_SIZE, "%s\n", cs->str);
}
/* Currently read-only only */
#define _CLASS_ATTR_STRING(_name, _mode, _str) \
{ __ATTR(_name, _mode, show_class_attr_string, NULL), _str }
#define CLASS_ATTR_STRING(_name, _mode, _str) \
struct class_attribute_string class_attr_##_name = \
_CLASS_ATTR_STRING(_name, _mode, _str)
#define dev_err(dev, fmt, ...) device_printf((dev)->bsddev, fmt, ##__VA_ARGS__)
#define dev_warn(dev, fmt, ...) device_printf((dev)->bsddev, fmt, ##__VA_ARGS__)
#define dev_info(dev, fmt, ...) device_printf((dev)->bsddev, fmt, ##__VA_ARGS__)
#define dev_printk(lvl, dev, fmt, ...) \
device_printf((dev)->bsddev, fmt, ##__VA_ARGS__)
static inline void *
dev_get_drvdata(struct device *dev)
{
return dev->driver_data;
}
static inline void
dev_set_drvdata(struct device *dev, void *data)
{
dev->driver_data = data;
}
static inline struct device *
get_device(struct device *dev)
{
if (dev)
kobject_get(&dev->kobj);
return (dev);
}
static inline char *
dev_name(const struct device *dev)
{
return kobject_name(&dev->kobj);
}
#define dev_set_name(_dev, _fmt, ...) \
kobject_set_name(&(_dev)->kobj, (_fmt), ##__VA_ARGS__)
static inline void
put_device(struct device *dev)
{
if (dev)
kobject_put(&dev->kobj);
}
static inline int
class_register(struct class *class)
{
class->bsdclass = devclass_create(class->name);
kobject_init(&class->kobj, &linux_class_ktype);
kobject_set_name(&class->kobj, class->name);
kobject_add(&class->kobj, &linux_class_root, class->name);
return (0);
}
static inline void
class_unregister(struct class *class)
{
kobject_put(&class->kobj);
}
/*
* Devices are registered and created for exporting to sysfs. create
* implies register and register assumes the device fields have been
* setup appropriately before being called.
*/
static inline int
device_register(struct device *dev)
{
device_t bsddev;
int unit;
bsddev = NULL;
+ unit = -1;
+
if (dev->devt) {
unit = MINOR(dev->devt);
bsddev = devclass_get_device(dev->class->bsdclass, unit);
- } else
- unit = -1;
+ } else if (dev->parent == NULL) {
+ bsddev = devclass_get_device(dev->class->bsdclass, 0);
+ }
+
if (bsddev == NULL)
bsddev = device_add_child(dev->parent->bsddev,
dev->class->kobj.name, unit);
if (bsddev) {
if (dev->devt == 0)
dev->devt = makedev(0, device_get_unit(bsddev));
device_set_softc(bsddev, dev);
}
dev->bsddev = bsddev;
kobject_init(&dev->kobj, &linux_dev_ktype);
kobject_add(&dev->kobj, &dev->class->kobj, dev_name(dev));
return (0);
}
static inline void
device_unregister(struct device *dev)
{
device_t bsddev;
bsddev = dev->bsddev;
mtx_lock(&Giant);
if (bsddev)
device_delete_child(device_get_parent(bsddev), bsddev);
mtx_unlock(&Giant);
put_device(dev);
}
struct device *device_create(struct class *class, struct device *parent,
dev_t devt, void *drvdata, const char *fmt, ...);
static inline void
device_destroy(struct class *class, dev_t devt)
{
device_t bsddev;
int unit;
unit = MINOR(devt);
bsddev = devclass_get_device(class->bsdclass, unit);
if (bsddev)
device_unregister(device_get_softc(bsddev));
}
static inline void
linux_class_kfree(struct class *class)
{
kfree(class);
}
static inline struct class *
class_create(struct module *owner, const char *name)
{
struct class *class;
int error;
class = kzalloc(sizeof(*class), M_WAITOK);
class->owner = owner;
class->name= name;
class->class_release = linux_class_kfree;
error = class_register(class);
if (error) {
kfree(class);
return (NULL);
}
return (class);
}
static inline void
class_destroy(struct class *class)
{
if (class == NULL)
return;
class_unregister(class);
}
static inline int
device_create_file(struct device *dev, const struct device_attribute *attr)
{
if (dev)
return sysfs_create_file(&dev->kobj, &attr->attr);
return -EINVAL;
}
static inline void
device_remove_file(struct device *dev, const struct device_attribute *attr)
{
if (dev)
sysfs_remove_file(&dev->kobj, &attr->attr);
}
static inline int
class_create_file(struct class *class, const struct class_attribute *attr)
{
if (class)
return sysfs_create_file(&class->kobj, &attr->attr);
return -EINVAL;
}
static inline void
class_remove_file(struct class *class, const struct class_attribute *attr)
{
if (class)
sysfs_remove_file(&class->kobj, &attr->attr);
}
static inline int
dev_to_node(struct device *dev)
{
return -1;
}
char *kvasprintf(gfp_t, const char *, va_list);
char *kasprintf(gfp_t, const char *, ...);
#endif /* _LINUX_DEVICE_H_ */
Index: user/ngie/bsnmp_cleanup/sys/compat/linuxkpi/common/include/linux/err.h
===================================================================
--- user/ngie/bsnmp_cleanup/sys/compat/linuxkpi/common/include/linux/err.h (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/compat/linuxkpi/common/include/linux/err.h (revision 299697)
@@ -1,79 +1,81 @@
/*-
* Copyright (c) 2010 Isilon Systems, Inc.
* Copyright (c) 2010 iX Systems, Inc.
* Copyright (c) 2010 Panasas, Inc.
- * Copyright (c) 2013-2015 Mellanox Technologies, Ltd.
+ * Copyright (c) 2013-2016 Mellanox Technologies, Ltd.
* 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 unmodified, 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 _LINUX_ERR_H_
#define _LINUX_ERR_H_
+#include <linux/compiler.h>
+
#define MAX_ERRNO 4095
-#define IS_ERR_VALUE(x) ((x) >= (unsigned long)-MAX_ERRNO)
+#define IS_ERR_VALUE(x) unlikely((x) >= (unsigned long)-MAX_ERRNO)
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);
}
static inline long
IS_ERR_OR_NULL(const void *ptr)
{
return !ptr || IS_ERR_VALUE((unsigned long)ptr);
}
static inline void *
ERR_CAST(void *ptr)
{
return (void *)ptr;
}
static inline int
PTR_ERR_OR_ZERO(const void *ptr)
{
if (IS_ERR(ptr))
return PTR_ERR(ptr);
else
return 0;
}
#define PTR_RET(p) PTR_ERR_OR_ZERO(p)
#endif /* _LINUX_ERR_H_ */
Index: user/ngie/bsnmp_cleanup/sys/compat/linuxkpi/common/include/linux/ioctl.h
===================================================================
--- user/ngie/bsnmp_cleanup/sys/compat/linuxkpi/common/include/linux/ioctl.h (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/compat/linuxkpi/common/include/linux/ioctl.h (revision 299697)
@@ -1,36 +1,38 @@
/*-
* Copyright (c) 2010 Isilon Systems, Inc.
* Copyright (c) 2010 iX Systems, Inc.
* Copyright (c) 2010 Panasas, Inc.
- * Copyright (c) 2013, 2014 Mellanox Technologies, Ltd.
+ * Copyright (c) 2013-2016 Mellanox Technologies, Ltd.
* 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 unmodified, 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 _LINUX_IOCTL_H_
#define _LINUX_IOCTL_H_
#include <sys/ioccom.h>
+
+#define _IOC_SIZE(cmd) IOCPARM_LEN(cmd)
#endif /* _LINUX_IOCTL_H_ */
Index: user/ngie/bsnmp_cleanup/sys/compat/linuxkpi/common/include/linux/jiffies.h
===================================================================
--- user/ngie/bsnmp_cleanup/sys/compat/linuxkpi/common/include/linux/jiffies.h (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/compat/linuxkpi/common/include/linux/jiffies.h (revision 299697)
@@ -1,108 +1,116 @@
/*-
* Copyright (c) 2010 Isilon Systems, Inc.
* Copyright (c) 2010 iX Systems, Inc.
* Copyright (c) 2010 Panasas, Inc.
- * Copyright (c) 2013, 2014 Mellanox Technologies, Ltd.
+ * Copyright (c) 2013-2016 Mellanox Technologies, Ltd.
* 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 unmodified, 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 _LINUX_JIFFIES_H_
#define _LINUX_JIFFIES_H_
#include <linux/types.h>
#include <linux/kernel.h>
#include <linux/time.h>
#include <sys/time.h>
#include <sys/kernel.h>
#include <sys/limits.h>
-static inline int
-msecs_to_jiffies(int msec)
-{
- struct timeval tv;
-
- tv.tv_sec = msec / 1000;
- tv.tv_usec = (msec % 1000) * 1000;
- return (tvtohz(&tv) - 1);
-}
-
#define jiffies ticks
#define jiffies_64 ticks
#define jiffies_to_msecs(x) (((int64_t)(x)) * 1000 / hz)
#define MAX_JIFFY_OFFSET ((INT_MAX >> 1) - 1)
#define time_after(a, b) ((int)((b) - (a)) < 0)
#define time_before(a, b) time_after(b,a)
#define time_after_eq(a, b) ((int)((a) - (b)) >= 0)
#define time_before_eq(a, b) time_after_eq(b, a)
#define time_in_range(a,b,c) \
(time_after_eq(a,b) && time_before_eq(a,c))
#define HZ hz
static inline int
timespec_to_jiffies(const struct timespec *ts)
{
u64 result;
result = ((u64)hz * ts->tv_sec) +
(((u64)hz * ts->tv_nsec + NSEC_PER_SEC - 1) / NSEC_PER_SEC);
if (result > MAX_JIFFY_OFFSET)
result = MAX_JIFFY_OFFSET;
return ((int)result);
}
static inline int
-usecs_to_jiffies(const unsigned int u)
+msecs_to_jiffies(const u64 msec)
{
u64 result;
- result = ((u64)u * hz + 1000000 - 1) / 1000000;
+ result = howmany(msec * (u64)hz, 1000ULL);
if (result > MAX_JIFFY_OFFSET)
result = MAX_JIFFY_OFFSET;
return ((int)result);
+}
+
+static inline int
+usecs_to_jiffies(const u64 u)
+{
+ u64 result;
+
+ result = howmany(u * (u64)hz, 1000000ULL);
+ if (result > MAX_JIFFY_OFFSET)
+ result = MAX_JIFFY_OFFSET;
+
+ return ((int)result);
+}
+
+static inline u64
+nsecs_to_jiffies(const u64 n)
+{
+ return (usecs_to_jiffies(howmany(n, 1000ULL)));
}
static inline u64
get_jiffies_64(void)
{
return ((u64)(unsigned)ticks);
}
static inline int
linux_timer_jiffies_until(unsigned long expires)
{
int delta = expires - jiffies;
/* guard against already expired values */
if (delta < 1)
delta = 1;
return (delta);
}
#endif /* _LINUX_JIFFIES_H_ */
Index: user/ngie/bsnmp_cleanup/sys/compat/linuxkpi/common/include/linux/kdev_t.h
===================================================================
--- user/ngie/bsnmp_cleanup/sys/compat/linuxkpi/common/include/linux/kdev_t.h (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/compat/linuxkpi/common/include/linux/kdev_t.h (revision 299697)
@@ -1,38 +1,44 @@
/*-
* Copyright (c) 2010 Isilon Systems, Inc.
* Copyright (c) 2010 iX Systems, Inc.
* Copyright (c) 2010 Panasas, Inc.
* Copyright (c) 2013, 2014 Mellanox Technologies, Ltd.
* 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 unmodified, 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 _LINUX_KDEV_T_H_
#define _LINUX_KDEV_T_H_
#define MAJOR(dev) major((dev))
#define MINOR(dev) minor((dev))
#define MKDEV(ma, mi) makedev((ma), (mi))
+static inline uint16_t
+old_encode_dev(dev_t dev)
+{
+ return ((MAJOR(dev) << 8) | MINOR(dev));
+}
+
#endif /* _LINUX_KDEV_T_H_ */
Index: user/ngie/bsnmp_cleanup/sys/compat/linuxkpi/common/include/linux/kernel.h
===================================================================
--- user/ngie/bsnmp_cleanup/sys/compat/linuxkpi/common/include/linux/kernel.h (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/compat/linuxkpi/common/include/linux/kernel.h (revision 299697)
@@ -1,222 +1,298 @@
/*-
* Copyright (c) 2010 Isilon Systems, Inc.
* Copyright (c) 2010 iX Systems, Inc.
* Copyright (c) 2010 Panasas, Inc.
* Copyright (c) 2013-2016 Mellanox Technologies, Ltd.
* Copyright (c) 2014-2015 François Tigeot
* 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 unmodified, 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 _LINUX_KERNEL_H_
#define _LINUX_KERNEL_H_
#include <sys/cdefs.h>
#include <sys/types.h>
#include <sys/systm.h>
#include <sys/param.h>
#include <sys/libkern.h>
#include <sys/stat.h>
#include <sys/smp.h>
#include <sys/stddef.h>
#include <sys/syslog.h>
#include <linux/bitops.h>
#include <linux/compiler.h>
#include <linux/errno.h>
#include <linux/kthread.h>
#include <linux/types.h>
#include <linux/jiffies.h>
#include <linux/wait.h>
#include <linux/log2.h>
#include <asm/byteorder.h>
#define KERN_CONT ""
#define KERN_EMERG "<0>"
#define KERN_ALERT "<1>"
#define KERN_CRIT "<2>"
#define KERN_ERR "<3>"
#define KERN_WARNING "<4>"
#define KERN_NOTICE "<5>"
#define KERN_INFO "<6>"
#define KERN_DEBUG "<7>"
+#define U8_MAX ((u8)~0U)
+#define S8_MAX ((s8)(U8_MAX >> 1))
+#define S8_MIN ((s8)(-S8_MAX - 1))
+#define U16_MAX ((u16)~0U)
+#define S16_MAX ((s16)(U16_MAX >> 1))
+#define S16_MIN ((s16)(-S16_MAX - 1))
+#define U32_MAX ((u32)~0U)
+#define S32_MAX ((s32)(U32_MAX >> 1))
+#define S32_MIN ((s32)(-S32_MAX - 1))
+#define U64_MAX ((u64)~0ULL)
+#define S64_MAX ((s64)(U64_MAX >> 1))
+#define S64_MIN ((s64)(-S64_MAX - 1))
+
+#define S8_C(x) x
+#define U8_C(x) x ## U
+#define S16_C(x) x
+#define U16_C(x) x ## U
+#define S32_C(x) x
+#define U32_C(x) x ## U
+#define S64_C(x) x ## LL
+#define U64_C(x) x ## ULL
+
#define BUILD_BUG_ON(x) CTASSERT(!(x))
-#define BUG() panic("BUG")
-#define BUG_ON(condition) do { if (condition) BUG(); } while(0)
-#define WARN_ON BUG_ON
+#define BUG() panic("BUG at %s:%d", __FILE__, __LINE__)
+#define BUG_ON(cond) do { \
+ if (cond) { \
+ panic("BUG ON %s failed at %s:%d", \
+ __stringify(cond), __FILE__, __LINE__); \
+ } \
+} while (0)
+#define WARN_ON(cond) ({ \
+ bool __ret = (cond); \
+ if (__ret) { \
+ printf("WARNING %s failed at %s:%d\n", \
+ __stringify(cond), __FILE__, __LINE__); \
+ } \
+ unlikely(__ret); \
+})
+
+#define WARN_ON_SMP(cond) WARN_ON(cond)
+
+#define WARN_ON_ONCE(cond) ({ \
+ static bool __warn_on_once; \
+ bool __ret = (cond); \
+ if (__ret && !__warn_on_once) { \
+ __warn_on_once = 1; \
+ printf("WARNING %s failed at %s:%d\n", \
+ __stringify(cond), __FILE__, __LINE__); \
+ } \
+ unlikely(__ret); \
+})
+
#undef ALIGN
#define ALIGN(x, y) roundup2((x), (y))
#undef PTR_ALIGN
#define PTR_ALIGN(p, a) ((__typeof(p))ALIGN((uintptr_t)(p), (a)))
#define DIV_ROUND_UP(x, n) howmany(x, n)
#define DIV_ROUND_UP_ULL(x, n) DIV_ROUND_UP((unsigned long long)(x), (n))
#define FIELD_SIZEOF(t, f) sizeof(((t *)0)->f)
#define printk(X...) printf(X)
/*
* The "pr_debug()" and "pr_devel()" macros should produce zero code
* unless DEBUG is defined:
*/
#ifdef DEBUG
#define pr_debug(fmt, ...) \
log(LOG_DEBUG, fmt, ##__VA_ARGS__)
#define pr_devel(fmt, ...) \
log(LOG_DEBUG, pr_fmt(fmt), ##__VA_ARGS__)
#else
#define pr_debug(fmt, ...) \
({ if (0) log(LOG_DEBUG, fmt, ##__VA_ARGS__); 0; })
#define pr_devel(fmt, ...) \
({ if (0) log(LOG_DEBUG, pr_fmt(fmt), ##__VA_ARGS__); 0; })
#endif
#ifndef pr_fmt
#define pr_fmt(fmt) fmt
#endif
/*
* Print a one-time message (analogous to WARN_ONCE() et al):
*/
#define printk_once(...) do { \
static bool __print_once; \
\
if (!__print_once) { \
__print_once = true; \
printk(__VA_ARGS__); \
} \
} while (0)
/*
* Log a one-time message (analogous to WARN_ONCE() et al):
*/
#define log_once(level,...) do { \
static bool __log_once; \
\
- if (!__log_once) { \
+ if (unlikely(!__log_once)) { \
__log_once = true; \
log(level, __VA_ARGS__); \
} \
} while (0)
#define pr_emerg(fmt, ...) \
log(LOG_EMERG, pr_fmt(fmt), ##__VA_ARGS__)
#define pr_alert(fmt, ...) \
log(LOG_ALERT, pr_fmt(fmt), ##__VA_ARGS__)
#define pr_crit(fmt, ...) \
log(LOG_CRIT, pr_fmt(fmt), ##__VA_ARGS__)
#define pr_err(fmt, ...) \
log(LOG_ERR, pr_fmt(fmt), ##__VA_ARGS__)
#define pr_warning(fmt, ...) \
log(LOG_WARNING, pr_fmt(fmt), ##__VA_ARGS__)
-#define pr_warn pr_warning
+#define pr_warn(...) \
+ pr_warning(__VA_ARGS__)
+#define pr_warn_once(fmt, ...) \
+ log_once(LOG_WARNING, pr_fmt(fmt), ##__VA_ARGS__)
#define pr_notice(fmt, ...) \
log(LOG_NOTICE, pr_fmt(fmt), ##__VA_ARGS__)
#define pr_info(fmt, ...) \
log(LOG_INFO, pr_fmt(fmt), ##__VA_ARGS__)
#define pr_info_once(fmt, ...) \
log_once(LOG_INFO, pr_fmt(fmt), ##__VA_ARGS__)
#define pr_cont(fmt, ...) \
printk(KERN_CONT fmt, ##__VA_ARGS__)
#ifndef WARN
-#define WARN(condition, format...) ({ \
- int __ret_warn_on = !!(condition); \
- if (unlikely(__ret_warn_on)) \
- pr_warning(format); \
- unlikely(__ret_warn_on); \
+#define WARN(condition, ...) ({ \
+ bool __ret_warn_on = (condition); \
+ if (unlikely(__ret_warn_on)) \
+ pr_warning(__VA_ARGS__); \
+ unlikely(__ret_warn_on); \
})
#endif
+#ifndef WARN_ONCE
+#define WARN_ONCE(condition, ...) ({ \
+ bool __ret_warn_on = (condition); \
+ if (unlikely(__ret_warn_on)) \
+ pr_warn_once(__VA_ARGS__); \
+ unlikely(__ret_warn_on); \
+})
+#endif
+
#define container_of(ptr, type, member) \
({ \
__typeof(((type *)0)->member) *_p = (ptr); \
(type *)((char *)_p - offsetof(type, member)); \
})
#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
#define simple_strtoul(...) strtoul(__VA_ARGS__)
#define simple_strtol(...) strtol(__VA_ARGS__)
#define kstrtol(a,b,c) ({*(c) = strtol(a,0,b); 0;})
#define kstrtoint(a,b,c) ({*(c) = strtol(a,0,b); 0;})
#define kstrtouint(a,b,c) ({*(c) = strtol(a,0,b); 0;})
#define min(x, y) ((x) < (y) ? (x) : (y))
#define max(x, y) ((x) > (y) ? (x) : (y))
#define min3(a, b, c) min(a, min(b,c))
#define max3(a, b, c) max(a, max(b,c))
-#define min_t(type, _x, _y) ((type)(_x) < (type)(_y) ? (type)(_x) : (type)(_y))
-#define max_t(type, _x, _y) ((type)(_x) > (type)(_y) ? (type)(_x) : (type)(_y))
+#define min_t(type, x, y) ({ \
+ type __min1 = (x); \
+ type __min2 = (y); \
+ __min1 < __min2 ? __min1 : __min2; })
+#define max_t(type, x, y) ({ \
+ type __max1 = (x); \
+ type __max2 = (y); \
+ __max1 > __max2 ? __max1 : __max2; })
+
#define clamp_t(type, _x, min, max) min_t(type, max_t(type, _x, min), max)
#define clamp(x, lo, hi) min( max(x,lo), hi)
+#define clamp_val(val, lo, hi) clamp_t(typeof(val), val, lo, hi)
/*
* This looks more complex than it should be. But we need to
* get the type for the ~ right in round_down (it needs to be
* as wide as the result!), and we want to evaluate the macro
* arguments just once each.
*/
#define __round_mask(x, y) ((__typeof__(x))((y)-1))
#define round_up(x, y) ((((x)-1) | __round_mask(x, y))+1)
#define round_down(x, y) ((x) & ~__round_mask(x, y))
#define smp_processor_id() PCPU_GET(cpuid)
#define num_possible_cpus() mp_ncpus
#define num_online_cpus() mp_ncpus
+#define cpu_has_clflush (1)
typedef struct pm_message {
int event;
} pm_message_t;
/* Swap values of a and b */
#define swap(a, b) do { \
typeof(a) _swap_tmp = a; \
a = b; \
b = _swap_tmp; \
} while (0)
#define DIV_ROUND_CLOSEST(x, divisor) (((x) + ((divisor) / 2)) / (divisor))
+
+#define DIV_ROUND_CLOSEST_ULL(x, divisor) ({ \
+ __typeof(divisor) __d = (divisor); \
+ unsigned long long __ret = (x) + (__d) / 2; \
+ __ret /= __d; \
+ __ret; \
+})
static inline uintmax_t
mult_frac(uintmax_t x, uintmax_t multiplier, uintmax_t divisor)
{
uintmax_t q = (x / divisor);
uintmax_t r = (x % divisor);
return ((q * multiplier) + ((r * multiplier) / divisor));
}
static inline int64_t
abs64(int64_t x)
{
return (x < 0 ? -x : x);
}
#endif /* _LINUX_KERNEL_H_ */
Index: user/ngie/bsnmp_cleanup/sys/compat/linuxkpi/common/include/linux/page.h
===================================================================
--- user/ngie/bsnmp_cleanup/sys/compat/linuxkpi/common/include/linux/page.h (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/compat/linuxkpi/common/include/linux/page.h (revision 299697)
@@ -1,53 +1,70 @@
/*-
* Copyright (c) 2010 Isilon Systems, Inc.
* Copyright (c) 2010 iX Systems, Inc.
* Copyright (c) 2010 Panasas, Inc.
- * Copyright (c) 2013, 2014 Mellanox Technologies, Ltd.
+ * Copyright (c) 2013-2016 Mellanox Technologies, Ltd.
* 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 unmodified, 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 _LINUX_PAGE_H_
#define _LINUX_PAGE_H_
#include <linux/types.h>
#include <sys/param.h>
#include <machine/atomic.h>
#include <vm/vm.h>
#include <vm/vm_page.h>
+#include <vm/pmap.h>
+typedef unsigned long pgprot_t;
+
#define page vm_page
-#define virt_to_page(x) PHYS_TO_VM_PAGE(vtophys((x)))
+#define virt_to_page(x) PHYS_TO_VM_PAGE(vtophys((x)))
+#define page_to_pfn(pp) (VM_PAGE_TO_PHYS((pp)) >> PAGE_SHIFT)
+#define pfn_to_page(pfn) (PHYS_TO_VM_PAGE((pfn) << PAGE_SHIFT))
+#define nth_page(page,n) pfn_to_page(page_to_pfn((page)) + (n))
#define clear_page(page) memset((page), 0, PAGE_SIZE)
-#define pgprot_noncached(prot) VM_MEMATTR_UNCACHEABLE
-#define pgprot_writecombine(prot) VM_MEMATTR_WRITE_COMBINING
+#define pgprot_noncached(prot) ((pgprot_t)VM_MEMATTR_UNCACHEABLE)
+#define pgprot_writecombine(prot) ((pgprot_t)VM_MEMATTR_WRITE_COMBINING)
#undef PAGE_MASK
#define PAGE_MASK (~(PAGE_SIZE-1))
+/*
+ * Modifying PAGE_MASK in the above way breaks trunc_page, round_page,
+ * and btoc macros. Therefore, redefine them in a way that makes sense
+ * so the LinuxKPI consumers don't get totally broken behavior.
+ */
+#undef btoc
+#define btoc(x) (((vm_offset_t)(x) + PAGE_SIZE - 1) >> PAGE_SHIFT)
+#undef round_page
+#define round_page(x) ((((uintptr_t)(x)) + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1))
+#undef trunc_page
+#define trunc_page(x) ((uintptr_t)(x) & ~(PAGE_SIZE - 1))
#endif /* _LINUX_PAGE_H_ */
Index: user/ngie/bsnmp_cleanup/sys/conf/files
===================================================================
--- user/ngie/bsnmp_cleanup/sys/conf/files (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/conf/files (revision 299697)
@@ -1,4300 +1,4300 @@
# $FreeBSD$
#
# The long compile-with and dependency lines are required because of
# limitations in config: backslash-newline doesn't work in strings, and
# dependency lines other than the first are silently ignored.
#
acpi_quirks.h optional acpi \
dependency "$S/tools/acpi_quirks2h.awk $S/dev/acpica/acpi_quirks" \
compile-with "${AWK} -f $S/tools/acpi_quirks2h.awk $S/dev/acpica/acpi_quirks" \
no-obj no-implicit-rule before-depend \
clean "acpi_quirks.h"
bhnd_nvram_map.h optional bhndbus | bhnd \
dependency "$S/dev/bhnd/tools/nvram_map_gen.sh $S/dev/bhnd/tools/nvram_map_gen.awk $S/dev/bhnd/nvram/nvram_map" \
- compile-with "$S/dev/bhnd/tools/nvram_map_gen.sh $S/dev/bhnd/nvram/nvram_map -h" \
+ compile-with "sh $S/dev/bhnd/tools/nvram_map_gen.sh $S/dev/bhnd/nvram/nvram_map -h" \
no-obj no-implicit-rule before-depend \
clean "bhnd_nvram_map.h"
bhnd_nvram_map_data.h optional bhndbus | bhnd \
dependency "$S/dev/bhnd/tools/nvram_map_gen.sh $S/dev/bhnd/tools/nvram_map_gen.awk $S/dev/bhnd/nvram/nvram_map" \
- compile-with "$S/dev/bhnd/tools/nvram_map_gen.sh $S/dev/bhnd/nvram/nvram_map -d" \
+ compile-with "sh $S/dev/bhnd/tools/nvram_map_gen.sh $S/dev/bhnd/nvram/nvram_map -d" \
no-obj no-implicit-rule before-depend \
clean "bhnd_nvram_map_data.h"
#
# The 'fdt_dtb_file' target covers an actual DTB file name, which is derived
# from the specified source (DTS) file: <platform>.dts -> <platform>.dtb
#
fdt_dtb_file optional fdt fdt_dtb_static \
compile-with "sh -c 'MACHINE=${MACHINE} $S/tools/fdt/make_dtb.sh $S ${FDT_DTS_FILE} ${.CURDIR}'" \
no-obj no-implicit-rule before-depend \
clean "${FDT_DTS_FILE:R}.dtb"
fdt_static_dtb.h optional fdt fdt_dtb_static \
compile-with "sh -c 'MACHINE=${MACHINE} $S/tools/fdt/make_dtbh.sh ${FDT_DTS_FILE} ${.CURDIR}'" \
dependency "fdt_dtb_file" \
no-obj no-implicit-rule before-depend \
clean "fdt_static_dtb.h"
feeder_eq_gen.h optional sound \
dependency "$S/tools/sound/feeder_eq_mkfilter.awk" \
compile-with "${AWK} -f $S/tools/sound/feeder_eq_mkfilter.awk -- ${FEEDER_EQ_PRESETS} > feeder_eq_gen.h" \
no-obj no-implicit-rule before-depend \
clean "feeder_eq_gen.h"
feeder_rate_gen.h optional sound \
dependency "$S/tools/sound/feeder_rate_mkfilter.awk" \
compile-with "${AWK} -f $S/tools/sound/feeder_rate_mkfilter.awk -- ${FEEDER_RATE_PRESETS} > feeder_rate_gen.h" \
no-obj no-implicit-rule before-depend \
clean "feeder_rate_gen.h"
snd_fxdiv_gen.h optional sound \
dependency "$S/tools/sound/snd_fxdiv_gen.awk" \
compile-with "${AWK} -f $S/tools/sound/snd_fxdiv_gen.awk -- > snd_fxdiv_gen.h" \
no-obj no-implicit-rule before-depend \
clean "snd_fxdiv_gen.h"
miidevs.h optional miibus | mii \
dependency "$S/tools/miidevs2h.awk $S/dev/mii/miidevs" \
compile-with "${AWK} -f $S/tools/miidevs2h.awk $S/dev/mii/miidevs" \
no-obj no-implicit-rule before-depend \
clean "miidevs.h"
pccarddevs.h standard \
dependency "$S/tools/pccarddevs2h.awk $S/dev/pccard/pccarddevs" \
compile-with "${AWK} -f $S/tools/pccarddevs2h.awk $S/dev/pccard/pccarddevs" \
no-obj no-implicit-rule before-depend \
clean "pccarddevs.h"
kbdmuxmap.h optional kbdmux_dflt_keymap \
compile-with "kbdcontrol -P ${S:S/sys$/share/}/vt/keymaps -P ${S:S/sys$/share/}/syscons/keymaps -L ${KBDMUX_DFLT_KEYMAP} | sed -e 's/^static keymap_t.* = /static keymap_t key_map = /' -e 's/^static accentmap_t.* = /static accentmap_t accent_map = /' > kbdmuxmap.h" \
no-obj no-implicit-rule before-depend \
clean "kbdmuxmap.h"
teken_state.h optional sc | vt \
dependency "$S/teken/gensequences $S/teken/sequences" \
compile-with "${AWK} -f $S/teken/gensequences $S/teken/sequences > teken_state.h" \
no-obj no-implicit-rule before-depend \
clean "teken_state.h"
usbdevs.h optional usb \
dependency "$S/tools/usbdevs2h.awk $S/dev/usb/usbdevs" \
compile-with "${AWK} -f $S/tools/usbdevs2h.awk $S/dev/usb/usbdevs -h" \
no-obj no-implicit-rule before-depend \
clean "usbdevs.h"
usbdevs_data.h optional usb \
dependency "$S/tools/usbdevs2h.awk $S/dev/usb/usbdevs" \
compile-with "${AWK} -f $S/tools/usbdevs2h.awk $S/dev/usb/usbdevs -d" \
no-obj no-implicit-rule before-depend \
clean "usbdevs_data.h"
cam/cam.c optional scbus
cam/cam_compat.c optional scbus
cam/cam_iosched.c optional scbus
cam/cam_periph.c optional scbus
cam/cam_queue.c optional scbus
cam/cam_sim.c optional scbus
cam/cam_xpt.c optional scbus
cam/ata/ata_all.c optional scbus
cam/ata/ata_xpt.c optional scbus
cam/ata/ata_pmp.c optional scbus
cam/scsi/scsi_xpt.c optional scbus
cam/scsi/scsi_all.c optional scbus
cam/scsi/scsi_cd.c optional cd
cam/scsi/scsi_ch.c optional ch
cam/ata/ata_da.c optional ada | da
cam/ctl/ctl.c optional ctl
cam/ctl/ctl_backend.c optional ctl
cam/ctl/ctl_backend_block.c optional ctl
cam/ctl/ctl_backend_ramdisk.c optional ctl
cam/ctl/ctl_cmd_table.c optional ctl
cam/ctl/ctl_frontend.c optional ctl
cam/ctl/ctl_frontend_cam_sim.c optional ctl
cam/ctl/ctl_frontend_ioctl.c optional ctl
cam/ctl/ctl_frontend_iscsi.c optional ctl
cam/ctl/ctl_ha.c optional ctl
cam/ctl/ctl_scsi_all.c optional ctl
cam/ctl/ctl_tpc.c optional ctl
cam/ctl/ctl_tpc_local.c optional ctl
cam/ctl/ctl_error.c optional ctl
cam/ctl/ctl_util.c optional ctl
cam/ctl/scsi_ctl.c optional ctl
cam/scsi/scsi_da.c optional da
cam/scsi/scsi_low.c optional ct | ncv | nsp | stg
cam/scsi/scsi_pass.c optional pass
cam/scsi/scsi_pt.c optional pt
cam/scsi/scsi_sa.c optional sa
cam/scsi/scsi_enc.c optional ses
cam/scsi/scsi_enc_ses.c optional ses
cam/scsi/scsi_enc_safte.c optional ses
cam/scsi/scsi_sg.c optional sg
cam/scsi/scsi_targ_bh.c optional targbh
cam/scsi/scsi_target.c optional targ
cam/scsi/smp_all.c optional scbus
# shared between zfs and dtrace
cddl/compat/opensolaris/kern/opensolaris.c optional zfs | dtrace compile-with "${CDDL_C}"
cddl/compat/opensolaris/kern/opensolaris_cmn_err.c optional zfs | dtrace compile-with "${CDDL_C}"
cddl/compat/opensolaris/kern/opensolaris_kmem.c optional zfs | dtrace compile-with "${CDDL_C}"
cddl/compat/opensolaris/kern/opensolaris_misc.c optional zfs | dtrace compile-with "${CDDL_C}"
cddl/compat/opensolaris/kern/opensolaris_sunddi.c optional zfs | dtrace compile-with "${CDDL_C}"
cddl/compat/opensolaris/kern/opensolaris_taskq.c optional zfs | dtrace compile-with "${CDDL_C}"
# zfs specific
cddl/compat/opensolaris/kern/opensolaris_acl.c optional zfs compile-with "${ZFS_C}"
cddl/compat/opensolaris/kern/opensolaris_dtrace.c optional zfs compile-with "${ZFS_C}"
cddl/compat/opensolaris/kern/opensolaris_kobj.c optional zfs compile-with "${ZFS_C}"
cddl/compat/opensolaris/kern/opensolaris_kstat.c optional zfs compile-with "${ZFS_C}"
cddl/compat/opensolaris/kern/opensolaris_lookup.c optional zfs compile-with "${ZFS_C}"
cddl/compat/opensolaris/kern/opensolaris_policy.c optional zfs compile-with "${ZFS_C}"
cddl/compat/opensolaris/kern/opensolaris_string.c optional zfs compile-with "${ZFS_C}"
cddl/compat/opensolaris/kern/opensolaris_sysevent.c optional zfs compile-with "${ZFS_C}"
cddl/compat/opensolaris/kern/opensolaris_uio.c optional zfs compile-with "${ZFS_C}"
cddl/compat/opensolaris/kern/opensolaris_vfs.c optional zfs compile-with "${ZFS_C}"
cddl/compat/opensolaris/kern/opensolaris_vm.c optional zfs compile-with "${ZFS_C}"
cddl/compat/opensolaris/kern/opensolaris_zone.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/common/acl/acl_common.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/common/avl/avl.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/common/nvpair/opensolaris_fnvpair.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/common/nvpair/opensolaris_nvpair.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/common/nvpair/opensolaris_nvpair_alloc_fixed.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/common/unicode/u8_textprep.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/common/zfs/zfeature_common.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/common/zfs/zfs_comutil.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/common/zfs/zfs_deleg.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/common/zfs/zfs_fletcher.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/common/zfs/zfs_ioctl_compat.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/common/zfs/zfs_namecheck.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/common/zfs/zfs_prop.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/common/zfs/zpool_prop.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/common/zfs/zprop_common.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/gfs.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/vnode.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/blkptr.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/bplist.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/bpobj.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/bptree.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/bqueue.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/ddt.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/ddt_zap.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_diff.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_object.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_zfetch.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c optional zfs compile-with "${ZFS_C}" \
warning "kernel contains CDDL licensed ZFS filesystem"
cddl/contrib/opensolaris/uts/common/fs/zfs/dnode_sync.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_bookmark.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_deadlist.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_deleg.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_destroy.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dir.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_prop.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_userhold.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_synctask.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/gzip.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/lz4.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/lzjb.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/multilist.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/range_tree.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/refcount.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/rrwlock.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/sa.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/sha256.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/spa_config.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/spa_errlog.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/spa_history.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/space_map.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/space_reftree.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/trim_map.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/uberblock.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/unique.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_cache.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_file.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_label.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_mirror.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_missing.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_queue.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_raidz.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_root.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/zap.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/zap_leaf.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/zap_micro.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/zfeature.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_byteswap.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ctldir.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_debug.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_fm.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_fuid.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_log.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_onexit.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_replay.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_rlock.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_sa.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/zio_checksum.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/zio_compress.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/zio_inject.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/zle.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/zrlock.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/os/callb.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/os/fm.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/os/list.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/os/nvpair_alloc_system.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/zmod/adler32.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/zmod/deflate.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/zmod/inffast.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/zmod/inflate.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/zmod/inftrees.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/zmod/opensolaris_crc32.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/zmod/trees.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/zmod/zmod.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/zmod/zmod_subr.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/zmod/zutil.c optional zfs compile-with "${ZFS_C}"
# dtrace specific
cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c optional dtrace compile-with "${DTRACE_C}" \
warning "kernel contains CDDL licensed DTRACE"
cddl/dev/dtmalloc/dtmalloc.c optional dtmalloc | dtraceall compile-with "${CDDL_C}"
cddl/dev/profile/profile.c optional dtrace_profile | dtraceall compile-with "${CDDL_C}"
cddl/dev/sdt/sdt.c optional dtrace_sdt | dtraceall compile-with "${CDDL_C}"
cddl/dev/fbt/fbt.c optional dtrace_fbt | dtraceall compile-with "${FBT_C}"
cddl/dev/systrace/systrace.c optional dtrace_systrace | dtraceall compile-with "${CDDL_C}"
cddl/dev/prototype.c optional dtrace_prototype | dtraceall compile-with "${CDDL_C}"
fs/nfsclient/nfs_clkdtrace.c optional dtnfscl nfscl | dtraceall nfscl compile-with "${CDDL_C}"
compat/cloudabi/cloudabi_clock.c optional compat_cloudabi64
compat/cloudabi/cloudabi_errno.c optional compat_cloudabi64
compat/cloudabi/cloudabi_fd.c optional compat_cloudabi64
compat/cloudabi/cloudabi_file.c optional compat_cloudabi64
compat/cloudabi/cloudabi_futex.c optional compat_cloudabi64
compat/cloudabi/cloudabi_mem.c optional compat_cloudabi64
compat/cloudabi/cloudabi_proc.c optional compat_cloudabi64
compat/cloudabi/cloudabi_random.c optional compat_cloudabi64
compat/cloudabi/cloudabi_sock.c optional compat_cloudabi64
compat/cloudabi/cloudabi_thread.c optional compat_cloudabi64
compat/cloudabi64/cloudabi64_fd.c optional compat_cloudabi64
compat/cloudabi64/cloudabi64_module.c optional compat_cloudabi64
compat/cloudabi64/cloudabi64_poll.c optional compat_cloudabi64
compat/cloudabi64/cloudabi64_sock.c optional compat_cloudabi64
compat/cloudabi64/cloudabi64_syscalls.c optional compat_cloudabi64
compat/cloudabi64/cloudabi64_sysent.c optional compat_cloudabi64
compat/cloudabi64/cloudabi64_thread.c optional compat_cloudabi64
compat/freebsd32/freebsd32_capability.c optional compat_freebsd32
compat/freebsd32/freebsd32_ioctl.c optional compat_freebsd32
compat/freebsd32/freebsd32_misc.c optional compat_freebsd32
compat/freebsd32/freebsd32_syscalls.c optional compat_freebsd32
compat/freebsd32/freebsd32_sysent.c optional compat_freebsd32
contrib/dev/acpica/common/ahids.c optional acpi acpi_debug
contrib/dev/acpica/common/ahuuids.c optional acpi acpi_debug
contrib/dev/acpica/components/debugger/dbcmds.c optional acpi acpi_debug
contrib/dev/acpica/components/debugger/dbconvert.c optional acpi acpi_debug
contrib/dev/acpica/components/debugger/dbdisply.c optional acpi acpi_debug
contrib/dev/acpica/components/debugger/dbexec.c optional acpi acpi_debug
contrib/dev/acpica/components/debugger/dbhistry.c optional acpi acpi_debug
contrib/dev/acpica/components/debugger/dbinput.c optional acpi acpi_debug
contrib/dev/acpica/components/debugger/dbmethod.c optional acpi acpi_debug
contrib/dev/acpica/components/debugger/dbnames.c optional acpi acpi_debug
contrib/dev/acpica/components/debugger/dbobject.c optional acpi acpi_debug
contrib/dev/acpica/components/debugger/dbstats.c optional acpi acpi_debug
contrib/dev/acpica/components/debugger/dbtest.c optional acpi acpi_debug
contrib/dev/acpica/components/debugger/dbutils.c optional acpi acpi_debug
contrib/dev/acpica/components/debugger/dbxface.c optional acpi acpi_debug
contrib/dev/acpica/components/disassembler/dmbuffer.c optional acpi acpi_debug
contrib/dev/acpica/components/disassembler/dmcstyle.c optional acpi acpi_debug
contrib/dev/acpica/components/disassembler/dmdeferred.c optional acpi acpi_debug
contrib/dev/acpica/components/disassembler/dmnames.c optional acpi acpi_debug
contrib/dev/acpica/components/disassembler/dmopcode.c optional acpi acpi_debug
contrib/dev/acpica/components/disassembler/dmresrc.c optional acpi acpi_debug
contrib/dev/acpica/components/disassembler/dmresrcl.c optional acpi acpi_debug
contrib/dev/acpica/components/disassembler/dmresrcl2.c optional acpi acpi_debug
contrib/dev/acpica/components/disassembler/dmresrcs.c optional acpi acpi_debug
contrib/dev/acpica/components/disassembler/dmutils.c optional acpi acpi_debug
contrib/dev/acpica/components/disassembler/dmwalk.c optional acpi acpi_debug
contrib/dev/acpica/components/dispatcher/dsargs.c optional acpi
contrib/dev/acpica/components/dispatcher/dscontrol.c optional acpi
contrib/dev/acpica/components/dispatcher/dsdebug.c optional acpi
contrib/dev/acpica/components/dispatcher/dsfield.c optional acpi
contrib/dev/acpica/components/dispatcher/dsinit.c optional acpi
contrib/dev/acpica/components/dispatcher/dsmethod.c optional acpi
contrib/dev/acpica/components/dispatcher/dsmthdat.c optional acpi
contrib/dev/acpica/components/dispatcher/dsobject.c optional acpi
contrib/dev/acpica/components/dispatcher/dsopcode.c optional acpi
contrib/dev/acpica/components/dispatcher/dsutils.c optional acpi
contrib/dev/acpica/components/dispatcher/dswexec.c optional acpi
contrib/dev/acpica/components/dispatcher/dswload.c optional acpi
contrib/dev/acpica/components/dispatcher/dswload2.c optional acpi
contrib/dev/acpica/components/dispatcher/dswscope.c optional acpi
contrib/dev/acpica/components/dispatcher/dswstate.c optional acpi
contrib/dev/acpica/components/events/evevent.c optional acpi
contrib/dev/acpica/components/events/evglock.c optional acpi
contrib/dev/acpica/components/events/evgpe.c optional acpi
contrib/dev/acpica/components/events/evgpeblk.c optional acpi
contrib/dev/acpica/components/events/evgpeinit.c optional acpi
contrib/dev/acpica/components/events/evgpeutil.c optional acpi
contrib/dev/acpica/components/events/evhandler.c optional acpi
contrib/dev/acpica/components/events/evmisc.c optional acpi
contrib/dev/acpica/components/events/evregion.c optional acpi
contrib/dev/acpica/components/events/evrgnini.c optional acpi
contrib/dev/acpica/components/events/evsci.c optional acpi
contrib/dev/acpica/components/events/evxface.c optional acpi
contrib/dev/acpica/components/events/evxfevnt.c optional acpi
contrib/dev/acpica/components/events/evxfgpe.c optional acpi
contrib/dev/acpica/components/events/evxfregn.c optional acpi
contrib/dev/acpica/components/executer/exconcat.c optional acpi
contrib/dev/acpica/components/executer/exconfig.c optional acpi
contrib/dev/acpica/components/executer/exconvrt.c optional acpi
contrib/dev/acpica/components/executer/excreate.c optional acpi
contrib/dev/acpica/components/executer/exdebug.c optional acpi
contrib/dev/acpica/components/executer/exdump.c optional acpi
contrib/dev/acpica/components/executer/exfield.c optional acpi
contrib/dev/acpica/components/executer/exfldio.c optional acpi
contrib/dev/acpica/components/executer/exmisc.c optional acpi
contrib/dev/acpica/components/executer/exmutex.c optional acpi
contrib/dev/acpica/components/executer/exnames.c optional acpi
contrib/dev/acpica/components/executer/exoparg1.c optional acpi
contrib/dev/acpica/components/executer/exoparg2.c optional acpi
contrib/dev/acpica/components/executer/exoparg3.c optional acpi
contrib/dev/acpica/components/executer/exoparg6.c optional acpi
contrib/dev/acpica/components/executer/exprep.c optional acpi
contrib/dev/acpica/components/executer/exregion.c optional acpi
contrib/dev/acpica/components/executer/exresnte.c optional acpi
contrib/dev/acpica/components/executer/exresolv.c optional acpi
contrib/dev/acpica/components/executer/exresop.c optional acpi
contrib/dev/acpica/components/executer/exstore.c optional acpi
contrib/dev/acpica/components/executer/exstoren.c optional acpi
contrib/dev/acpica/components/executer/exstorob.c optional acpi
contrib/dev/acpica/components/executer/exsystem.c optional acpi
contrib/dev/acpica/components/executer/extrace.c optional acpi
contrib/dev/acpica/components/executer/exutils.c optional acpi
contrib/dev/acpica/components/hardware/hwacpi.c optional acpi
contrib/dev/acpica/components/hardware/hwesleep.c optional acpi
contrib/dev/acpica/components/hardware/hwgpe.c optional acpi
contrib/dev/acpica/components/hardware/hwpci.c optional acpi
contrib/dev/acpica/components/hardware/hwregs.c optional acpi
contrib/dev/acpica/components/hardware/hwsleep.c optional acpi
contrib/dev/acpica/components/hardware/hwtimer.c optional acpi
contrib/dev/acpica/components/hardware/hwvalid.c optional acpi
contrib/dev/acpica/components/hardware/hwxface.c optional acpi
contrib/dev/acpica/components/hardware/hwxfsleep.c optional acpi
contrib/dev/acpica/components/namespace/nsaccess.c optional acpi
contrib/dev/acpica/components/namespace/nsalloc.c optional acpi
contrib/dev/acpica/components/namespace/nsarguments.c optional acpi
contrib/dev/acpica/components/namespace/nsconvert.c optional acpi
contrib/dev/acpica/components/namespace/nsdump.c optional acpi
contrib/dev/acpica/components/namespace/nseval.c optional acpi
contrib/dev/acpica/components/namespace/nsinit.c optional acpi
contrib/dev/acpica/components/namespace/nsload.c optional acpi
contrib/dev/acpica/components/namespace/nsnames.c optional acpi
contrib/dev/acpica/components/namespace/nsobject.c optional acpi
contrib/dev/acpica/components/namespace/nsparse.c optional acpi
contrib/dev/acpica/components/namespace/nspredef.c optional acpi
contrib/dev/acpica/components/namespace/nsprepkg.c optional acpi
contrib/dev/acpica/components/namespace/nsrepair.c optional acpi
contrib/dev/acpica/components/namespace/nsrepair2.c optional acpi
contrib/dev/acpica/components/namespace/nssearch.c optional acpi
contrib/dev/acpica/components/namespace/nsutils.c optional acpi
contrib/dev/acpica/components/namespace/nswalk.c optional acpi
contrib/dev/acpica/components/namespace/nsxfeval.c optional acpi
contrib/dev/acpica/components/namespace/nsxfname.c optional acpi
contrib/dev/acpica/components/namespace/nsxfobj.c optional acpi
contrib/dev/acpica/components/parser/psargs.c optional acpi
contrib/dev/acpica/components/parser/psloop.c optional acpi
contrib/dev/acpica/components/parser/psobject.c optional acpi
contrib/dev/acpica/components/parser/psopcode.c optional acpi
contrib/dev/acpica/components/parser/psopinfo.c optional acpi
contrib/dev/acpica/components/parser/psparse.c optional acpi
contrib/dev/acpica/components/parser/psscope.c optional acpi
contrib/dev/acpica/components/parser/pstree.c optional acpi
contrib/dev/acpica/components/parser/psutils.c optional acpi
contrib/dev/acpica/components/parser/pswalk.c optional acpi
contrib/dev/acpica/components/parser/psxface.c optional acpi
contrib/dev/acpica/components/resources/rsaddr.c optional acpi
contrib/dev/acpica/components/resources/rscalc.c optional acpi
contrib/dev/acpica/components/resources/rscreate.c optional acpi
contrib/dev/acpica/components/resources/rsdump.c optional acpi acpi_debug
contrib/dev/acpica/components/resources/rsdumpinfo.c optional acpi
contrib/dev/acpica/components/resources/rsinfo.c optional acpi
contrib/dev/acpica/components/resources/rsio.c optional acpi
contrib/dev/acpica/components/resources/rsirq.c optional acpi
contrib/dev/acpica/components/resources/rslist.c optional acpi
contrib/dev/acpica/components/resources/rsmemory.c optional acpi
contrib/dev/acpica/components/resources/rsmisc.c optional acpi
contrib/dev/acpica/components/resources/rsserial.c optional acpi
contrib/dev/acpica/components/resources/rsutils.c optional acpi
contrib/dev/acpica/components/resources/rsxface.c optional acpi
contrib/dev/acpica/components/tables/tbdata.c optional acpi
contrib/dev/acpica/components/tables/tbfadt.c optional acpi
contrib/dev/acpica/components/tables/tbfind.c optional acpi
contrib/dev/acpica/components/tables/tbinstal.c optional acpi
contrib/dev/acpica/components/tables/tbprint.c optional acpi
contrib/dev/acpica/components/tables/tbutils.c optional acpi
contrib/dev/acpica/components/tables/tbxface.c optional acpi
contrib/dev/acpica/components/tables/tbxfload.c optional acpi
contrib/dev/acpica/components/tables/tbxfroot.c optional acpi
contrib/dev/acpica/components/utilities/utaddress.c optional acpi
contrib/dev/acpica/components/utilities/utalloc.c optional acpi
contrib/dev/acpica/components/utilities/utascii.c optional acpi
contrib/dev/acpica/components/utilities/utbuffer.c optional acpi
contrib/dev/acpica/components/utilities/utcache.c optional acpi
contrib/dev/acpica/components/utilities/utcopy.c optional acpi
contrib/dev/acpica/components/utilities/utdebug.c optional acpi
contrib/dev/acpica/components/utilities/utdecode.c optional acpi
contrib/dev/acpica/components/utilities/utdelete.c optional acpi
contrib/dev/acpica/components/utilities/uterror.c optional acpi
contrib/dev/acpica/components/utilities/uteval.c optional acpi
contrib/dev/acpica/components/utilities/utexcep.c optional acpi
contrib/dev/acpica/components/utilities/utglobal.c optional acpi
contrib/dev/acpica/components/utilities/uthex.c optional acpi
contrib/dev/acpica/components/utilities/utids.c optional acpi
contrib/dev/acpica/components/utilities/utinit.c optional acpi
contrib/dev/acpica/components/utilities/utlock.c optional acpi
contrib/dev/acpica/components/utilities/utmath.c optional acpi
contrib/dev/acpica/components/utilities/utmisc.c optional acpi
contrib/dev/acpica/components/utilities/utmutex.c optional acpi
contrib/dev/acpica/components/utilities/utnonansi.c optional acpi
contrib/dev/acpica/components/utilities/utobject.c optional acpi
contrib/dev/acpica/components/utilities/utosi.c optional acpi
contrib/dev/acpica/components/utilities/utownerid.c optional acpi
contrib/dev/acpica/components/utilities/utpredef.c optional acpi
contrib/dev/acpica/components/utilities/utresrc.c optional acpi
contrib/dev/acpica/components/utilities/utstate.c optional acpi
contrib/dev/acpica/components/utilities/utstring.c optional acpi
contrib/dev/acpica/components/utilities/utuuid.c optional acpi acpi_debug
contrib/dev/acpica/components/utilities/utxface.c optional acpi
contrib/dev/acpica/components/utilities/utxferror.c optional acpi
contrib/dev/acpica/components/utilities/utxfinit.c optional acpi
#contrib/dev/acpica/components/utilities/utxfmutex.c optional acpi
contrib/ipfilter/netinet/fil.c optional ipfilter inet \
compile-with "${NORMAL_C} ${NO_WSELF_ASSIGN} -Wno-unused -I$S/contrib/ipfilter"
contrib/ipfilter/netinet/ip_auth.c optional ipfilter inet \
compile-with "${NORMAL_C} -Wno-unused -I$S/contrib/ipfilter"
contrib/ipfilter/netinet/ip_fil_freebsd.c optional ipfilter inet \
compile-with "${NORMAL_C} -Wno-unused -I$S/contrib/ipfilter"
contrib/ipfilter/netinet/ip_frag.c optional ipfilter inet \
compile-with "${NORMAL_C} -Wno-unused -I$S/contrib/ipfilter"
contrib/ipfilter/netinet/ip_log.c optional ipfilter inet \
compile-with "${NORMAL_C} -I$S/contrib/ipfilter"
contrib/ipfilter/netinet/ip_nat.c optional ipfilter inet \
compile-with "${NORMAL_C} -Wno-unused -I$S/contrib/ipfilter"
contrib/ipfilter/netinet/ip_proxy.c optional ipfilter inet \
compile-with "${NORMAL_C} ${NO_WSELF_ASSIGN} -Wno-unused -I$S/contrib/ipfilter"
contrib/ipfilter/netinet/ip_state.c optional ipfilter inet \
compile-with "${NORMAL_C} -Wno-unused -I$S/contrib/ipfilter"
contrib/ipfilter/netinet/ip_lookup.c optional ipfilter inet \
compile-with "${NORMAL_C} ${NO_WSELF_ASSIGN} -Wno-unused -Wno-error -I$S/contrib/ipfilter"
contrib/ipfilter/netinet/ip_pool.c optional ipfilter inet \
compile-with "${NORMAL_C} -Wno-unused -I$S/contrib/ipfilter"
contrib/ipfilter/netinet/ip_htable.c optional ipfilter inet \
compile-with "${NORMAL_C} -Wno-unused -I$S/contrib/ipfilter"
contrib/ipfilter/netinet/ip_sync.c optional ipfilter inet \
compile-with "${NORMAL_C} -Wno-unused -I$S/contrib/ipfilter"
contrib/ipfilter/netinet/mlfk_ipl.c optional ipfilter inet \
compile-with "${NORMAL_C} -I$S/contrib/ipfilter"
contrib/ipfilter/netinet/ip_nat6.c optional ipfilter inet \
compile-with "${NORMAL_C} -Wno-unused -I$S/contrib/ipfilter"
contrib/ipfilter/netinet/ip_rules.c optional ipfilter inet \
compile-with "${NORMAL_C} -I$S/contrib/ipfilter"
contrib/ipfilter/netinet/ip_scan.c optional ipfilter inet \
compile-with "${NORMAL_C} -Wno-unused -I$S/contrib/ipfilter"
contrib/ipfilter/netinet/ip_dstlist.c optional ipfilter inet \
compile-with "${NORMAL_C} -Wno-unused -I$S/contrib/ipfilter"
contrib/ipfilter/netinet/radix_ipf.c optional ipfilter inet \
compile-with "${NORMAL_C} -I$S/contrib/ipfilter"
contrib/libfdt/fdt.c optional fdt
contrib/libfdt/fdt_ro.c optional fdt
contrib/libfdt/fdt_rw.c optional fdt
contrib/libfdt/fdt_strerror.c optional fdt
contrib/libfdt/fdt_sw.c optional fdt
contrib/libfdt/fdt_wip.c optional fdt
contrib/libnv/dnvlist.c standard
contrib/libnv/nvlist.c standard
contrib/libnv/nvpair.c standard
contrib/ngatm/netnatm/api/cc_conn.c optional ngatm_ccatm \
compile-with "${NORMAL_C_NOWERROR} -I$S/contrib/ngatm"
contrib/ngatm/netnatm/api/cc_data.c optional ngatm_ccatm \
compile-with "${NORMAL_C} -I$S/contrib/ngatm"
contrib/ngatm/netnatm/api/cc_dump.c optional ngatm_ccatm \
compile-with "${NORMAL_C} -I$S/contrib/ngatm"
contrib/ngatm/netnatm/api/cc_port.c optional ngatm_ccatm \
compile-with "${NORMAL_C} -I$S/contrib/ngatm"
contrib/ngatm/netnatm/api/cc_sig.c optional ngatm_ccatm \
compile-with "${NORMAL_C} -I$S/contrib/ngatm"
contrib/ngatm/netnatm/api/cc_user.c optional ngatm_ccatm \
compile-with "${NORMAL_C} -I$S/contrib/ngatm"
contrib/ngatm/netnatm/api/unisap.c optional ngatm_ccatm \
compile-with "${NORMAL_C} -I$S/contrib/ngatm"
contrib/ngatm/netnatm/misc/straddr.c optional ngatm_atmbase \
compile-with "${NORMAL_C} -I$S/contrib/ngatm"
contrib/ngatm/netnatm/misc/unimsg_common.c optional ngatm_atmbase \
compile-with "${NORMAL_C} -I$S/contrib/ngatm"
contrib/ngatm/netnatm/msg/traffic.c optional ngatm_atmbase \
compile-with "${NORMAL_C} -I$S/contrib/ngatm"
contrib/ngatm/netnatm/msg/uni_ie.c optional ngatm_atmbase \
compile-with "${NORMAL_C} -I$S/contrib/ngatm"
contrib/ngatm/netnatm/msg/uni_msg.c optional ngatm_atmbase \
compile-with "${NORMAL_C} -I$S/contrib/ngatm"
contrib/ngatm/netnatm/saal/saal_sscfu.c optional ngatm_sscfu \
compile-with "${NORMAL_C} -I$S/contrib/ngatm"
contrib/ngatm/netnatm/saal/saal_sscop.c optional ngatm_sscop \
compile-with "${NORMAL_C} -I$S/contrib/ngatm"
contrib/ngatm/netnatm/sig/sig_call.c optional ngatm_uni \
compile-with "${NORMAL_C} -I$S/contrib/ngatm"
contrib/ngatm/netnatm/sig/sig_coord.c optional ngatm_uni \
compile-with "${NORMAL_C} -I$S/contrib/ngatm"
contrib/ngatm/netnatm/sig/sig_party.c optional ngatm_uni \
compile-with "${NORMAL_C} -I$S/contrib/ngatm"
contrib/ngatm/netnatm/sig/sig_print.c optional ngatm_uni \
compile-with "${NORMAL_C} -I$S/contrib/ngatm"
contrib/ngatm/netnatm/sig/sig_reset.c optional ngatm_uni \
compile-with "${NORMAL_C} -I$S/contrib/ngatm"
contrib/ngatm/netnatm/sig/sig_uni.c optional ngatm_uni \
compile-with "${NORMAL_C} -I$S/contrib/ngatm"
contrib/ngatm/netnatm/sig/sig_unimsgcpy.c optional ngatm_uni \
compile-with "${NORMAL_C} -I$S/contrib/ngatm"
contrib/ngatm/netnatm/sig/sig_verify.c optional ngatm_uni \
compile-with "${NORMAL_C} -I$S/contrib/ngatm"
crypto/blowfish/bf_ecb.c optional ipsec
crypto/blowfish/bf_skey.c optional crypto | ipsec
crypto/camellia/camellia.c optional crypto | ipsec
crypto/camellia/camellia-api.c optional crypto | ipsec
crypto/des/des_ecb.c optional crypto | ipsec | netsmb
crypto/des/des_setkey.c optional crypto | ipsec | netsmb
crypto/rc4/rc4.c optional netgraph_mppc_encryption | kgssapi
crypto/rijndael/rijndael-alg-fst.c optional crypto | geom_bde | \
ipsec | random !random_loadable | wlan_ccmp
crypto/rijndael/rijndael-api-fst.c optional geom_bde | random !random_loadable
crypto/rijndael/rijndael-api.c optional crypto | ipsec | wlan_ccmp
crypto/sha1.c optional carp | crypto | ipsec | \
netgraph_mppc_encryption | sctp
crypto/sha2/sha256c.c optional crypto | geom_bde | ipsec | random !random_loadable | \
sctp | zfs
crypto/sha2/sha512c.c optional crypto | geom_bde | ipsec | zfs
crypto/siphash/siphash.c optional inet | inet6
crypto/siphash/siphash_test.c optional inet | inet6
ddb/db_access.c optional ddb
ddb/db_break.c optional ddb
ddb/db_capture.c optional ddb
ddb/db_command.c optional ddb
ddb/db_examine.c optional ddb
ddb/db_expr.c optional ddb
ddb/db_input.c optional ddb
ddb/db_lex.c optional ddb
ddb/db_main.c optional ddb
ddb/db_output.c optional ddb
ddb/db_print.c optional ddb
ddb/db_ps.c optional ddb
ddb/db_run.c optional ddb
ddb/db_script.c optional ddb
ddb/db_sym.c optional ddb
ddb/db_thread.c optional ddb
ddb/db_textdump.c optional ddb
ddb/db_variables.c optional ddb
ddb/db_watch.c optional ddb
ddb/db_write_cmd.c optional ddb
dev/aac/aac.c optional aac
dev/aac/aac_cam.c optional aacp aac
dev/aac/aac_debug.c optional aac
dev/aac/aac_disk.c optional aac
dev/aac/aac_linux.c optional aac compat_linux
dev/aac/aac_pci.c optional aac pci
dev/aacraid/aacraid.c optional aacraid
dev/aacraid/aacraid_cam.c optional aacraid scbus
dev/aacraid/aacraid_debug.c optional aacraid
dev/aacraid/aacraid_linux.c optional aacraid compat_linux
dev/aacraid/aacraid_pci.c optional aacraid pci
dev/acpi_support/acpi_wmi.c optional acpi_wmi acpi
dev/acpi_support/acpi_asus.c optional acpi_asus acpi
dev/acpi_support/acpi_asus_wmi.c optional acpi_asus_wmi acpi
dev/acpi_support/acpi_fujitsu.c optional acpi_fujitsu acpi
dev/acpi_support/acpi_hp.c optional acpi_hp acpi
dev/acpi_support/acpi_ibm.c optional acpi_ibm acpi
dev/acpi_support/acpi_panasonic.c optional acpi_panasonic acpi
dev/acpi_support/acpi_sony.c optional acpi_sony acpi
dev/acpi_support/acpi_toshiba.c optional acpi_toshiba acpi
dev/acpi_support/atk0110.c optional aibs acpi
dev/acpica/Osd/OsdDebug.c optional acpi
dev/acpica/Osd/OsdHardware.c optional acpi
dev/acpica/Osd/OsdInterrupt.c optional acpi
dev/acpica/Osd/OsdMemory.c optional acpi
dev/acpica/Osd/OsdSchedule.c optional acpi
dev/acpica/Osd/OsdStream.c optional acpi
dev/acpica/Osd/OsdSynch.c optional acpi
dev/acpica/Osd/OsdTable.c optional acpi
dev/acpica/acpi.c optional acpi
dev/acpica/acpi_acad.c optional acpi
dev/acpica/acpi_battery.c optional acpi
dev/acpica/acpi_button.c optional acpi
dev/acpica/acpi_cmbat.c optional acpi
dev/acpica/acpi_cpu.c optional acpi
dev/acpica/acpi_ec.c optional acpi
dev/acpica/acpi_isab.c optional acpi isa
dev/acpica/acpi_lid.c optional acpi
dev/acpica/acpi_package.c optional acpi
dev/acpica/acpi_pci.c optional acpi pci
dev/acpica/acpi_pci_link.c optional acpi pci
dev/acpica/acpi_pcib.c optional acpi pci
dev/acpica/acpi_pcib_acpi.c optional acpi pci
dev/acpica/acpi_pcib_pci.c optional acpi pci
dev/acpica/acpi_perf.c optional acpi
dev/acpica/acpi_powerres.c optional acpi
dev/acpica/acpi_quirk.c optional acpi
dev/acpica/acpi_resource.c optional acpi
dev/acpica/acpi_smbat.c optional acpi
dev/acpica/acpi_thermal.c optional acpi
dev/acpica/acpi_throttle.c optional acpi
dev/acpica/acpi_timer.c optional acpi
dev/acpica/acpi_video.c optional acpi_video acpi
dev/acpica/acpi_dock.c optional acpi_dock acpi
dev/adlink/adlink.c optional adlink
dev/advansys/adv_eisa.c optional adv eisa
dev/advansys/adv_pci.c optional adv pci
dev/advansys/advansys.c optional adv
dev/advansys/advlib.c optional adv
dev/advansys/advmcode.c optional adv
dev/advansys/adw_pci.c optional adw pci
dev/advansys/adwcam.c optional adw
dev/advansys/adwlib.c optional adw
dev/advansys/adwmcode.c optional adw
dev/ae/if_ae.c optional ae pci
dev/age/if_age.c optional age pci
dev/agp/agp.c optional agp pci
dev/agp/agp_if.m optional agp pci
dev/aha/aha.c optional aha
dev/aha/aha_isa.c optional aha isa
dev/aha/aha_mca.c optional aha mca
dev/ahb/ahb.c optional ahb eisa
dev/ahci/ahci.c optional ahci
dev/ahci/ahciem.c optional ahci
dev/ahci/ahci_pci.c optional ahci pci
dev/aic/aic.c optional aic
dev/aic/aic_pccard.c optional aic pccard
dev/aic7xxx/ahc_eisa.c optional ahc eisa
dev/aic7xxx/ahc_isa.c optional ahc isa
dev/aic7xxx/ahc_pci.c optional ahc pci \
compile-with "${NORMAL_C} ${NO_WCONSTANT_CONVERSION}"
dev/aic7xxx/ahd_pci.c optional ahd pci \
compile-with "${NORMAL_C} ${NO_WCONSTANT_CONVERSION}"
dev/aic7xxx/aic7770.c optional ahc
dev/aic7xxx/aic79xx.c optional ahd pci
dev/aic7xxx/aic79xx_osm.c optional ahd pci
dev/aic7xxx/aic79xx_pci.c optional ahd pci
dev/aic7xxx/aic79xx_reg_print.c optional ahd pci ahd_reg_pretty_print
dev/aic7xxx/aic7xxx.c optional ahc
dev/aic7xxx/aic7xxx_93cx6.c optional ahc
dev/aic7xxx/aic7xxx_osm.c optional ahc
dev/aic7xxx/aic7xxx_pci.c optional ahc pci
dev/aic7xxx/aic7xxx_reg_print.c optional ahc ahc_reg_pretty_print
dev/alc/if_alc.c optional alc pci
dev/ale/if_ale.c optional ale pci
dev/alpm/alpm.c optional alpm pci
dev/altera/avgen/altera_avgen.c optional altera_avgen
dev/altera/avgen/altera_avgen_fdt.c optional altera_avgen fdt
dev/altera/avgen/altera_avgen_nexus.c optional altera_avgen
dev/altera/sdcard/altera_sdcard.c optional altera_sdcard
dev/altera/sdcard/altera_sdcard_disk.c optional altera_sdcard
dev/altera/sdcard/altera_sdcard_io.c optional altera_sdcard
dev/altera/sdcard/altera_sdcard_fdt.c optional altera_sdcard fdt
dev/altera/sdcard/altera_sdcard_nexus.c optional altera_sdcard
dev/altera/pio/pio.c optional altera_pio
dev/altera/pio/pio_if.m optional altera_pio
dev/amdpm/amdpm.c optional amdpm pci | nfpm pci
dev/amdsmb/amdsmb.c optional amdsmb pci
dev/amr/amr.c optional amr
dev/amr/amr_cam.c optional amrp amr
dev/amr/amr_disk.c optional amr
dev/amr/amr_linux.c optional amr compat_linux
dev/amr/amr_pci.c optional amr pci
dev/an/if_an.c optional an
dev/an/if_an_isa.c optional an isa
dev/an/if_an_pccard.c optional an pccard
dev/an/if_an_pci.c optional an pci
#
dev/ata/ata_if.m optional ata | atacore
dev/ata/ata-all.c optional ata | atacore
dev/ata/ata-dma.c optional ata | atacore
dev/ata/ata-lowlevel.c optional ata | atacore
dev/ata/ata-sata.c optional ata | atacore
dev/ata/ata-card.c optional ata pccard | atapccard
dev/ata/ata-cbus.c optional ata pc98 | atapc98
dev/ata/ata-isa.c optional ata isa | ataisa
dev/ata/ata-pci.c optional ata pci | atapci
dev/ata/chipsets/ata-acard.c optional ata pci | ataacard
dev/ata/chipsets/ata-acerlabs.c optional ata pci | ataacerlabs
dev/ata/chipsets/ata-amd.c optional ata pci | ataamd
dev/ata/chipsets/ata-ati.c optional ata pci | ataati
dev/ata/chipsets/ata-cenatek.c optional ata pci | atacenatek
dev/ata/chipsets/ata-cypress.c optional ata pci | atacypress
dev/ata/chipsets/ata-cyrix.c optional ata pci | atacyrix
dev/ata/chipsets/ata-highpoint.c optional ata pci | atahighpoint
dev/ata/chipsets/ata-intel.c optional ata pci | ataintel
dev/ata/chipsets/ata-ite.c optional ata pci | ataite
dev/ata/chipsets/ata-jmicron.c optional ata pci | atajmicron
dev/ata/chipsets/ata-marvell.c optional ata pci | atamarvell
dev/ata/chipsets/ata-micron.c optional ata pci | atamicron
dev/ata/chipsets/ata-national.c optional ata pci | atanational
dev/ata/chipsets/ata-netcell.c optional ata pci | atanetcell
dev/ata/chipsets/ata-nvidia.c optional ata pci | atanvidia
dev/ata/chipsets/ata-promise.c optional ata pci | atapromise
dev/ata/chipsets/ata-serverworks.c optional ata pci | ataserverworks
dev/ata/chipsets/ata-siliconimage.c optional ata pci | atasiliconimage | ataati
dev/ata/chipsets/ata-sis.c optional ata pci | atasis
dev/ata/chipsets/ata-via.c optional ata pci | atavia
#
dev/ath/if_ath_pci.c optional ath_pci pci \
compile-with "${NORMAL_C} -I$S/dev/ath"
#
dev/ath/if_ath_ahb.c optional ath_ahb \
compile-with "${NORMAL_C} -I$S/dev/ath"
#
dev/ath/if_ath.c optional ath \
compile-with "${NORMAL_C} -I$S/dev/ath"
dev/ath/if_ath_alq.c optional ath \
compile-with "${NORMAL_C} -I$S/dev/ath"
dev/ath/if_ath_beacon.c optional ath \
compile-with "${NORMAL_C} -I$S/dev/ath"
dev/ath/if_ath_btcoex.c optional ath \
compile-with "${NORMAL_C} -I$S/dev/ath"
dev/ath/if_ath_debug.c optional ath \
compile-with "${NORMAL_C} -I$S/dev/ath"
dev/ath/if_ath_descdma.c optional ath \
compile-with "${NORMAL_C} -I$S/dev/ath"
dev/ath/if_ath_keycache.c optional ath \
compile-with "${NORMAL_C} -I$S/dev/ath"
dev/ath/if_ath_ioctl.c optional ath \
compile-with "${NORMAL_C} -I$S/dev/ath"
dev/ath/if_ath_led.c optional ath \
compile-with "${NORMAL_C} -I$S/dev/ath"
dev/ath/if_ath_lna_div.c optional ath \
compile-with "${NORMAL_C} -I$S/dev/ath"
dev/ath/if_ath_tx.c optional ath \
compile-with "${NORMAL_C} -I$S/dev/ath"
dev/ath/if_ath_tx_edma.c optional ath \
compile-with "${NORMAL_C} -I$S/dev/ath"
dev/ath/if_ath_tx_ht.c optional ath \
compile-with "${NORMAL_C} -I$S/dev/ath"
dev/ath/if_ath_tdma.c optional ath \
compile-with "${NORMAL_C} -I$S/dev/ath"
dev/ath/if_ath_sysctl.c optional ath \
compile-with "${NORMAL_C} -I$S/dev/ath"
dev/ath/if_ath_rx.c optional ath \
compile-with "${NORMAL_C} -I$S/dev/ath"
dev/ath/if_ath_rx_edma.c optional ath \
compile-with "${NORMAL_C} -I$S/dev/ath"
dev/ath/if_ath_spectral.c optional ath \
compile-with "${NORMAL_C} -I$S/dev/ath"
dev/ath/ah_osdep.c optional ath \
compile-with "${NORMAL_C} -I$S/dev/ath"
#
dev/ath/ath_hal/ah.c optional ath \
compile-with "${NORMAL_C} -I$S/dev/ath"
dev/ath/ath_hal/ah_eeprom_v1.c optional ath_hal | ath_ar5210 \
compile-with "${NORMAL_C} -I$S/dev/ath"
dev/ath/ath_hal/ah_eeprom_v3.c optional ath_hal | ath_ar5211 | ath_ar5212 \
compile-with "${NORMAL_C} -I$S/dev/ath"
dev/ath/ath_hal/ah_eeprom_v14.c \
optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 \
compile-with "${NORMAL_C} -I$S/dev/ath"
dev/ath/ath_hal/ah_eeprom_v4k.c \
optional ath_hal | ath_ar9285 \
compile-with "${NORMAL_C} -I$S/dev/ath"
dev/ath/ath_hal/ah_eeprom_9287.c \
optional ath_hal | ath_ar9287 \
compile-with "${NORMAL_C} -I$S/dev/ath"
dev/ath/ath_hal/ah_regdomain.c optional ath \
compile-with "${NORMAL_C} ${NO_WSHIFT_COUNT_NEGATIVE} ${NO_WSHIFT_COUNT_OVERFLOW} -I$S/dev/ath"
# ar5210
dev/ath/ath_hal/ar5210/ar5210_attach.c optional ath_hal | ath_ar5210 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5210/ar5210_beacon.c optional ath_hal | ath_ar5210 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5210/ar5210_interrupts.c optional ath_hal | ath_ar5210 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5210/ar5210_keycache.c optional ath_hal | ath_ar5210 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5210/ar5210_misc.c optional ath_hal | ath_ar5210 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5210/ar5210_phy.c optional ath_hal | ath_ar5210 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5210/ar5210_power.c optional ath_hal | ath_ar5210 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5210/ar5210_recv.c optional ath_hal | ath_ar5210 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5210/ar5210_reset.c optional ath_hal | ath_ar5210 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5210/ar5210_xmit.c optional ath_hal | ath_ar5210 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
# ar5211
dev/ath/ath_hal/ar5211/ar5211_attach.c optional ath_hal | ath_ar5211 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5211/ar5211_beacon.c optional ath_hal | ath_ar5211 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5211/ar5211_interrupts.c optional ath_hal | ath_ar5211 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5211/ar5211_keycache.c optional ath_hal | ath_ar5211 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5211/ar5211_misc.c optional ath_hal | ath_ar5211 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5211/ar5211_phy.c optional ath_hal | ath_ar5211 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5211/ar5211_power.c optional ath_hal | ath_ar5211 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5211/ar5211_recv.c optional ath_hal | ath_ar5211 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5211/ar5211_reset.c optional ath_hal | ath_ar5211 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5211/ar5211_xmit.c optional ath_hal | ath_ar5211 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
# ar5212
dev/ath/ath_hal/ar5212/ar5212_ani.c \
optional ath_hal | ath_ar5212 | ath_ar5416 | ath_ar9160 | ath_ar9280 | \
ath_ar9285 ath_ar9287 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5212/ar5212_attach.c \
optional ath_hal | ath_ar5212 | ath_ar5416 | ath_ar9160 | ath_ar9280 | \
ath_ar9285 ath_ar9287 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5212/ar5212_beacon.c \
optional ath_hal | ath_ar5212 | ath_ar5416 | ath_ar9160 | ath_ar9280 | \
ath_ar9285 ath_ar9287 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5212/ar5212_eeprom.c \
optional ath_hal | ath_ar5212 | ath_ar5416 | ath_ar9160 | ath_ar9280 | \
ath_ar9285 ath_ar9287 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5212/ar5212_gpio.c \
optional ath_hal | ath_ar5212 | ath_ar5416 | ath_ar9160 | ath_ar9280 | \
ath_ar9285 ath_ar9287 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5212/ar5212_interrupts.c \
optional ath_hal | ath_ar5212 | ath_ar5416 | ath_ar9160 | ath_ar9280 | \
ath_ar9285 ath_ar9287 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5212/ar5212_keycache.c \
optional ath_hal | ath_ar5212 | ath_ar5416 | ath_ar9160 | ath_ar9280 | \
ath_ar9285 ath_ar9287 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5212/ar5212_misc.c \
optional ath_hal | ath_ar5212 | ath_ar5416 | ath_ar9160 | ath_ar9280 | \
ath_ar9285 ath_ar9287 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5212/ar5212_phy.c \
optional ath_hal | ath_ar5212 | ath_ar5416 | ath_ar9160 | ath_ar9280 | \
ath_ar9285 ath_ar9287 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5212/ar5212_power.c \
optional ath_hal | ath_ar5212 | ath_ar5416 | ath_ar9160 | ath_ar9280 | \
ath_ar9285 ath_ar9287 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5212/ar5212_recv.c \
optional ath_hal | ath_ar5212 | ath_ar5416 | ath_ar9160 | ath_ar9280 | \
ath_ar9285 ath_ar9287 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5212/ar5212_reset.c \
optional ath_hal | ath_ar5212 | ath_ar5416 | ath_ar9160 | ath_ar9280 | \
ath_ar9285 ath_ar9287 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5212/ar5212_rfgain.c \
optional ath_hal | ath_ar5212 | ath_ar5416 | ath_ar9160 | ath_ar9280 | \
ath_ar9285 ath_ar9287 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5212/ar5212_xmit.c \
optional ath_hal | ath_ar5212 | ath_ar5416 | ath_ar9160 | ath_ar9280 | \
ath_ar9285 ath_ar9287 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
# ar5416 (depends on ar5212)
dev/ath/ath_hal/ar5416/ar5416_ani.c \
optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 | \
ath_ar9287 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5416/ar5416_attach.c \
optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 | \
ath_ar9287 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5416/ar5416_beacon.c \
optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 | \
ath_ar9287 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5416/ar5416_btcoex.c \
optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 | \
ath_ar9287 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5416/ar5416_cal.c \
optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 | \
ath_ar9287 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5416/ar5416_cal_iq.c \
optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 | \
ath_ar9287 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5416/ar5416_cal_adcgain.c \
optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 | \
ath_ar9287 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5416/ar5416_cal_adcdc.c \
optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 | \
ath_ar9287 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5416/ar5416_eeprom.c \
optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 | \
ath_ar9287 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5416/ar5416_gpio.c \
optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 | \
ath_ar9287 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5416/ar5416_interrupts.c \
optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 | \
ath_ar9287 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5416/ar5416_keycache.c \
optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 | \
ath_ar9287 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5416/ar5416_misc.c \
optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 | \
ath_ar9287 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5416/ar5416_phy.c \
optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 | \
ath_ar9287 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5416/ar5416_power.c \
optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 | \
ath_ar9287 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5416/ar5416_radar.c \
optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 | \
ath_ar9287 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5416/ar5416_recv.c \
optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 | \
ath_ar9287 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5416/ar5416_reset.c \
optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 | \
ath_ar9287 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5416/ar5416_spectral.c \
optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 | \
ath_ar9287 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5416/ar5416_xmit.c \
optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 | \
ath_ar9287 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
# ar9130 (depends upon ar5416) - also requires AH_SUPPORT_AR9130
#
# Since this is an embedded MAC SoC, there's no need to compile it into the
# default HAL.
dev/ath/ath_hal/ar9001/ar9130_attach.c optional ath_ar9130 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar9001/ar9130_phy.c optional ath_ar9130 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar9001/ar9130_eeprom.c optional ath_ar9130 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
# ar9160 (depends on ar5416)
dev/ath/ath_hal/ar9001/ar9160_attach.c optional ath_hal | ath_ar9160 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
# ar9280 (depends on ar5416)
dev/ath/ath_hal/ar9002/ar9280_attach.c optional ath_hal | ath_ar9280 | \
ath_ar9285 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar9002/ar9280_olc.c optional ath_hal | ath_ar9280 | \
ath_ar9285 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
# ar9285 (depends on ar5416 and ar9280)
dev/ath/ath_hal/ar9002/ar9285_attach.c optional ath_hal | ath_ar9285 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar9002/ar9285_btcoex.c optional ath_hal | ath_ar9285 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar9002/ar9285_reset.c optional ath_hal | ath_ar9285 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar9002/ar9285_cal.c optional ath_hal | ath_ar9285 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar9002/ar9285_phy.c optional ath_hal | ath_ar9285 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar9002/ar9285_diversity.c optional ath_hal | ath_ar9285 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
# ar9287 (depends on ar5416)
dev/ath/ath_hal/ar9002/ar9287_attach.c optional ath_hal | ath_ar9287 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar9002/ar9287_reset.c optional ath_hal | ath_ar9287 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar9002/ar9287_cal.c optional ath_hal | ath_ar9287 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar9002/ar9287_olc.c optional ath_hal | ath_ar9287 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
# ar9300
contrib/dev/ath/ath_hal/ar9300/ar9300_ani.c optional ath_hal | ath_ar9300 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal"
contrib/dev/ath/ath_hal/ar9300/ar9300_attach.c optional ath_hal | ath_ar9300 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal"
contrib/dev/ath/ath_hal/ar9300/ar9300_beacon.c optional ath_hal | ath_ar9300 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal"
contrib/dev/ath/ath_hal/ar9300/ar9300_eeprom.c optional ath_hal | ath_ar9300 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal ${NO_WCONSTANT_CONVERSION}"
contrib/dev/ath/ath_hal/ar9300/ar9300_freebsd.c optional ath_hal | ath_ar9300 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal"
contrib/dev/ath/ath_hal/ar9300/ar9300_gpio.c optional ath_hal | ath_ar9300 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal"
contrib/dev/ath/ath_hal/ar9300/ar9300_interrupts.c optional ath_hal | ath_ar9300 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal"
contrib/dev/ath/ath_hal/ar9300/ar9300_keycache.c optional ath_hal | ath_ar9300 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal"
contrib/dev/ath/ath_hal/ar9300/ar9300_mci.c optional ath_hal | ath_ar9300 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal"
contrib/dev/ath/ath_hal/ar9300/ar9300_misc.c optional ath_hal | ath_ar9300 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal"
contrib/dev/ath/ath_hal/ar9300/ar9300_paprd.c optional ath_hal | ath_ar9300 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal"
contrib/dev/ath/ath_hal/ar9300/ar9300_phy.c optional ath_hal | ath_ar9300 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal"
contrib/dev/ath/ath_hal/ar9300/ar9300_power.c optional ath_hal | ath_ar9300 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal"
contrib/dev/ath/ath_hal/ar9300/ar9300_radar.c optional ath_hal | ath_ar9300 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal"
contrib/dev/ath/ath_hal/ar9300/ar9300_radio.c optional ath_hal | ath_ar9300 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal"
contrib/dev/ath/ath_hal/ar9300/ar9300_recv.c optional ath_hal | ath_ar9300 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal"
contrib/dev/ath/ath_hal/ar9300/ar9300_recv_ds.c optional ath_hal | ath_ar9300 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal"
contrib/dev/ath/ath_hal/ar9300/ar9300_reset.c optional ath_hal | ath_ar9300 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal ${NO_WSOMETIMES_UNINITIALIZED} -Wno-unused-function"
contrib/dev/ath/ath_hal/ar9300/ar9300_stub.c optional ath_hal | ath_ar9300 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal"
contrib/dev/ath/ath_hal/ar9300/ar9300_stub_funcs.c optional ath_hal | ath_ar9300 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal"
contrib/dev/ath/ath_hal/ar9300/ar9300_spectral.c optional ath_hal | ath_ar9300 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal"
contrib/dev/ath/ath_hal/ar9300/ar9300_timer.c optional ath_hal | ath_ar9300 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal"
contrib/dev/ath/ath_hal/ar9300/ar9300_xmit.c optional ath_hal | ath_ar9300 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal"
contrib/dev/ath/ath_hal/ar9300/ar9300_xmit_ds.c optional ath_hal | ath_ar9300 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal"
# rf backends
dev/ath/ath_hal/ar5212/ar2316.c optional ath_rf2316 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5212/ar2317.c optional ath_rf2317 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5212/ar2413.c optional ath_hal | ath_rf2413 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5212/ar2425.c optional ath_hal | ath_rf2425 | ath_rf2417 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5212/ar5111.c optional ath_hal | ath_rf5111 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5212/ar5112.c optional ath_hal | ath_rf5112 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5212/ar5413.c optional ath_hal | ath_rf5413 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar5416/ar2133.c optional ath_hal | ath_ar5416 | \
ath_ar9130 | ath_ar9160 | ath_ar9280 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar9002/ar9280.c optional ath_hal | ath_ar9280 | ath_ar9285 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar9002/ar9285.c optional ath_hal | ath_ar9285 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
dev/ath/ath_hal/ar9002/ar9287.c optional ath_hal | ath_ar9287 \
compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal"
# ath rate control algorithms
dev/ath/ath_rate/amrr/amrr.c optional ath_rate_amrr \
compile-with "${NORMAL_C} -I$S/dev/ath"
dev/ath/ath_rate/onoe/onoe.c optional ath_rate_onoe \
compile-with "${NORMAL_C} -I$S/dev/ath"
dev/ath/ath_rate/sample/sample.c optional ath_rate_sample \
compile-with "${NORMAL_C} -I$S/dev/ath"
# ath DFS modules
dev/ath/ath_dfs/null/dfs_null.c optional ath \
compile-with "${NORMAL_C} -I$S/dev/ath"
#
dev/bce/if_bce.c optional bce
dev/bfe/if_bfe.c optional bfe
dev/bge/if_bge.c optional bge
dev/bhnd/bhnd.c optional bhndbus | bhnd
dev/bhnd/bhnd_subr.c optional bhndbus | bhnd
dev/bhnd/bhnd_bus_if.m optional bhndbus | bhnd
dev/bhnd/bhndb/bhndb.c optional bhndbus | bhndb
dev/bhnd/bhndb/bhndb_bus_if.m optional bhndbus | bhndb
dev/bhnd/bhndb/bhndb_hwdata.c optional bhndbus | bhndb
dev/bhnd/bhndb/bhndb_if.m optional bhndbus | bhndb
dev/bhnd/bhndb/bhndb_pci.c optional bhndbus pci | bhndb pci
dev/bhnd/bhndb/bhndb_pci_hwdata.c optional bhndbus pci | bhndb pci
dev/bhnd/bhndb/bhndb_pci_sprom.c optional bhndbus pci | bhndb pci
dev/bhnd/bhndb/bhndb_subr.c optional bhndbus pci | bhndb
dev/bhnd/bcma/bcma.c optional bhndbus | bcma
dev/bhnd/bcma/bcma_bhndb.c optional bhndbus | bcma bhndb
dev/bhnd/bcma/bcma_erom.c optional bhndbus | bcma
dev/bhnd/bcma/bcma_subr.c optional bhndbus | bcma
dev/bhnd/cores/chipc/chipc.c optional bhndbus | bhnd
dev/bhnd/cores/chipc/bhnd_chipc_if.m optional bhndbus | bhnd
dev/bhnd/cores/pci/bhnd_pci.c optional bhndbus pci | bhnd pci
dev/bhnd/cores/pci/bhnd_pci_hostb.c optional bhndbus pci | bhndb pci
dev/bhnd/cores/pci/bhnd_pcib.c optional bhnd_pcib bhnd pci
dev/bhnd/nvram/bhnd_nvram_if.m optional bhndbus | bhnd
dev/bhnd/nvram/bhnd_sprom.c optional bhndbus | bhnd
dev/bhnd/nvram/nvram_subr.c optional bhndbus | bhnd
dev/bhnd/siba/siba.c optional bhndbus | siba
dev/bhnd/siba/siba_bhndb.c optional bhndbus | siba bhndb
dev/bhnd/siba/siba_nexus.c optional siba_nexus siba
dev/bhnd/siba/siba_subr.c optional bhndbus | siba
#
dev/bktr/bktr_audio.c optional bktr pci
dev/bktr/bktr_card.c optional bktr pci
dev/bktr/bktr_core.c optional bktr pci
dev/bktr/bktr_i2c.c optional bktr pci smbus
dev/bktr/bktr_os.c optional bktr pci
dev/bktr/bktr_tuner.c optional bktr pci
dev/bktr/msp34xx.c optional bktr pci
dev/buslogic/bt.c optional bt
dev/buslogic/bt_eisa.c optional bt eisa
dev/buslogic/bt_isa.c optional bt isa
dev/buslogic/bt_mca.c optional bt mca
dev/buslogic/bt_pci.c optional bt pci
dev/bwi/bwimac.c optional bwi
dev/bwi/bwiphy.c optional bwi
dev/bwi/bwirf.c optional bwi
dev/bwi/if_bwi.c optional bwi
dev/bwi/if_bwi_pci.c optional bwi pci
# XXX Work around clang warning, until maintainer approves fix.
dev/bwn/if_bwn.c optional bwn siba_bwn \
compile-with "${NORMAL_C} ${NO_WSOMETIMES_UNINITIALIZED}"
dev/bwn/if_bwn_pci.c optional bwn pci bhnd | bwn pci bhndbus
dev/bwn/if_bwn_phy_g.c optional bwn siba_bwn \
compile-with "${NORMAL_C} ${NO_WSOMETIMES_UNINITIALIZED}"
dev/bwn/if_bwn_phy_lp.c optional bwn siba_bwn \
compile-with "${NORMAL_C} ${NO_WSOMETIMES_UNINITIALIZED}"
dev/bwn/bwn_mac.c optional bwn bhnd | bwn bhndbus
dev/cardbus/cardbus.c optional cardbus
dev/cardbus/cardbus_cis.c optional cardbus
dev/cardbus/cardbus_device.c optional cardbus
dev/cas/if_cas.c optional cas
dev/cfi/cfi_bus_fdt.c optional cfi fdt
dev/cfi/cfi_bus_nexus.c optional cfi
dev/cfi/cfi_core.c optional cfi
dev/cfi/cfi_dev.c optional cfi
dev/cfi/cfi_disk.c optional cfid
dev/ciss/ciss.c optional ciss
dev/cm/smc90cx6.c optional cm
dev/cmx/cmx.c optional cmx
dev/cmx/cmx_pccard.c optional cmx pccard
dev/cpufreq/ichss.c optional cpufreq
dev/cs/if_cs.c optional cs
dev/cs/if_cs_isa.c optional cs isa
dev/cs/if_cs_pccard.c optional cs pccard
dev/cxgb/cxgb_main.c optional cxgb pci \
compile-with "${NORMAL_C} -I$S/dev/cxgb"
dev/cxgb/cxgb_sge.c optional cxgb pci \
compile-with "${NORMAL_C} -I$S/dev/cxgb"
dev/cxgb/common/cxgb_mc5.c optional cxgb pci \
compile-with "${NORMAL_C} -I$S/dev/cxgb"
dev/cxgb/common/cxgb_vsc7323.c optional cxgb pci \
compile-with "${NORMAL_C} -I$S/dev/cxgb"
dev/cxgb/common/cxgb_vsc8211.c optional cxgb pci \
compile-with "${NORMAL_C} -I$S/dev/cxgb"
dev/cxgb/common/cxgb_ael1002.c optional cxgb pci \
compile-with "${NORMAL_C} -I$S/dev/cxgb"
dev/cxgb/common/cxgb_aq100x.c optional cxgb pci \
compile-with "${NORMAL_C} -I$S/dev/cxgb"
dev/cxgb/common/cxgb_mv88e1xxx.c optional cxgb pci \
compile-with "${NORMAL_C} -I$S/dev/cxgb"
dev/cxgb/common/cxgb_xgmac.c optional cxgb pci \
compile-with "${NORMAL_C} -I$S/dev/cxgb"
dev/cxgb/common/cxgb_t3_hw.c optional cxgb pci \
compile-with "${NORMAL_C} -I$S/dev/cxgb"
dev/cxgb/common/cxgb_tn1010.c optional cxgb pci \
compile-with "${NORMAL_C} -I$S/dev/cxgb"
dev/cxgb/sys/uipc_mvec.c optional cxgb pci \
compile-with "${NORMAL_C} -I$S/dev/cxgb"
dev/cxgb/cxgb_t3fw.c optional cxgb cxgb_t3fw \
compile-with "${NORMAL_C} -I$S/dev/cxgb"
dev/cxgbe/t4_mp_ring.c optional cxgbe pci \
compile-with "${NORMAL_C} -I$S/dev/cxgbe"
dev/cxgbe/t4_main.c optional cxgbe pci \
compile-with "${NORMAL_C} -I$S/dev/cxgbe"
dev/cxgbe/t4_netmap.c optional cxgbe pci \
compile-with "${NORMAL_C} -I$S/dev/cxgbe"
dev/cxgbe/t4_sge.c optional cxgbe pci \
compile-with "${NORMAL_C} -I$S/dev/cxgbe"
dev/cxgbe/t4_l2t.c optional cxgbe pci \
compile-with "${NORMAL_C} -I$S/dev/cxgbe"
dev/cxgbe/t4_tracer.c optional cxgbe pci \
compile-with "${NORMAL_C} -I$S/dev/cxgbe"
dev/cxgbe/common/t4_hw.c optional cxgbe pci \
compile-with "${NORMAL_C} -I$S/dev/cxgbe"
t4fw_cfg.c optional cxgbe \
compile-with "${AWK} -f $S/tools/fw_stub.awk t4fw_cfg.fw:t4fw_cfg t4fw_cfg_uwire.fw:t4fw_cfg_uwire t4fw.fw:t4fw -mt4fw_cfg -c${.TARGET}" \
no-implicit-rule before-depend local \
clean "t4fw_cfg.c"
t4fw_cfg.fwo optional cxgbe \
dependency "t4fw_cfg.fw" \
compile-with "${NORMAL_FWO}" \
no-implicit-rule \
clean "t4fw_cfg.fwo"
t4fw_cfg.fw optional cxgbe \
dependency "$S/dev/cxgbe/firmware/t4fw_cfg.txt" \
compile-with "${CP} ${.ALLSRC} ${.TARGET}" \
no-obj no-implicit-rule \
clean "t4fw_cfg.fw"
t4fw_cfg_uwire.fwo optional cxgbe \
dependency "t4fw_cfg_uwire.fw" \
compile-with "${NORMAL_FWO}" \
no-implicit-rule \
clean "t4fw_cfg_uwire.fwo"
t4fw_cfg_uwire.fw optional cxgbe \
dependency "$S/dev/cxgbe/firmware/t4fw_cfg_uwire.txt" \
compile-with "${CP} ${.ALLSRC} ${.TARGET}" \
no-obj no-implicit-rule \
clean "t4fw_cfg_uwire.fw"
t4fw.fwo optional cxgbe \
dependency "t4fw.fw" \
compile-with "${NORMAL_FWO}" \
no-implicit-rule \
clean "t4fw.fwo"
t4fw.fw optional cxgbe \
- dependency "$S/dev/cxgbe/firmware/t4fw-1.15.28.0.bin.uu" \
+ dependency "$S/dev/cxgbe/firmware/t4fw-1.15.37.0.bin.uu" \
compile-with "${NORMAL_FW}" \
no-obj no-implicit-rule \
clean "t4fw.fw"
t5fw_cfg.c optional cxgbe \
compile-with "${AWK} -f $S/tools/fw_stub.awk t5fw_cfg.fw:t5fw_cfg t5fw.fw:t5fw -mt5fw_cfg -c${.TARGET}" \
no-implicit-rule before-depend local \
clean "t5fw_cfg.c"
t5fw_cfg.fwo optional cxgbe \
dependency "t5fw_cfg.fw" \
compile-with "${NORMAL_FWO}" \
no-implicit-rule \
clean "t5fw_cfg.fwo"
t5fw_cfg.fw optional cxgbe \
dependency "$S/dev/cxgbe/firmware/t5fw_cfg.txt" \
compile-with "${CP} ${.ALLSRC} ${.TARGET}" \
no-obj no-implicit-rule \
clean "t5fw_cfg.fw"
t5fw.fwo optional cxgbe \
dependency "t5fw.fw" \
compile-with "${NORMAL_FWO}" \
no-implicit-rule \
clean "t5fw.fwo"
t5fw.fw optional cxgbe \
- dependency "$S/dev/cxgbe/firmware/t5fw-1.15.28.0.bin.uu" \
+ dependency "$S/dev/cxgbe/firmware/t5fw-1.15.37.0.bin.uu" \
compile-with "${NORMAL_FW}" \
no-obj no-implicit-rule \
clean "t5fw.fw"
dev/cy/cy.c optional cy
dev/cy/cy_isa.c optional cy isa
dev/cy/cy_pci.c optional cy pci
dev/cyapa/cyapa.c optional cyapa smbus
dev/dc/if_dc.c optional dc pci
dev/dc/dcphy.c optional dc pci
dev/dc/pnphy.c optional dc pci
dev/dcons/dcons.c optional dcons
dev/dcons/dcons_crom.c optional dcons_crom
dev/dcons/dcons_os.c optional dcons
dev/de/if_de.c optional de pci
dev/digi/CX.c optional digi_CX
dev/digi/CX_PCI.c optional digi_CX_PCI
dev/digi/EPCX.c optional digi_EPCX
dev/digi/EPCX_PCI.c optional digi_EPCX_PCI
dev/digi/Xe.c optional digi_Xe
dev/digi/Xem.c optional digi_Xem
dev/digi/Xr.c optional digi_Xr
dev/digi/digi.c optional digi
dev/digi/digi_isa.c optional digi isa
dev/digi/digi_pci.c optional digi pci
dev/dpt/dpt_eisa.c optional dpt eisa
dev/dpt/dpt_pci.c optional dpt pci
dev/dpt/dpt_scsi.c optional dpt
dev/drm/ati_pcigart.c optional drm
dev/drm/drm_agpsupport.c optional drm
dev/drm/drm_auth.c optional drm
dev/drm/drm_bufs.c optional drm
dev/drm/drm_context.c optional drm
dev/drm/drm_dma.c optional drm
dev/drm/drm_drawable.c optional drm
dev/drm/drm_drv.c optional drm
dev/drm/drm_fops.c optional drm
dev/drm/drm_hashtab.c optional drm
dev/drm/drm_ioctl.c optional drm
dev/drm/drm_irq.c optional drm
dev/drm/drm_lock.c optional drm
dev/drm/drm_memory.c optional drm
dev/drm/drm_mm.c optional drm
dev/drm/drm_pci.c optional drm
dev/drm/drm_scatter.c optional drm
dev/drm/drm_sman.c optional drm
dev/drm/drm_sysctl.c optional drm
dev/drm/drm_vm.c optional drm
dev/drm/i915_dma.c optional i915drm
dev/drm/i915_drv.c optional i915drm
dev/drm/i915_irq.c optional i915drm
dev/drm/i915_mem.c optional i915drm
dev/drm/i915_suspend.c optional i915drm
dev/drm/mach64_dma.c optional mach64drm
dev/drm/mach64_drv.c optional mach64drm
dev/drm/mach64_irq.c optional mach64drm
dev/drm/mach64_state.c optional mach64drm
dev/drm/mga_dma.c optional mgadrm
dev/drm/mga_drv.c optional mgadrm
dev/drm/mga_irq.c optional mgadrm
dev/drm/mga_state.c optional mgadrm
dev/drm/mga_warp.c optional mgadrm
dev/drm/r128_cce.c optional r128drm \
compile-with "${NORMAL_C} ${NO_WCONSTANT_CONVERSION}"
dev/drm/r128_drv.c optional r128drm
dev/drm/r128_irq.c optional r128drm
dev/drm/r128_state.c optional r128drm
dev/drm/r300_cmdbuf.c optional radeondrm
dev/drm/r600_blit.c optional radeondrm
dev/drm/r600_cp.c optional radeondrm \
compile-with "${NORMAL_C} ${NO_WCONSTANT_CONVERSION}"
dev/drm/radeon_cp.c optional radeondrm \
compile-with "${NORMAL_C} ${NO_WCONSTANT_CONVERSION}"
dev/drm/radeon_cs.c optional radeondrm
dev/drm/radeon_drv.c optional radeondrm
dev/drm/radeon_irq.c optional radeondrm
dev/drm/radeon_mem.c optional radeondrm
dev/drm/radeon_state.c optional radeondrm
dev/drm/savage_bci.c optional savagedrm
dev/drm/savage_drv.c optional savagedrm
dev/drm/savage_state.c optional savagedrm
dev/drm/sis_drv.c optional sisdrm
dev/drm/sis_ds.c optional sisdrm
dev/drm/sis_mm.c optional sisdrm
dev/drm/tdfx_drv.c optional tdfxdrm
dev/drm/via_dma.c optional viadrm
dev/drm/via_dmablit.c optional viadrm
dev/drm/via_drv.c optional viadrm
dev/drm/via_irq.c optional viadrm
dev/drm/via_map.c optional viadrm
dev/drm/via_mm.c optional viadrm
dev/drm/via_verifier.c optional viadrm
dev/drm/via_video.c optional viadrm
dev/ed/if_ed.c optional ed
dev/ed/if_ed_novell.c optional ed
dev/ed/if_ed_rtl80x9.c optional ed
dev/ed/if_ed_pccard.c optional ed pccard
dev/ed/if_ed_pci.c optional ed pci
dev/eisa/eisa_if.m standard
dev/eisa/eisaconf.c optional eisa
dev/e1000/if_em.c optional em \
compile-with "${NORMAL_C} -I$S/dev/e1000"
dev/e1000/if_lem.c optional em \
compile-with "${NORMAL_C} -I$S/dev/e1000"
dev/e1000/if_igb.c optional igb \
compile-with "${NORMAL_C} -I$S/dev/e1000"
dev/e1000/e1000_80003es2lan.c optional em | igb \
compile-with "${NORMAL_C} -I$S/dev/e1000"
dev/e1000/e1000_82540.c optional em | igb \
compile-with "${NORMAL_C} -I$S/dev/e1000"
dev/e1000/e1000_82541.c optional em | igb \
compile-with "${NORMAL_C} -I$S/dev/e1000"
dev/e1000/e1000_82542.c optional em | igb \
compile-with "${NORMAL_C} -I$S/dev/e1000"
dev/e1000/e1000_82543.c optional em | igb \
compile-with "${NORMAL_C} -I$S/dev/e1000"
dev/e1000/e1000_82571.c optional em | igb \
compile-with "${NORMAL_C} -I$S/dev/e1000"
dev/e1000/e1000_82575.c optional em | igb \
compile-with "${NORMAL_C} -I$S/dev/e1000"
dev/e1000/e1000_ich8lan.c optional em | igb \
compile-with "${NORMAL_C} -I$S/dev/e1000"
dev/e1000/e1000_i210.c optional em | igb \
compile-with "${NORMAL_C} -I$S/dev/e1000"
dev/e1000/e1000_api.c optional em | igb \
compile-with "${NORMAL_C} -I$S/dev/e1000"
dev/e1000/e1000_mac.c optional em | igb \
compile-with "${NORMAL_C} -I$S/dev/e1000"
dev/e1000/e1000_manage.c optional em | igb \
compile-with "${NORMAL_C} -I$S/dev/e1000"
dev/e1000/e1000_nvm.c optional em | igb \
compile-with "${NORMAL_C} -I$S/dev/e1000"
dev/e1000/e1000_phy.c optional em | igb \
compile-with "${NORMAL_C} -I$S/dev/e1000"
dev/e1000/e1000_vf.c optional em | igb \
compile-with "${NORMAL_C} -I$S/dev/e1000"
dev/e1000/e1000_mbx.c optional em | igb \
compile-with "${NORMAL_C} -I$S/dev/e1000"
dev/e1000/e1000_osdep.c optional em | igb \
compile-with "${NORMAL_C} -I$S/dev/e1000"
dev/et/if_et.c optional et
dev/en/if_en_pci.c optional en pci
dev/en/midway.c optional en
dev/ep/if_ep.c optional ep
dev/ep/if_ep_eisa.c optional ep eisa
dev/ep/if_ep_isa.c optional ep isa
dev/ep/if_ep_mca.c optional ep mca
dev/ep/if_ep_pccard.c optional ep pccard
dev/esp/esp_pci.c optional esp pci
dev/esp/ncr53c9x.c optional esp
dev/etherswitch/arswitch/arswitch.c optional arswitch
dev/etherswitch/arswitch/arswitch_reg.c optional arswitch
dev/etherswitch/arswitch/arswitch_phy.c optional arswitch
dev/etherswitch/arswitch/arswitch_8216.c optional arswitch
dev/etherswitch/arswitch/arswitch_8226.c optional arswitch
dev/etherswitch/arswitch/arswitch_8316.c optional arswitch
dev/etherswitch/arswitch/arswitch_8327.c optional arswitch
dev/etherswitch/arswitch/arswitch_7240.c optional arswitch
dev/etherswitch/arswitch/arswitch_9340.c optional arswitch
dev/etherswitch/arswitch/arswitch_vlans.c optional arswitch
dev/etherswitch/etherswitch.c optional etherswitch
dev/etherswitch/etherswitch_if.m optional etherswitch
dev/etherswitch/ip17x/ip17x.c optional ip17x
dev/etherswitch/ip17x/ip175c.c optional ip17x
dev/etherswitch/ip17x/ip175d.c optional ip17x
dev/etherswitch/ip17x/ip17x_phy.c optional ip17x
dev/etherswitch/ip17x/ip17x_vlans.c optional ip17x
dev/etherswitch/miiproxy.c optional miiproxy
dev/etherswitch/rtl8366/rtl8366rb.c optional rtl8366rb
dev/etherswitch/ukswitch/ukswitch.c optional ukswitch
dev/ex/if_ex.c optional ex
dev/ex/if_ex_isa.c optional ex isa
dev/ex/if_ex_pccard.c optional ex pccard
dev/exca/exca.c optional cbb
dev/extres/clk/clk.c optional ext_resources clk
dev/extres/clk/clkdev_if.m optional ext_resources clk
dev/extres/clk/clknode_if.m optional ext_resources clk
dev/extres/clk/clk_bus.c optional ext_resources clk fdt
dev/extres/clk/clk_div.c optional ext_resources clk
dev/extres/clk/clk_fixed.c optional ext_resources clk
dev/extres/clk/clk_gate.c optional ext_resources clk
dev/extres/clk/clk_mux.c optional ext_resources clk
dev/extres/phy/phy.c optional ext_resources phy
dev/extres/phy/phy_if.m optional ext_resources phy
dev/extres/hwreset/hwreset.c optional ext_resources hwreset
dev/extres/hwreset/hwreset_if.m optional ext_resources hwreset
dev/extres/regulator/regdev_if.m optional ext_resources regulator
dev/extres/regulator/regnode_if.m optional ext_resources regulator
dev/extres/regulator/regulator.c optional ext_resources regulator
dev/extres/regulator/regulator_bus.c optional ext_resources regulator fdt
dev/extres/regulator/regulator_fixed.c optional ext_resources regulator
dev/fatm/if_fatm.c optional fatm pci
dev/fb/fbd.c optional fbd | vt
dev/fb/fb_if.m standard
dev/fb/splash.c optional sc splash
dev/fdt/fdt_clock.c optional fdt fdt_clock
dev/fdt/fdt_clock_if.m optional fdt fdt_clock
dev/fdt/fdt_common.c optional fdt
dev/fdt/fdt_pinctrl.c optional fdt fdt_pinctrl
dev/fdt/fdt_pinctrl_if.m optional fdt fdt_pinctrl
dev/fdt/fdt_slicer.c optional fdt cfi | fdt nand | fdt mx25l
dev/fdt/fdt_static_dtb.S optional fdt fdt_dtb_static \
dependency "fdt_dtb_file"
dev/fdt/simplebus.c optional fdt
dev/fe/if_fe.c optional fe
dev/fe/if_fe_pccard.c optional fe pccard
dev/filemon/filemon.c optional filemon
dev/firewire/firewire.c optional firewire
dev/firewire/fwcrom.c optional firewire
dev/firewire/fwdev.c optional firewire
dev/firewire/fwdma.c optional firewire
dev/firewire/fwmem.c optional firewire
dev/firewire/fwohci.c optional firewire
dev/firewire/fwohci_pci.c optional firewire pci
dev/firewire/if_fwe.c optional fwe
dev/firewire/if_fwip.c optional fwip
dev/firewire/sbp.c optional sbp
dev/firewire/sbp_targ.c optional sbp_targ
dev/flash/at45d.c optional at45d
dev/flash/mx25l.c optional mx25l
dev/fxp/if_fxp.c optional fxp
dev/fxp/inphy.c optional fxp
dev/gem/if_gem.c optional gem
dev/gem/if_gem_pci.c optional gem pci
dev/gem/if_gem_sbus.c optional gem sbus
dev/gpio/gpiobacklight.c optional gpiobacklight fdt
dev/gpio/gpiokeys.c optional gpiokeys fdt
dev/gpio/gpiokeys_codes.c optional gpiokeys fdt
dev/gpio/gpiobus.c optional gpio \
dependency "gpiobus_if.h"
dev/gpio/gpioc.c optional gpio \
dependency "gpio_if.h"
dev/gpio/gpioiic.c optional gpioiic
dev/gpio/gpioled.c optional gpioled
dev/gpio/gpio_if.m optional gpio
dev/gpio/gpiobus_if.m optional gpio
dev/gpio/ofw_gpiobus.c optional fdt gpio
dev/hatm/if_hatm.c optional hatm pci
dev/hatm/if_hatm_intr.c optional hatm pci
dev/hatm/if_hatm_ioctl.c optional hatm pci
dev/hatm/if_hatm_rx.c optional hatm pci
dev/hatm/if_hatm_tx.c optional hatm pci
dev/hifn/hifn7751.c optional hifn
dev/hme/if_hme.c optional hme
dev/hme/if_hme_pci.c optional hme pci
dev/hme/if_hme_sbus.c optional hme sbus
dev/hptiop/hptiop.c optional hptiop scbus
dev/hwpmc/hwpmc_logging.c optional hwpmc
dev/hwpmc/hwpmc_mod.c optional hwpmc
dev/hwpmc/hwpmc_soft.c optional hwpmc
dev/ichiic/ig4_iic.c optional ig4 smbus
dev/ichiic/ig4_pci.c optional ig4 pci smbus
dev/ichsmb/ichsmb.c optional ichsmb
dev/ichsmb/ichsmb_pci.c optional ichsmb pci
dev/ida/ida.c optional ida
dev/ida/ida_disk.c optional ida
dev/ida/ida_eisa.c optional ida eisa
dev/ida/ida_pci.c optional ida pci
dev/ie/if_ie.c optional ie isa nowerror
dev/ie/if_ie_isa.c optional ie isa
dev/iicbus/ad7418.c optional ad7418
dev/iicbus/ds1307.c optional ds1307
dev/iicbus/ds133x.c optional ds133x
dev/iicbus/ds1374.c optional ds1374
dev/iicbus/ds1672.c optional ds1672
dev/iicbus/ds3231.c optional ds3231
dev/iicbus/icee.c optional icee
dev/iicbus/if_ic.c optional ic
dev/iicbus/iic.c optional iic
dev/iicbus/iicbb.c optional iicbb
dev/iicbus/iicbb_if.m optional iicbb
dev/iicbus/iicbus.c optional iicbus
dev/iicbus/iicbus_if.m optional iicbus
dev/iicbus/iiconf.c optional iicbus
dev/iicbus/iicsmb.c optional iicsmb \
dependency "iicbus_if.h"
dev/iicbus/iicoc.c optional iicoc
dev/iicbus/lm75.c optional lm75
dev/iicbus/pcf8563.c optional pcf8563
dev/iicbus/s35390a.c optional s35390a
dev/iir/iir.c optional iir
dev/iir/iir_ctrl.c optional iir
dev/iir/iir_pci.c optional iir pci
dev/intpm/intpm.c optional intpm pci
# XXX Work around clang warning, until maintainer approves fix.
dev/ips/ips.c optional ips \
compile-with "${NORMAL_C} ${NO_WSOMETIMES_UNINITIALIZED}"
dev/ips/ips_commands.c optional ips
dev/ips/ips_disk.c optional ips
dev/ips/ips_ioctl.c optional ips
dev/ips/ips_pci.c optional ips pci
dev/ipw/if_ipw.c optional ipw
ipwbssfw.c optional ipwbssfw | ipwfw \
compile-with "${AWK} -f $S/tools/fw_stub.awk ipw_bss.fw:ipw_bss:130 -lintel_ipw -mipw_bss -c${.TARGET}" \
no-implicit-rule before-depend local \
clean "ipwbssfw.c"
ipw_bss.fwo optional ipwbssfw | ipwfw \
dependency "ipw_bss.fw" \
compile-with "${NORMAL_FWO}" \
no-implicit-rule \
clean "ipw_bss.fwo"
ipw_bss.fw optional ipwbssfw | ipwfw \
dependency "$S/contrib/dev/ipw/ipw2100-1.3.fw.uu" \
compile-with "${NORMAL_FW}" \
no-obj no-implicit-rule \
clean "ipw_bss.fw"
ipwibssfw.c optional ipwibssfw | ipwfw \
compile-with "${AWK} -f $S/tools/fw_stub.awk ipw_ibss.fw:ipw_ibss:130 -lintel_ipw -mipw_ibss -c${.TARGET}" \
no-implicit-rule before-depend local \
clean "ipwibssfw.c"
ipw_ibss.fwo optional ipwibssfw | ipwfw \
dependency "ipw_ibss.fw" \
compile-with "${NORMAL_FWO}" \
no-implicit-rule \
clean "ipw_ibss.fwo"
ipw_ibss.fw optional ipwibssfw | ipwfw \
dependency "$S/contrib/dev/ipw/ipw2100-1.3-i.fw.uu" \
compile-with "${NORMAL_FW}" \
no-obj no-implicit-rule \
clean "ipw_ibss.fw"
ipwmonitorfw.c optional ipwmonitorfw | ipwfw \
compile-with "${AWK} -f $S/tools/fw_stub.awk ipw_monitor.fw:ipw_monitor:130 -lintel_ipw -mipw_monitor -c${.TARGET}" \
no-implicit-rule before-depend local \
clean "ipwmonitorfw.c"
ipw_monitor.fwo optional ipwmonitorfw | ipwfw \
dependency "ipw_monitor.fw" \
compile-with "${NORMAL_FWO}" \
no-implicit-rule \
clean "ipw_monitor.fwo"
ipw_monitor.fw optional ipwmonitorfw | ipwfw \
dependency "$S/contrib/dev/ipw/ipw2100-1.3-p.fw.uu" \
compile-with "${NORMAL_FW}" \
no-obj no-implicit-rule \
clean "ipw_monitor.fw"
dev/iscsi/icl.c optional iscsi | ctl
dev/iscsi/icl_conn_if.m optional iscsi | ctl
dev/iscsi/icl_proxy.c optional iscsi | ctl
dev/iscsi/icl_soft.c optional iscsi | ctl
dev/iscsi/iscsi.c optional iscsi scbus
dev/iscsi_initiator/iscsi.c optional iscsi_initiator scbus
dev/iscsi_initiator/iscsi_subr.c optional iscsi_initiator scbus
dev/iscsi_initiator/isc_cam.c optional iscsi_initiator scbus
dev/iscsi_initiator/isc_soc.c optional iscsi_initiator scbus
dev/iscsi_initiator/isc_sm.c optional iscsi_initiator scbus
dev/iscsi_initiator/isc_subr.c optional iscsi_initiator scbus
dev/ismt/ismt.c optional ismt
dev/isl/isl.c optional isl smbus
dev/isp/isp.c optional isp
dev/isp/isp_freebsd.c optional isp
dev/isp/isp_library.c optional isp
dev/isp/isp_pci.c optional isp pci
dev/isp/isp_sbus.c optional isp sbus
dev/isp/isp_target.c optional isp
dev/ispfw/ispfw.c optional ispfw
dev/iwi/if_iwi.c optional iwi
iwibssfw.c optional iwibssfw | iwifw \
compile-with "${AWK} -f $S/tools/fw_stub.awk iwi_bss.fw:iwi_bss:300 -lintel_iwi -miwi_bss -c${.TARGET}" \
no-implicit-rule before-depend local \
clean "iwibssfw.c"
iwi_bss.fwo optional iwibssfw | iwifw \
dependency "iwi_bss.fw" \
compile-with "${NORMAL_FWO}" \
no-implicit-rule \
clean "iwi_bss.fwo"
iwi_bss.fw optional iwibssfw | iwifw \
dependency "$S/contrib/dev/iwi/ipw2200-bss.fw.uu" \
compile-with "${NORMAL_FW}" \
no-obj no-implicit-rule \
clean "iwi_bss.fw"
iwiibssfw.c optional iwiibssfw | iwifw \
compile-with "${AWK} -f $S/tools/fw_stub.awk iwi_ibss.fw:iwi_ibss:300 -lintel_iwi -miwi_ibss -c${.TARGET}" \
no-implicit-rule before-depend local \
clean "iwiibssfw.c"
iwi_ibss.fwo optional iwiibssfw | iwifw \
dependency "iwi_ibss.fw" \
compile-with "${NORMAL_FWO}" \
no-implicit-rule \
clean "iwi_ibss.fwo"
iwi_ibss.fw optional iwiibssfw | iwifw \
dependency "$S/contrib/dev/iwi/ipw2200-ibss.fw.uu" \
compile-with "${NORMAL_FW}" \
no-obj no-implicit-rule \
clean "iwi_ibss.fw"
iwimonitorfw.c optional iwimonitorfw | iwifw \
compile-with "${AWK} -f $S/tools/fw_stub.awk iwi_monitor.fw:iwi_monitor:300 -lintel_iwi -miwi_monitor -c${.TARGET}" \
no-implicit-rule before-depend local \
clean "iwimonitorfw.c"
iwi_monitor.fwo optional iwimonitorfw | iwifw \
dependency "iwi_monitor.fw" \
compile-with "${NORMAL_FWO}" \
no-implicit-rule \
clean "iwi_monitor.fwo"
iwi_monitor.fw optional iwimonitorfw | iwifw \
dependency "$S/contrib/dev/iwi/ipw2200-sniffer.fw.uu" \
compile-with "${NORMAL_FW}" \
no-obj no-implicit-rule \
clean "iwi_monitor.fw"
dev/iwm/if_iwm.c optional iwm
dev/iwm/if_iwm_binding.c optional iwm
dev/iwm/if_iwm_mac_ctxt.c optional iwm
dev/iwm/if_iwm_pcie_trans.c optional iwm
dev/iwm/if_iwm_phy_ctxt.c optional iwm
dev/iwm/if_iwm_phy_db.c optional iwm
dev/iwm/if_iwm_power.c optional iwm
dev/iwm/if_iwm_scan.c optional iwm
dev/iwm/if_iwm_time_event.c optional iwm
dev/iwm/if_iwm_util.c optional iwm
iwm3160fw.c optional iwm3160fw | iwmfw \
compile-with "${AWK} -f $S/tools/fw_stub.awk iwm3160.fw:iwm3160fw -miwm3160fw -c${.TARGET}" \
no-implicit-rule before-depend local \
clean "iwm3160fw.c"
iwm3160fw.fwo optional iwm3160fw | iwmfw \
dependency "iwm3160.fw" \
compile-with "${NORMAL_FWO}" \
no-implicit-rule \
clean "iwm3160fw.fwo"
iwm3160.fw optional iwm3160fw | iwmfw \
dependency "$S/contrib/dev/iwm/iwm-3160-9.fw.uu" \
compile-with "${NORMAL_FW}" \
no-obj no-implicit-rule \
clean "iwm3160.fw"
iwm7260fw.c optional iwm7260fw | iwmfw \
compile-with "${AWK} -f $S/tools/fw_stub.awk iwm7260.fw:iwm7260fw -miwm7260fw -c${.TARGET}" \
no-implicit-rule before-depend local \
clean "iwm7260fw.c"
iwm7260fw.fwo optional iwm7260fw | iwmfw \
dependency "iwm7260.fw" \
compile-with "${NORMAL_FWO}" \
no-implicit-rule \
clean "iwm7260fw.fwo"
iwm7260.fw optional iwm7260fw | iwmfw \
dependency "$S/contrib/dev/iwm/iwm-7260-9.fw.uu" \
compile-with "${NORMAL_FW}" \
no-obj no-implicit-rule \
clean "iwm7260.fw"
iwm7265fw.c optional iwm7265fw | iwmfw \
compile-with "${AWK} -f $S/tools/fw_stub.awk iwm7265.fw:iwm7265fw -miwm7265fw -c${.TARGET}" \
no-implicit-rule before-depend local \
clean "iwm7265fw.c"
iwm7265fw.fwo optional iwm7265fw | iwmfw \
dependency "iwm7265.fw" \
compile-with "${NORMAL_FWO}" \
no-implicit-rule \
clean "iwm7265fw.fwo"
iwm7265.fw optional iwm7265fw | iwmfw \
dependency "$S/contrib/dev/iwm/iwm-7265-9.fw.uu" \
compile-with "${NORMAL_FW}" \
no-obj no-implicit-rule \
clean "iwm7265.fw"
dev/iwn/if_iwn.c optional iwn
iwn1000fw.c optional iwn1000fw | iwnfw \
compile-with "${AWK} -f $S/tools/fw_stub.awk iwn1000.fw:iwn1000fw -miwn1000fw -c${.TARGET}" \
no-implicit-rule before-depend local \
clean "iwn1000fw.c"
iwn1000fw.fwo optional iwn1000fw | iwnfw \
dependency "iwn1000.fw" \
compile-with "${NORMAL_FWO}" \
no-implicit-rule \
clean "iwn1000fw.fwo"
iwn1000.fw optional iwn1000fw | iwnfw \
dependency "$S/contrib/dev/iwn/iwlwifi-1000-39.31.5.1.fw.uu" \
compile-with "${NORMAL_FW}" \
no-obj no-implicit-rule \
clean "iwn1000.fw"
iwn100fw.c optional iwn100fw | iwnfw \
compile-with "${AWK} -f $S/tools/fw_stub.awk iwn100.fw:iwn100fw -miwn100fw -c${.TARGET}" \
no-implicit-rule before-depend local \
clean "iwn100fw.c"
iwn100fw.fwo optional iwn100fw | iwnfw \
dependency "iwn100.fw" \
compile-with "${NORMAL_FWO}" \
no-implicit-rule \
clean "iwn100fw.fwo"
iwn100.fw optional iwn100fw | iwnfw \
dependency "$S/contrib/dev/iwn/iwlwifi-100-39.31.5.1.fw.uu" \
compile-with "${NORMAL_FW}" \
no-obj no-implicit-rule \
clean "iwn100.fw"
iwn105fw.c optional iwn105fw | iwnfw \
compile-with "${AWK} -f $S/tools/fw_stub.awk iwn105.fw:iwn105fw -miwn105fw -c${.TARGET}" \
no-implicit-rule before-depend local \
clean "iwn105fw.c"
iwn105fw.fwo optional iwn105fw | iwnfw \
dependency "iwn105.fw" \
compile-with "${NORMAL_FWO}" \
no-implicit-rule \
clean "iwn105fw.fwo"
iwn105.fw optional iwn105fw | iwnfw \
dependency "$S/contrib/dev/iwn/iwlwifi-105-6-18.168.6.1.fw.uu" \
compile-with "${NORMAL_FW}" \
no-obj no-implicit-rule \
clean "iwn105.fw"
iwn135fw.c optional iwn135fw | iwnfw \
compile-with "${AWK} -f $S/tools/fw_stub.awk iwn135.fw:iwn135fw -miwn135fw -c${.TARGET}" \
no-implicit-rule before-depend local \
clean "iwn135fw.c"
iwn135fw.fwo optional iwn135fw | iwnfw \
dependency "iwn135.fw" \
compile-with "${NORMAL_FWO}" \
no-implicit-rule \
clean "iwn135fw.fwo"
iwn135.fw optional iwn135fw | iwnfw \
dependency "$S/contrib/dev/iwn/iwlwifi-135-6-18.168.6.1.fw.uu" \
compile-with "${NORMAL_FW}" \
no-obj no-implicit-rule \
clean "iwn135.fw"
iwn2000fw.c optional iwn2000fw | iwnfw \
compile-with "${AWK} -f $S/tools/fw_stub.awk iwn2000.fw:iwn2000fw -miwn2000fw -c${.TARGET}" \
no-implicit-rule before-depend local \
clean "iwn2000fw.c"
iwn2000fw.fwo optional iwn2000fw | iwnfw \
dependency "iwn2000.fw" \
compile-with "${NORMAL_FWO}" \
no-implicit-rule \
clean "iwn2000fw.fwo"
iwn2000.fw optional iwn2000fw | iwnfw \
dependency "$S/contrib/dev/iwn/iwlwifi-2000-18.168.6.1.fw.uu" \
compile-with "${NORMAL_FW}" \
no-obj no-implicit-rule \
clean "iwn2000.fw"
iwn2030fw.c optional iwn2030fw | iwnfw \
compile-with "${AWK} -f $S/tools/fw_stub.awk iwn2030.fw:iwn2030fw -miwn2030fw -c${.TARGET}" \
no-implicit-rule before-depend local \
clean "iwn2030fw.c"
iwn2030fw.fwo optional iwn2030fw | iwnfw \
dependency "iwn2030.fw" \
compile-with "${NORMAL_FWO}" \
no-implicit-rule \
clean "iwn2030fw.fwo"
iwn2030.fw optional iwn2030fw | iwnfw \
dependency "$S/contrib/dev/iwn/iwnwifi-2030-18.168.6.1.fw.uu" \
compile-with "${NORMAL_FW}" \
no-obj no-implicit-rule \
clean "iwn2030.fw"
iwn4965fw.c optional iwn4965fw | iwnfw \
compile-with "${AWK} -f $S/tools/fw_stub.awk iwn4965.fw:iwn4965fw -miwn4965fw -c${.TARGET}" \
no-implicit-rule before-depend local \
clean "iwn4965fw.c"
iwn4965fw.fwo optional iwn4965fw | iwnfw \
dependency "iwn4965.fw" \
compile-with "${NORMAL_FWO}" \
no-implicit-rule \
clean "iwn4965fw.fwo"
iwn4965.fw optional iwn4965fw | iwnfw \
dependency "$S/contrib/dev/iwn/iwlwifi-4965-228.61.2.24.fw.uu" \
compile-with "${NORMAL_FW}" \
no-obj no-implicit-rule \
clean "iwn4965.fw"
iwn5000fw.c optional iwn5000fw | iwnfw \
compile-with "${AWK} -f $S/tools/fw_stub.awk iwn5000.fw:iwn5000fw -miwn5000fw -c${.TARGET}" \
no-implicit-rule before-depend local \
clean "iwn5000fw.c"
iwn5000fw.fwo optional iwn5000fw | iwnfw \
dependency "iwn5000.fw" \
compile-with "${NORMAL_FWO}" \
no-implicit-rule \
clean "iwn5000fw.fwo"
iwn5000.fw optional iwn5000fw | iwnfw \
dependency "$S/contrib/dev/iwn/iwlwifi-5000-8.83.5.1.fw.uu" \
compile-with "${NORMAL_FW}" \
no-obj no-implicit-rule \
clean "iwn5000.fw"
iwn5150fw.c optional iwn5150fw | iwnfw \
compile-with "${AWK} -f $S/tools/fw_stub.awk iwn5150.fw:iwn5150fw -miwn5150fw -c${.TARGET}" \
no-implicit-rule before-depend local \
clean "iwn5150fw.c"
iwn5150fw.fwo optional iwn5150fw | iwnfw \
dependency "iwn5150.fw" \
compile-with "${NORMAL_FWO}" \
no-implicit-rule \
clean "iwn5150fw.fwo"
iwn5150.fw optional iwn5150fw | iwnfw \
dependency "$S/contrib/dev/iwn/iwlwifi-5150-8.24.2.2.fw.uu"\
compile-with "${NORMAL_FW}" \
no-obj no-implicit-rule \
clean "iwn5150.fw"
iwn6000fw.c optional iwn6000fw | iwnfw \
compile-with "${AWK} -f $S/tools/fw_stub.awk iwn6000.fw:iwn6000fw -miwn6000fw -c${.TARGET}" \
no-implicit-rule before-depend local \
clean "iwn6000fw.c"
iwn6000fw.fwo optional iwn6000fw | iwnfw \
dependency "iwn6000.fw" \
compile-with "${NORMAL_FWO}" \
no-implicit-rule \
clean "iwn6000fw.fwo"
iwn6000.fw optional iwn6000fw | iwnfw \
dependency "$S/contrib/dev/iwn/iwlwifi-6000-9.221.4.1.fw.uu" \
compile-with "${NORMAL_FW}" \
no-obj no-implicit-rule \
clean "iwn6000.fw"
iwn6000g2afw.c optional iwn6000g2afw | iwnfw \
compile-with "${AWK} -f $S/tools/fw_stub.awk iwn6000g2a.fw:iwn6000g2afw -miwn6000g2afw -c${.TARGET}" \
no-implicit-rule before-depend local \
clean "iwn6000g2afw.c"
iwn6000g2afw.fwo optional iwn6000g2afw | iwnfw \
dependency "iwn6000g2a.fw" \
compile-with "${NORMAL_FWO}" \
no-implicit-rule \
clean "iwn6000g2afw.fwo"
iwn6000g2a.fw optional iwn6000g2afw | iwnfw \
dependency "$S/contrib/dev/iwn/iwlwifi-6000g2a-18.168.6.1.fw.uu" \
compile-with "${NORMAL_FW}" \
no-obj no-implicit-rule \
clean "iwn6000g2a.fw"
iwn6000g2bfw.c optional iwn6000g2bfw | iwnfw \
compile-with "${AWK} -f $S/tools/fw_stub.awk iwn6000g2b.fw:iwn6000g2bfw -miwn6000g2bfw -c${.TARGET}" \
no-implicit-rule before-depend local \
clean "iwn6000g2bfw.c"
iwn6000g2bfw.fwo optional iwn6000g2bfw | iwnfw \
dependency "iwn6000g2b.fw" \
compile-with "${NORMAL_FWO}" \
no-implicit-rule \
clean "iwn6000g2bfw.fwo"
iwn6000g2b.fw optional iwn6000g2bfw | iwnfw \
dependency "$S/contrib/dev/iwn/iwlwifi-6000g2b-18.168.6.1.fw.uu" \
compile-with "${NORMAL_FW}" \
no-obj no-implicit-rule \
clean "iwn6000g2b.fw"
iwn6050fw.c optional iwn6050fw | iwnfw \
compile-with "${AWK} -f $S/tools/fw_stub.awk iwn6050.fw:iwn6050fw -miwn6050fw -c${.TARGET}" \
no-implicit-rule before-depend local \
clean "iwn6050fw.c"
iwn6050fw.fwo optional iwn6050fw | iwnfw \
dependency "iwn6050.fw" \
compile-with "${NORMAL_FWO}" \
no-implicit-rule \
clean "iwn6050fw.fwo"
iwn6050.fw optional iwn6050fw | iwnfw \
dependency "$S/contrib/dev/iwn/iwlwifi-6050-41.28.5.1.fw.uu" \
compile-with "${NORMAL_FW}" \
no-obj no-implicit-rule \
clean "iwn6050.fw"
dev/ixgb/if_ixgb.c optional ixgb
dev/ixgb/ixgb_ee.c optional ixgb
dev/ixgb/ixgb_hw.c optional ixgb
dev/ixgbe/if_ix.c optional ix inet \
compile-with "${NORMAL_C} -I$S/dev/ixgbe -DSMP"
dev/ixgbe/if_ixv.c optional ixv inet \
compile-with "${NORMAL_C} -I$S/dev/ixgbe -DSMP"
dev/ixgbe/ix_txrx.c optional ix inet | ixv inet \
compile-with "${NORMAL_C} -I$S/dev/ixgbe"
dev/ixgbe/ixgbe_osdep.c optional ix inet | ixv inet \
compile-with "${NORMAL_C} -I$S/dev/ixgbe"
dev/ixgbe/ixgbe_phy.c optional ix inet | ixv inet \
compile-with "${NORMAL_C} -I$S/dev/ixgbe"
dev/ixgbe/ixgbe_api.c optional ix inet | ixv inet \
compile-with "${NORMAL_C} -I$S/dev/ixgbe"
dev/ixgbe/ixgbe_common.c optional ix inet | ixv inet \
compile-with "${NORMAL_C} -I$S/dev/ixgbe"
dev/ixgbe/ixgbe_mbx.c optional ix inet | ixv inet \
compile-with "${NORMAL_C} -I$S/dev/ixgbe"
dev/ixgbe/ixgbe_vf.c optional ix inet | ixv inet \
compile-with "${NORMAL_C} -I$S/dev/ixgbe"
dev/ixgbe/ixgbe_82598.c optional ix inet | ixv inet \
compile-with "${NORMAL_C} -I$S/dev/ixgbe"
dev/ixgbe/ixgbe_82599.c optional ix inet | ixv inet \
compile-with "${NORMAL_C} -I$S/dev/ixgbe"
dev/ixgbe/ixgbe_x540.c optional ix inet | ixv inet \
compile-with "${NORMAL_C} -I$S/dev/ixgbe"
dev/ixgbe/ixgbe_x550.c optional ix inet | ixv inet \
compile-with "${NORMAL_C} -I$S/dev/ixgbe"
dev/ixgbe/ixgbe_dcb.c optional ix inet | ixv inet \
compile-with "${NORMAL_C} -I$S/dev/ixgbe"
dev/ixgbe/ixgbe_dcb_82598.c optional ix inet | ixv inet \
compile-with "${NORMAL_C} -I$S/dev/ixgbe"
dev/ixgbe/ixgbe_dcb_82599.c optional ix inet | ixv inet \
compile-with "${NORMAL_C} -I$S/dev/ixgbe"
dev/jme/if_jme.c optional jme pci
dev/joy/joy.c optional joy
dev/joy/joy_isa.c optional joy isa
dev/kbd/kbd.c optional atkbd | pckbd | sc | ukbd | vt
dev/kbdmux/kbdmux.c optional kbdmux
dev/ksyms/ksyms.c optional ksyms
dev/le/am7990.c optional le
dev/le/am79900.c optional le
dev/le/if_le_pci.c optional le pci
dev/le/lance.c optional le
dev/led/led.c standard
dev/lge/if_lge.c optional lge
dev/lmc/if_lmc.c optional lmc
dev/malo/if_malo.c optional malo
dev/malo/if_malohal.c optional malo
dev/malo/if_malo_pci.c optional malo pci
dev/mc146818/mc146818.c optional mc146818
dev/mca/mca_bus.c optional mca
dev/mcd/mcd.c optional mcd isa nowerror
dev/mcd/mcd_isa.c optional mcd isa nowerror
dev/md/md.c optional md
dev/mdio/mdio_if.m optional miiproxy | mdio
dev/mdio/mdio.c optional miiproxy | mdio
dev/mem/memdev.c optional mem
dev/mem/memutil.c optional mem
dev/mfi/mfi.c optional mfi
dev/mfi/mfi_debug.c optional mfi
dev/mfi/mfi_pci.c optional mfi pci
dev/mfi/mfi_disk.c optional mfi
dev/mfi/mfi_syspd.c optional mfi
dev/mfi/mfi_tbolt.c optional mfi
dev/mfi/mfi_linux.c optional mfi compat_linux
dev/mfi/mfi_cam.c optional mfip scbus
dev/mii/acphy.c optional miibus | acphy
dev/mii/amphy.c optional miibus | amphy
dev/mii/atphy.c optional miibus | atphy
dev/mii/axphy.c optional miibus | axphy
dev/mii/bmtphy.c optional miibus | bmtphy
dev/mii/brgphy.c optional miibus | brgphy
dev/mii/ciphy.c optional miibus | ciphy
dev/mii/e1000phy.c optional miibus | e1000phy
dev/mii/gentbi.c optional miibus | gentbi
dev/mii/icsphy.c optional miibus | icsphy
dev/mii/ip1000phy.c optional miibus | ip1000phy
dev/mii/jmphy.c optional miibus | jmphy
dev/mii/lxtphy.c optional miibus | lxtphy
dev/mii/mii.c optional miibus | mii
dev/mii/mii_bitbang.c optional miibus | mii_bitbang
dev/mii/mii_physubr.c optional miibus | mii
dev/mii/miibus_if.m optional miibus | mii
dev/mii/mlphy.c optional miibus | mlphy
dev/mii/nsgphy.c optional miibus | nsgphy
dev/mii/nsphy.c optional miibus | nsphy
dev/mii/nsphyter.c optional miibus | nsphyter
dev/mii/pnaphy.c optional miibus | pnaphy
dev/mii/qsphy.c optional miibus | qsphy
dev/mii/rdcphy.c optional miibus | rdcphy
dev/mii/rgephy.c optional miibus | rgephy
dev/mii/rlphy.c optional miibus | rlphy
dev/mii/rlswitch.c optional rlswitch
dev/mii/smcphy.c optional miibus | smcphy
dev/mii/smscphy.c optional miibus | smscphy
dev/mii/tdkphy.c optional miibus | tdkphy
dev/mii/tlphy.c optional miibus | tlphy
dev/mii/truephy.c optional miibus | truephy
dev/mii/ukphy.c optional miibus | mii
dev/mii/ukphy_subr.c optional miibus | mii
dev/mii/xmphy.c optional miibus | xmphy
dev/mk48txx/mk48txx.c optional mk48txx
dev/mlx/mlx.c optional mlx
dev/mlx/mlx_disk.c optional mlx
dev/mlx/mlx_pci.c optional mlx pci
dev/mly/mly.c optional mly
dev/mmc/mmc.c optional mmc
dev/mmc/mmcbr_if.m standard
dev/mmc/mmcbus_if.m standard
dev/mmc/mmcsd.c optional mmcsd
dev/mn/if_mn.c optional mn pci
dev/mpr/mpr.c optional mpr
dev/mpr/mpr_config.c optional mpr
# XXX Work around clang warning, until maintainer approves fix.
dev/mpr/mpr_mapping.c optional mpr \
compile-with "${NORMAL_C} ${NO_WSOMETIMES_UNINITIALIZED}"
dev/mpr/mpr_pci.c optional mpr pci
dev/mpr/mpr_sas.c optional mpr \
compile-with "${NORMAL_C} ${NO_WUNNEEDED_INTERNAL_DECL}"
dev/mpr/mpr_sas_lsi.c optional mpr
dev/mpr/mpr_table.c optional mpr
dev/mpr/mpr_user.c optional mpr
dev/mps/mps.c optional mps
dev/mps/mps_config.c optional mps
# XXX Work around clang warning, until maintainer approves fix.
dev/mps/mps_mapping.c optional mps \
compile-with "${NORMAL_C} ${NO_WSOMETIMES_UNINITIALIZED}"
dev/mps/mps_pci.c optional mps pci
dev/mps/mps_sas.c optional mps \
compile-with "${NORMAL_C} ${NO_WUNNEEDED_INTERNAL_DECL}"
dev/mps/mps_sas_lsi.c optional mps
dev/mps/mps_table.c optional mps
dev/mps/mps_user.c optional mps
dev/mpt/mpt.c optional mpt
dev/mpt/mpt_cam.c optional mpt
dev/mpt/mpt_debug.c optional mpt
dev/mpt/mpt_pci.c optional mpt pci
dev/mpt/mpt_raid.c optional mpt
dev/mpt/mpt_user.c optional mpt
dev/mrsas/mrsas.c optional mrsas
dev/mrsas/mrsas_cam.c optional mrsas
dev/mrsas/mrsas_ioctl.c optional mrsas
dev/mrsas/mrsas_fp.c optional mrsas
dev/msk/if_msk.c optional msk
dev/mvs/mvs.c optional mvs
dev/mvs/mvs_if.m optional mvs
dev/mvs/mvs_pci.c optional mvs pci
dev/mwl/if_mwl.c optional mwl
dev/mwl/if_mwl_pci.c optional mwl pci
dev/mwl/mwlhal.c optional mwl
mwlfw.c optional mwlfw \
compile-with "${AWK} -f $S/tools/fw_stub.awk mw88W8363.fw:mw88W8363fw mwlboot.fw:mwlboot -mmwl -c${.TARGET}" \
no-implicit-rule before-depend local \
clean "mwlfw.c"
mw88W8363.fwo optional mwlfw \
dependency "mw88W8363.fw" \
compile-with "${NORMAL_FWO}" \
no-implicit-rule \
clean "mw88W8363.fwo"
mw88W8363.fw optional mwlfw \
dependency "$S/contrib/dev/mwl/mw88W8363.fw.uu" \
compile-with "${NORMAL_FW}" \
no-obj no-implicit-rule \
clean "mw88W8363.fw"
mwlboot.fwo optional mwlfw \
dependency "mwlboot.fw" \
compile-with "${NORMAL_FWO}" \
no-implicit-rule \
clean "mwlboot.fwo"
mwlboot.fw optional mwlfw \
dependency "$S/contrib/dev/mwl/mwlboot.fw.uu" \
compile-with "${NORMAL_FW}" \
no-obj no-implicit-rule \
clean "mwlboot.fw"
dev/mxge/if_mxge.c optional mxge pci
dev/mxge/mxge_eth_z8e.c optional mxge pci
dev/mxge/mxge_ethp_z8e.c optional mxge pci
dev/mxge/mxge_rss_eth_z8e.c optional mxge pci
dev/mxge/mxge_rss_ethp_z8e.c optional mxge pci
dev/my/if_my.c optional my
dev/nand/nand.c optional nand
dev/nand/nand_bbt.c optional nand
dev/nand/nand_cdev.c optional nand
dev/nand/nand_generic.c optional nand
dev/nand/nand_geom.c optional nand
dev/nand/nand_id.c optional nand
dev/nand/nandbus.c optional nand
dev/nand/nandbus_if.m optional nand
dev/nand/nand_if.m optional nand
dev/nand/nandsim.c optional nandsim nand
dev/nand/nandsim_chip.c optional nandsim nand
dev/nand/nandsim_ctrl.c optional nandsim nand
dev/nand/nandsim_log.c optional nandsim nand
dev/nand/nandsim_swap.c optional nandsim nand
dev/nand/nfc_if.m optional nand
dev/ncr/ncr.c optional ncr pci
dev/ncv/ncr53c500.c optional ncv
dev/ncv/ncr53c500_pccard.c optional ncv pccard
dev/netmap/netmap.c optional netmap
dev/netmap/netmap_freebsd.c optional netmap
dev/netmap/netmap_generic.c optional netmap
dev/netmap/netmap_mbq.c optional netmap
dev/netmap/netmap_mem2.c optional netmap
dev/netmap/netmap_monitor.c optional netmap
dev/netmap/netmap_offloadings.c optional netmap
dev/netmap/netmap_pipe.c optional netmap
dev/netmap/netmap_vale.c optional netmap
# compile-with "${NORMAL_C} -Wconversion -Wextra"
dev/nfsmb/nfsmb.c optional nfsmb pci
dev/nge/if_nge.c optional nge
dev/nxge/if_nxge.c optional nxge \
compile-with "${NORMAL_C} ${NO_WSELF_ASSIGN}"
dev/nxge/xgehal/xgehal-device.c optional nxge \
compile-with "${NORMAL_C} ${NO_WSELF_ASSIGN}"
dev/nxge/xgehal/xgehal-mm.c optional nxge
dev/nxge/xgehal/xge-queue.c optional nxge
dev/nxge/xgehal/xgehal-driver.c optional nxge \
compile-with "${NORMAL_C} ${NO_WSELF_ASSIGN}"
dev/nxge/xgehal/xgehal-ring.c optional nxge \
compile-with "${NORMAL_C} ${NO_WSELF_ASSIGN}"
dev/nxge/xgehal/xgehal-channel.c optional nxge \
compile-with "${NORMAL_C} ${NO_WSELF_ASSIGN}"
dev/nxge/xgehal/xgehal-fifo.c optional nxge \
compile-with "${NORMAL_C} ${NO_WSELF_ASSIGN}"
dev/nxge/xgehal/xgehal-stats.c optional nxge \
compile-with "${NORMAL_C} ${NO_WSELF_ASSIGN}"
dev/nxge/xgehal/xgehal-config.c optional nxge
dev/nxge/xgehal/xgehal-mgmt.c optional nxge \
compile-with "${NORMAL_C} ${NO_WSELF_ASSIGN}"
dev/nmdm/nmdm.c optional nmdm
dev/nsp/nsp.c optional nsp
dev/nsp/nsp_pccard.c optional nsp pccard
dev/null/null.c standard
dev/oce/oce_hw.c optional oce pci
dev/oce/oce_if.c optional oce pci
dev/oce/oce_mbox.c optional oce pci
dev/oce/oce_queue.c optional oce pci
dev/oce/oce_sysctl.c optional oce pci
dev/oce/oce_util.c optional oce pci
dev/ofw/ofw_bus_if.m optional fdt
dev/ofw/ofw_bus_subr.c optional fdt
dev/ofw/ofw_fdt.c optional fdt
dev/ofw/ofw_if.m optional fdt
dev/ofw/ofw_iicbus.c optional fdt iicbus
dev/ofw/ofw_subr.c optional fdt
dev/ofw/ofwbus.c optional fdt
dev/ofw/openfirm.c optional fdt
dev/ofw/openfirmio.c optional fdt
dev/ow/ow.c optional ow \
dependency "owll_if.h" \
dependency "own_if.h"
dev/ow/owll_if.m optional ow
dev/ow/own_if.m optional ow
dev/ow/ow_temp.c optional ow_temp
dev/ow/owc_gpiobus.c optional owc gpio
dev/patm/if_patm.c optional patm pci
dev/patm/if_patm_attach.c optional patm pci
dev/patm/if_patm_intr.c optional patm pci
dev/patm/if_patm_ioctl.c optional patm pci
dev/patm/if_patm_rtables.c optional patm pci
dev/patm/if_patm_rx.c optional patm pci
dev/patm/if_patm_tx.c optional patm pci
dev/pbio/pbio.c optional pbio isa
dev/pccard/card_if.m standard
dev/pccard/pccard.c optional pccard
dev/pccard/pccard_cis.c optional pccard
dev/pccard/pccard_cis_quirks.c optional pccard
dev/pccard/pccard_device.c optional pccard
dev/pccard/power_if.m standard
dev/pccbb/pccbb.c optional cbb
dev/pccbb/pccbb_isa.c optional cbb isa
dev/pccbb/pccbb_pci.c optional cbb pci
dev/pcf/pcf.c optional pcf
dev/pci/eisa_pci.c optional pci eisa
dev/pci/fixup_pci.c optional pci
dev/pci/hostb_pci.c optional pci
dev/pci/ignore_pci.c optional pci
dev/pci/isa_pci.c optional pci isa
dev/pci/pci.c optional pci
dev/pci/pci_if.m standard
dev/pci/pci_iov.c optional pci pci_iov
dev/pci/pci_iov_if.m standard
dev/pci/pci_iov_schema.c optional pci pci_iov
dev/pci/pci_pci.c optional pci
dev/pci/pci_subr.c optional pci
dev/pci/pci_user.c optional pci
dev/pci/pcib_if.m standard
dev/pci/pcib_support.c standard
dev/pci/vga_pci.c optional pci
dev/pcn/if_pcn.c optional pcn pci
dev/pdq/if_fea.c optional fea eisa
dev/pdq/if_fpa.c optional fpa pci
dev/pdq/pdq.c optional nowerror fea eisa | fpa pci
dev/pdq/pdq_ifsubr.c optional nowerror fea eisa | fpa pci
dev/pms/freebsd/driver/ini/src/agtiapi.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/sallsdk/spc/sadisc.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/sallsdk/spc/mpi.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/sallsdk/spc/saframe.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/sallsdk/spc/sahw.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/sallsdk/spc/sainit.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/sallsdk/spc/saint.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/sallsdk/spc/sampicmd.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/sallsdk/spc/sampirsp.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/sallsdk/spc/saphy.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/sallsdk/spc/saport.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/sallsdk/spc/sasata.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/sallsdk/spc/sasmp.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/sallsdk/spc/sassp.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/sallsdk/spc/satimer.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/sallsdk/spc/sautil.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/sallsdk/spc/saioctlcmd.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/sallsdk/spc/mpidebug.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/discovery/dm/dminit.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/discovery/dm/dmsmp.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/discovery/dm/dmdisc.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/discovery/dm/dmport.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/discovery/dm/dmtimer.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/discovery/dm/dmmisc.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/sat/src/sminit.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/sat/src/smmisc.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/sat/src/smsat.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/sat/src/smsatcb.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/sat/src/smsathw.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/sat/src/smtimer.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/tisa/sassata/common/tdinit.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/tisa/sassata/common/tdmisc.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/tisa/sassata/common/tdesgl.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/tisa/sassata/common/tdport.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/tisa/sassata/common/tdint.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/tisa/sassata/common/tdioctl.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/tisa/sassata/common/tdhw.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/tisa/sassata/common/ossacmnapi.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/tisa/sassata/common/tddmcmnapi.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/tisa/sassata/common/tdsmcmnapi.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/tisa/sassata/common/tdtimers.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/tisa/sassata/sas/ini/itdio.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/tisa/sassata/sas/ini/itdcb.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/tisa/sassata/sas/ini/itdinit.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/tisa/sassata/sas/ini/itddisc.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/tisa/sassata/sata/host/sat.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/tisa/sassata/sata/host/ossasat.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/pms/RefTisa/tisa/sassata/sata/host/sathw.c optional pmspcv \
compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w"
dev/ppbus/if_plip.c optional plip
dev/ppbus/immio.c optional vpo
dev/ppbus/lpbb.c optional lpbb
dev/ppbus/lpt.c optional lpt
dev/ppbus/pcfclock.c optional pcfclock
dev/ppbus/ppb_1284.c optional ppbus
dev/ppbus/ppb_base.c optional ppbus
dev/ppbus/ppb_msq.c optional ppbus
dev/ppbus/ppbconf.c optional ppbus
dev/ppbus/ppbus_if.m optional ppbus
dev/ppbus/ppi.c optional ppi
dev/ppbus/pps.c optional pps
dev/ppbus/vpo.c optional vpo
dev/ppbus/vpoio.c optional vpo
dev/ppc/ppc.c optional ppc
dev/ppc/ppc_acpi.c optional ppc acpi
dev/ppc/ppc_isa.c optional ppc isa
dev/ppc/ppc_pci.c optional ppc pci
dev/ppc/ppc_puc.c optional ppc puc
dev/proto/proto_bus_isa.c optional proto acpi | proto isa
dev/proto/proto_bus_pci.c optional proto pci
dev/proto/proto_busdma.c optional proto
dev/proto/proto_core.c optional proto
dev/pst/pst-iop.c optional pst
dev/pst/pst-pci.c optional pst pci
dev/pst/pst-raid.c optional pst
dev/pty/pty.c optional pty
dev/puc/puc.c optional puc
dev/puc/puc_cfg.c optional puc
dev/puc/puc_pccard.c optional puc pccard
dev/puc/puc_pci.c optional puc pci
dev/puc/pucdata.c optional puc pci
dev/quicc/quicc_core.c optional quicc
dev/ral/rt2560.c optional ral
dev/ral/rt2661.c optional ral
dev/ral/rt2860.c optional ral
dev/ral/if_ral_pci.c optional ral pci
rt2561fw.c optional rt2561fw | ralfw \
compile-with "${AWK} -f $S/tools/fw_stub.awk rt2561.fw:rt2561fw -mrt2561 -c${.TARGET}" \
no-implicit-rule before-depend local \
clean "rt2561fw.c"
rt2561fw.fwo optional rt2561fw | ralfw \
dependency "rt2561.fw" \
compile-with "${NORMAL_FWO}" \
no-implicit-rule \
clean "rt2561fw.fwo"
rt2561.fw optional rt2561fw | ralfw \
dependency "$S/contrib/dev/ral/rt2561.fw.uu" \
compile-with "${NORMAL_FW}" \
no-obj no-implicit-rule \
clean "rt2561.fw"
rt2561sfw.c optional rt2561sfw | ralfw \
compile-with "${AWK} -f $S/tools/fw_stub.awk rt2561s.fw:rt2561sfw -mrt2561s -c${.TARGET}" \
no-implicit-rule before-depend local \
clean "rt2561sfw.c"
rt2561sfw.fwo optional rt2561sfw | ralfw \
dependency "rt2561s.fw" \
compile-with "${NORMAL_FWO}" \
no-implicit-rule \
clean "rt2561sfw.fwo"
rt2561s.fw optional rt2561sfw | ralfw \
dependency "$S/contrib/dev/ral/rt2561s.fw.uu" \
compile-with "${NORMAL_FW}" \
no-obj no-implicit-rule \
clean "rt2561s.fw"
rt2661fw.c optional rt2661fw | ralfw \
compile-with "${AWK} -f $S/tools/fw_stub.awk rt2661.fw:rt2661fw -mrt2661 -c${.TARGET}" \
no-implicit-rule before-depend local \
clean "rt2661fw.c"
rt2661fw.fwo optional rt2661fw | ralfw \
dependency "rt2661.fw" \
compile-with "${NORMAL_FWO}" \
no-implicit-rule \
clean "rt2661fw.fwo"
rt2661.fw optional rt2661fw | ralfw \
dependency "$S/contrib/dev/ral/rt2661.fw.uu" \
compile-with "${NORMAL_FW}" \
no-obj no-implicit-rule \
clean "rt2661.fw"
rt2860fw.c optional rt2860fw | ralfw \
compile-with "${AWK} -f $S/tools/fw_stub.awk rt2860.fw:rt2860fw -mrt2860 -c${.TARGET}" \
no-implicit-rule before-depend local \
clean "rt2860fw.c"
rt2860fw.fwo optional rt2860fw | ralfw \
dependency "rt2860.fw" \
compile-with "${NORMAL_FWO}" \
no-implicit-rule \
clean "rt2860fw.fwo"
rt2860.fw optional rt2860fw | ralfw \
dependency "$S/contrib/dev/ral/rt2860.fw.uu" \
compile-with "${NORMAL_FW}" \
no-obj no-implicit-rule \
clean "rt2860.fw"
dev/random/random_infra.c optional random
dev/random/random_harvestq.c optional random
dev/random/randomdev.c optional random random_yarrow | \
random !random_yarrow !random_loadable
dev/random/yarrow.c optional random random_yarrow
dev/random/fortuna.c optional random !random_yarrow !random_loadable
dev/random/hash.c optional random random_yarrow | \
random !random_yarrow !random_loadable
dev/rc/rc.c optional rc
dev/rccgpio/rccgpio.c optional rccgpio gpio
dev/re/if_re.c optional re
dev/rl/if_rl.c optional rl pci
dev/rndtest/rndtest.c optional rndtest
dev/rp/rp.c optional rp
dev/rp/rp_isa.c optional rp isa
dev/rp/rp_pci.c optional rp pci
dev/safe/safe.c optional safe
dev/scc/scc_if.m optional scc
dev/scc/scc_bfe_ebus.c optional scc ebus
dev/scc/scc_bfe_quicc.c optional scc quicc
dev/scc/scc_bfe_sbus.c optional scc fhc | scc sbus
dev/scc/scc_core.c optional scc
dev/scc/scc_dev_quicc.c optional scc quicc
dev/scc/scc_dev_sab82532.c optional scc
dev/scc/scc_dev_z8530.c optional scc
dev/scd/scd.c optional scd isa
dev/scd/scd_isa.c optional scd isa
dev/sdhci/sdhci.c optional sdhci
dev/sdhci/sdhci_if.m optional sdhci
dev/sdhci/sdhci_pci.c optional sdhci pci
dev/sf/if_sf.c optional sf pci
dev/sge/if_sge.c optional sge pci
dev/si/si.c optional si
dev/si/si2_z280.c optional si
dev/si/si3_t225.c optional si
dev/si/si_eisa.c optional si eisa
dev/si/si_isa.c optional si isa
dev/si/si_pci.c optional si pci
dev/siba/siba_bwn.c optional siba_bwn pci
dev/siba/siba_cc.c optional siba_s5 !bhnd !bhndbus
dev/siba/siba_core.c optional siba_s5 | siba_bwn pci
dev/siba/siba_mips.c optional siba_s5 !bhnd !bhndbus
dev/siba/siba_pcib.c optional siba_s5 pci !bhnd !bhndbus
dev/siis/siis.c optional siis pci
dev/sis/if_sis.c optional sis pci
dev/sk/if_sk.c optional sk pci
dev/smbus/smb.c optional smb
dev/smbus/smbconf.c optional smbus
dev/smbus/smbus.c optional smbus
dev/smbus/smbus_if.m optional smbus
dev/smc/if_smc.c optional smc
dev/smc/if_smc_fdt.c optional smc fdt
dev/sn/if_sn.c optional sn
dev/sn/if_sn_isa.c optional sn isa
dev/sn/if_sn_pccard.c optional sn pccard
dev/snp/snp.c optional snp
dev/sound/clone.c optional sound
dev/sound/unit.c optional sound
dev/sound/isa/ad1816.c optional snd_ad1816 isa
dev/sound/isa/ess.c optional snd_ess isa
dev/sound/isa/gusc.c optional snd_gusc isa
dev/sound/isa/mss.c optional snd_mss isa
dev/sound/isa/sb16.c optional snd_sb16 isa
dev/sound/isa/sb8.c optional snd_sb8 isa
dev/sound/isa/sbc.c optional snd_sbc isa
dev/sound/isa/sndbuf_dma.c optional sound isa
dev/sound/pci/als4000.c optional snd_als4000 pci
dev/sound/pci/atiixp.c optional snd_atiixp pci
dev/sound/pci/cmi.c optional snd_cmi pci
dev/sound/pci/cs4281.c optional snd_cs4281 pci
dev/sound/pci/csa.c optional snd_csa pci
dev/sound/pci/csapcm.c optional snd_csa pci
dev/sound/pci/ds1.c optional snd_ds1 pci
dev/sound/pci/emu10k1.c optional snd_emu10k1 pci
dev/sound/pci/emu10kx.c optional snd_emu10kx pci
dev/sound/pci/emu10kx-pcm.c optional snd_emu10kx pci
dev/sound/pci/emu10kx-midi.c optional snd_emu10kx pci
dev/sound/pci/envy24.c optional snd_envy24 pci
dev/sound/pci/envy24ht.c optional snd_envy24ht pci
dev/sound/pci/es137x.c optional snd_es137x pci
dev/sound/pci/fm801.c optional snd_fm801 pci
dev/sound/pci/ich.c optional snd_ich pci
dev/sound/pci/maestro.c optional snd_maestro pci
dev/sound/pci/maestro3.c optional snd_maestro3 pci
dev/sound/pci/neomagic.c optional snd_neomagic pci
dev/sound/pci/solo.c optional snd_solo pci
dev/sound/pci/spicds.c optional snd_spicds pci
dev/sound/pci/t4dwave.c optional snd_t4dwave pci
dev/sound/pci/via8233.c optional snd_via8233 pci
dev/sound/pci/via82c686.c optional snd_via82c686 pci
dev/sound/pci/vibes.c optional snd_vibes pci
dev/sound/pci/hda/hdaa.c optional snd_hda pci
dev/sound/pci/hda/hdaa_patches.c optional snd_hda pci
dev/sound/pci/hda/hdac.c optional snd_hda pci
dev/sound/pci/hda/hdac_if.m optional snd_hda pci
dev/sound/pci/hda/hdacc.c optional snd_hda pci
dev/sound/pci/hdspe.c optional snd_hdspe pci
dev/sound/pci/hdspe-pcm.c optional snd_hdspe pci
dev/sound/pcm/ac97.c optional sound
dev/sound/pcm/ac97_if.m optional sound
dev/sound/pcm/ac97_patch.c optional sound
dev/sound/pcm/buffer.c optional sound \
dependency "snd_fxdiv_gen.h"
dev/sound/pcm/channel.c optional sound
dev/sound/pcm/channel_if.m optional sound
dev/sound/pcm/dsp.c optional sound
dev/sound/pcm/feeder.c optional sound
dev/sound/pcm/feeder_chain.c optional sound
dev/sound/pcm/feeder_eq.c optional sound \
dependency "feeder_eq_gen.h" \
dependency "snd_fxdiv_gen.h"
dev/sound/pcm/feeder_if.m optional sound
dev/sound/pcm/feeder_format.c optional sound \
dependency "snd_fxdiv_gen.h"
dev/sound/pcm/feeder_matrix.c optional sound \
dependency "snd_fxdiv_gen.h"
dev/sound/pcm/feeder_mixer.c optional sound \
dependency "snd_fxdiv_gen.h"
dev/sound/pcm/feeder_rate.c optional sound \
dependency "feeder_rate_gen.h" \
dependency "snd_fxdiv_gen.h"
dev/sound/pcm/feeder_volume.c optional sound \
dependency "snd_fxdiv_gen.h"
dev/sound/pcm/mixer.c optional sound
dev/sound/pcm/mixer_if.m optional sound
dev/sound/pcm/sndstat.c optional sound
dev/sound/pcm/sound.c optional sound
dev/sound/pcm/vchan.c optional sound
dev/sound/usb/uaudio.c optional snd_uaudio usb
dev/sound/usb/uaudio_pcm.c optional snd_uaudio usb
dev/sound/midi/midi.c optional sound
dev/sound/midi/mpu401.c optional sound
dev/sound/midi/mpu_if.m optional sound
dev/sound/midi/mpufoi_if.m optional sound
dev/sound/midi/sequencer.c optional sound
dev/sound/midi/synth_if.m optional sound
dev/spibus/ofw_spibus.c optional fdt spibus
dev/spibus/spibus.c optional spibus \
dependency "spibus_if.h"
dev/spibus/spibus_if.m optional spibus
dev/ste/if_ste.c optional ste pci
dev/stg/tmc18c30.c optional stg
dev/stg/tmc18c30_isa.c optional stg isa
dev/stg/tmc18c30_pccard.c optional stg pccard
dev/stg/tmc18c30_pci.c optional stg pci
dev/stg/tmc18c30_subr.c optional stg
dev/stge/if_stge.c optional stge
dev/streams/streams.c optional streams
dev/sym/sym_hipd.c optional sym \
dependency "$S/dev/sym/sym_{conf,defs}.h"
dev/syscons/blank/blank_saver.c optional blank_saver
dev/syscons/daemon/daemon_saver.c optional daemon_saver
dev/syscons/dragon/dragon_saver.c optional dragon_saver
dev/syscons/fade/fade_saver.c optional fade_saver
dev/syscons/fire/fire_saver.c optional fire_saver
dev/syscons/green/green_saver.c optional green_saver
dev/syscons/logo/logo.c optional logo_saver
dev/syscons/logo/logo_saver.c optional logo_saver
dev/syscons/rain/rain_saver.c optional rain_saver
dev/syscons/schistory.c optional sc
dev/syscons/scmouse.c optional sc
dev/syscons/scterm.c optional sc
dev/syscons/scvidctl.c optional sc
dev/syscons/snake/snake_saver.c optional snake_saver
dev/syscons/star/star_saver.c optional star_saver
dev/syscons/syscons.c optional sc
dev/syscons/sysmouse.c optional sc
dev/syscons/warp/warp_saver.c optional warp_saver
dev/tdfx/tdfx_linux.c optional tdfx_linux tdfx compat_linux
dev/tdfx/tdfx_pci.c optional tdfx pci
dev/ti/if_ti.c optional ti pci
dev/tl/if_tl.c optional tl pci
dev/trm/trm.c optional trm
dev/twa/tw_cl_init.c optional twa \
compile-with "${NORMAL_C} -I$S/dev/twa"
dev/twa/tw_cl_intr.c optional twa \
compile-with "${NORMAL_C} -I$S/dev/twa"
dev/twa/tw_cl_io.c optional twa \
compile-with "${NORMAL_C} -I$S/dev/twa"
dev/twa/tw_cl_misc.c optional twa \
compile-with "${NORMAL_C} -I$S/dev/twa"
dev/twa/tw_osl_cam.c optional twa \
compile-with "${NORMAL_C} -I$S/dev/twa"
dev/twa/tw_osl_freebsd.c optional twa \
compile-with "${NORMAL_C} -I$S/dev/twa"
dev/twe/twe.c optional twe
dev/twe/twe_freebsd.c optional twe
dev/tws/tws.c optional tws
dev/tws/tws_cam.c optional tws
dev/tws/tws_hdm.c optional tws
dev/tws/tws_services.c optional tws
dev/tws/tws_user.c optional tws
dev/tx/if_tx.c optional tx
dev/txp/if_txp.c optional txp
dev/uart/uart_bus_acpi.c optional uart acpi
dev/uart/uart_bus_ebus.c optional uart ebus
dev/uart/uart_bus_fdt.c optional uart fdt
dev/uart/uart_bus_isa.c optional uart isa
dev/uart/uart_bus_pccard.c optional uart pccard
dev/uart/uart_bus_pci.c optional uart pci
dev/uart/uart_bus_puc.c optional uart puc
dev/uart/uart_bus_scc.c optional uart scc
dev/uart/uart_core.c optional uart
dev/uart/uart_dbg.c optional uart gdb
dev/uart/uart_dev_ns8250.c optional uart uart_ns8250 | uart uart_snps
dev/uart/uart_dev_pl011.c optional uart pl011
dev/uart/uart_dev_quicc.c optional uart quicc
dev/uart/uart_dev_sab82532.c optional uart uart_sab82532
dev/uart/uart_dev_sab82532.c optional uart scc
dev/uart/uart_dev_snps.c optional uart uart_snps
dev/uart/uart_dev_z8530.c optional uart uart_z8530
dev/uart/uart_dev_z8530.c optional uart scc
dev/uart/uart_if.m optional uart
dev/uart/uart_subr.c optional uart
dev/uart/uart_tty.c optional uart
dev/ubsec/ubsec.c optional ubsec
#
# USB controller drivers
#
dev/usb/controller/at91dci.c optional at91dci
dev/usb/controller/at91dci_atmelarm.c optional at91dci at91rm9200
dev/usb/controller/musb_otg.c optional musb
dev/usb/controller/musb_otg_atmelarm.c optional musb at91rm9200
dev/usb/controller/dwc_otg.c optional dwcotg
dev/usb/controller/dwc_otg_fdt.c optional dwcotg fdt
dev/usb/controller/ehci.c optional ehci
dev/usb/controller/ehci_pci.c optional ehci pci
dev/usb/controller/ohci.c optional ohci
dev/usb/controller/ohci_pci.c optional ohci pci
dev/usb/controller/uhci.c optional uhci
dev/usb/controller/uhci_pci.c optional uhci pci
dev/usb/controller/xhci.c optional xhci
dev/usb/controller/xhci_pci.c optional xhci pci
dev/usb/controller/saf1761_otg.c optional saf1761otg
dev/usb/controller/saf1761_otg_fdt.c optional saf1761otg fdt
dev/usb/controller/uss820dci.c optional uss820dci
dev/usb/controller/uss820dci_atmelarm.c optional uss820dci at91rm9200
dev/usb/controller/usb_controller.c optional usb
#
# USB storage drivers
#
dev/usb/storage/umass.c optional umass
dev/usb/storage/urio.c optional urio
dev/usb/storage/ustorage_fs.c optional usfs
#
# USB core
#
dev/usb/usb_busdma.c optional usb
dev/usb/usb_core.c optional usb
dev/usb/usb_debug.c optional usb
dev/usb/usb_dev.c optional usb
dev/usb/usb_device.c optional usb
dev/usb/usb_dynamic.c optional usb
dev/usb/usb_error.c optional usb
dev/usb/usb_generic.c optional usb
dev/usb/usb_handle_request.c optional usb
dev/usb/usb_hid.c optional usb
dev/usb/usb_hub.c optional usb
dev/usb/usb_if.m optional usb
dev/usb/usb_lookup.c optional usb
dev/usb/usb_mbuf.c optional usb
dev/usb/usb_msctest.c optional usb
dev/usb/usb_parse.c optional usb
dev/usb/usb_pf.c optional usb
dev/usb/usb_process.c optional usb
dev/usb/usb_request.c optional usb
dev/usb/usb_transfer.c optional usb
dev/usb/usb_util.c optional usb
#
# USB network drivers
#
dev/usb/net/if_aue.c optional aue
dev/usb/net/if_axe.c optional axe
dev/usb/net/if_axge.c optional axge
dev/usb/net/if_cdce.c optional cdce
dev/usb/net/if_cue.c optional cue
dev/usb/net/if_ipheth.c optional ipheth
dev/usb/net/if_kue.c optional kue
dev/usb/net/if_mos.c optional mos
dev/usb/net/if_rue.c optional rue
dev/usb/net/if_smsc.c optional smsc
dev/usb/net/if_udav.c optional udav
dev/usb/net/if_ure.c optional ure
dev/usb/net/if_usie.c optional usie
dev/usb/net/if_urndis.c optional urndis
dev/usb/net/ruephy.c optional rue
dev/usb/net/usb_ethernet.c optional uether | aue | axe | axge | cdce | \
cue | ipheth | kue | mos | rue | \
smsc | udav | ure | urndis
dev/usb/net/uhso.c optional uhso
#
# USB WLAN drivers
#
dev/usb/wlan/if_rsu.c optional rsu
rsu-rtl8712fw.c optional rsu-rtl8712fw | rsufw \
compile-with "${AWK} -f $S/tools/fw_stub.awk rsu-rtl8712fw.fw:rsu-rtl8712fw:120 -mrsu-rtl8712fw -c${.TARGET}" \
no-implicit-rule before-depend local \
clean "rsu-rtl8712fw.c"
rsu-rtl8712fw.fwo optional rsu-rtl8712fw | rsufw \
dependency "rsu-rtl8712fw.fw" \
compile-with "${NORMAL_FWO}" \
no-implicit-rule \
clean "rsu-rtl8712fw.fwo"
rsu-rtl8712fw.fw optional rsu-rtl8712.fw | rsufw \
dependency "$S/contrib/dev/rsu/rsu-rtl8712fw.fw.uu" \
compile-with "${NORMAL_FW}" \
no-obj no-implicit-rule \
clean "rsu-rtl8712fw.fw"
dev/usb/wlan/if_rum.c optional rum
dev/usb/wlan/if_run.c optional run
runfw.c optional runfw \
compile-with "${AWK} -f $S/tools/fw_stub.awk run.fw:runfw -mrunfw -c${.TARGET}" \
no-implicit-rule before-depend local \
clean "runfw.c"
runfw.fwo optional runfw \
dependency "run.fw" \
compile-with "${NORMAL_FWO}" \
no-implicit-rule \
clean "runfw.fwo"
run.fw optional runfw \
dependency "$S/contrib/dev/run/rt2870.fw.uu" \
compile-with "${NORMAL_FW}" \
no-obj no-implicit-rule \
clean "run.fw"
dev/usb/wlan/if_uath.c optional uath
dev/usb/wlan/if_upgt.c optional upgt
dev/usb/wlan/if_ural.c optional ural
dev/usb/wlan/if_urtw.c optional urtw
dev/usb/wlan/if_zyd.c optional zyd
#
# USB serial and parallel port drivers
#
dev/usb/serial/u3g.c optional u3g
dev/usb/serial/uark.c optional uark
dev/usb/serial/ubsa.c optional ubsa
dev/usb/serial/ubser.c optional ubser
dev/usb/serial/uchcom.c optional uchcom
dev/usb/serial/ucycom.c optional ucycom
dev/usb/serial/ufoma.c optional ufoma
dev/usb/serial/uftdi.c optional uftdi
dev/usb/serial/ugensa.c optional ugensa
dev/usb/serial/uipaq.c optional uipaq
dev/usb/serial/ulpt.c optional ulpt
dev/usb/serial/umcs.c optional umcs
dev/usb/serial/umct.c optional umct
dev/usb/serial/umodem.c optional umodem
dev/usb/serial/umoscom.c optional umoscom
dev/usb/serial/uplcom.c optional uplcom
dev/usb/serial/uslcom.c optional uslcom
dev/usb/serial/uvisor.c optional uvisor
dev/usb/serial/uvscom.c optional uvscom
dev/usb/serial/usb_serial.c optional ucom | u3g | uark | ubsa | ubser | \
uchcom | ucycom | ufoma | uftdi | \
ugensa | uipaq | umcs | umct | \
umodem | umoscom | uplcom | usie | \
uslcom | uvisor | uvscom
#
# USB misc drivers
#
dev/usb/misc/ufm.c optional ufm
dev/usb/misc/udbp.c optional udbp
dev/usb/misc/ugold.c optional ugold
dev/usb/misc/uled.c optional uled
#
# USB input drivers
#
dev/usb/input/atp.c optional atp
dev/usb/input/uep.c optional uep
dev/usb/input/uhid.c optional uhid
dev/usb/input/ukbd.c optional ukbd
dev/usb/input/ums.c optional ums
dev/usb/input/wsp.c optional wsp
#
# USB quirks
#
dev/usb/quirk/usb_quirk.c optional usb
#
# USB templates
#
dev/usb/template/usb_template.c optional usb_template
dev/usb/template/usb_template_audio.c optional usb_template
dev/usb/template/usb_template_cdce.c optional usb_template
dev/usb/template/usb_template_kbd.c optional usb_template
dev/usb/template/usb_template_modem.c optional usb_template
dev/usb/template/usb_template_mouse.c optional usb_template
dev/usb/template/usb_template_msc.c optional usb_template
dev/usb/template/usb_template_mtp.c optional usb_template
dev/usb/template/usb_template_phone.c optional usb_template
dev/usb/template/usb_template_serialnet.c optional usb_template
dev/usb/template/usb_template_midi.c optional usb_template
#
# USB video drivers
#
dev/usb/video/udl.c optional udl
#
# USB END
#
dev/videomode/videomode.c optional videomode
dev/videomode/edid.c optional videomode
dev/videomode/pickmode.c optional videomode
dev/videomode/vesagtf.c optional videomode
dev/utopia/idtphy.c optional utopia
dev/utopia/suni.c optional utopia
dev/utopia/utopia.c optional utopia
dev/vge/if_vge.c optional vge
dev/viapm/viapm.c optional viapm pci
dev/virtio/virtio.c optional virtio
dev/virtio/virtqueue.c optional virtio
dev/virtio/virtio_bus_if.m optional virtio
dev/virtio/virtio_if.m optional virtio
dev/virtio/pci/virtio_pci.c optional virtio_pci
dev/virtio/mmio/virtio_mmio.c optional virtio_mmio
dev/virtio/mmio/virtio_mmio_if.m optional virtio_mmio
dev/virtio/network/if_vtnet.c optional vtnet
dev/virtio/block/virtio_blk.c optional virtio_blk
dev/virtio/balloon/virtio_balloon.c optional virtio_balloon
dev/virtio/scsi/virtio_scsi.c optional virtio_scsi
dev/virtio/random/virtio_random.c optional virtio_random
dev/virtio/console/virtio_console.c optional virtio_console
dev/vkbd/vkbd.c optional vkbd
dev/vr/if_vr.c optional vr pci
dev/vt/colors/vt_termcolors.c optional vt
dev/vt/font/vt_font_default.c optional vt
dev/vt/font/vt_mouse_cursor.c optional vt
dev/vt/hw/efifb/efifb.c optional vt_efifb
dev/vt/hw/fb/vt_fb.c optional vt
dev/vt/hw/vga/vt_vga.c optional vt vt_vga
dev/vt/logo/logo_freebsd.c optional vt splash
dev/vt/logo/logo_beastie.c optional vt splash
dev/vt/vt_buf.c optional vt
dev/vt/vt_consolectl.c optional vt
dev/vt/vt_core.c optional vt
dev/vt/vt_cpulogos.c optional vt splash
dev/vt/vt_font.c optional vt
dev/vt/vt_sysmouse.c optional vt
dev/vte/if_vte.c optional vte pci
dev/vx/if_vx.c optional vx
dev/vx/if_vx_eisa.c optional vx eisa
dev/vx/if_vx_pci.c optional vx pci
dev/vxge/vxge.c optional vxge
dev/vxge/vxgehal/vxgehal-ifmsg.c optional vxge
dev/vxge/vxgehal/vxgehal-mrpcim.c optional vxge
dev/vxge/vxgehal/vxge-queue.c optional vxge
dev/vxge/vxgehal/vxgehal-ring.c optional vxge
dev/vxge/vxgehal/vxgehal-swapper.c optional vxge
dev/vxge/vxgehal/vxgehal-mgmt.c optional vxge
dev/vxge/vxgehal/vxgehal-srpcim.c optional vxge
dev/vxge/vxgehal/vxgehal-config.c optional vxge
dev/vxge/vxgehal/vxgehal-blockpool.c optional vxge
dev/vxge/vxgehal/vxgehal-doorbells.c optional vxge
dev/vxge/vxgehal/vxgehal-mgmtaux.c optional vxge
dev/vxge/vxgehal/vxgehal-device.c optional vxge
dev/vxge/vxgehal/vxgehal-mm.c optional vxge
dev/vxge/vxgehal/vxgehal-driver.c optional vxge
dev/vxge/vxgehal/vxgehal-virtualpath.c optional vxge
dev/vxge/vxgehal/vxgehal-channel.c optional vxge
dev/vxge/vxgehal/vxgehal-fifo.c optional vxge
dev/watchdog/watchdog.c standard
dev/wb/if_wb.c optional wb pci
dev/wds/wd7000.c optional wds isa
dev/wi/if_wi.c optional wi
dev/wi/if_wi_pccard.c optional wi pccard
dev/wi/if_wi_pci.c optional wi pci
dev/wl/if_wl.c optional wl isa
dev/wpi/if_wpi.c optional wpi pci
wpifw.c optional wpifw \
compile-with "${AWK} -f $S/tools/fw_stub.awk wpi.fw:wpifw:153229 -mwpi -c${.TARGET}" \
no-implicit-rule before-depend local \
clean "wpifw.c"
wpifw.fwo optional wpifw \
dependency "wpi.fw" \
compile-with "${NORMAL_FWO}" \
no-implicit-rule \
clean "wpifw.fwo"
wpi.fw optional wpifw \
dependency "$S/contrib/dev/wpi/iwlwifi-3945-15.32.2.9.fw.uu" \
compile-with "${NORMAL_FW}" \
no-obj no-implicit-rule \
clean "wpi.fw"
dev/xe/if_xe.c optional xe
dev/xe/if_xe_pccard.c optional xe pccard
dev/xen/balloon/balloon.c optional xenhvm
dev/xen/blkfront/blkfront.c optional xenhvm
dev/xen/blkback/blkback.c optional xenhvm
dev/xen/console/xen_console.c optional xenhvm
dev/xen/control/control.c optional xenhvm
dev/xen/grant_table/grant_table.c optional xenhvm
dev/xen/netback/netback.c optional xenhvm
dev/xen/netfront/netfront.c optional xenhvm
dev/xen/xenpci/xenpci.c optional xenpci
dev/xen/timer/timer.c optional xenhvm
dev/xen/pvcpu/pvcpu.c optional xenhvm
dev/xen/xenstore/xenstore.c optional xenhvm
dev/xen/xenstore/xenstore_dev.c optional xenhvm
dev/xen/xenstore/xenstored_dev.c optional xenhvm
dev/xen/evtchn/evtchn_dev.c optional xenhvm
dev/xen/privcmd/privcmd.c optional xenhvm
dev/xen/debug/debug.c optional xenhvm
dev/xl/if_xl.c optional xl pci
dev/xl/xlphy.c optional xl pci
fs/autofs/autofs.c optional autofs
fs/autofs/autofs_vfsops.c optional autofs
fs/autofs/autofs_vnops.c optional autofs
fs/deadfs/dead_vnops.c standard
fs/devfs/devfs_devs.c standard
fs/devfs/devfs_dir.c standard
fs/devfs/devfs_rule.c standard
fs/devfs/devfs_vfsops.c standard
fs/devfs/devfs_vnops.c standard
fs/fdescfs/fdesc_vfsops.c optional fdescfs
fs/fdescfs/fdesc_vnops.c optional fdescfs
fs/fifofs/fifo_vnops.c standard
fs/cuse/cuse.c optional cuse
fs/fuse/fuse_device.c optional fuse
fs/fuse/fuse_file.c optional fuse
fs/fuse/fuse_internal.c optional fuse
fs/fuse/fuse_io.c optional fuse
fs/fuse/fuse_ipc.c optional fuse
fs/fuse/fuse_main.c optional fuse
fs/fuse/fuse_node.c optional fuse
fs/fuse/fuse_vfsops.c optional fuse
fs/fuse/fuse_vnops.c optional fuse
fs/msdosfs/msdosfs_conv.c optional msdosfs
fs/msdosfs/msdosfs_denode.c optional msdosfs
fs/msdosfs/msdosfs_fat.c optional msdosfs
fs/msdosfs/msdosfs_fileno.c optional msdosfs
fs/msdosfs/msdosfs_iconv.c optional msdosfs_iconv
fs/msdosfs/msdosfs_lookup.c optional msdosfs
fs/msdosfs/msdosfs_vfsops.c optional msdosfs
fs/msdosfs/msdosfs_vnops.c optional msdosfs
fs/nandfs/bmap.c optional nandfs
fs/nandfs/nandfs_alloc.c optional nandfs
fs/nandfs/nandfs_bmap.c optional nandfs
fs/nandfs/nandfs_buffer.c optional nandfs
fs/nandfs/nandfs_cleaner.c optional nandfs
fs/nandfs/nandfs_cpfile.c optional nandfs
fs/nandfs/nandfs_dat.c optional nandfs
fs/nandfs/nandfs_dir.c optional nandfs
fs/nandfs/nandfs_ifile.c optional nandfs
fs/nandfs/nandfs_segment.c optional nandfs
fs/nandfs/nandfs_subr.c optional nandfs
fs/nandfs/nandfs_sufile.c optional nandfs
fs/nandfs/nandfs_vfsops.c optional nandfs
fs/nandfs/nandfs_vnops.c optional nandfs
fs/nfs/nfs_commonkrpc.c optional nfscl | nfsd
fs/nfs/nfs_commonsubs.c optional nfscl | nfsd
fs/nfs/nfs_commonport.c optional nfscl | nfsd
fs/nfs/nfs_commonacl.c optional nfscl | nfsd
fs/nfsclient/nfs_clcomsubs.c optional nfscl
fs/nfsclient/nfs_clsubs.c optional nfscl
fs/nfsclient/nfs_clstate.c optional nfscl
fs/nfsclient/nfs_clkrpc.c optional nfscl
fs/nfsclient/nfs_clrpcops.c optional nfscl
fs/nfsclient/nfs_clvnops.c optional nfscl
fs/nfsclient/nfs_clnode.c optional nfscl
fs/nfsclient/nfs_clvfsops.c optional nfscl
fs/nfsclient/nfs_clport.c optional nfscl
fs/nfsclient/nfs_clbio.c optional nfscl
fs/nfsclient/nfs_clnfsiod.c optional nfscl
fs/nfsserver/nfs_fha_new.c optional nfsd inet
fs/nfsserver/nfs_nfsdsocket.c optional nfsd inet
fs/nfsserver/nfs_nfsdsubs.c optional nfsd inet
fs/nfsserver/nfs_nfsdstate.c optional nfsd inet
fs/nfsserver/nfs_nfsdkrpc.c optional nfsd inet
fs/nfsserver/nfs_nfsdserv.c optional nfsd inet
fs/nfsserver/nfs_nfsdport.c optional nfsd inet
fs/nfsserver/nfs_nfsdcache.c optional nfsd inet
fs/nullfs/null_subr.c optional nullfs
fs/nullfs/null_vfsops.c optional nullfs
fs/nullfs/null_vnops.c optional nullfs
fs/procfs/procfs.c optional procfs
fs/procfs/procfs_ctl.c optional procfs
fs/procfs/procfs_dbregs.c optional procfs
fs/procfs/procfs_fpregs.c optional procfs
fs/procfs/procfs_ioctl.c optional procfs
fs/procfs/procfs_map.c optional procfs
fs/procfs/procfs_mem.c optional procfs
fs/procfs/procfs_note.c optional procfs
fs/procfs/procfs_osrel.c optional procfs
fs/procfs/procfs_regs.c optional procfs
fs/procfs/procfs_rlimit.c optional procfs
fs/procfs/procfs_status.c optional procfs
fs/procfs/procfs_type.c optional procfs
fs/pseudofs/pseudofs.c optional pseudofs
fs/pseudofs/pseudofs_fileno.c optional pseudofs
fs/pseudofs/pseudofs_vncache.c optional pseudofs
fs/pseudofs/pseudofs_vnops.c optional pseudofs
fs/smbfs/smbfs_io.c optional smbfs
fs/smbfs/smbfs_node.c optional smbfs
fs/smbfs/smbfs_smb.c optional smbfs
fs/smbfs/smbfs_subr.c optional smbfs
fs/smbfs/smbfs_vfsops.c optional smbfs
fs/smbfs/smbfs_vnops.c optional smbfs
fs/udf/osta.c optional udf
fs/udf/udf_iconv.c optional udf_iconv
fs/udf/udf_vfsops.c optional udf
fs/udf/udf_vnops.c optional udf
fs/unionfs/union_subr.c optional unionfs
fs/unionfs/union_vfsops.c optional unionfs
fs/unionfs/union_vnops.c optional unionfs
fs/tmpfs/tmpfs_vnops.c optional tmpfs
fs/tmpfs/tmpfs_fifoops.c optional tmpfs
fs/tmpfs/tmpfs_vfsops.c optional tmpfs
fs/tmpfs/tmpfs_subr.c optional tmpfs
gdb/gdb_cons.c optional gdb
gdb/gdb_main.c optional gdb
gdb/gdb_packet.c optional gdb
geom/bde/g_bde.c optional geom_bde
geom/bde/g_bde_crypt.c optional geom_bde
geom/bde/g_bde_lock.c optional geom_bde
geom/bde/g_bde_work.c optional geom_bde
geom/cache/g_cache.c optional geom_cache
geom/concat/g_concat.c optional geom_concat
geom/eli/g_eli.c optional geom_eli
geom/eli/g_eli_crypto.c optional geom_eli
geom/eli/g_eli_ctl.c optional geom_eli
geom/eli/g_eli_hmac.c optional geom_eli
geom/eli/g_eli_integrity.c optional geom_eli
geom/eli/g_eli_key.c optional geom_eli
geom/eli/g_eli_key_cache.c optional geom_eli
geom/eli/g_eli_privacy.c optional geom_eli
geom/eli/pkcs5v2.c optional geom_eli
geom/gate/g_gate.c optional geom_gate
geom/geom_aes.c optional geom_aes
geom/geom_bsd.c optional geom_bsd
geom/geom_bsd_enc.c optional geom_bsd | geom_part_bsd
geom/geom_ccd.c optional ccd | geom_ccd
geom/geom_ctl.c standard
geom/geom_dev.c standard
geom/geom_disk.c standard
geom/geom_dump.c standard
geom/geom_event.c standard
geom/geom_fox.c optional geom_fox
geom/geom_flashmap.c optional fdt cfi | fdt nand | fdt mx25l
geom/geom_io.c standard
geom/geom_kern.c standard
geom/geom_map.c optional geom_map
geom/geom_mbr.c optional geom_mbr
geom/geom_mbr_enc.c optional geom_mbr
geom/geom_pc98.c optional geom_pc98
geom/geom_pc98_enc.c optional geom_pc98
geom/geom_redboot.c optional geom_redboot
geom/geom_slice.c standard
geom/geom_subr.c standard
geom/geom_sunlabel.c optional geom_sunlabel
geom/geom_sunlabel_enc.c optional geom_sunlabel
geom/geom_vfs.c standard
geom/geom_vol_ffs.c optional geom_vol
geom/journal/g_journal.c optional geom_journal
geom/journal/g_journal_ufs.c optional geom_journal
geom/label/g_label.c optional geom_label | geom_label_gpt
geom/label/g_label_ext2fs.c optional geom_label
geom/label/g_label_iso9660.c optional geom_label
geom/label/g_label_msdosfs.c optional geom_label
geom/label/g_label_ntfs.c optional geom_label
geom/label/g_label_reiserfs.c optional geom_label
geom/label/g_label_ufs.c optional geom_label
geom/label/g_label_gpt.c optional geom_label | geom_label_gpt
geom/label/g_label_disk_ident.c optional geom_label
geom/linux_lvm/g_linux_lvm.c optional geom_linux_lvm
geom/mirror/g_mirror.c optional geom_mirror
geom/mirror/g_mirror_ctl.c optional geom_mirror
geom/mountver/g_mountver.c optional geom_mountver
geom/multipath/g_multipath.c optional geom_multipath
geom/nop/g_nop.c optional geom_nop
geom/part/g_part.c standard
geom/part/g_part_if.m standard
geom/part/g_part_apm.c optional geom_part_apm
geom/part/g_part_bsd.c optional geom_part_bsd
geom/part/g_part_bsd64.c optional geom_part_bsd64
geom/part/g_part_ebr.c optional geom_part_ebr
geom/part/g_part_gpt.c optional geom_part_gpt
geom/part/g_part_ldm.c optional geom_part_ldm
geom/part/g_part_mbr.c optional geom_part_mbr
geom/part/g_part_pc98.c optional geom_part_pc98
geom/part/g_part_vtoc8.c optional geom_part_vtoc8
geom/raid/g_raid.c optional geom_raid
geom/raid/g_raid_ctl.c optional geom_raid
geom/raid/g_raid_md_if.m optional geom_raid
geom/raid/g_raid_tr_if.m optional geom_raid
geom/raid/md_ddf.c optional geom_raid
geom/raid/md_intel.c optional geom_raid
geom/raid/md_jmicron.c optional geom_raid
geom/raid/md_nvidia.c optional geom_raid
geom/raid/md_promise.c optional geom_raid
geom/raid/md_sii.c optional geom_raid
geom/raid/tr_concat.c optional geom_raid
geom/raid/tr_raid0.c optional geom_raid
geom/raid/tr_raid1.c optional geom_raid
geom/raid/tr_raid1e.c optional geom_raid
geom/raid/tr_raid5.c optional geom_raid
geom/raid3/g_raid3.c optional geom_raid3
geom/raid3/g_raid3_ctl.c optional geom_raid3
geom/shsec/g_shsec.c optional geom_shsec
geom/stripe/g_stripe.c optional geom_stripe
contrib/xz-embedded/freebsd/xz_malloc.c \
optional xz_embedded | geom_uzip \
compile-with "${NORMAL_C} -I$S/contrib/xz-embedded/freebsd/ -I$S/contrib/xz-embedded/linux/lib/xz/ -I$S/contrib/xz-embedded/linux/include/linux/"
contrib/xz-embedded/linux/lib/xz/xz_crc32.c \
optional xz_embedded | geom_uzip \
compile-with "${NORMAL_C} -I$S/contrib/xz-embedded/freebsd/ -I$S/contrib/xz-embedded/linux/lib/xz/ -I$S/contrib/xz-embedded/linux/include/linux/"
contrib/xz-embedded/linux/lib/xz/xz_dec_bcj.c \
optional xz_embedded | geom_uzip \
compile-with "${NORMAL_C} -I$S/contrib/xz-embedded/freebsd/ -I$S/contrib/xz-embedded/linux/lib/xz/ -I$S/contrib/xz-embedded/linux/include/linux/"
contrib/xz-embedded/linux/lib/xz/xz_dec_lzma2.c \
optional xz_embedded | geom_uzip \
compile-with "${NORMAL_C} -I$S/contrib/xz-embedded/freebsd/ -I$S/contrib/xz-embedded/linux/lib/xz/ -I$S/contrib/xz-embedded/linux/include/linux/"
contrib/xz-embedded/linux/lib/xz/xz_dec_stream.c \
optional xz_embedded | geom_uzip \
compile-with "${NORMAL_C} -I$S/contrib/xz-embedded/freebsd/ -I$S/contrib/xz-embedded/linux/lib/xz/ -I$S/contrib/xz-embedded/linux/include/linux/"
geom/uzip/g_uzip.c optional geom_uzip
geom/uzip/g_uzip_lzma.c optional geom_uzip
geom/uzip/g_uzip_wrkthr.c optional geom_uzip
geom/uzip/g_uzip_zlib.c optional geom_uzip
geom/vinum/geom_vinum.c optional geom_vinum
geom/vinum/geom_vinum_create.c optional geom_vinum
geom/vinum/geom_vinum_drive.c optional geom_vinum
geom/vinum/geom_vinum_plex.c optional geom_vinum
geom/vinum/geom_vinum_volume.c optional geom_vinum
geom/vinum/geom_vinum_subr.c optional geom_vinum
geom/vinum/geom_vinum_raid5.c optional geom_vinum
geom/vinum/geom_vinum_share.c optional geom_vinum
geom/vinum/geom_vinum_list.c optional geom_vinum
geom/vinum/geom_vinum_rm.c optional geom_vinum
geom/vinum/geom_vinum_init.c optional geom_vinum
geom/vinum/geom_vinum_state.c optional geom_vinum
geom/vinum/geom_vinum_rename.c optional geom_vinum
geom/vinum/geom_vinum_move.c optional geom_vinum
geom/vinum/geom_vinum_events.c optional geom_vinum
geom/virstor/binstream.c optional geom_virstor
geom/virstor/g_virstor.c optional geom_virstor
geom/virstor/g_virstor_md.c optional geom_virstor
geom/zero/g_zero.c optional geom_zero
fs/ext2fs/ext2_alloc.c optional ext2fs
fs/ext2fs/ext2_balloc.c optional ext2fs
fs/ext2fs/ext2_bmap.c optional ext2fs
fs/ext2fs/ext2_extents.c optional ext2fs
fs/ext2fs/ext2_inode.c optional ext2fs
fs/ext2fs/ext2_inode_cnv.c optional ext2fs
fs/ext2fs/ext2_hash.c optional ext2fs
fs/ext2fs/ext2_htree.c optional ext2fs
fs/ext2fs/ext2_lookup.c optional ext2fs
fs/ext2fs/ext2_subr.c optional ext2fs
fs/ext2fs/ext2_vfsops.c optional ext2fs
fs/ext2fs/ext2_vnops.c optional ext2fs
gnu/fs/reiserfs/reiserfs_hashes.c optional reiserfs \
warning "kernel contains GPL contaminated ReiserFS filesystem"
gnu/fs/reiserfs/reiserfs_inode.c optional reiserfs
gnu/fs/reiserfs/reiserfs_item_ops.c optional reiserfs
gnu/fs/reiserfs/reiserfs_namei.c optional reiserfs
gnu/fs/reiserfs/reiserfs_prints.c optional reiserfs
gnu/fs/reiserfs/reiserfs_stree.c optional reiserfs
gnu/fs/reiserfs/reiserfs_vfsops.c optional reiserfs
gnu/fs/reiserfs/reiserfs_vnops.c optional reiserfs
#
isa/isa_if.m standard
isa/isa_common.c optional isa
isa/isahint.c optional isa
isa/pnp.c optional isa isapnp
isa/pnpparse.c optional isa isapnp
fs/cd9660/cd9660_bmap.c optional cd9660
fs/cd9660/cd9660_lookup.c optional cd9660
fs/cd9660/cd9660_node.c optional cd9660
fs/cd9660/cd9660_rrip.c optional cd9660
fs/cd9660/cd9660_util.c optional cd9660
fs/cd9660/cd9660_vfsops.c optional cd9660
fs/cd9660/cd9660_vnops.c optional cd9660
fs/cd9660/cd9660_iconv.c optional cd9660_iconv
kern/bus_if.m standard
kern/clock_if.m standard
kern/cpufreq_if.m standard
kern/device_if.m standard
kern/imgact_binmisc.c optional imagact_binmisc
kern/imgact_elf.c standard
kern/imgact_elf32.c optional compat_freebsd32
kern/imgact_shell.c standard
kern/inflate.c optional gzip
kern/init_main.c standard
kern/init_sysent.c standard
kern/ksched.c optional _kposix_priority_scheduling
kern/kern_acct.c standard
kern/kern_alq.c optional alq
kern/kern_clock.c standard
kern/kern_condvar.c standard
kern/kern_conf.c standard
kern/kern_cons.c standard
kern/kern_cpu.c standard
kern/kern_cpuset.c standard
kern/kern_context.c standard
kern/kern_descrip.c standard
kern/kern_dtrace.c optional kdtrace_hooks
kern/kern_dump.c standard
kern/kern_environment.c standard
kern/kern_et.c standard
kern/kern_event.c standard
kern/kern_exec.c standard
kern/kern_exit.c standard
kern/kern_fail.c standard
kern/kern_ffclock.c standard
kern/kern_fork.c standard
kern/kern_gzio.c optional gzio
kern/kern_hhook.c standard
kern/kern_idle.c standard
kern/kern_intr.c standard
kern/kern_jail.c standard
kern/kern_khelp.c standard
kern/kern_kthread.c standard
kern/kern_ktr.c optional ktr
kern/kern_ktrace.c standard
kern/kern_linker.c standard
kern/kern_lock.c standard
kern/kern_lockf.c standard
kern/kern_lockstat.c optional kdtrace_hooks
kern/kern_loginclass.c standard
kern/kern_malloc.c standard
kern/kern_mbuf.c standard
kern/kern_mib.c standard
kern/kern_module.c standard
kern/kern_mtxpool.c standard
kern/kern_mutex.c standard
kern/kern_ntptime.c standard
kern/kern_numa.c standard
kern/kern_osd.c standard
kern/kern_physio.c standard
kern/kern_pmc.c standard
kern/kern_poll.c optional device_polling
kern/kern_priv.c standard
kern/kern_proc.c standard
kern/kern_procctl.c standard
kern/kern_prot.c standard
kern/kern_racct.c standard
kern/kern_rangelock.c standard
kern/kern_rctl.c standard
kern/kern_resource.c standard
kern/kern_rmlock.c standard
kern/kern_rwlock.c standard
kern/kern_sdt.c optional kdtrace_hooks
kern/kern_sema.c standard
kern/kern_sendfile.c standard
kern/kern_sharedpage.c standard
kern/kern_shutdown.c standard
kern/kern_sig.c standard
kern/kern_switch.c standard
kern/kern_sx.c standard
kern/kern_synch.c standard
kern/kern_syscalls.c standard
kern/kern_sysctl.c standard
kern/kern_tc.c standard
kern/kern_thr.c standard
kern/kern_thread.c standard
kern/kern_time.c standard
kern/kern_timeout.c standard
kern/kern_umtx.c standard
kern/kern_uuid.c standard
kern/kern_xxx.c standard
kern/link_elf.c standard
kern/linker_if.m standard
kern/md4c.c optional netsmb
kern/md5c.c standard
kern/p1003_1b.c standard
kern/posix4_mib.c standard
kern/sched_4bsd.c optional sched_4bsd
kern/sched_ule.c optional sched_ule
kern/serdev_if.m standard
kern/stack_protector.c standard \
compile-with "${NORMAL_C:N-fstack-protector*}"
kern/subr_acl_nfs4.c optional ufs_acl | zfs
kern/subr_acl_posix1e.c optional ufs_acl
kern/subr_autoconf.c standard
kern/subr_blist.c standard
kern/subr_bus.c standard
kern/subr_bus_dma.c standard
kern/subr_bufring.c standard
kern/subr_capability.c standard
kern/subr_clock.c standard
kern/subr_counter.c standard
kern/subr_devstat.c standard
kern/subr_disk.c standard
kern/subr_eventhandler.c standard
kern/subr_fattime.c standard
kern/subr_firmware.c optional firmware
kern/subr_hash.c standard
kern/subr_hints.c standard
kern/subr_kdb.c standard
kern/subr_kobj.c standard
kern/subr_lock.c standard
kern/subr_log.c standard
kern/subr_mbpool.c optional libmbpool
kern/subr_mchain.c optional libmchain
kern/subr_module.c standard
kern/subr_msgbuf.c standard
kern/subr_param.c standard
kern/subr_pcpu.c standard
kern/subr_pctrie.c standard
kern/subr_power.c standard
kern/subr_prf.c standard
kern/subr_prof.c standard
kern/subr_rman.c standard
kern/subr_rtc.c standard
kern/subr_sbuf.c standard
kern/subr_scanf.c standard
kern/subr_sglist.c standard
kern/subr_sleepqueue.c standard
kern/subr_smp.c standard
kern/subr_stack.c optional ddb | stack | ktr
kern/subr_taskqueue.c standard
kern/subr_terminal.c optional vt
kern/subr_trap.c standard
kern/subr_turnstile.c standard
kern/subr_uio.c standard
kern/subr_unit.c standard
kern/subr_vmem.c standard
kern/subr_witness.c optional witness
kern/sys_capability.c standard
kern/sys_generic.c standard
kern/sys_pipe.c standard
kern/sys_procdesc.c standard
kern/sys_process.c standard
kern/sys_socket.c standard
kern/syscalls.c standard
kern/sysv_ipc.c standard
kern/sysv_msg.c optional sysvmsg
kern/sysv_sem.c optional sysvsem
kern/sysv_shm.c optional sysvshm
kern/tty.c standard
kern/tty_compat.c optional compat_43tty
kern/tty_info.c standard
kern/tty_inq.c standard
kern/tty_outq.c standard
kern/tty_pts.c standard
kern/tty_tty.c standard
kern/tty_ttydisc.c standard
kern/uipc_accf.c standard
kern/uipc_debug.c optional ddb
kern/uipc_domain.c standard
kern/uipc_mbuf.c standard
kern/uipc_mbuf2.c standard
kern/uipc_mbufhash.c standard
kern/uipc_mqueue.c optional p1003_1b_mqueue
kern/uipc_sem.c optional p1003_1b_semaphores
kern/uipc_shm.c standard
kern/uipc_sockbuf.c standard
kern/uipc_socket.c standard
kern/uipc_syscalls.c standard
kern/uipc_usrreq.c standard
kern/vfs_acl.c standard
kern/vfs_aio.c standard
kern/vfs_bio.c standard
kern/vfs_cache.c standard
kern/vfs_cluster.c standard
kern/vfs_default.c standard
kern/vfs_export.c standard
kern/vfs_extattr.c standard
kern/vfs_hash.c standard
kern/vfs_init.c standard
kern/vfs_lookup.c standard
kern/vfs_mount.c standard
kern/vfs_mountroot.c standard
kern/vfs_subr.c standard
kern/vfs_syscalls.c standard
kern/vfs_vnops.c standard
#
# Kernel GSS-API
#
gssd.h optional kgssapi \
dependency "$S/kgssapi/gssd.x" \
compile-with "RPCGEN_CPP='${CPP}' rpcgen -hM $S/kgssapi/gssd.x | grep -v pthread.h > gssd.h" \
no-obj no-implicit-rule before-depend local \
clean "gssd.h"
gssd_xdr.c optional kgssapi \
dependency "$S/kgssapi/gssd.x gssd.h" \
compile-with "RPCGEN_CPP='${CPP}' rpcgen -c $S/kgssapi/gssd.x -o gssd_xdr.c" \
no-implicit-rule before-depend local \
clean "gssd_xdr.c"
gssd_clnt.c optional kgssapi \
dependency "$S/kgssapi/gssd.x gssd.h" \
compile-with "RPCGEN_CPP='${CPP}' rpcgen -lM $S/kgssapi/gssd.x | grep -v string.h > gssd_clnt.c" \
no-implicit-rule before-depend local \
clean "gssd_clnt.c"
kgssapi/gss_accept_sec_context.c optional kgssapi
kgssapi/gss_add_oid_set_member.c optional kgssapi
kgssapi/gss_acquire_cred.c optional kgssapi
kgssapi/gss_canonicalize_name.c optional kgssapi
kgssapi/gss_create_empty_oid_set.c optional kgssapi
kgssapi/gss_delete_sec_context.c optional kgssapi
kgssapi/gss_display_status.c optional kgssapi
kgssapi/gss_export_name.c optional kgssapi
kgssapi/gss_get_mic.c optional kgssapi
kgssapi/gss_init_sec_context.c optional kgssapi
kgssapi/gss_impl.c optional kgssapi
kgssapi/gss_import_name.c optional kgssapi
kgssapi/gss_names.c optional kgssapi
kgssapi/gss_pname_to_uid.c optional kgssapi
kgssapi/gss_release_buffer.c optional kgssapi
kgssapi/gss_release_cred.c optional kgssapi
kgssapi/gss_release_name.c optional kgssapi
kgssapi/gss_release_oid_set.c optional kgssapi
kgssapi/gss_set_cred_option.c optional kgssapi
kgssapi/gss_test_oid_set_member.c optional kgssapi
kgssapi/gss_unwrap.c optional kgssapi
kgssapi/gss_verify_mic.c optional kgssapi
kgssapi/gss_wrap.c optional kgssapi
kgssapi/gss_wrap_size_limit.c optional kgssapi
kgssapi/gssd_prot.c optional kgssapi
kgssapi/krb5/krb5_mech.c optional kgssapi
kgssapi/krb5/kcrypto.c optional kgssapi
kgssapi/krb5/kcrypto_aes.c optional kgssapi
kgssapi/krb5/kcrypto_arcfour.c optional kgssapi
kgssapi/krb5/kcrypto_des.c optional kgssapi
kgssapi/krb5/kcrypto_des3.c optional kgssapi
kgssapi/kgss_if.m optional kgssapi
kgssapi/gsstest.c optional kgssapi_debug
# These files in libkern/ are those needed by all architectures. Some
# of the files in libkern/ are only needed on some architectures, e.g.,
# libkern/divdi3.c is needed by i386 but not alpha. Also, some of these
# routines may be optimized for a particular platform. In either case,
# the file should be moved to conf/files.<arch> from here.
#
libkern/arc4random.c standard
libkern/asprintf.c standard
libkern/bcd.c standard
libkern/bsearch.c standard
libkern/crc32.c standard
libkern/explicit_bzero.c standard
libkern/fnmatch.c standard
libkern/iconv.c optional libiconv
libkern/iconv_converter_if.m optional libiconv
libkern/iconv_ucs.c optional libiconv
libkern/iconv_xlat.c optional libiconv
libkern/iconv_xlat16.c optional libiconv
libkern/inet_aton.c standard
libkern/inet_ntoa.c standard
libkern/inet_ntop.c standard
libkern/inet_pton.c standard
libkern/jenkins_hash.c standard
libkern/murmur3_32.c standard
libkern/mcount.c optional profiling-routine
libkern/memcchr.c standard
libkern/memchr.c standard
libkern/memcmp.c standard
libkern/memmem.c optional gdb
libkern/qsort.c standard
libkern/qsort_r.c standard
libkern/random.c standard
libkern/scanc.c standard
libkern/strcasecmp.c standard
libkern/strcat.c standard
libkern/strchr.c standard
libkern/strcmp.c standard
libkern/strcpy.c standard
libkern/strcspn.c standard
libkern/strdup.c standard
libkern/strndup.c standard
libkern/strlcat.c standard
libkern/strlcpy.c standard
libkern/strlen.c standard
libkern/strncat.c standard
libkern/strncmp.c standard
libkern/strncpy.c standard
libkern/strnlen.c standard
libkern/strrchr.c standard
libkern/strsep.c standard
libkern/strspn.c standard
libkern/strstr.c standard
libkern/strtol.c standard
libkern/strtoq.c standard
libkern/strtoul.c standard
libkern/strtouq.c standard
libkern/strvalid.c standard
libkern/timingsafe_bcmp.c standard
libkern/zlib.c optional crypto | geom_uzip | ipsec | \
mxge | netgraph_deflate | \
ddb_ctf | gzio
net/altq/altq_cbq.c optional altq
net/altq/altq_cdnr.c optional altq
net/altq/altq_codel.c optional altq
net/altq/altq_hfsc.c optional altq
net/altq/altq_fairq.c optional altq
net/altq/altq_priq.c optional altq
net/altq/altq_red.c optional altq
net/altq/altq_rio.c optional altq
net/altq/altq_rmclass.c optional altq
net/altq/altq_subr.c optional altq
net/bpf.c standard
net/bpf_buffer.c optional bpf
net/bpf_jitter.c optional bpf_jitter
net/bpf_filter.c optional bpf | netgraph_bpf
net/bpf_zerocopy.c optional bpf
net/bridgestp.c optional bridge | if_bridge
net/flowtable.c optional flowtable inet | flowtable inet6
net/ieee8023ad_lacp.c optional lagg
net/if.c standard
net/if_arcsubr.c optional arcnet
net/if_atmsubr.c optional atm
net/if_bridge.c optional bridge inet | if_bridge inet
net/if_clone.c standard
net/if_dead.c standard
net/if_debug.c optional ddb
net/if_disc.c optional disc
net/if_edsc.c optional edsc
net/if_enc.c optional enc inet | enc inet6
net/if_epair.c optional epair
net/if_ethersubr.c optional ether
net/if_fddisubr.c optional fddi
net/if_fwsubr.c optional fwip
net/if_gif.c optional gif inet | gif inet6 | \
netgraph_gif inet | netgraph_gif inet6
net/if_gre.c optional gre inet | gre inet6
net/if_iso88025subr.c optional token
net/if_lagg.c optional lagg
net/if_loop.c optional loop
net/if_llatbl.c standard
net/if_me.c optional me inet
net/if_media.c standard
net/if_mib.c standard
net/if_spppfr.c optional sppp | netgraph_sppp
net/if_spppsubr.c optional sppp | netgraph_sppp
net/if_stf.c optional stf inet inet6
net/if_tun.c optional tun
net/if_tap.c optional tap
net/if_vlan.c optional vlan
net/if_vxlan.c optional vxlan inet | vxlan inet6
net/mppcc.c optional netgraph_mppc_compression
net/mppcd.c optional netgraph_mppc_compression
net/netisr.c standard
net/pfil.c optional ether | inet
net/radix.c standard
net/radix_mpath.c standard
net/raw_cb.c standard
net/raw_usrreq.c standard
net/route.c standard
net/rss_config.c optional inet rss | inet6 rss
net/rtsock.c standard
net/slcompress.c optional netgraph_vjc | sppp | \
netgraph_sppp
net/toeplitz.c optional inet rss | inet6 rss
net/vnet.c optional vimage
net80211/ieee80211.c optional wlan
net80211/ieee80211_acl.c optional wlan wlan_acl
net80211/ieee80211_action.c optional wlan
net80211/ieee80211_ageq.c optional wlan
net80211/ieee80211_adhoc.c optional wlan \
compile-with "${NORMAL_C} -Wno-unused-function"
net80211/ieee80211_ageq.c optional wlan
net80211/ieee80211_amrr.c optional wlan | wlan_amrr
net80211/ieee80211_crypto.c optional wlan \
compile-with "${NORMAL_C} -Wno-unused-function"
net80211/ieee80211_crypto_ccmp.c optional wlan wlan_ccmp
net80211/ieee80211_crypto_none.c optional wlan
net80211/ieee80211_crypto_tkip.c optional wlan wlan_tkip
net80211/ieee80211_crypto_wep.c optional wlan wlan_wep
net80211/ieee80211_ddb.c optional wlan ddb
net80211/ieee80211_dfs.c optional wlan
net80211/ieee80211_freebsd.c optional wlan
net80211/ieee80211_hostap.c optional wlan \
compile-with "${NORMAL_C} -Wno-unused-function"
net80211/ieee80211_ht.c optional wlan
net80211/ieee80211_hwmp.c optional wlan ieee80211_support_mesh
net80211/ieee80211_input.c optional wlan
net80211/ieee80211_ioctl.c optional wlan
net80211/ieee80211_mesh.c optional wlan ieee80211_support_mesh \
compile-with "${NORMAL_C} -Wno-unused-function"
net80211/ieee80211_monitor.c optional wlan
net80211/ieee80211_node.c optional wlan
net80211/ieee80211_output.c optional wlan
net80211/ieee80211_phy.c optional wlan
net80211/ieee80211_power.c optional wlan
net80211/ieee80211_proto.c optional wlan
net80211/ieee80211_radiotap.c optional wlan
net80211/ieee80211_ratectl.c optional wlan
net80211/ieee80211_ratectl_none.c optional wlan
net80211/ieee80211_regdomain.c optional wlan
net80211/ieee80211_rssadapt.c optional wlan wlan_rssadapt
net80211/ieee80211_scan.c optional wlan
net80211/ieee80211_scan_sta.c optional wlan
net80211/ieee80211_sta.c optional wlan \
compile-with "${NORMAL_C} -Wno-unused-function"
net80211/ieee80211_superg.c optional wlan ieee80211_support_superg
net80211/ieee80211_scan_sw.c optional wlan
net80211/ieee80211_tdma.c optional wlan ieee80211_support_tdma
net80211/ieee80211_wds.c optional wlan
net80211/ieee80211_xauth.c optional wlan wlan_xauth
net80211/ieee80211_alq.c optional wlan ieee80211_alq
netgraph/atm/ccatm/ng_ccatm.c optional ngatm_ccatm \
compile-with "${NORMAL_C} -I$S/contrib/ngatm"
netgraph/atm/ng_atm.c optional ngatm_atm
netgraph/atm/ngatmbase.c optional ngatm_atmbase \
compile-with "${NORMAL_C} -I$S/contrib/ngatm"
netgraph/atm/sscfu/ng_sscfu.c optional ngatm_sscfu \
compile-with "${NORMAL_C} -I$S/contrib/ngatm"
netgraph/atm/sscop/ng_sscop.c optional ngatm_sscop \
compile-with "${NORMAL_C} -I$S/contrib/ngatm"
netgraph/atm/uni/ng_uni.c optional ngatm_uni \
compile-with "${NORMAL_C} -I$S/contrib/ngatm"
netgraph/bluetooth/common/ng_bluetooth.c optional netgraph_bluetooth
netgraph/bluetooth/drivers/bt3c/ng_bt3c_pccard.c optional netgraph_bluetooth_bt3c
netgraph/bluetooth/drivers/h4/ng_h4.c optional netgraph_bluetooth_h4
netgraph/bluetooth/drivers/ubt/ng_ubt.c optional netgraph_bluetooth_ubt usb
netgraph/bluetooth/drivers/ubtbcmfw/ubtbcmfw.c optional netgraph_bluetooth_ubtbcmfw usb
netgraph/bluetooth/hci/ng_hci_cmds.c optional netgraph_bluetooth_hci
netgraph/bluetooth/hci/ng_hci_evnt.c optional netgraph_bluetooth_hci
netgraph/bluetooth/hci/ng_hci_main.c optional netgraph_bluetooth_hci
netgraph/bluetooth/hci/ng_hci_misc.c optional netgraph_bluetooth_hci
netgraph/bluetooth/hci/ng_hci_ulpi.c optional netgraph_bluetooth_hci
netgraph/bluetooth/l2cap/ng_l2cap_cmds.c optional netgraph_bluetooth_l2cap
netgraph/bluetooth/l2cap/ng_l2cap_evnt.c optional netgraph_bluetooth_l2cap
netgraph/bluetooth/l2cap/ng_l2cap_llpi.c optional netgraph_bluetooth_l2cap
netgraph/bluetooth/l2cap/ng_l2cap_main.c optional netgraph_bluetooth_l2cap
netgraph/bluetooth/l2cap/ng_l2cap_misc.c optional netgraph_bluetooth_l2cap
netgraph/bluetooth/l2cap/ng_l2cap_ulpi.c optional netgraph_bluetooth_l2cap
netgraph/bluetooth/socket/ng_btsocket.c optional netgraph_bluetooth_socket
netgraph/bluetooth/socket/ng_btsocket_hci_raw.c optional netgraph_bluetooth_socket
netgraph/bluetooth/socket/ng_btsocket_l2cap.c optional netgraph_bluetooth_socket
netgraph/bluetooth/socket/ng_btsocket_l2cap_raw.c optional netgraph_bluetooth_socket
netgraph/bluetooth/socket/ng_btsocket_rfcomm.c optional netgraph_bluetooth_socket
netgraph/bluetooth/socket/ng_btsocket_sco.c optional netgraph_bluetooth_socket
netgraph/netflow/netflow.c optional netgraph_netflow
netgraph/netflow/netflow_v9.c optional netgraph_netflow
netgraph/netflow/ng_netflow.c optional netgraph_netflow
netgraph/ng_UI.c optional netgraph_UI
netgraph/ng_async.c optional netgraph_async
netgraph/ng_atmllc.c optional netgraph_atmllc
netgraph/ng_base.c optional netgraph
netgraph/ng_bpf.c optional netgraph_bpf
netgraph/ng_bridge.c optional netgraph_bridge
netgraph/ng_car.c optional netgraph_car
netgraph/ng_cisco.c optional netgraph_cisco
netgraph/ng_deflate.c optional netgraph_deflate
netgraph/ng_device.c optional netgraph_device
netgraph/ng_echo.c optional netgraph_echo
netgraph/ng_eiface.c optional netgraph_eiface
netgraph/ng_ether.c optional netgraph_ether
netgraph/ng_ether_echo.c optional netgraph_ether_echo
netgraph/ng_frame_relay.c optional netgraph_frame_relay
netgraph/ng_gif.c optional netgraph_gif inet6 | netgraph_gif inet
netgraph/ng_gif_demux.c optional netgraph_gif_demux
netgraph/ng_hole.c optional netgraph_hole
netgraph/ng_iface.c optional netgraph_iface
netgraph/ng_ip_input.c optional netgraph_ip_input
netgraph/ng_ipfw.c optional netgraph_ipfw inet ipfirewall
netgraph/ng_ksocket.c optional netgraph_ksocket
netgraph/ng_l2tp.c optional netgraph_l2tp
netgraph/ng_lmi.c optional netgraph_lmi
netgraph/ng_mppc.c optional netgraph_mppc_compression | \
netgraph_mppc_encryption
netgraph/ng_nat.c optional netgraph_nat inet libalias
netgraph/ng_one2many.c optional netgraph_one2many
netgraph/ng_parse.c optional netgraph
netgraph/ng_patch.c optional netgraph_patch
netgraph/ng_pipe.c optional netgraph_pipe
netgraph/ng_ppp.c optional netgraph_ppp
netgraph/ng_pppoe.c optional netgraph_pppoe
netgraph/ng_pptpgre.c optional netgraph_pptpgre
netgraph/ng_pred1.c optional netgraph_pred1
netgraph/ng_rfc1490.c optional netgraph_rfc1490
netgraph/ng_socket.c optional netgraph_socket
netgraph/ng_split.c optional netgraph_split
netgraph/ng_sppp.c optional netgraph_sppp
netgraph/ng_tag.c optional netgraph_tag
netgraph/ng_tcpmss.c optional netgraph_tcpmss
netgraph/ng_tee.c optional netgraph_tee
netgraph/ng_tty.c optional netgraph_tty
netgraph/ng_vjc.c optional netgraph_vjc
netgraph/ng_vlan.c optional netgraph_vlan
netinet/accf_data.c optional accept_filter_data inet
netinet/accf_dns.c optional accept_filter_dns inet
netinet/accf_http.c optional accept_filter_http inet
netinet/if_atm.c optional atm
netinet/if_ether.c optional inet ether
netinet/igmp.c optional inet
netinet/in.c optional inet
netinet/in_debug.c optional inet ddb
netinet/in_kdtrace.c optional inet | inet6
netinet/ip_carp.c optional inet carp | inet6 carp
netinet/in_fib.c optional inet
netinet/in_gif.c optional gif inet | netgraph_gif inet
netinet/ip_gre.c optional gre inet
netinet/ip_id.c optional inet
netinet/in_mcast.c optional inet
netinet/in_pcb.c optional inet | inet6
netinet/in_pcbgroup.c optional inet pcbgroup | inet6 pcbgroup
netinet/in_proto.c optional inet | inet6
netinet/in_rmx.c optional inet
netinet/in_rss.c optional inet rss
netinet/ip_divert.c optional inet ipdivert ipfirewall
netinet/ip_ecn.c optional inet | inet6
netinet/ip_encap.c optional inet | inet6
netinet/ip_fastfwd.c optional inet
netinet/ip_icmp.c optional inet | inet6
netinet/ip_input.c optional inet
netinet/ip_ipsec.c optional inet ipsec
netinet/ip_mroute.c optional mrouting inet
netinet/ip_options.c optional inet
netinet/ip_output.c optional inet
netinet/ip_reass.c optional inet
netinet/raw_ip.c optional inet | inet6
netinet/cc/cc.c optional inet | inet6
netinet/cc/cc_newreno.c optional inet | inet6
netinet/sctp_asconf.c optional inet sctp | inet6 sctp
netinet/sctp_auth.c optional inet sctp | inet6 sctp
netinet/sctp_bsd_addr.c optional inet sctp | inet6 sctp
netinet/sctp_cc_functions.c optional inet sctp | inet6 sctp
netinet/sctp_crc32.c optional inet sctp | inet6 sctp
netinet/sctp_indata.c optional inet sctp | inet6 sctp
netinet/sctp_input.c optional inet sctp | inet6 sctp
netinet/sctp_output.c optional inet sctp | inet6 sctp
netinet/sctp_pcb.c optional inet sctp | inet6 sctp
netinet/sctp_peeloff.c optional inet sctp | inet6 sctp
netinet/sctp_ss_functions.c optional inet sctp | inet6 sctp
netinet/sctp_syscalls.c optional inet sctp | inet6 sctp
netinet/sctp_sysctl.c optional inet sctp | inet6 sctp
netinet/sctp_timer.c optional inet sctp | inet6 sctp
netinet/sctp_usrreq.c optional inet sctp | inet6 sctp
netinet/sctputil.c optional inet sctp | inet6 sctp
netinet/siftr.c optional inet siftr alq | inet6 siftr alq
netinet/tcp_debug.c optional tcpdebug
netinet/tcp_fastopen.c optional inet tcp_rfc7413 | inet6 tcp_rfc7413
netinet/tcp_hostcache.c optional inet | inet6
netinet/tcp_input.c optional inet | inet6
netinet/tcp_lro.c optional inet | inet6
netinet/tcp_output.c optional inet | inet6
netinet/tcp_offload.c optional tcp_offload inet | tcp_offload inet6
netinet/tcp_pcap.c optional inet tcppcap | inet6 tcppcap
netinet/tcp_reass.c optional inet | inet6
netinet/tcp_sack.c optional inet | inet6
netinet/tcp_subr.c optional inet | inet6
netinet/tcp_syncache.c optional inet | inet6
netinet/tcp_timer.c optional inet | inet6
netinet/tcp_timewait.c optional inet | inet6
netinet/tcp_usrreq.c optional inet | inet6
netinet/udp_usrreq.c optional inet | inet6
netinet/libalias/alias.c optional libalias inet | netgraph_nat inet
netinet/libalias/alias_db.c optional libalias inet | netgraph_nat inet
netinet/libalias/alias_mod.c optional libalias | netgraph_nat
netinet/libalias/alias_proxy.c optional libalias inet | netgraph_nat inet
netinet/libalias/alias_util.c optional libalias inet | netgraph_nat inet
netinet/libalias/alias_sctp.c optional libalias inet | netgraph_nat inet
netinet6/dest6.c optional inet6
netinet6/frag6.c optional inet6
netinet6/icmp6.c optional inet6
netinet6/in6.c optional inet6
netinet6/in6_cksum.c optional inet6
netinet6/in6_fib.c optional inet6
netinet6/in6_gif.c optional gif inet6 | netgraph_gif inet6
netinet6/in6_ifattach.c optional inet6
netinet6/in6_mcast.c optional inet6
netinet6/in6_pcb.c optional inet6
netinet6/in6_pcbgroup.c optional inet6 pcbgroup
netinet6/in6_proto.c optional inet6
netinet6/in6_rmx.c optional inet6
netinet6/in6_rss.c optional inet6 rss
netinet6/in6_src.c optional inet6
netinet6/ip6_forward.c optional inet6
netinet6/ip6_gre.c optional gre inet6
netinet6/ip6_id.c optional inet6
netinet6/ip6_input.c optional inet6
netinet6/ip6_mroute.c optional mrouting inet6
netinet6/ip6_output.c optional inet6
netinet6/ip6_ipsec.c optional inet6 ipsec
netinet6/mld6.c optional inet6
netinet6/nd6.c optional inet6
netinet6/nd6_nbr.c optional inet6
netinet6/nd6_rtr.c optional inet6
netinet6/raw_ip6.c optional inet6
netinet6/route6.c optional inet6
netinet6/scope6.c optional inet6
netinet6/sctp6_usrreq.c optional inet6 sctp
netinet6/udp6_usrreq.c optional inet6
netipsec/ipsec.c optional ipsec inet | ipsec inet6
netipsec/ipsec_input.c optional ipsec inet | ipsec inet6
netipsec/ipsec_mbuf.c optional ipsec inet | ipsec inet6
netipsec/ipsec_output.c optional ipsec inet | ipsec inet6
netipsec/key.c optional ipsec inet | ipsec inet6
netipsec/key_debug.c optional ipsec inet | ipsec inet6
netipsec/keysock.c optional ipsec inet | ipsec inet6
netipsec/xform_ah.c optional ipsec inet | ipsec inet6
netipsec/xform_esp.c optional ipsec inet | ipsec inet6
netipsec/xform_ipcomp.c optional ipsec inet | ipsec inet6
netipsec/xform_tcp.c optional ipsec inet tcp_signature | \
ipsec inet6 tcp_signature
netnatm/natm.c optional natm
netnatm/natm_pcb.c optional natm
netnatm/natm_proto.c optional natm
netpfil/ipfw/dn_heap.c optional inet dummynet
netpfil/ipfw/dn_sched_fifo.c optional inet dummynet
netpfil/ipfw/dn_sched_prio.c optional inet dummynet
netpfil/ipfw/dn_sched_qfq.c optional inet dummynet
netpfil/ipfw/dn_sched_rr.c optional inet dummynet
netpfil/ipfw/dn_sched_wf2q.c optional inet dummynet
netpfil/ipfw/ip_dummynet.c optional inet dummynet
netpfil/ipfw/ip_dn_io.c optional inet dummynet
netpfil/ipfw/ip_dn_glue.c optional inet dummynet
netpfil/ipfw/ip_fw2.c optional inet ipfirewall
netpfil/ipfw/ip_fw_dynamic.c optional inet ipfirewall
netpfil/ipfw/ip_fw_eaction.c optional inet ipfirewall
netpfil/ipfw/ip_fw_log.c optional inet ipfirewall
netpfil/ipfw/ip_fw_pfil.c optional inet ipfirewall
netpfil/ipfw/ip_fw_sockopt.c optional inet ipfirewall
netpfil/ipfw/ip_fw_table.c optional inet ipfirewall
netpfil/ipfw/ip_fw_table_algo.c optional inet ipfirewall
netpfil/ipfw/ip_fw_table_value.c optional inet ipfirewall
netpfil/ipfw/ip_fw_iface.c optional inet ipfirewall
netpfil/ipfw/ip_fw_nat.c optional inet ipfirewall_nat
netpfil/pf/if_pflog.c optional pflog pf inet
netpfil/pf/if_pfsync.c optional pfsync pf inet
netpfil/pf/pf.c optional pf inet
netpfil/pf/pf_if.c optional pf inet
netpfil/pf/pf_ioctl.c optional pf inet
netpfil/pf/pf_lb.c optional pf inet
netpfil/pf/pf_norm.c optional pf inet
netpfil/pf/pf_osfp.c optional pf inet
netpfil/pf/pf_ruleset.c optional pf inet
netpfil/pf/pf_table.c optional pf inet
netpfil/pf/in4_cksum.c optional pf inet
netsmb/smb_conn.c optional netsmb
netsmb/smb_crypt.c optional netsmb
netsmb/smb_dev.c optional netsmb
netsmb/smb_iod.c optional netsmb
netsmb/smb_rq.c optional netsmb
netsmb/smb_smb.c optional netsmb
netsmb/smb_subr.c optional netsmb
netsmb/smb_trantcp.c optional netsmb
netsmb/smb_usr.c optional netsmb
nfs/bootp_subr.c optional bootp nfscl
nfs/krpc_subr.c optional bootp nfscl
nfs/nfs_diskless.c optional nfscl nfs_root
nfs/nfs_fha.c optional nfsd
nfs/nfs_lock.c optional nfscl | nfslockd | nfsd
nfs/nfs_nfssvc.c optional nfscl | nfsd
nlm/nlm_advlock.c optional nfslockd | nfsd
nlm/nlm_prot_clnt.c optional nfslockd | nfsd
nlm/nlm_prot_impl.c optional nfslockd | nfsd
nlm/nlm_prot_server.c optional nfslockd | nfsd
nlm/nlm_prot_svc.c optional nfslockd | nfsd
nlm/nlm_prot_xdr.c optional nfslockd | nfsd
nlm/sm_inter_xdr.c optional nfslockd | nfsd
# Linux Kernel Programming Interface
compat/linuxkpi/common/src/linux_kmod.c optional compat_linuxkpi \
compile-with "${LINUXKPI_C}"
compat/linuxkpi/common/src/linux_compat.c optional compat_linuxkpi \
compile-with "${LINUXKPI_C}"
compat/linuxkpi/common/src/linux_pci.c optional compat_linuxkpi pci \
compile-with "${LINUXKPI_C}"
compat/linuxkpi/common/src/linux_idr.c optional compat_linuxkpi \
compile-with "${LINUXKPI_C}"
compat/linuxkpi/common/src/linux_radix.c optional compat_linuxkpi \
compile-with "${LINUXKPI_C}"
compat/linuxkpi/common/src/linux_usb.c optional compat_linuxkpi usb \
compile-with "${LINUXKPI_C}"
# OpenFabrics Enterprise Distribution (Infiniband)
ofed/drivers/infiniband/core/addr.c optional ofed \
compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
ofed/drivers/infiniband/core/agent.c optional ofed \
compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
ofed/drivers/infiniband/core/cache.c optional ofed \
compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
# XXX Mad.c must be ordered before cm.c for sysinit sets to occur in
# the correct order.
ofed/drivers/infiniband/core/mad.c optional ofed \
compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
ofed/drivers/infiniband/core/cm.c optional ofed \
compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/ -Wno-unused-function"
ofed/drivers/infiniband/core/cma.c optional ofed \
compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
ofed/drivers/infiniband/core/device.c optional ofed \
compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
ofed/drivers/infiniband/core/fmr_pool.c optional ofed \
compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
ofed/drivers/infiniband/core/iwcm.c optional ofed \
compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
ofed/drivers/infiniband/core/mad_rmpp.c optional ofed \
compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
ofed/drivers/infiniband/core/multicast.c optional ofed \
compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
ofed/drivers/infiniband/core/packer.c optional ofed \
compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
ofed/drivers/infiniband/core/peer_mem.c optional ofed \
compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
ofed/drivers/infiniband/core/sa_query.c optional ofed \
compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
ofed/drivers/infiniband/core/smi.c optional ofed \
compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
ofed/drivers/infiniband/core/sysfs.c optional ofed \
compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
ofed/drivers/infiniband/core/ucm.c optional ofed \
compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
ofed/drivers/infiniband/core/ucma.c optional ofed \
compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
ofed/drivers/infiniband/core/ud_header.c optional ofed \
compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
ofed/drivers/infiniband/core/umem.c optional ofed \
compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
ofed/drivers/infiniband/core/user_mad.c optional ofed \
compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
ofed/drivers/infiniband/core/uverbs_cmd.c optional ofed \
compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
ofed/drivers/infiniband/core/uverbs_main.c optional ofed \
compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
ofed/drivers/infiniband/core/uverbs_marshall.c optional ofed \
compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
ofed/drivers/infiniband/core/verbs.c optional ofed \
compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/core/"
ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c optional ipoib \
compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/ipoib/"
#ofed/drivers/infiniband/ulp/ipoib/ipoib_fs.c optional ipoib \
# compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/ipoib/"
ofed/drivers/infiniband/ulp/ipoib/ipoib_ib.c optional ipoib \
compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/ipoib/"
ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c optional ipoib \
compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/ipoib/"
ofed/drivers/infiniband/ulp/ipoib/ipoib_multicast.c optional ipoib \
compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/ipoib/"
ofed/drivers/infiniband/ulp/ipoib/ipoib_verbs.c optional ipoib \
compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/ipoib/"
#ofed/drivers/infiniband/ulp/ipoib/ipoib_vlan.c optional ipoib \
# compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/ipoib/"
ofed/drivers/infiniband/ulp/sdp/sdp_bcopy.c optional sdp inet \
compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/sdp/"
ofed/drivers/infiniband/ulp/sdp/sdp_main.c optional sdp inet \
compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/sdp/"
ofed/drivers/infiniband/ulp/sdp/sdp_rx.c optional sdp inet \
compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/sdp/"
ofed/drivers/infiniband/ulp/sdp/sdp_cma.c optional sdp inet \
compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/sdp/"
ofed/drivers/infiniband/ulp/sdp/sdp_tx.c optional sdp inet \
compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/sdp/"
ofed/drivers/infiniband/hw/mlx4/alias_GUID.c optional mlx4ib \
no-depend obj-prefix "mlx4ib_" \
compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/infiniband/hw/mlx4/"
ofed/drivers/infiniband/hw/mlx4/mcg.c optional mlx4ib \
no-depend obj-prefix "mlx4ib_" \
compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/infiniband/hw/mlx4/"
ofed/drivers/infiniband/hw/mlx4/sysfs.c optional mlx4ib \
no-depend obj-prefix "mlx4ib_" \
compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/infiniband/hw/mlx4/"
ofed/drivers/infiniband/hw/mlx4/cm.c optional mlx4ib \
no-depend obj-prefix "mlx4ib_" \
compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/infiniband/hw/mlx4/"
ofed/drivers/infiniband/hw/mlx4/ah.c optional mlx4ib \
no-depend obj-prefix "mlx4ib_" \
compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/infiniband/hw/mlx4/"
ofed/drivers/infiniband/hw/mlx4/cq.c optional mlx4ib \
no-depend obj-prefix "mlx4ib_" \
compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/infiniband/hw/mlx4/"
ofed/drivers/infiniband/hw/mlx4/doorbell.c optional mlx4ib \
no-depend obj-prefix "mlx4ib_" \
compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/infiniband/hw/mlx4/"
ofed/drivers/infiniband/hw/mlx4/mad.c optional mlx4ib \
no-depend obj-prefix "mlx4ib_" \
compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/infiniband/hw/mlx4/"
ofed/drivers/infiniband/hw/mlx4/main.c optional mlx4ib \
no-depend obj-prefix "mlx4ib_" \
compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/infiniband/hw/mlx4/"
ofed/drivers/infiniband/hw/mlx4/mlx4_exp.c optional mlx4ib \
no-depend obj-prefix "mlx4ib_" \
compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/infiniband/hw/mlx4/"
ofed/drivers/infiniband/hw/mlx4/mr.c optional mlx4ib \
no-depend obj-prefix "mlx4ib_" \
compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/infiniband/hw/mlx4/"
ofed/drivers/infiniband/hw/mlx4/qp.c optional mlx4ib \
no-depend obj-prefix "mlx4ib_" \
compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/infiniband/hw/mlx4/"
ofed/drivers/infiniband/hw/mlx4/srq.c optional mlx4ib \
no-depend obj-prefix "mlx4ib_" \
compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/infiniband/hw/mlx4/"
ofed/drivers/infiniband/hw/mlx4/wc.c optional mlx4ib \
no-depend obj-prefix "mlx4ib_" \
compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/infiniband/hw/mlx4/"
ofed/drivers/net/mlx4/alloc.c optional mlx4ib | mlxen \
no-depend obj-prefix "mlx4_" \
compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
ofed/drivers/net/mlx4/catas.c optional mlx4ib | mlxen \
no-depend obj-prefix "mlx4_" \
compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
ofed/drivers/net/mlx4/cmd.c optional mlx4ib | mlxen \
no-depend obj-prefix "mlx4_" \
compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
ofed/drivers/net/mlx4/cq.c optional mlx4ib | mlxen \
no-depend obj-prefix "mlx4_" \
compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
ofed/drivers/net/mlx4/eq.c optional mlx4ib | mlxen \
no-depend obj-prefix "mlx4_" \
compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
ofed/drivers/net/mlx4/fw.c optional mlx4ib | mlxen \
no-depend obj-prefix "mlx4_" \
compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
ofed/drivers/net/mlx4/icm.c optional mlx4ib | mlxen \
no-depend obj-prefix "mlx4_" \
compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
ofed/drivers/net/mlx4/intf.c optional mlx4ib | mlxen \
no-depend obj-prefix "mlx4_" \
compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
ofed/drivers/net/mlx4/main.c optional mlx4ib | mlxen \
no-depend obj-prefix "mlx4_" \
compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
ofed/drivers/net/mlx4/mcg.c optional mlx4ib | mlxen \
no-depend obj-prefix "mlx4_" \
compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/ -Wno-unused"
ofed/drivers/net/mlx4/mr.c optional mlx4ib | mlxen \
no-depend obj-prefix "mlx4_" \
compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
ofed/drivers/net/mlx4/pd.c optional mlx4ib | mlxen \
no-depend obj-prefix "mlx4_" \
compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
ofed/drivers/net/mlx4/port.c optional mlx4ib | mlxen \
no-depend obj-prefix "mlx4_" \
compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
ofed/drivers/net/mlx4/profile.c optional mlx4ib | mlxen \
no-depend obj-prefix "mlx4_" \
compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
ofed/drivers/net/mlx4/qp.c optional mlx4ib | mlxen \
no-depend obj-prefix "mlx4_" \
compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
ofed/drivers/net/mlx4/reset.c optional mlx4ib | mlxen \
no-depend obj-prefix "mlx4_" \
compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
ofed/drivers/net/mlx4/sense.c optional mlx4ib | mlxen \
no-depend obj-prefix "mlx4_" \
compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
ofed/drivers/net/mlx4/srq.c optional mlx4ib | mlxen \
no-depend obj-prefix "mlx4_" \
compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
ofed/drivers/net/mlx4/resource_tracker.c optional mlx4ib | mlxen \
no-depend obj-prefix "mlx4_" \
compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
ofed/drivers/net/mlx4/sys_tune.c optional mlx4ib | mlxen \
no-depend obj-prefix "mlx4_" \
compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
ofed/drivers/net/mlx4/en_cq.c optional mlxen \
no-depend obj-prefix "mlx4_" \
compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
ofed/drivers/net/mlx4/en_main.c optional mlxen \
no-depend obj-prefix "mlx4_" \
compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
ofed/drivers/net/mlx4/en_netdev.c optional mlxen \
no-depend obj-prefix "mlx4_" \
compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
ofed/drivers/net/mlx4/en_port.c optional mlxen \
no-depend obj-prefix "mlx4_" \
compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
ofed/drivers/net/mlx4/en_resources.c optional mlxen \
no-depend obj-prefix "mlx4_" \
compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
ofed/drivers/net/mlx4/en_rx.c optional mlxen \
no-depend obj-prefix "mlx4_" \
compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
ofed/drivers/net/mlx4/en_tx.c optional mlxen \
no-depend obj-prefix "mlx4_" \
compile-with "${OFED_C_NOIMP} -I$S/ofed/drivers/net/mlx4/"
dev/mlx5/mlx5_core/mlx5_alloc.c optional mlx5 pci \
compile-with "${OFED_C}"
dev/mlx5/mlx5_core/mlx5_cmd.c optional mlx5 pci \
compile-with "${OFED_C}"
dev/mlx5/mlx5_core/mlx5_cq.c optional mlx5 pci \
compile-with "${OFED_C}"
dev/mlx5/mlx5_core/mlx5_eq.c optional mlx5 pci \
compile-with "${OFED_C}"
dev/mlx5/mlx5_core/mlx5_flow_table.c optional mlx5 pci \
compile-with "${OFED_C}"
dev/mlx5/mlx5_core/mlx5_fw.c optional mlx5 pci \
compile-with "${OFED_C}"
dev/mlx5/mlx5_core/mlx5_health.c optional mlx5 pci \
compile-with "${OFED_C}"
dev/mlx5/mlx5_core/mlx5_mad.c optional mlx5 pci \
compile-with "${OFED_C}"
dev/mlx5/mlx5_core/mlx5_main.c optional mlx5 pci \
compile-with "${OFED_C}"
dev/mlx5/mlx5_core/mlx5_mcg.c optional mlx5 pci \
compile-with "${OFED_C}"
dev/mlx5/mlx5_core/mlx5_mr.c optional mlx5 pci \
compile-with "${OFED_C}"
dev/mlx5/mlx5_core/mlx5_pagealloc.c optional mlx5 pci \
compile-with "${OFED_C}"
dev/mlx5/mlx5_core/mlx5_pd.c optional mlx5 pci \
compile-with "${OFED_C}"
dev/mlx5/mlx5_core/mlx5_port.c optional mlx5 pci \
compile-with "${OFED_C}"
dev/mlx5/mlx5_core/mlx5_qp.c optional mlx5 pci \
compile-with "${OFED_C}"
dev/mlx5/mlx5_core/mlx5_srq.c optional mlx5 pci \
compile-with "${OFED_C}"
dev/mlx5/mlx5_core/mlx5_transobj.c optional mlx5 pci \
compile-with "${OFED_C}"
dev/mlx5/mlx5_core/mlx5_uar.c optional mlx5 pci \
compile-with "${OFED_C}"
dev/mlx5/mlx5_core/mlx5_vport.c optional mlx5 pci \
compile-with "${OFED_C}"
dev/mlx5/mlx5_core/mlx5_wq.c optional mlx5 pci \
compile-with "${OFED_C}"
dev/mlx5/mlx5_en/mlx5_en_ethtool.c optional mlx5en pci inet inet6 \
compile-with "${OFED_C}"
dev/mlx5/mlx5_en/mlx5_en_main.c optional mlx5en pci inet inet6 \
compile-with "${OFED_C}"
dev/mlx5/mlx5_en/mlx5_en_tx.c optional mlx5en pci inet inet6 \
compile-with "${OFED_C}"
dev/mlx5/mlx5_en/mlx5_en_flow_table.c optional mlx5en pci inet inet6 \
compile-with "${OFED_C}"
dev/mlx5/mlx5_en/mlx5_en_rx.c optional mlx5en pci inet inet6 \
compile-with "${OFED_C}"
dev/mlx5/mlx5_en/mlx5_en_txrx.c optional mlx5en pci inet inet6 \
compile-with "${OFED_C}"
ofed/drivers/infiniband/hw/mthca/mthca_allocator.c optional mthca \
compile-with "${OFED_C}"
ofed/drivers/infiniband/hw/mthca/mthca_av.c optional mthca \
compile-with "${OFED_C}"
ofed/drivers/infiniband/hw/mthca/mthca_catas.c optional mthca \
compile-with "${OFED_C}"
ofed/drivers/infiniband/hw/mthca/mthca_cmd.c optional mthca \
compile-with "${OFED_C}"
ofed/drivers/infiniband/hw/mthca/mthca_cq.c optional mthca \
compile-with "${OFED_C}"
ofed/drivers/infiniband/hw/mthca/mthca_eq.c optional mthca \
compile-with "${OFED_C}"
ofed/drivers/infiniband/hw/mthca/mthca_mad.c optional mthca \
compile-with "${OFED_C}"
ofed/drivers/infiniband/hw/mthca/mthca_main.c optional mthca \
compile-with "${OFED_C}"
ofed/drivers/infiniband/hw/mthca/mthca_mcg.c optional mthca \
compile-with "${OFED_C}"
ofed/drivers/infiniband/hw/mthca/mthca_memfree.c optional mthca \
compile-with "${OFED_C}"
ofed/drivers/infiniband/hw/mthca/mthca_mr.c optional mthca \
compile-with "${OFED_C}"
ofed/drivers/infiniband/hw/mthca/mthca_pd.c optional mthca \
compile-with "${OFED_C}"
ofed/drivers/infiniband/hw/mthca/mthca_profile.c optional mthca \
compile-with "${OFED_C}"
ofed/drivers/infiniband/hw/mthca/mthca_provider.c optional mthca \
compile-with "${OFED_C}"
ofed/drivers/infiniband/hw/mthca/mthca_qp.c optional mthca \
compile-with "${OFED_C}"
ofed/drivers/infiniband/hw/mthca/mthca_reset.c optional mthca \
compile-with "${OFED_C}"
ofed/drivers/infiniband/hw/mthca/mthca_srq.c optional mthca \
compile-with "${OFED_C}"
ofed/drivers/infiniband/hw/mthca/mthca_uar.c optional mthca \
compile-with "${OFED_C}"
# crypto support
opencrypto/cast.c optional crypto | ipsec
opencrypto/criov.c optional crypto | ipsec
opencrypto/crypto.c optional crypto | ipsec
opencrypto/cryptodev.c optional cryptodev
opencrypto/cryptodev_if.m optional crypto | ipsec
opencrypto/cryptosoft.c optional crypto | ipsec
opencrypto/cryptodeflate.c optional crypto | ipsec
opencrypto/gmac.c optional crypto | ipsec
opencrypto/gfmult.c optional crypto | ipsec
opencrypto/rmd160.c optional crypto | ipsec
opencrypto/skipjack.c optional crypto | ipsec
opencrypto/xform.c optional crypto | ipsec
rpc/auth_none.c optional krpc | nfslockd | nfscl | nfsd
rpc/auth_unix.c optional krpc | nfslockd | nfscl | nfsd
rpc/authunix_prot.c optional krpc | nfslockd | nfscl | nfsd
rpc/clnt_bck.c optional krpc | nfslockd | nfscl | nfsd
rpc/clnt_dg.c optional krpc | nfslockd | nfscl | nfsd
rpc/clnt_rc.c optional krpc | nfslockd | nfscl | nfsd
rpc/clnt_vc.c optional krpc | nfslockd | nfscl | nfsd
rpc/getnetconfig.c optional krpc | nfslockd | nfscl | nfsd
rpc/replay.c optional krpc | nfslockd | nfscl | nfsd
rpc/rpc_callmsg.c optional krpc | nfslockd | nfscl | nfsd
rpc/rpc_generic.c optional krpc | nfslockd | nfscl | nfsd
rpc/rpc_prot.c optional krpc | nfslockd | nfscl | nfsd
rpc/rpcb_clnt.c optional krpc | nfslockd | nfscl | nfsd
rpc/rpcb_prot.c optional krpc | nfslockd | nfscl | nfsd
rpc/svc.c optional krpc | nfslockd | nfscl | nfsd
rpc/svc_auth.c optional krpc | nfslockd | nfscl | nfsd
rpc/svc_auth_unix.c optional krpc | nfslockd | nfscl | nfsd
rpc/svc_dg.c optional krpc | nfslockd | nfscl | nfsd
rpc/svc_generic.c optional krpc | nfslockd | nfscl | nfsd
rpc/svc_vc.c optional krpc | nfslockd | nfscl | nfsd
rpc/rpcsec_gss/rpcsec_gss.c optional krpc kgssapi | nfslockd kgssapi | nfscl kgssapi | nfsd kgssapi
rpc/rpcsec_gss/rpcsec_gss_conf.c optional krpc kgssapi | nfslockd kgssapi | nfscl kgssapi | nfsd kgssapi
rpc/rpcsec_gss/rpcsec_gss_misc.c optional krpc kgssapi | nfslockd kgssapi | nfscl kgssapi | nfsd kgssapi
rpc/rpcsec_gss/rpcsec_gss_prot.c optional krpc kgssapi | nfslockd kgssapi | nfscl kgssapi | nfsd kgssapi
rpc/rpcsec_gss/svc_rpcsec_gss.c optional krpc kgssapi | nfslockd kgssapi | nfscl kgssapi | nfsd kgssapi
security/audit/audit.c optional audit
security/audit/audit_arg.c optional audit
security/audit/audit_bsm.c optional audit
security/audit/audit_bsm_klib.c optional audit
security/audit/audit_pipe.c optional audit
security/audit/audit_syscalls.c standard
security/audit/audit_trigger.c optional audit
security/audit/audit_worker.c optional audit
security/audit/bsm_domain.c optional audit
security/audit/bsm_errno.c optional audit
security/audit/bsm_fcntl.c optional audit
security/audit/bsm_socket_type.c optional audit
security/audit/bsm_token.c optional audit
security/mac/mac_audit.c optional mac audit
security/mac/mac_cred.c optional mac
security/mac/mac_framework.c optional mac
security/mac/mac_inet.c optional mac inet | mac inet6
security/mac/mac_inet6.c optional mac inet6
security/mac/mac_label.c optional mac
security/mac/mac_net.c optional mac
security/mac/mac_pipe.c optional mac
security/mac/mac_posix_sem.c optional mac
security/mac/mac_posix_shm.c optional mac
security/mac/mac_priv.c optional mac
security/mac/mac_process.c optional mac
security/mac/mac_socket.c optional mac
security/mac/mac_syscalls.c standard
security/mac/mac_system.c optional mac
security/mac/mac_sysv_msg.c optional mac
security/mac/mac_sysv_sem.c optional mac
security/mac/mac_sysv_shm.c optional mac
security/mac/mac_vfs.c optional mac
security/mac_biba/mac_biba.c optional mac_biba
security/mac_bsdextended/mac_bsdextended.c optional mac_bsdextended
security/mac_bsdextended/ugidfw_system.c optional mac_bsdextended
security/mac_bsdextended/ugidfw_vnode.c optional mac_bsdextended
security/mac_ifoff/mac_ifoff.c optional mac_ifoff
security/mac_lomac/mac_lomac.c optional mac_lomac
security/mac_mls/mac_mls.c optional mac_mls
security/mac_none/mac_none.c optional mac_none
security/mac_partition/mac_partition.c optional mac_partition
security/mac_portacl/mac_portacl.c optional mac_portacl
security/mac_seeotheruids/mac_seeotheruids.c optional mac_seeotheruids
security/mac_stub/mac_stub.c optional mac_stub
security/mac_test/mac_test.c optional mac_test
teken/teken.c optional sc | vt
ufs/ffs/ffs_alloc.c optional ffs
ufs/ffs/ffs_balloc.c optional ffs
ufs/ffs/ffs_inode.c optional ffs
ufs/ffs/ffs_snapshot.c optional ffs
ufs/ffs/ffs_softdep.c optional ffs
ufs/ffs/ffs_subr.c optional ffs
ufs/ffs/ffs_tables.c optional ffs
ufs/ffs/ffs_vfsops.c optional ffs
ufs/ffs/ffs_vnops.c optional ffs
ufs/ffs/ffs_rawread.c optional ffs directio
ufs/ffs/ffs_suspend.c optional ffs
ufs/ufs/ufs_acl.c optional ffs
ufs/ufs/ufs_bmap.c optional ffs
ufs/ufs/ufs_dirhash.c optional ffs
ufs/ufs/ufs_extattr.c optional ffs
ufs/ufs/ufs_gjournal.c optional ffs UFS_GJOURNAL
ufs/ufs/ufs_inode.c optional ffs
ufs/ufs/ufs_lookup.c optional ffs
ufs/ufs/ufs_quota.c optional ffs
ufs/ufs/ufs_vfsops.c optional ffs
ufs/ufs/ufs_vnops.c optional ffs
vm/default_pager.c standard
vm/device_pager.c standard
vm/phys_pager.c standard
vm/redzone.c optional DEBUG_REDZONE
vm/sg_pager.c standard
vm/swap_pager.c standard
vm/uma_core.c standard
vm/uma_dbg.c standard
vm/memguard.c optional DEBUG_MEMGUARD
vm/vm_fault.c standard
vm/vm_glue.c standard
vm/vm_init.c standard
vm/vm_kern.c standard
vm/vm_map.c standard
vm/vm_meter.c standard
vm/vm_mmap.c standard
vm/vm_object.c standard
vm/vm_page.c standard
vm/vm_pageout.c standard
vm/vm_pager.c standard
vm/vm_phys.c standard
vm/vm_radix.c standard
vm/vm_reserv.c standard
vm/vm_domain.c standard
vm/vm_unix.c standard
vm/vm_zeroidle.c standard
vm/vnode_pager.c standard
xen/features.c optional xenhvm
xen/xenbus/xenbus_if.m optional xenhvm
xen/xenbus/xenbus.c optional xenhvm
xen/xenbus/xenbusb_if.m optional xenhvm
xen/xenbus/xenbusb.c optional xenhvm
xen/xenbus/xenbusb_front.c optional xenhvm
xen/xenbus/xenbusb_back.c optional xenhvm
xen/xenmem/xenmem_if.m optional xenhvm
xdr/xdr.c optional krpc | nfslockd | nfscl | nfsd
xdr/xdr_array.c optional krpc | nfslockd | nfscl | nfsd
xdr/xdr_mbuf.c optional krpc | nfslockd | nfscl | nfsd
xdr/xdr_mem.c optional krpc | nfslockd | nfscl | nfsd
xdr/xdr_reference.c optional krpc | nfslockd | nfscl | nfsd
xdr/xdr_sizeof.c optional krpc | nfslockd | nfscl | nfsd
Index: user/ngie/bsnmp_cleanup/sys/conf/files.amd64
===================================================================
--- user/ngie/bsnmp_cleanup/sys/conf/files.amd64 (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/conf/files.amd64 (revision 299697)
@@ -1,629 +1,628 @@
# This file tells config what files go into building a kernel,
# files marked standard are always included.
#
# $FreeBSD$
#
# The long compile-with and dependency lines are required because of
# limitations in config: backslash-newline doesn't work in strings, and
# dependency lines other than the first are silently ignored.
#
#
linux32_genassym.o optional compat_linux32 \
dependency "$S/amd64/linux32/linux32_genassym.c" \
compile-with "${CC} ${CFLAGS:N-fno-common} -c ${.IMPSRC}" \
no-obj no-implicit-rule \
clean "linux32_genassym.o"
#
linux32_assym.h optional compat_linux32 \
dependency "$S/kern/genassym.sh linux32_genassym.o" \
compile-with "sh $S/kern/genassym.sh linux32_genassym.o > ${.TARGET}" \
no-obj no-implicit-rule before-depend \
clean "linux32_assym.h"
#
linux32_locore.o optional compat_linux32 \
dependency "linux32_assym.h $S/amd64/linux32/linux32_locore.s" \
compile-with "${CC} -x assembler-with-cpp -DLOCORE -m32 -shared -s -pipe -I. -I$S -Werror -Wall -fno-common -nostdinc -nostdlib -Wl,-T$S/amd64/linux32/linux32_vdso.lds.s -Wl,-soname=linux32_vdso.so,--eh-frame-hdr,-fPIC,-warn-common ${.IMPSRC} -o ${.TARGET}" \
no-obj no-implicit-rule \
clean "linux32_locore.o"
#
linux32_vdso.so optional compat_linux32 \
dependency "linux32_locore.o" \
compile-with "${OBJCOPY} --input-target binary --output-target elf64-x86-64-freebsd --binary-architecture i386 linux32_locore.o ${.TARGET}" \
no-implicit-rule \
clean "linux32_vdso.so"
#
ia32_genassym.o standard \
dependency "$S/compat/ia32/ia32_genassym.c" \
compile-with "${CC} ${CFLAGS:N-fno-common} -c ${.IMPSRC}" \
no-obj no-implicit-rule \
clean "ia32_genassym.o"
#
ia32_assym.h standard \
dependency "$S/kern/genassym.sh ia32_genassym.o" \
compile-with "env NM='${NM}' NMFLAGS='${NMFLAGS}' sh $S/kern/genassym.sh ia32_genassym.o > ${.TARGET}" \
no-obj no-implicit-rule before-depend \
clean "ia32_assym.h"
#
font.h optional sc_dflt_font \
compile-with "uudecode < /usr/share/syscons/fonts/${SC_DFLT_FONT}-8x16.fnt && file2c 'static u_char dflt_font_16[16*256] = {' '};' < ${SC_DFLT_FONT}-8x16 > font.h && uudecode < /usr/share/syscons/fonts/${SC_DFLT_FONT}-8x14.fnt && file2c 'static u_char dflt_font_14[14*256] = {' '};' < ${SC_DFLT_FONT}-8x14 >> font.h && uudecode < /usr/share/syscons/fonts/${SC_DFLT_FONT}-8x8.fnt && file2c 'static u_char dflt_font_8[8*256] = {' '};' < ${SC_DFLT_FONT}-8x8 >> font.h" \
no-obj no-implicit-rule before-depend \
clean "font.h ${SC_DFLT_FONT}-8x14 ${SC_DFLT_FONT}-8x16 ${SC_DFLT_FONT}-8x8"
#
atkbdmap.h optional atkbd_dflt_keymap \
compile-with "kbdcontrol -P ${S:S/sys$/share/}/vt/keymaps -P ${S:S/sys$/share/}/syscons/keymaps -L ${ATKBD_DFLT_KEYMAP} | sed -e 's/^static keymap_t.* = /static keymap_t key_map = /' -e 's/^static accentmap_t.* = /static accentmap_t accent_map = /' > atkbdmap.h" \
no-obj no-implicit-rule before-depend \
clean "atkbdmap.h"
#
ukbdmap.h optional ukbd_dflt_keymap \
compile-with "kbdcontrol -P ${S:S/sys$/share/}/vt/keymaps -P ${S:S/sys$/share/}/syscons/keymaps -L ${UKBD_DFLT_KEYMAP} | sed -e 's/^static keymap_t.* = /static keymap_t key_map = /' -e 's/^static accentmap_t.* = /static accentmap_t accent_map = /' > ukbdmap.h" \
no-obj no-implicit-rule before-depend \
clean "ukbdmap.h"
#
hpt27xx_lib.o optional hpt27xx \
dependency "$S/dev/hpt27xx/amd64-elf.hpt27xx_lib.o.uu" \
compile-with "uudecode < $S/dev/hpt27xx/amd64-elf.hpt27xx_lib.o.uu" \
no-implicit-rule
#
hptmvraid.o optional hptmv \
dependency "$S/dev/hptmv/amd64-elf.raid.o.uu" \
compile-with "uudecode < $S/dev/hptmv/amd64-elf.raid.o.uu" \
no-implicit-rule
#
hptnr_lib.o optional hptnr \
dependency "$S/dev/hptnr/amd64-elf.hptnr_lib.o.uu" \
compile-with "uudecode < $S/dev/hptnr/amd64-elf.hptnr_lib.o.uu" \
no-implicit-rule
#
hptrr_lib.o optional hptrr \
dependency "$S/dev/hptrr/amd64-elf.hptrr_lib.o.uu" \
compile-with "uudecode < $S/dev/hptrr/amd64-elf.hptrr_lib.o.uu" \
no-implicit-rule
#
amd64/acpica/acpi_machdep.c optional acpi
acpi_wakecode.o optional acpi \
dependency "$S/amd64/acpica/acpi_wakecode.S assym.s" \
compile-with "${NORMAL_S}" \
no-obj no-implicit-rule before-depend \
clean "acpi_wakecode.o"
acpi_wakecode.bin optional acpi \
dependency "acpi_wakecode.o" \
compile-with "${OBJCOPY} -S -O binary acpi_wakecode.o ${.TARGET}" \
no-obj no-implicit-rule before-depend \
clean "acpi_wakecode.bin"
acpi_wakecode.h optional acpi \
dependency "acpi_wakecode.bin" \
compile-with "file2c -sx 'static char wakecode[] = {' '};' < acpi_wakecode.bin > ${.TARGET}" \
no-obj no-implicit-rule before-depend \
clean "acpi_wakecode.h"
acpi_wakedata.h optional acpi \
dependency "acpi_wakecode.o" \
compile-with '${NM} -n --defined-only acpi_wakecode.o | while read offset dummy what; do echo "#define $${what} 0x$${offset}"; done > ${.TARGET}' \
no-obj no-implicit-rule before-depend \
clean "acpi_wakedata.h"
#
amd64/amd64/amd64_mem.c optional mem
#amd64/amd64/apic_vector.S standard
amd64/amd64/atomic.c standard
amd64/amd64/bios.c standard
amd64/amd64/bpf_jit_machdep.c optional bpf_jitter
amd64/amd64/cpu_switch.S standard
amd64/amd64/db_disasm.c optional ddb
amd64/amd64/db_interface.c optional ddb
amd64/amd64/db_trace.c optional ddb
amd64/amd64/elf_machdep.c standard
amd64/amd64/exception.S standard
amd64/amd64/fpu.c standard
amd64/amd64/gdb_machdep.c optional gdb
amd64/amd64/in_cksum.c optional inet | inet6
amd64/amd64/initcpu.c standard
amd64/amd64/io.c optional io
amd64/amd64/locore.S standard no-obj
amd64/amd64/xen-locore.S optional xenhvm
amd64/amd64/machdep.c standard
amd64/amd64/mem.c optional mem
amd64/amd64/minidump_machdep.c standard
amd64/amd64/mp_machdep.c optional smp
amd64/amd64/mp_watchdog.c optional mp_watchdog smp
amd64/amd64/mpboot.S optional smp
amd64/amd64/pmap.c standard
amd64/amd64/prof_machdep.c optional profiling-routine
amd64/amd64/ptrace_machdep.c standard
amd64/amd64/sigtramp.S standard
amd64/amd64/support.S standard
amd64/amd64/sys_machdep.c standard
amd64/amd64/trap.c standard
amd64/amd64/uio_machdep.c standard
amd64/amd64/uma_machdep.c standard
amd64/amd64/vm_machdep.c standard
amd64/cloudabi64/cloudabi64_sysvec.c optional compat_cloudabi64
amd64/pci/pci_cfgreg.c optional pci
cddl/contrib/opensolaris/common/atomic/amd64/opensolaris_atomic.S optional zfs | dtrace compile-with "${ZFS_S}"
cddl/dev/dtrace/amd64/dtrace_asm.S optional dtrace compile-with "${DTRACE_S}"
cddl/dev/dtrace/amd64/dtrace_subr.c optional dtrace compile-with "${DTRACE_C}"
cddl/dev/fbt/x86/fbt_isa.c optional dtrace_fbt | dtraceall compile-with "${FBT_C}"
cddl/dev/dtrace/x86/dis_tables.c optional dtrace_fbt | dtraceall compile-with "${DTRACE_C}"
cddl/dev/dtrace/amd64/instr_size.c optional dtrace_fbt | dtraceall compile-with "${DTRACE_C}"
crypto/aesni/aeskeys_amd64.S optional aesni
crypto/aesni/aesni.c optional aesni
aesni_ghash.o optional aesni \
dependency "$S/crypto/aesni/aesni_ghash.c" \
compile-with "${CC} -c ${CFLAGS:C/^-O2$/-O3/:N-nostdinc} ${WERROR} ${NO_WCAST_QUAL} ${PROF} -mmmx -msse -msse4 -maes -mpclmul ${.IMPSRC}" \
no-implicit-rule \
clean "aesni_ghash.o"
aesni_wrap.o optional aesni \
dependency "$S/crypto/aesni/aesni_wrap.c" \
compile-with "${CC} -c ${CFLAGS:C/^-O2$/-O3/:N-nostdinc} ${WERROR} ${NO_WCAST_QUAL} ${PROF} -mmmx -msse -msse4 -maes ${.IMPSRC}" \
no-implicit-rule \
clean "aesni_wrap.o"
crypto/blowfish/bf_enc.c optional crypto | ipsec
crypto/des/des_enc.c optional crypto | ipsec | netsmb
crypto/via/padlock.c optional padlock
crypto/via/padlock_cipher.c optional padlock
crypto/via/padlock_hash.c optional padlock
dev/acpica/acpi_if.m standard
dev/acpica/acpi_hpet.c optional acpi
dev/acpi_support/acpi_wmi_if.m standard
dev/agp/agp_amd64.c optional agp
dev/agp/agp_i810.c optional agp
dev/agp/agp_via.c optional agp
dev/amdsbwd/amdsbwd.c optional amdsbwd
dev/amdtemp/amdtemp.c optional amdtemp
dev/arcmsr/arcmsr.c optional arcmsr pci
dev/asmc/asmc.c optional asmc isa
dev/atkbdc/atkbd.c optional atkbd atkbdc
dev/atkbdc/atkbd_atkbdc.c optional atkbd atkbdc
dev/atkbdc/atkbdc.c optional atkbdc
dev/atkbdc/atkbdc_isa.c optional atkbdc isa
dev/atkbdc/atkbdc_subr.c optional atkbdc
dev/atkbdc/psm.c optional psm atkbdc
dev/bxe/bxe.c optional bxe pci
dev/bxe/bxe_stats.c optional bxe pci
dev/bxe/bxe_debug.c optional bxe pci
dev/bxe/ecore_sp.c optional bxe pci
dev/bxe/bxe_elink.c optional bxe pci
dev/bxe/57710_init_values.c optional bxe pci
dev/bxe/57711_init_values.c optional bxe pci
dev/bxe/57712_init_values.c optional bxe pci
dev/coretemp/coretemp.c optional coretemp
dev/cpuctl/cpuctl.c optional cpuctl
dev/dpms/dpms.c optional dpms
# There are no systems with isa slots, so all ed isa entries should go..
dev/ed/if_ed_3c503.c optional ed isa ed_3c503
dev/ed/if_ed_isa.c optional ed isa
dev/ed/if_ed_wd80x3.c optional ed isa
dev/ed/if_ed_hpp.c optional ed isa ed_hpp
dev/ed/if_ed_sic.c optional ed isa ed_sic
dev/fb/fb.c optional fb | vga
dev/fb/s3_pci.c optional s3pci
dev/fb/vesa.c optional vga vesa
dev/fb/vga.c optional vga
dev/ichwd/ichwd.c optional ichwd
dev/if_ndis/if_ndis.c optional ndis
dev/if_ndis/if_ndis_pccard.c optional ndis pccard
dev/if_ndis/if_ndis_pci.c optional ndis cardbus | ndis pci
dev/if_ndis/if_ndis_usb.c optional ndis usb
dev/io/iodev.c optional io
dev/ioat/ioat.c optional ioat pci
dev/ioat/ioat_test.c optional ioat pci
dev/ipmi/ipmi.c optional ipmi
dev/ipmi/ipmi_acpi.c optional ipmi acpi
dev/ipmi/ipmi_isa.c optional ipmi isa
dev/ipmi/ipmi_kcs.c optional ipmi
dev/ipmi/ipmi_smic.c optional ipmi
dev/ipmi/ipmi_smbus.c optional ipmi smbus
dev/ipmi/ipmi_smbios.c optional ipmi
dev/ipmi/ipmi_ssif.c optional ipmi smbus
dev/ipmi/ipmi_pci.c optional ipmi pci
dev/ipmi/ipmi_linux.c optional ipmi compat_linux32
dev/ixl/if_ixl.c optional ixl pci \
compile-with "${NORMAL_C} -I$S/dev/ixl"
dev/ixl/if_ixlv.c optional ixlv pci \
compile-with "${NORMAL_C} -I$S/dev/ixl"
dev/ixl/ixlvc.c optional ixlv pci \
compile-with "${NORMAL_C} -I$S/dev/ixl"
dev/ixl/ixl_txrx.c optional ixl pci | ixlv pci \
compile-with "${NORMAL_C} -I$S/dev/ixl"
dev/ixl/i40e_osdep.c optional ixl pci | ixlv pci \
compile-with "${NORMAL_C} -I$S/dev/ixl"
dev/ixl/i40e_lan_hmc.c optional ixl pci | ixlv pci \
compile-with "${NORMAL_C} -I$S/dev/ixl"
dev/ixl/i40e_hmc.c optional ixl pci | ixlv pci \
compile-with "${NORMAL_C} -I$S/dev/ixl"
dev/ixl/i40e_common.c optional ixl pci | ixlv pci \
compile-with "${NORMAL_C} -I$S/dev/ixl"
dev/ixl/i40e_nvm.c optional ixl pci | ixlv pci \
compile-with "${NORMAL_C} -I$S/dev/ixl"
dev/ixl/i40e_adminq.c optional ixl pci | ixlv pci \
compile-with "${NORMAL_C} -I$S/dev/ixl"
dev/fdc/fdc.c optional fdc
dev/fdc/fdc_acpi.c optional fdc
dev/fdc/fdc_isa.c optional fdc isa
dev/fdc/fdc_pccard.c optional fdc pccard
dev/hpt27xx/hpt27xx_os_bsd.c optional hpt27xx
dev/hpt27xx/hpt27xx_osm_bsd.c optional hpt27xx
dev/hpt27xx/hpt27xx_config.c optional hpt27xx
dev/hptmv/entry.c optional hptmv
dev/hptmv/mv.c optional hptmv
dev/hptmv/gui_lib.c optional hptmv
dev/hptmv/hptproc.c optional hptmv
dev/hptmv/ioctl.c optional hptmv
dev/hptnr/hptnr_os_bsd.c optional hptnr
dev/hptnr/hptnr_osm_bsd.c optional hptnr
dev/hptnr/hptnr_config.c optional hptnr
dev/hptrr/hptrr_os_bsd.c optional hptrr
dev/hptrr/hptrr_osm_bsd.c optional hptrr
dev/hptrr/hptrr_config.c optional hptrr
dev/hwpmc/hwpmc_amd.c optional hwpmc
dev/hwpmc/hwpmc_intel.c optional hwpmc
dev/hwpmc/hwpmc_core.c optional hwpmc
dev/hwpmc/hwpmc_uncore.c optional hwpmc
dev/hwpmc/hwpmc_piv.c optional hwpmc
dev/hwpmc/hwpmc_tsc.c optional hwpmc
dev/hwpmc/hwpmc_x86.c optional hwpmc
dev/hyperv/netvsc/hv_net_vsc.c optional hyperv
dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c optional hyperv
dev/hyperv/netvsc/hv_rndis_filter.c optional hyperv
dev/hyperv/stordisengage/hv_ata_pci_disengage.c optional hyperv
dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c optional hyperv
dev/hyperv/utilities/hv_heartbeat.c optional hyperv
dev/hyperv/utilities/hv_kvp.c optional hyperv
dev/hyperv/utilities/hv_shutdown.c optional hyperv
dev/hyperv/utilities/hv_timesync.c optional hyperv
dev/hyperv/utilities/hv_util.c optional hyperv
dev/hyperv/vmbus/hv_channel.c optional hyperv
dev/hyperv/vmbus/hv_channel_mgmt.c optional hyperv
dev/hyperv/vmbus/hv_connection.c optional hyperv
dev/hyperv/vmbus/hv_hv.c optional hyperv
dev/hyperv/vmbus/hv_et.c optional hyperv
dev/hyperv/vmbus/hv_ring_buffer.c optional hyperv
dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c optional hyperv
dev/hyperv/vmbus/amd64/hv_vector.S optional hyperv
dev/nfe/if_nfe.c optional nfe pci
dev/ntb/if_ntb/if_ntb.c optional if_ntb
dev/ntb/ntb_hw/ntb_hw.c optional if_ntb | ntb_hw
dev/nvd/nvd.c optional nvd nvme
dev/nvme/nvme.c optional nvme
dev/nvme/nvme_ctrlr.c optional nvme
dev/nvme/nvme_ctrlr_cmd.c optional nvme
dev/nvme/nvme_ns.c optional nvme
dev/nvme/nvme_ns_cmd.c optional nvme
dev/nvme/nvme_qpair.c optional nvme
dev/nvme/nvme_sysctl.c optional nvme
dev/nvme/nvme_test.c optional nvme
dev/nvme/nvme_util.c optional nvme
dev/nvram/nvram.c optional nvram isa
dev/random/ivy.c optional rdrand_rng
dev/random/nehemiah.c optional padlock_rng
dev/qlxge/qls_dbg.c optional qlxge pci
dev/qlxge/qls_dump.c optional qlxge pci
dev/qlxge/qls_hw.c optional qlxge pci
dev/qlxge/qls_ioctl.c optional qlxge pci
dev/qlxge/qls_isr.c optional qlxge pci
dev/qlxge/qls_os.c optional qlxge pci
dev/qlxgb/qla_dbg.c optional qlxgb pci
dev/qlxgb/qla_hw.c optional qlxgb pci
dev/qlxgb/qla_ioctl.c optional qlxgb pci
dev/qlxgb/qla_isr.c optional qlxgb pci
dev/qlxgb/qla_misc.c optional qlxgb pci
dev/qlxgb/qla_os.c optional qlxgb pci
dev/qlxgbe/ql_dbg.c optional qlxgbe pci
dev/qlxgbe/ql_hw.c optional qlxgbe pci
dev/qlxgbe/ql_ioctl.c optional qlxgbe pci
dev/qlxgbe/ql_isr.c optional qlxgbe pci
dev/qlxgbe/ql_misc.c optional qlxgbe pci
dev/qlxgbe/ql_os.c optional qlxgbe pci
dev/qlxgbe/ql_reset.c optional qlxgbe pci
dev/sfxge/common/efx_bootcfg.c optional sfxge pci
dev/sfxge/common/efx_crc32.c optional sfxge pci
dev/sfxge/common/efx_ev.c optional sfxge pci
dev/sfxge/common/efx_filter.c optional sfxge pci
dev/sfxge/common/efx_hash.c optional sfxge pci
dev/sfxge/common/efx_intr.c optional sfxge pci
dev/sfxge/common/efx_lic.c optional sfxge pci
dev/sfxge/common/efx_mac.c optional sfxge pci
dev/sfxge/common/efx_mcdi.c optional sfxge pci
dev/sfxge/common/efx_mon.c optional sfxge pci
dev/sfxge/common/efx_nic.c optional sfxge pci
dev/sfxge/common/efx_nvram.c optional sfxge pci
dev/sfxge/common/efx_phy.c optional sfxge pci
dev/sfxge/common/efx_port.c optional sfxge pci
dev/sfxge/common/efx_rx.c optional sfxge pci
dev/sfxge/common/efx_sram.c optional sfxge pci
dev/sfxge/common/efx_tx.c optional sfxge pci
dev/sfxge/common/efx_vpd.c optional sfxge pci
dev/sfxge/common/efx_wol.c optional sfxge pci
-dev/sfxge/common/hunt_ev.c optional sfxge pci
dev/sfxge/common/hunt_filter.c optional sfxge pci
dev/sfxge/common/hunt_intr.c optional sfxge pci
dev/sfxge/common/hunt_mac.c optional sfxge pci
dev/sfxge/common/hunt_mcdi.c optional sfxge pci
dev/sfxge/common/hunt_nic.c optional sfxge pci
dev/sfxge/common/hunt_nvram.c optional sfxge pci
dev/sfxge/common/hunt_phy.c optional sfxge pci
dev/sfxge/common/hunt_rx.c optional sfxge pci
dev/sfxge/common/hunt_sram.c optional sfxge pci
dev/sfxge/common/hunt_tx.c optional sfxge pci
dev/sfxge/common/hunt_vpd.c optional sfxge pci
dev/sfxge/common/siena_mac.c optional sfxge pci
dev/sfxge/common/siena_mcdi.c optional sfxge pci
dev/sfxge/common/siena_nic.c optional sfxge pci
dev/sfxge/common/siena_nvram.c optional sfxge pci
dev/sfxge/common/siena_phy.c optional sfxge pci
dev/sfxge/common/siena_sram.c optional sfxge pci
dev/sfxge/common/siena_vpd.c optional sfxge pci
dev/sfxge/sfxge.c optional sfxge pci
dev/sfxge/sfxge_dma.c optional sfxge pci
dev/sfxge/sfxge_ev.c optional sfxge pci
dev/sfxge/sfxge_intr.c optional sfxge pci
dev/sfxge/sfxge_mcdi.c optional sfxge pci
dev/sfxge/sfxge_nvram.c optional sfxge pci
dev/sfxge/sfxge_port.c optional sfxge pci
dev/sfxge/sfxge_rx.c optional sfxge pci
dev/sfxge/sfxge_tx.c optional sfxge pci
dev/sio/sio.c optional sio
dev/sio/sio_isa.c optional sio isa
dev/sio/sio_pccard.c optional sio pccard
dev/sio/sio_pci.c optional sio pci
dev/sio/sio_puc.c optional sio puc
dev/speaker/spkr.c optional speaker
dev/syscons/apm/apm_saver.c optional apm_saver apm
dev/syscons/scterm-teken.c optional sc
dev/syscons/scvesactl.c optional sc vga vesa
dev/syscons/scvgarndr.c optional sc vga
dev/syscons/scvtb.c optional sc
dev/tpm/tpm.c optional tpm
dev/tpm/tpm_acpi.c optional tpm acpi
dev/tpm/tpm_isa.c optional tpm isa
dev/uart/uart_cpu_x86.c optional uart
dev/viawd/viawd.c optional viawd
dev/vmware/vmxnet3/if_vmx.c optional vmx
dev/wbwd/wbwd.c optional wbwd
dev/wpi/if_wpi.c optional wpi
dev/xen/pci/xen_acpi_pci.c optional xenhvm
dev/xen/pci/xen_pci.c optional xenhvm
dev/isci/isci.c optional isci
dev/isci/isci_controller.c optional isci
dev/isci/isci_domain.c optional isci
dev/isci/isci_interrupt.c optional isci
dev/isci/isci_io_request.c optional isci
dev/isci/isci_logger.c optional isci
dev/isci/isci_oem_parameters.c optional isci
dev/isci/isci_remote_device.c optional isci
dev/isci/isci_sysctl.c optional isci
dev/isci/isci_task_request.c optional isci
dev/isci/isci_timer.c optional isci
dev/isci/scil/sati.c optional isci
dev/isci/scil/sati_abort_task_set.c optional isci
dev/isci/scil/sati_atapi.c optional isci
dev/isci/scil/sati_device.c optional isci
dev/isci/scil/sati_inquiry.c optional isci
dev/isci/scil/sati_log_sense.c optional isci
dev/isci/scil/sati_lun_reset.c optional isci
dev/isci/scil/sati_mode_pages.c optional isci
dev/isci/scil/sati_mode_select.c optional isci
dev/isci/scil/sati_mode_sense.c optional isci
dev/isci/scil/sati_mode_sense_10.c optional isci
dev/isci/scil/sati_mode_sense_6.c optional isci
dev/isci/scil/sati_move.c optional isci
dev/isci/scil/sati_passthrough.c optional isci
dev/isci/scil/sati_read.c optional isci
dev/isci/scil/sati_read_buffer.c optional isci
dev/isci/scil/sati_read_capacity.c optional isci
dev/isci/scil/sati_reassign_blocks.c optional isci
dev/isci/scil/sati_report_luns.c optional isci
dev/isci/scil/sati_request_sense.c optional isci
dev/isci/scil/sati_start_stop_unit.c optional isci
dev/isci/scil/sati_synchronize_cache.c optional isci
dev/isci/scil/sati_test_unit_ready.c optional isci
dev/isci/scil/sati_unmap.c optional isci
dev/isci/scil/sati_util.c optional isci
dev/isci/scil/sati_verify.c optional isci
dev/isci/scil/sati_write.c optional isci
dev/isci/scil/sati_write_and_verify.c optional isci
dev/isci/scil/sati_write_buffer.c optional isci
dev/isci/scil/sati_write_long.c optional isci
dev/isci/scil/sci_abstract_list.c optional isci
dev/isci/scil/sci_base_controller.c optional isci
dev/isci/scil/sci_base_domain.c optional isci
dev/isci/scil/sci_base_iterator.c optional isci
dev/isci/scil/sci_base_library.c optional isci
dev/isci/scil/sci_base_logger.c optional isci
dev/isci/scil/sci_base_memory_descriptor_list.c optional isci
dev/isci/scil/sci_base_memory_descriptor_list_decorator.c optional isci
dev/isci/scil/sci_base_object.c optional isci
dev/isci/scil/sci_base_observer.c optional isci
dev/isci/scil/sci_base_phy.c optional isci
dev/isci/scil/sci_base_port.c optional isci
dev/isci/scil/sci_base_remote_device.c optional isci
dev/isci/scil/sci_base_request.c optional isci
dev/isci/scil/sci_base_state_machine.c optional isci
dev/isci/scil/sci_base_state_machine_logger.c optional isci
dev/isci/scil/sci_base_state_machine_observer.c optional isci
dev/isci/scil/sci_base_subject.c optional isci
dev/isci/scil/sci_util.c optional isci
dev/isci/scil/scic_sds_controller.c optional isci
dev/isci/scil/scic_sds_library.c optional isci
dev/isci/scil/scic_sds_pci.c optional isci
dev/isci/scil/scic_sds_phy.c optional isci
dev/isci/scil/scic_sds_port.c optional isci
dev/isci/scil/scic_sds_port_configuration_agent.c optional isci
dev/isci/scil/scic_sds_remote_device.c optional isci
dev/isci/scil/scic_sds_remote_node_context.c optional isci
dev/isci/scil/scic_sds_remote_node_table.c optional isci
dev/isci/scil/scic_sds_request.c optional isci
dev/isci/scil/scic_sds_sgpio.c optional isci
dev/isci/scil/scic_sds_smp_remote_device.c optional isci
dev/isci/scil/scic_sds_smp_request.c optional isci
dev/isci/scil/scic_sds_ssp_request.c optional isci
dev/isci/scil/scic_sds_stp_packet_request.c optional isci
dev/isci/scil/scic_sds_stp_remote_device.c optional isci
dev/isci/scil/scic_sds_stp_request.c optional isci
dev/isci/scil/scic_sds_unsolicited_frame_control.c optional isci
dev/isci/scil/scif_sas_controller.c optional isci
dev/isci/scil/scif_sas_controller_state_handlers.c optional isci
dev/isci/scil/scif_sas_controller_states.c optional isci
dev/isci/scil/scif_sas_domain.c optional isci
dev/isci/scil/scif_sas_domain_state_handlers.c optional isci
dev/isci/scil/scif_sas_domain_states.c optional isci
dev/isci/scil/scif_sas_high_priority_request_queue.c optional isci
dev/isci/scil/scif_sas_internal_io_request.c optional isci
dev/isci/scil/scif_sas_io_request.c optional isci
dev/isci/scil/scif_sas_io_request_state_handlers.c optional isci
dev/isci/scil/scif_sas_io_request_states.c optional isci
dev/isci/scil/scif_sas_library.c optional isci
dev/isci/scil/scif_sas_remote_device.c optional isci
dev/isci/scil/scif_sas_remote_device_ready_substate_handlers.c optional isci
dev/isci/scil/scif_sas_remote_device_ready_substates.c optional isci
dev/isci/scil/scif_sas_remote_device_starting_substate_handlers.c optional isci
dev/isci/scil/scif_sas_remote_device_starting_substates.c optional isci
dev/isci/scil/scif_sas_remote_device_state_handlers.c optional isci
dev/isci/scil/scif_sas_remote_device_states.c optional isci
dev/isci/scil/scif_sas_request.c optional isci
dev/isci/scil/scif_sas_smp_activity_clear_affiliation.c optional isci
dev/isci/scil/scif_sas_smp_io_request.c optional isci
dev/isci/scil/scif_sas_smp_phy.c optional isci
dev/isci/scil/scif_sas_smp_remote_device.c optional isci
dev/isci/scil/scif_sas_stp_io_request.c optional isci
dev/isci/scil/scif_sas_stp_remote_device.c optional isci
dev/isci/scil/scif_sas_stp_task_request.c optional isci
dev/isci/scil/scif_sas_task_request.c optional isci
dev/isci/scil/scif_sas_task_request_state_handlers.c optional isci
dev/isci/scil/scif_sas_task_request_states.c optional isci
dev/isci/scil/scif_sas_timer.c optional isci
isa/syscons_isa.c optional sc
isa/vga_isa.c optional vga
kern/kern_clocksource.c standard
kern/link_elf_obj.c standard
#
# IA32 binary support
#
#amd64/ia32/ia32_exception.S optional compat_freebsd32
amd64/ia32/ia32_reg.c optional compat_freebsd32
amd64/ia32/ia32_signal.c optional compat_freebsd32
amd64/ia32/ia32_sigtramp.S optional compat_freebsd32
amd64/ia32/ia32_syscall.c optional compat_freebsd32
amd64/ia32/ia32_misc.c optional compat_freebsd32
compat/ia32/ia32_sysvec.c optional compat_freebsd32
compat/linprocfs/linprocfs.c optional linprocfs
compat/linsysfs/linsysfs.c optional linsysfs
#
# Linux/i386 binary support
#
amd64/linux32/linux32_dummy.c optional compat_linux32
amd64/linux32/linux32_machdep.c optional compat_linux32
amd64/linux32/linux32_support.s optional compat_linux32 \
dependency "linux32_assym.h"
amd64/linux32/linux32_sysent.c optional compat_linux32
amd64/linux32/linux32_sysvec.c optional compat_linux32
compat/linux/linux_emul.c optional compat_linux32
compat/linux/linux_file.c optional compat_linux32
compat/linux/linux_fork.c optional compat_linux32
compat/linux/linux_futex.c optional compat_linux32
compat/linux/linux_getcwd.c optional compat_linux32
compat/linux/linux_ioctl.c optional compat_linux32
compat/linux/linux_ipc.c optional compat_linux32
compat/linux/linux_mib.c optional compat_linux32
compat/linux/linux_misc.c optional compat_linux32
compat/linux/linux_signal.c optional compat_linux32
compat/linux/linux_socket.c optional compat_linux32
compat/linux/linux_stats.c optional compat_linux32
compat/linux/linux_sysctl.c optional compat_linux32
compat/linux/linux_time.c optional compat_linux32
compat/linux/linux_timer.c optional compat_linux32
compat/linux/linux_uid16.c optional compat_linux32
compat/linux/linux_util.c optional compat_linux32
compat/linux/linux_vdso.c optional compat_linux32
compat/linux/linux_common.c optional compat_linux32
compat/linux/linux_event.c optional compat_linux32
compat/linux/linux.c optional compat_linux32
dev/amr/amr_linux.c optional compat_linux32 amr
dev/mfi/mfi_linux.c optional compat_linux32 mfi
#
# Windows NDIS driver support
#
compat/ndis/kern_ndis.c optional ndisapi pci
compat/ndis/kern_windrv.c optional ndisapi pci
compat/ndis/subr_hal.c optional ndisapi pci
compat/ndis/subr_ndis.c optional ndisapi pci
compat/ndis/subr_ntoskrnl.c optional ndisapi pci
compat/ndis/subr_pe.c optional ndisapi pci
compat/ndis/subr_usbd.c optional ndisapi pci
compat/ndis/winx64_wrap.S optional ndisapi pci
#
libkern/memmove.c standard
libkern/memset.c standard
#
# x86 real mode BIOS emulator, required by dpms/pci/vesa
#
compat/x86bios/x86bios.c optional x86bios | dpms | pci | vesa
contrib/x86emu/x86emu.c optional x86bios | dpms | pci | vesa
#
# bvm console
#
dev/bvm/bvm_console.c optional bvmconsole
dev/bvm/bvm_dbg.c optional bvmdebug
#
# x86 shared code between IA32, AMD64 and PC98 architectures
#
x86/acpica/OsdEnvironment.c optional acpi
x86/acpica/acpi_apm.c optional acpi
x86/acpica/acpi_wakeup.c optional acpi
x86/acpica/madt.c optional acpi
x86/acpica/srat.c optional acpi
x86/bios/smbios.c optional smbios
x86/bios/vpd.c optional vpd
x86/cpufreq/powernow.c optional cpufreq
x86/cpufreq/est.c optional cpufreq
x86/cpufreq/hwpstate.c optional cpufreq
x86/cpufreq/p4tcc.c optional cpufreq
x86/iommu/busdma_dmar.c optional acpi acpi_dmar pci
x86/iommu/intel_ctx.c optional acpi acpi_dmar pci
x86/iommu/intel_drv.c optional acpi acpi_dmar pci
x86/iommu/intel_fault.c optional acpi acpi_dmar pci
x86/iommu/intel_gas.c optional acpi acpi_dmar pci
x86/iommu/intel_idpgtbl.c optional acpi acpi_dmar pci
x86/iommu/intel_intrmap.c optional acpi acpi_dmar pci
x86/iommu/intel_qi.c optional acpi acpi_dmar pci
x86/iommu/intel_quirks.c optional acpi acpi_dmar pci
x86/iommu/intel_utils.c optional acpi acpi_dmar pci
x86/isa/atpic.c optional atpic isa
x86/isa/atrtc.c standard
x86/isa/clock.c standard
x86/isa/elcr.c optional atpic isa | mptable
x86/isa/isa.c standard
x86/isa/isa_dma.c standard
x86/isa/nmi.c standard
x86/isa/orm.c optional isa
x86/pci/pci_bus.c optional pci
x86/pci/qpi.c optional pci
x86/x86/autoconf.c standard
x86/x86/bus_machdep.c standard
x86/x86/busdma_bounce.c standard
x86/x86/busdma_machdep.c standard
x86/x86/cpu_machdep.c standard
x86/x86/dump_machdep.c standard
x86/x86/fdt_machdep.c optional fdt
x86/x86/identcpu.c standard
x86/x86/intr_machdep.c standard
x86/x86/io_apic.c standard
x86/x86/legacy.c standard
x86/x86/local_apic.c standard
x86/x86/mca.c standard
x86/x86/mptable.c optional mptable
x86/x86/mptable_pci.c optional mptable pci
x86/x86/mp_x86.c optional smp
x86/x86/msi.c optional pci
x86/x86/nexus.c standard
x86/x86/pvclock.c standard
x86/x86/stack_machdep.c optional ddb | stack
x86/x86/tsc.c standard
x86/x86/delay.c standard
x86/xen/hvm.c optional xenhvm
x86/xen/xen_intr.c optional xenhvm
x86/xen/pv.c optional xenhvm
x86/xen/pvcpu_enum.c optional xenhvm
x86/xen/xen_apic.c optional xenhvm
x86/xen/xenpv.c optional xenhvm
x86/xen/xen_nexus.c optional xenhvm
x86/xen/xen_msi.c optional xenhvm
x86/xen/xen_pci_bus.c optional xenhvm
Index: user/ngie/bsnmp_cleanup/sys/conf/kmod.mk
===================================================================
--- user/ngie/bsnmp_cleanup/sys/conf/kmod.mk (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/conf/kmod.mk (revision 299697)
@@ -1,483 +1,483 @@
# From: @(#)bsd.prog.mk 5.26 (Berkeley) 6/25/91
# $FreeBSD$
#
# The include file <bsd.kmod.mk> handles building and installing loadable
# kernel modules.
#
#
# +++ variables +++
#
# CLEANFILES Additional files to remove for the clean and cleandir targets.
#
# EXPORT_SYMS A list of symbols that should be exported from the module,
# or the name of a file containing a list of symbols, or YES
# to export all symbols. If not defined, no symbols are
# exported.
#
# KMOD The name of the kernel module to build.
#
# KMODDIR Base path for kernel modules (see kld(4)). [/boot/kernel]
#
# KMODOWN Module file owner. [${BINOWN}]
#
# KMODGRP Module file group. [${BINGRP}]
#
# KMODMODE Module file mode. [${BINMODE}]
#
# KMODLOAD Command to load a kernel module [/sbin/kldload]
#
# KMODUNLOAD Command to unload a kernel module [/sbin/kldunload]
#
# KMODISLOADED Command to check whether a kernel module is
# loaded [/sbin/kldstat -q -n]
#
# PROG The name of the kernel module to build.
# If not supplied, ${KMOD}.ko is used.
#
# SRCS List of source files.
#
# FIRMWS List of firmware images in format filename:shortname:version
#
# FIRMWARE_LICENSE
# Set to the name of the license the user has to agree on in
# order to use this firmware. See /usr/share/doc/legal
#
# DESTDIR The tree where the module gets installed. [not set]
#
# +++ targets +++
#
# install:
# install the kernel module; if the Makefile
# does not itself define the target install, the targets
# beforeinstall and afterinstall may also be used to cause
# actions immediately before and after the install target
# is executed.
#
# load:
# Load a module.
#
# unload:
# Unload a module.
#
# reload:
# Unload if loaded, then load.
#
AWK?= awk
KMODLOAD?= /sbin/kldload
KMODUNLOAD?= /sbin/kldunload
KMODISLOADED?= /sbin/kldstat -q -n
OBJCOPY?= objcopy
.include <bsd.init.mk>
# Grab all the options for a kernel build. For backwards compat, we need to
# do this after bsd.own.mk.
.include "kern.opts.mk"
.include <bsd.compiler.mk>
.include "config.mk"
.SUFFIXES: .out .o .c .cc .cxx .C .y .l .s .S .m
# amd64 and mips use direct linking for kmod, all others use shared binaries
.if ${MACHINE_CPUARCH} != amd64 && ${MACHINE_CPUARCH} != mips
__KLD_SHARED=yes
.else
__KLD_SHARED=no
.endif
.if !empty(CFLAGS:M-O[23s]) && empty(CFLAGS:M-fno-strict-aliasing)
CFLAGS+= -fno-strict-aliasing
.endif
WERROR?= -Werror
CFLAGS+= ${WERROR}
CFLAGS+= -D_KERNEL
CFLAGS+= -DKLD_MODULE
# Don't use any standard or source-relative include directories.
NOSTDINC= -nostdinc
CFLAGS:= ${CFLAGS:N-I*} ${NOSTDINC} ${INCLMAGIC} ${CFLAGS:M-I*}
.if defined(KERNBUILDDIR)
CFLAGS+= -DHAVE_KERNEL_OPTION_HEADERS -include ${KERNBUILDDIR}/opt_global.h
.endif
# Add -I paths for system headers. Individual module makefiles don't
# need any -I paths for this. Similar defaults for .PATH can't be
# set because there are no standard paths for non-headers.
CFLAGS+= -I. -I${SYSDIR}
CFLAGS.gcc+= -finline-limit=${INLINE_LIMIT}
CFLAGS.gcc+= -fms-extensions
CFLAGS.gcc+= --param inline-unit-growth=100
CFLAGS.gcc+= --param large-function-growth=1000
# Disallow common variables, and if we end up with commons from
# somewhere unexpected, allocate storage for them in the module itself.
CFLAGS+= -fno-common
LDFLAGS+= -d -warn-common
CFLAGS+= ${DEBUG_FLAGS}
.if ${MACHINE_CPUARCH} == amd64
CFLAGS+= -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer
.endif
.if ${MACHINE_CPUARCH} == "aarch64"
CFLAGS+= -fPIC
.endif
# Temporary workaround for PR 196407, which contains the fascinating details.
# Don't allow clang to use fpu instructions or registers in kernel modules.
.if ${MACHINE_CPUARCH} == arm
.if ${COMPILER_VERSION} < 30800
CFLAGS.clang+= -mllvm -arm-use-movt=0
.else
CFLAGS.clang+= -mno-movt
.endif
CFLAGS.clang+= -mfpu=none
CFLAGS+= -funwind-tables
.endif
.if ${MACHINE_CPUARCH} == powerpc
CFLAGS+= -mlongcall -fno-omit-frame-pointer
.endif
.if ${MACHINE_CPUARCH} == mips
CFLAGS+= -G0 -fno-pic -mno-abicalls -mlong-calls
.endif
.if defined(DEBUG) || defined(DEBUG_FLAGS)
CTFFLAGS+= -g
.endif
.if defined(FIRMWS)
${KMOD:S/$/.c/}: ${SYSDIR}/tools/fw_stub.awk
${AWK} -f ${SYSDIR}/tools/fw_stub.awk ${FIRMWS} -m${KMOD} -c${KMOD:S/$/.c/g} \
${FIRMWARE_LICENSE:C/.+/-l/}${FIRMWARE_LICENSE}
SRCS+= ${KMOD:S/$/.c/}
CLEANFILES+= ${KMOD:S/$/.c/}
.for _firmw in ${FIRMWS}
${_firmw:C/\:.*$/.fwo/:T}: ${_firmw:C/\:.*$//}
@${ECHO} ${_firmw:C/\:.*$//} ${.ALLSRC:M*${_firmw:C/\:.*$//}}
@if [ -e ${_firmw:C/\:.*$//} ]; then \
${LD} -b binary --no-warn-mismatch ${_LDFLAGS} \
-r -d -o ${.TARGET} ${_firmw:C/\:.*$//}; \
else \
ln -s ${.ALLSRC:M*${_firmw:C/\:.*$//}} ${_firmw:C/\:.*$//}; \
${LD} -b binary --no-warn-mismatch ${_LDFLAGS} \
-r -d -o ${.TARGET} ${_firmw:C/\:.*$//}; \
rm ${_firmw:C/\:.*$//}; \
fi
OBJS+= ${_firmw:C/\:.*$/.fwo/:T}
.endfor
.endif
# Conditionally include SRCS based on kernel config options.
.for _o in ${KERN_OPTS}
SRCS+=${SRCS.${_o}}
.endfor
OBJS+= ${SRCS:N*.h:R:S/$/.o/g}
.if !defined(PROG)
PROG= ${KMOD}.ko
.endif
.if !defined(DEBUG_FLAGS)
FULLPROG= ${PROG}
.else
FULLPROG= ${PROG}.full
${PROG}: ${FULLPROG} ${PROG}.debug
${OBJCOPY} --strip-debug --add-gnu-debuglink=${PROG}.debug \
${FULLPROG} ${.TARGET}
${PROG}.debug: ${FULLPROG}
${OBJCOPY} --only-keep-debug ${FULLPROG} ${.TARGET}
.endif
.if ${__KLD_SHARED} == yes
${FULLPROG}: ${KMOD}.kld
.if ${MACHINE_CPUARCH} != "aarch64"
${LD} -Bshareable ${_LDFLAGS} -o ${.TARGET} ${KMOD}.kld
.else
#XXXKIB Relocatable linking in aarch64 ld from binutils 2.25.1 does
# not work. The linker corrupts the references to the external
# symbols which are defined by other object in the linking set
# and should therefore loose the GOT entry. The problem seems
# to be fixed in the binutils-gdb git HEAD as of 2015-10-04. Hack
# below allows to get partially functioning modules for now.
${LD} -Bshareable ${_LDFLAGS} -o ${.TARGET} ${OBJS}
.endif
.if !defined(DEBUG_FLAGS)
${OBJCOPY} --strip-debug ${.TARGET}
.endif
.endif
EXPORT_SYMS?= NO
.if ${EXPORT_SYMS} != YES
CLEANFILES+= export_syms
.endif
.if ${__KLD_SHARED} == yes
${KMOD}.kld: ${OBJS}
.else
${FULLPROG}: ${OBJS}
.endif
${LD} ${_LDFLAGS} -r -d -o ${.TARGET} ${OBJS}
.if ${MK_CTF} != "no"
${CTFMERGE} ${CTFFLAGS} -o ${.TARGET} ${OBJS}
.endif
.if defined(EXPORT_SYMS)
.if ${EXPORT_SYMS} != YES
.if ${EXPORT_SYMS} == NO
:> export_syms
.elif !exists(${.CURDIR}/${EXPORT_SYMS})
echo ${EXPORT_SYMS} > export_syms
.else
grep -v '^#' < ${EXPORT_SYMS} > export_syms
.endif
${AWK} -f ${SYSDIR}/conf/kmod_syms.awk ${.TARGET} \
export_syms | xargs -J% ${OBJCOPY} % ${.TARGET}
.endif
.endif
.if !defined(DEBUG_FLAGS) && ${__KLD_SHARED} == no
${OBJCOPY} --strip-debug ${.TARGET}
.endif
_ILINKS=machine
.if ${MACHINE} != ${MACHINE_CPUARCH} && ${MACHINE} != "arm64"
_ILINKS+=${MACHINE_CPUARCH}
.endif
.if ${MACHINE_CPUARCH} == "i386" || ${MACHINE_CPUARCH} == "amd64"
_ILINKS+=x86
.endif
CLEANFILES+=${_ILINKS}
all: ${PROG}
beforedepend: ${_ILINKS}
beforebuild: ${_ILINKS}
# Ensure that the links exist without depending on it when it exists which
# causes all the modules to be rebuilt when the directory pointed to changes.
.for _link in ${_ILINKS}
.if !exists(${.OBJDIR}/${_link})
${OBJS}: ${_link}
.endif
.endfor
# Search for kernel source tree in standard places.
.for _dir in ${.CURDIR}/../.. ${.CURDIR}/../../.. /sys /usr/src/sys
.if !defined(SYSDIR) && exists(${_dir}/kern/)
SYSDIR= ${_dir}
.endif
.endfor
.if !defined(SYSDIR) || !exists(${SYSDIR}/kern/)
.error "can't find kernel source tree"
.endif
.NOPATH: ${_ILINKS}
${_ILINKS}:
@case ${.TARGET} in \
machine) \
path=${SYSDIR}/${MACHINE}/include ;; \
*) \
path=${SYSDIR}/${.TARGET:T}/include ;; \
esac ; \
path=`(cd $$path && /bin/pwd)` ; \
${ECHO} ${.TARGET:T} "->" $$path ; \
ln -sf $$path ${.TARGET:T}
CLEANFILES+= ${PROG} ${KMOD}.kld ${OBJS}
.if defined(DEBUG_FLAGS)
CLEANFILES+= ${FULLPROG} ${PROG}.debug
.endif
.if !target(install)
_INSTALLFLAGS:= ${INSTALLFLAGS}
.for ie in ${INSTALLFLAGS_EDIT}
_INSTALLFLAGS:= ${_INSTALLFLAGS${ie}}
.endfor
.if !target(realinstall)
KERN_DEBUGDIR?= ${DEBUGDIR}
realinstall: _kmodinstall
.ORDER: beforeinstall _kmodinstall
_kmodinstall:
${INSTALL} -T release -o ${KMODOWN} -g ${KMODGRP} -m ${KMODMODE} \
${_INSTALLFLAGS} ${PROG} ${DESTDIR}${KMODDIR}/
.if defined(DEBUG_FLAGS) && !defined(INSTALL_NODEBUG) && ${MK_KERNEL_SYMBOLS} != "no"
${INSTALL} -T debug -o ${KMODOWN} -g ${KMODGRP} -m ${KMODMODE} \
${_INSTALLFLAGS} ${PROG}.debug ${DESTDIR}${KERN_DEBUGDIR}${KMODDIR}/
.endif
.include <bsd.links.mk>
.if !defined(NO_XREF)
afterinstall: _kldxref
.ORDER: realinstall _kldxref
.ORDER: _installlinks _kldxref
_kldxref:
@if type kldxref >/dev/null 2>&1; then \
${ECHO} kldxref ${DESTDIR}${KMODDIR}; \
kldxref ${DESTDIR}${KMODDIR}; \
fi
.endif
.endif # !target(realinstall)
.endif # !target(install)
.if !target(load)
load: ${PROG}
${KMODLOAD} -v ${.OBJDIR}/${PROG}
.endif
.if !target(unload)
unload:
if ${KMODISLOADED} ${PROG} ; then ${KMODUNLOAD} -v ${PROG} ; fi
.endif
.if !target(reload)
reload: unload load
.endif
.if defined(KERNBUILDDIR)
.PATH: ${KERNBUILDDIR}
CFLAGS+= -I${KERNBUILDDIR}
.for _src in ${SRCS:Mopt_*.h}
CLEANFILES+= ${_src}
.if !target(${_src})
${_src}:
ln -sf ${KERNBUILDDIR}/${_src} ${.TARGET}
.endif
.endfor
.else
.for _src in ${SRCS:Mopt_*.h}
CLEANFILES+= ${_src}
.if !target(${_src})
${_src}:
:> ${.TARGET}
.endif
.endfor
.endif
# Respect configuration-specific C flags.
CFLAGS+= ${CONF_CFLAGS}
.if !empty(SRCS:Mvnode_if.c)
CLEANFILES+= vnode_if.c
vnode_if.c: ${SYSDIR}/tools/vnode_if.awk ${SYSDIR}/kern/vnode_if.src
${AWK} -f ${SYSDIR}/tools/vnode_if.awk ${SYSDIR}/kern/vnode_if.src -c
.endif
.if !empty(SRCS:Mvnode_if.h)
CLEANFILES+= vnode_if.h vnode_if_newproto.h vnode_if_typedef.h
vnode_if.h vnode_if_newproto.h vnode_if_typedef.h: ${SYSDIR}/tools/vnode_if.awk \
${SYSDIR}/kern/vnode_if.src
vnode_if.h: vnode_if_newproto.h vnode_if_typedef.h
${AWK} -f ${SYSDIR}/tools/vnode_if.awk ${SYSDIR}/kern/vnode_if.src -h
vnode_if_newproto.h:
${AWK} -f ${SYSDIR}/tools/vnode_if.awk ${SYSDIR}/kern/vnode_if.src -p
vnode_if_typedef.h:
${AWK} -f ${SYSDIR}/tools/vnode_if.awk ${SYSDIR}/kern/vnode_if.src -q
.endif
# Build _if.[ch] from _if.m, and clean them when we're done.
# __MPATH defined in config.mk
_MFILES=${__MPATH:T:O}
_MPATH=${__MPATH:H:O:u}
.PATH.m: ${_MPATH}
.for _i in ${SRCS:M*_if.[ch]}
_MATCH=M${_i:R:S/$/.m/}
_MATCHES=${_MFILES:${_MATCH}}
.if !empty(_MATCHES)
CLEANFILES+= ${_i}
.endif
.endfor # _i
.m.c: ${SYSDIR}/tools/makeobjops.awk
${AWK} -f ${SYSDIR}/tools/makeobjops.awk ${.IMPSRC} -c
.m.h: ${SYSDIR}/tools/makeobjops.awk
${AWK} -f ${SYSDIR}/tools/makeobjops.awk ${.IMPSRC} -h
.for _i in mii pccard
.if !empty(SRCS:M${_i}devs.h)
CLEANFILES+= ${_i}devs.h
${_i}devs.h: ${SYSDIR}/tools/${_i}devs2h.awk ${SYSDIR}/dev/${_i}/${_i}devs
${AWK} -f ${SYSDIR}/tools/${_i}devs2h.awk ${SYSDIR}/dev/${_i}/${_i}devs
.endif
.endfor # _i
.if !empty(SRCS:Mbhnd_nvram_map.h)
CLEANFILES+= bhnd_nvram_map.h
bhnd_nvram_map.h: ${SYSDIR}/dev/bhnd/tools/nvram_map_gen.awk \
${SYSDIR}/dev/bhnd/tools/nvram_map_gen.sh \
${SYSDIR}/dev/bhnd/nvram/nvram_map
bhnd_nvram_map.h:
- ${SYSDIR}/dev/bhnd/tools/nvram_map_gen.sh \
+ sh ${SYSDIR}/dev/bhnd/tools/nvram_map_gen.sh \
${SYSDIR}/dev/bhnd/nvram/nvram_map -h
.endif
.if !empty(SRCS:Mbhnd_nvram_map_data.h)
CLEANFILES+= bhnd_nvram_map_data.h
bhnd_nvram_map_data.h: ${SYSDIR}/dev/bhnd/tools/nvram_map_gen.awk \
${SYSDIR}/dev/bhnd/tools/nvram_map_gen.sh \
${SYSDIR}/dev/bhnd/nvram/nvram_map
bhnd_nvram_map_data.h:
- ${SYSDIR}/dev/bhnd/tools/nvram_map_gen.sh \
+ sh ${SYSDIR}/dev/bhnd/tools/nvram_map_gen.sh \
${SYSDIR}/dev/bhnd/nvram/nvram_map -d
.endif
.if !empty(SRCS:Musbdevs.h)
CLEANFILES+= usbdevs.h
usbdevs.h: ${SYSDIR}/tools/usbdevs2h.awk ${SYSDIR}/dev/usb/usbdevs
${AWK} -f ${SYSDIR}/tools/usbdevs2h.awk ${SYSDIR}/dev/usb/usbdevs -h
.endif
.if !empty(SRCS:Musbdevs_data.h)
CLEANFILES+= usbdevs_data.h
usbdevs_data.h: ${SYSDIR}/tools/usbdevs2h.awk ${SYSDIR}/dev/usb/usbdevs
${AWK} -f ${SYSDIR}/tools/usbdevs2h.awk ${SYSDIR}/dev/usb/usbdevs -d
.endif
.if !empty(SRCS:Macpi_quirks.h)
CLEANFILES+= acpi_quirks.h
acpi_quirks.h: ${SYSDIR}/tools/acpi_quirks2h.awk ${SYSDIR}/dev/acpica/acpi_quirks
${AWK} -f ${SYSDIR}/tools/acpi_quirks2h.awk ${SYSDIR}/dev/acpica/acpi_quirks
.endif
.if !empty(SRCS:Massym.s)
CLEANFILES+= assym.s genassym.o
assym.s: genassym.o
.if defined(KERNBUILDDIR)
genassym.o: opt_global.h
.endif
assym.s: ${SYSDIR}/kern/genassym.sh
sh ${SYSDIR}/kern/genassym.sh genassym.o > ${.TARGET}
genassym.o: ${SYSDIR}/${MACHINE}/${MACHINE}/genassym.c
genassym.o: ${SRCS:Mopt_*.h}
${CC} -c ${CFLAGS:N-fno-common} \
${SYSDIR}/${MACHINE}/${MACHINE}/genassym.c
.endif
lint: ${SRCS}
${LINT} ${LINTKERNFLAGS} ${CFLAGS:M-[DILU]*} ${.ALLSRC:M*.c}
.if defined(KERNBUILDDIR)
${OBJS}: opt_global.h
.endif
CLEANDEPENDFILES+= ${_ILINKS}
# .depend needs include links so we remove them only together.
cleanilinks:
rm -f ${_ILINKS}
OBJS_DEPEND_GUESS+= ${SRCS:M*.h}
.include <bsd.dep.mk>
.include <bsd.clang-analyze.mk>
.include <bsd.obj.mk>
.include "kern.mk"
Index: user/ngie/bsnmp_cleanup/sys/conf/options.arm
===================================================================
--- user/ngie/bsnmp_cleanup/sys/conf/options.arm (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/conf/options.arm (revision 299697)
@@ -1,78 +1,79 @@
#$FreeBSD$
ARMV6 opt_global.h
ARM_CACHE_LOCK_ENABLE opt_global.h
ARM_KERN_DIRECTMAP opt_vm.h
ARM_L2_PIPT opt_global.h
ARM_MANY_BOARD opt_global.h
NKPT2PG opt_pmap.h
ARM_WANT_TP_ADDRESS opt_global.h
COUNTS_PER_SEC opt_timer.h
CPU_ARM9 opt_global.h
CPU_ARM9E opt_global.h
CPU_ARM1176 opt_global.h
CPU_CORTEXA opt_global.h
CPU_KRAIT opt_global.h
CPU_FA526 opt_global.h
CPU_MV_PJ4B opt_global.h
CPU_XSCALE_81342 opt_global.h
CPU_XSCALE_IXP425 opt_global.h
CPU_XSCALE_IXP435 opt_global.h
CPU_XSCALE_PXA2X0 opt_global.h
DEV_GIC opt_global.h
DEV_PMU opt_global.h
EFI opt_platform.h
FLASHADDR opt_global.h
GIC_DEFAULT_ICFGR_INIT opt_global.h
INTRNG opt_global.h
IPI_IRQ_START opt_smp.h
IPI_IRQ_END opt_smp.h
FREEBSD_BOOT_LOADER opt_global.h
IXP4XX_FLASH_SIZE opt_global.h
KERNBASE opt_global.h
KERNVIRTADDR opt_global.h
LINUX_BOOT_ABI opt_global.h
LOADERRAMADDR opt_global.h
MULTIDELAY opt_global.h
PHYSADDR opt_global.h
PLATFORM opt_global.h
PLATFORM_SMP opt_global.h
SOCDEV_PA opt_global.h
SOCDEV_VA opt_global.h
PV_STATS opt_pmap.h
QEMU_WORKAROUNDS opt_global.h
SOC_ALLWINNER_A10 opt_global.h
SOC_ALLWINNER_A20 opt_global.h
SOC_ALLWINNER_A31 opt_global.h
SOC_ALLWINNER_A31S opt_global.h
SOC_ALLWINNER_A83T opt_global.h
+SOC_ALLWINNER_H3 opt_global.h
SOC_BCM2835 opt_global.h
SOC_BCM2836 opt_global.h
SOC_IMX51 opt_global.h
SOC_IMX53 opt_global.h
SOC_IMX6 opt_global.h
SOC_MV_ARMADAXP opt_global.h
SOC_MV_ARMADA38X opt_global.h
SOC_MV_DISCOVERY opt_global.h
SOC_MV_DOVE opt_global.h
SOC_MV_FREY opt_global.h
SOC_MV_KIRKWOOD opt_global.h
SOC_MV_LOKIPLUS opt_global.h
SOC_MV_ORION opt_global.h
SOC_OMAP3 opt_global.h
SOC_OMAP4 opt_global.h
SOC_TI_AM335X opt_global.h
SOC_TEGRA2 opt_global.h
XSCALE_CACHE_READ_WRITE_ALLOCATE opt_global.h
XSACLE_DISABLE_CCNT opt_timer.h
VERBOSE_INIT_ARM opt_global.h
VM_MAXUSER_ADDRESS opt_global.h
AT91_ATE_USE_RMII opt_at91.h
AT91_MACB_USE_RMII opt_at91.h
AT91_MCI_ALLOW_OVERCLOCK opt_at91.h
AT91_MCI_HAS_4WIRE opt_at91.h
AT91_MCI_SLOT_B opt_at91.h
GFB_DEBUG opt_gfb.h
GFB_NO_FONT_LOADING opt_gfb.h
GFB_NO_MODE_CHANGE opt_gfb.h
AT91C_MAIN_CLOCK opt_at91.h
VFP opt_global.h
Index: user/ngie/bsnmp_cleanup/sys/dev/bhnd/tools/nvram_map_gen.sh
===================================================================
--- user/ngie/bsnmp_cleanup/sys/dev/bhnd/tools/nvram_map_gen.sh (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/dev/bhnd/tools/nvram_map_gen.sh (revision 299697)
@@ -1,12 +1,12 @@
#!/bin/sh
# Use C locale to ensure AWK string comparisons always produce
# a stable sort order.
# $FreeBSD$
BHND_TOOLDIR="$(dirname $0)/"
LC_ALL=C; export LC_ALL
-"$BHND_TOOLDIR/nvram_map_gen.awk" $@
+"${AWK:-/usr/bin/awk}" -f "$BHND_TOOLDIR/nvram_map_gen.awk" $@
Index: user/ngie/bsnmp_cleanup/sys/dev/bwn/if_bwnreg.h
===================================================================
--- user/ngie/bsnmp_cleanup/sys/dev/bwn/if_bwnreg.h (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/dev/bwn/if_bwnreg.h (revision 299697)
@@ -1,1004 +1,1075 @@
/*-
* Copyright (c) 2009-2010 Weongyo Jeong <weongyo@freebsd.org>
* 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,
* without modification.
* 2. Redistributions in binary form must reproduce at minimum a disclaimer
* similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any
* redistribution must be conditioned upon including a substantially
* similar Disclaimer requirement for further binary redistribution.
*
* NO WARRANTY
* 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 NONINFRINGEMENT, MERCHANTIBILITY
* AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR 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 DAMAGES.
*
* $FreeBSD$
*/
#ifndef _IF_BWNREG_H
#define _IF_BWNREG_H
#define PCI_VENDOR_COMPAQ 0x0e11
#define PCI_VENDOR_DELL 0x1028
#define PCI_VENDOR_HP 0x103c
#define PCI_VENDOR_ASUSTEK 0x1043
#define PCI_VENDOR_MOTOROLA 0x1057
#define PCI_VENDOR_APPLE 0x106b
#define PCI_VENDOR_BROADCOM 0x14e4
#define PCI_VENDOR_LINKSYS 0x1737
#define BWN_BFL_BTCOEXIST 0x0001
#define BWN_BFL_PACTRL 0x0002
#define BWN_BFL_RSSI 0x0008
#define BWN_BFL_CRYSTAL_NOSLOW 0x0020
#define BWN_BFL_FEM 0x0800
#define BWN_BFL_EXTLNA 0x1000
#define BWN_BFL_HGPA 0x2000 /* had high gain PA */
#define BWN_BFL_BTCMOD 0x4000
#define BWN_BFL_ALTIQ 0x8000
#define BWN_BFH_NOPA 0x0001
#define BWN_BFH_RSSIINV 0x0002
#define BWN_BFH_LDO_PAREF 0x0004
#define BWN_BFH_FEM_BT 0x0040
-#define BWN_TGSLOW_SUPPORT_G 0x20000000
-#define BWN_TGSLOW_PHYRESET 0x00080000
#define BWN_TGSLOW_PHYCLOCK_ENABLE 0x00040000
+#define BWN_TGSLOW_PHYRESET 0x00080000
+#define BWN_TMSLOW_MACPHYCLKEN 0x00100000 /* MAC PHY Clock Control Enable (rev >= 5) */
+#define BWN_TMSLOW_PLLREFSEL 0x00200000 /* PLL Frequency Reference Select (rev >= 5) */
+/* PHY_BANDWIDTH: N-PHY only */
+#define BWN_TGSLOW_PHY_BANDWIDTH 0x00C00000
+#define BWN_TGSLOW_PHY_BANDWIDTH_10MHZ 0x00000000
+#define BWN_TGSLOW_PHY_BANDWIDTH_20MHZ 0x00400000
+#define BWN_TGSLOW_PHY_BANDWIDTH_40MHZ 0x00800000
+#define BWN_TGSLOW_SUPPORT_G 0x20000000
+
#define BWN_TGSHIGH_HAVE_2GHZ 0x00010000
#define BWN_TGSHIGH_HAVE_5GHZ 0x00020000
#define BWN_PHYTYPE_A 0x00
#define BWN_PHYTYPE_B 0x01
#define BWN_PHYTYPE_G 0x02
#define BWN_PHYTYPE_N 0x04
#define BWN_PHYTYPE_LP 0x05
#define BWN_PHYTYPE_SSLPN 0x06
#define BWN_PHYTYPE_HT 0x07
#define BWN_PHYTYPE_LCN 0x08
#define BWN_PHYTYPE_LCNXN 0x09
#define BWN_PHYTYPE_LCN40 0x0a
#define BWN_PHYTYPE_AC 0x0b
#define BWN_DMA0_REASON 0x20
#define BWN_DMA0_INTR_MASK 0x24
#define BWN_DMA1_REASON 0x28
#define BWN_DMA1_INTR_MASK 0x2c
#define BWN_DMA2_REASON 0x30
#define BWN_DMA2_INTR_MASK 0x34
#define BWN_DMA3_REASON 0x38
#define BWN_DMA3_INTR_MASK 0x3c
#define BWN_DMA4_REASON 0x40
#define BWN_DMA4_INTR_MASK 0x44
#define BWN_DMA5_INTR_MASK 0x4c
+
#define BWN_MACCTL 0x120
#define BWN_MACCTL_ON 0x00000001
#define BWN_MACCTL_MCODE_RUN 0x00000002
#define BWN_MACCTL_MCODE_JMP0 0x00000004
#define BWN_MACCTL_SHM_ON 0x00000100
#define BWN_MACCTL_IHR_ON 0x00000400
#define BWN_MACCTL_GPOUT_MASK 0x0000c000
#define BWN_MACCTL_BIGENDIAN 0x00010000
#define BWN_MACCTL_STA 0x00020000
#define BWN_MACCTL_HOSTAP 0x00040000
#define BWN_MACCTL_RADIO_LOCK 0x00080000
#define BWN_MACCTL_BEACON_PROMISC 0x00100000
#define BWN_MACCTL_PASS_BADPLCP 0x00200000
+#define BWN_MACCTL_PHY_LOCK 0x00200000 /* PHY-N? */
#define BWN_MACCTL_PASS_CTL 0x00400000
#define BWN_MACCTL_PASS_BADFCS 0x00800000
#define BWN_MACCTL_PROMISC 0x01000000
#define BWN_MACCTL_HWPS 0x02000000
#define BWN_MACCTL_AWAKE 0x04000000
+#define BWN_MACCTL_CLOSEDNET 0x08000000
+#define BWN_MACCTL_TBTT_HOLD 0x10000000
+#define BWN_MACCTL_DISC_TXSTAT 0x20000000
+#define BWN_MACCTL_DISC_PMQ 0x40000000
#define BWN_MACCTL_GMODE 0x80000000
+
#define BWN_MACCMD 0x124 /* MAC command */
#define BWN_MACCMD_BEACON0_VALID 0x00000001
#define BWN_MACCMD_BEACON1_VALID 0x00000002
#define BWN_MACCMD_DFQ_VALID 0x00000004
#define BWN_MACCMD_BGNOISE 0x00000010
#define BWN_INTR_REASON 0x128
#define BWN_INTR_MASK 0x12c
#define BWN_RAM_CONTROL 0x130
#define BWN_RAM_DATA 0x134
#define BWN_PS_STATUS 0x140
#define BWN_RF_HWENABLED_HI 0x158
#define BWN_RF_HWENABLED_HI_MASK (1 << 16)
#define BWN_SHM_CONTROL 0x160
#define BWN_SHM_DATA 0x164
#define BWN_SHM_DATA_UNALIGNED 0x166
#define BWN_XMITSTAT_0 0x170
#define BWN_XMITSTAT_1 0x174
#define BWN_REV3PLUS_TSF_LOW 0x180 /* core rev >= 3 only */
#define BWN_REV3PLUS_TSF_HIGH 0x184 /* core rev >= 3 only */
#define BWN_TSF_CFP_START 0x18c
/* 32-bit DMA */
#define BWN_DMA32_BASE0 0x200
#define BWN_DMA32_BASE1 0x220
#define BWN_DMA32_BASE2 0x240
#define BWN_DMA32_BASE3 0x260
#define BWN_DMA32_BASE4 0x280
#define BWN_DMA32_BASE5 0x2a0
/* 64-bit DMA */
#define BWN_DMA64_BASE0 0x200
#define BWN_DMA64_BASE1 0x240
#define BWN_DMA64_BASE2 0x280
#define BWN_DMA64_BASE3 0x2c0
#define BWN_DMA64_BASE4 0x300
#define BWN_DMA64_BASE5 0x340
/* PIO on core rev < 11 */
#define BWN_PIO_BASE0 0x300
#define BWN_PIO_BASE1 0x310
#define BWN_PIO_BASE2 0x320
#define BWN_PIO_BASE3 0x330
#define BWN_PIO_BASE4 0x340
#define BWN_PIO_BASE5 0x350
#define BWN_PIO_BASE6 0x360
#define BWN_PIO_BASE7 0x370
/* PIO on core rev >= 11 */
#define BWN_PIO11_BASE0 0x200
#define BWN_PIO11_BASE1 0x240
#define BWN_PIO11_BASE2 0x280
#define BWN_PIO11_BASE3 0x2c0
#define BWN_PIO11_BASE4 0x300
#define BWN_PIO11_BASE5 0x340
#define BWN_GPIOCTL 0x06c
#define BWN_PHYVER 0x3e0
#define BWN_PHYVER_ANALOG 0xf000
#define BWN_PHYVER_TYPE 0x0f00
#define BWN_PHYVER_VERSION 0x00ff
#define BWN_PHY_RADIO 0x3e2
#define BWN_PHY0 0x3e6
#define BWN_CHANNEL 0x3f0
#define BWN_CHANNEL_EXT 0x3f4
#define BWN_RFCTL 0x3f6
#define BWN_RFCTL_ID 0x01
#define BWN_RFDATAHI 0x3f8
#define BWN_RFDATALO 0x3fa
#define BWN_PHYCTL 0x3fc
#define BWN_PHYDATA 0x3fe
#define BWN_MACFILTER_CONTROL 0x420
#define BWN_MACFILTER_DATA 0x422
#define BWN_RCMTA_COUNT 0x43c
+
+#define BWN_PSM_PHY_HDR 0x492
+/* BWN_PSM_PHY_HDR bits */
+#define BWN_PSM_HDR_MAC_PHY_RESET 0x00000001
+#define BWN_PSM_HDR_MAC_PHY_CLOCK_EN 0x00000002
+#define BWN_PSM_HDR_MAC_PHY_FORCE_CLK 0x00000004
+
#define BWN_RF_HWENABLED_LO 0x49a
#define BWN_RF_HWENABLED_LO_MASK (1 << 4)
#define BWN_GPIO_CONTROL 0x49c
#define BWN_GPIO_MASK 0x49e
#define BWN_TSF_CFP_START_LOW 0x604
#define BWN_TSF_CFP_START_HIGH 0x606
#define BWN_TSF_CFP_PRETBTT 0x612
+#define BWN_TSF_CLK_FRAC_LOW 0x62e
+#define BWN_TSF_CLK_FRAC_HIGH 0x630
#define BWN_RNG 0x65a
#define BWN_IFSCTL 0x688 /* Interframe space control */
#define BWN_IFSCTL_USE_EDCF 0x0004
#define BWN_POWERUP_DELAY 0x6a8
#define BWN_BTCOEX_CTL 0x6b4
#define BWN_BTCOEX_TXCTL 0x6b8
#define BWN_UCODE 0x0
#define BWN_HW 0x3
#define BWN_RCMTA 0x4
#define BWN_TSSI_MAX 0x7f
#define BWN_SHARED 0x1
#define BWN_SHARED_UCODE_REV 0x0000
#define BWN_SHARED_UCODE_PATCH 0x0002
#define BWN_SHARED_UCODE_DATE 0x0004
#define BWN_SHARED_UCODE_TIME 0x0006
#define BWN_SHARED_COREREV 0x0016
#define BWN_SHARED_ACKCTS_PHYCTL 0x0022
#define BWN_SHARED_RX_PADOFFSET 0x0034
#define BWN_SHARED_UCODESTAT 0x0040
#define BWN_SHARED_UCODESTAT_SUSPEND 3
#define BWN_SHARED_UCODESTAT_SLEEP 4
#define BWN_SHARED_FWCAPS 0x0042
#define BWN_SHARED_SHORT_RETRY_FALLBACK 0x0044
#define BWN_SHARED_LONG_RETRY_FALLBACK 0x0046
#define BWN_SHARED_BEACON_PHYCTL 0x0054
#define BWN_SHARED_KEY_TABLEP 0x0056
#define BWN_SHARED_TSSI_CCK 0x0058
#define BWN_SHARED_HFLO 0x005e /* low hostflag */
#define BWN_SHARED_HFMI 0x0060 /* middle hostflag */
#define BWN_SHARED_HFHI 0x0062 /* high hostflag */
#define BWN_SHARED_RADIO_ATT 0x0064
#define BWN_SHARED_TSSI_OFDM_G 0x0070
#define BWN_SHARED_PROBE_RESP_MAXTIME 0x0074
#define BWN_SHARED_SPU_WAKEUP 0x0094
#define BWN_SHARED_PRETBTT 0x0096
#define BWN_SHARED_CHAN 0x00a0
#define BWN_SHARED_AUTOINC 0x0100
#define BWN_SHARED_PROBE_RESP_PHYCTL 0x0188
#define BWN_SHARED_EDCFQ 0x0240
#define BWN_SHARED_KEYIDX_BLOCK 0x05d4
#define BWN_SHARED_PSM 0x05f4
+/* SHM_SHARED tx iq workarounds */
+#define BWN_SHM_SH_NPHY_TXIQW0 0x0700
+#define BWN_SHM_SH_NPHY_TXIQW1 0x0702
+#define BWN_SHM_SH_NPHY_TXIQW2 0x0704
+#define BWN_SHM_SH_NPHY_TXIQW3 0x0706
+/* SHM_SHARED tx pwr ctrl */
+#define BWN_SHM_SH_NPHY_TXPWR_INDX0 0x0708
+#define BWN_SHM_SH_NPHY_TXPWR_INDX1 0x070E
+
/* SHM_SCRATCH offsets */
#define BWN_SCRATCH 0x2
#define BWN_SCRATCH_CONT_MIN 0x0003
#define BWN_SCRATCH_CONT_MAX 0x0004
#define BWN_SCRATCH_SHORT_RETRY 0x0006
#define BWN_SCRATCH_LONG_RETRY 0x0007
/* Generic-Interrupt reasons. */
#define BWN_INTR_MAC_SUSPENDED 0x00000001
#define BWN_INTR_BEACON 0x00000002
#define BWN_INTR_TBTT_INDI 0x00000004
#define BWN_INTR_ATIM_END 0x00000020
#define BWN_INTR_PMQ 0x00000040
#define BWN_INTR_MAC_TXERR 0x00000200
#define BWN_INTR_PHY_TXERR 0x00000800
#define BWN_INTR_DMA 0x00008000
#define BWN_INTR_TXFIFO_FLUSH_OK 0x00010000
#define BWN_INTR_NOISESAMPLE_OK 0x00040000
#define BWN_INTR_UCODE_DEBUG 0x08000000
#define BWN_INTR_RFKILL 0x10000000
#define BWN_INTR_TX_OK 0x20000000
#define BWN_INTR_ALL 0xffffffff
#define BWN_INTR_MASKTEMPLATE \
(BWN_INTR_TBTT_INDI | BWN_INTR_ATIM_END | BWN_INTR_PMQ | \
BWN_INTR_MAC_TXERR | BWN_INTR_PHY_TXERR | BWN_INTR_DMA | \
BWN_INTR_TXFIFO_FLUSH_OK | BWN_INTR_NOISESAMPLE_OK | \
BWN_INTR_UCODE_DEBUG | BWN_INTR_RFKILL | BWN_INTR_TX_OK)
#define BWN_HF_UCODE_ANTDIV_HELPER 0x000000000001ull
#define BWN_HF_GPHY_SYM_WORKAROUND 0x000000000002ull
#define BWN_HF_4DB_CCK_POWERBOOST 0x000000000008ull
#define BWN_HF_BT_COEXIST 0x000000000010ull
#define BWN_HF_GPHY_DC_CANCELFILTER 0x000000000020ull
#define BWN_HF_PAGAINBOOST_OFDM_ON 0x000000000040ull
#define BWN_HF_JAPAN_CHAN14_OFF 0x000000000080ull
#define BWN_HF_EDCF 0x000000000100ull
#define BWN_HF_TSSI_RESET_PSM_WORKAROUN 0x000000000200ull
#define BWN_HF_SLOWCLOCK_REQ_OFF 0x000000000400ull
#define BWN_HF_ACI_WORKAROUND 0x000000000800ull
#define BWN_HF_2060_RADIO_WORKAROUND 0x000000001000ull
#define BWN_HF_FORCE_VCO_RECALC 0x000000040000ull
#define BWN_HF_PCI_SLOWCLOCK_WORKAROUND 0x000000080000ull
#define BWN_HF_4318_TSSI 0x000000200000ull
#define BWN_HF_HW_POWERCTL 0x000000800000ull
#define BWN_HF_BT_COEXISTALT 0x000001000000ull
#define BWN_HF_SKIP_CFP_UPDATE 0x000004000000ull
+#define BWN_HF_N40W 0x000008000000ULL /* N PHY 40 MHz workaround (rev >= 13 only) */
+#define BWN_HF_ANTSEL 0x000020000000ULL /* Antenna selection (for testing antenna div.) */
+#define BWN_HF_BT3COEXT 0x000020000000ULL /* Bluetooth 3-wire coexistence (rev >= 13 only) */
+#define BWN_HF_BTCANT 0x000040000000ULL /* Bluetooth coexistence (antenna mode) (rev >= 13 only) */
+#define BWN_HF_ANTSELEN 0x000100000000ULL /* Antenna selection enabled (rev >= 13 only) */
+#define BWN_HF_ANTSELMODE 0x000200000000ULL /* Antenna selection mode (rev >= 13 only) */
+#define BWN_HF_MLADVW 0x001000000000ULL /* N PHY ML ADV workaround (rev >= 13 only) */
#define BWN_HF_PR45960W 0x080000000000ULL
#define BWN_TX_PHY_ENC_CCK 0x0000
#define BWN_TX_PHY_ENC_OFDM 0x0001
#define BWN_TX_PHY_SHORTPRMBL 0x0010
#define BWN_TX_PHY_ANT 0x03c0
#define BWN_TX_PHY_ANT0 0x0000
#define BWN_TX_PHY_ANT1 0x0040
#define BWN_TX_PHY_ANT01AUTO 0x00c0
#define BWN_TX_PHY_ANT2 0x0100
#define BWN_TX_PHY_ANT3 0x0200
#define BWN_TX_PHY_TXPWR 0xfc00
#define BWN_TX_MAC_ACK 0x00000001 /* immediate ACK */
#define BWN_TX_MAC_LONGFRAME 0x00000002
#define BWN_TX_MAC_SEND_RTSCTS 0x00000004
#define BWN_TX_MAC_START_MSDU 0x00000008
#define BWN_TX_MAC_HWSEQ 0x00000010
#define BWN_TX_MAC_5GHZ 0x00000080
#define BWN_TX_MAC_SEND_CTSTOSELF 0x00000800
#define BWN_TX_EFT_FB_CCK 0x00
#define BWN_TX_EFT_FB_OFDM 0x01
#define BWN_TX_EFT_RTS_CCK 0x00
#define BWN_TX_EFT_RTS_OFDM 0x04
#define BWN_TX_EFT_RTS_FBCCK 0x00
#define BWN_TX_EFT_RTS_FBOFDM 0x10
#define BWN_PIO_TXCTL 0x00
#define BWN_PIO_TXCTL_WRITELO 0x0001
#define BWN_PIO_TXCTL_WRITEHI 0x0002
#define BWN_PIO_TXCTL_EOF 0x0004
#define BWN_PIO_TXCTL_FRAMEREADY 0x0008
#define BWN_PIO_TXDATA 0x02
#define BWN_PIO_TXQBUFSIZE 0x04
#define BWN_PIO_RXCTL 0x00
#define BWN_PIO_RXCTL_FRAMEREADY 0x0001
#define BWN_PIO_RXCTL_DATAREADY 0x0002
#define BWN_PIO_RXDATA 0x02
#define BWN_PIO8_TXCTL 0x00
#define BWN_PIO8_TXCTL_0_7 0x00000001
#define BWN_PIO8_TXCTL_8_15 0x00000002
#define BWN_PIO8_TXCTL_16_23 0x00000004
#define BWN_PIO8_TXCTL_24_31 0x00000008
#define BWN_PIO8_TXCTL_EOF 0x00000010
#define BWN_PIO8_TXCTL_FRAMEREADY 0x00000080
#define BWN_PIO8_TXDATA 0x04
#define BWN_PIO8_RXCTL 0x00
#define BWN_PIO8_RXCTL_FRAMEREADY 0x00000001
#define BWN_PIO8_RXCTL_DATAREADY 0x00000002
#define BWN_PIO8_RXDATA 0x04
#define BWN_DMA32_TXCTL 0x00
#define BWN_DMA32_TXENABLE 0x00000001
#define BWN_DMA32_TXSUSPEND 0x00000002
#define BWN_DMA32_TXADDREXT_MASK 0x00030000
#define BWN_DMA32_TXADDREXT_SHIFT 16
#define BWN_DMA32_TXRING 0x04
#define BWN_DMA32_TXINDEX 0x08
#define BWN_DMA32_TXSTATUS 0x0c
#define BWN_DMA32_TXSTATE 0x0000f000
#define BWN_DMA32_TXSTAT_DISABLED 0x00000000
#define BWN_DMA32_TXSTAT_IDLEWAIT 0x00002000
#define BWN_DMA32_TXSTAT_STOPPED 0x00003000
#define BWN_DMA32_RXCTL 0x10
#define BWN_DMA32_RXENABLE 0x00000001
#define BWN_DMA32_RXFROFF_SHIFT 1
#define BWN_DMA32_RXDIRECTFIFO 0x00000100
#define BWN_DMA32_RXADDREXT_MASK 0x00030000
#define BWN_DMA32_RXADDREXT_SHIFT 16
#define BWN_DMA32_RXRING 0x14
#define BWN_DMA32_RXINDEX 0x18
#define BWN_DMA32_RXSTATUS 0x1c
#define BWN_DMA32_RXDPTR 0x00000fff
#define BWN_DMA32_RXSTATE 0x0000f000
#define BWN_DMA32_RXSTAT_DISABLED 0x00000000
#define BWN_DMA64_TXCTL 0x00
#define BWN_DMA64_TXENABLE 0x00000001
#define BWN_DMA64_TXSUSPEND 0x00000002
#define BWN_DMA64_TXADDREXT_MASK 0x00030000
#define BWN_DMA64_TXADDREXT_SHIFT 16
#define BWN_DMA64_TXINDEX 0x04
#define BWN_DMA64_TXRINGLO 0x08
#define BWN_DMA64_TXRINGHI 0x0c
#define BWN_DMA64_TXSTATUS 0x10
#define BWN_DMA64_TXSTAT 0xf0000000
#define BWN_DMA64_TXSTAT_DISABLED 0x00000000
#define BWN_DMA64_TXSTAT_IDLEWAIT 0x20000000
#define BWN_DMA64_TXSTAT_STOPPED 0x30000000
#define BWN_DMA64_RXCTL 0x20
#define BWN_DMA64_RXENABLE 0x00000001
#define BWN_DMA64_RXFROFF_SHIFT 1
#define BWN_DMA64_RXDIRECTFIFO 0x00000100
#define BWN_DMA64_RXADDREXT_MASK 0x00030000
#define BWN_DMA64_RXADDREXT_SHIFT 16
#define BWN_DMA64_RXINDEX 0x24
#define BWN_DMA64_RXRINGLO 0x28
#define BWN_DMA64_RXRINGHI 0x2c
#define BWN_DMA64_RXSTATUS 0x30
#define BWN_DMA64_RXSTATDPTR 0x00001fff
#define BWN_DMA64_RXSTAT 0xf0000000
#define BWN_DMA64_RXSTAT_DISABLED 0x00000000
#define BWN_DMA_RINGMEMSIZE PAGE_SIZE
#define BWN_DMA0_RX_FRAMEOFFSET 30
#define BWN_TXRING_SLOTS 64
#define BWN_RXRING_SLOTS 64
#define BWN_DMA0_RX_BUFFERSIZE IEEE80211_MAX_LEN
#define BWN_PHYROUTE_BASE 0x0000
+#define BWN_PHYROUTE_MASK 0x0c00
#define BWN_PHYROUTE_OFDM_GPHY 0x0400
#define BWN_PHYROUTE_EXT_GPHY 0x0800
+#define BWN_PHYROUTE_N_BMODE 0x0C00
#define BWN_PHY_CCK(reg) ((reg) | BWN_PHYROUTE_BASE)
+#define BWN_PHY_N(reg) ((reg) | BWN_PHYROUTE_BASE) /* PHY-N */
#define BWN_PHY_N_BMODE(reg) ((reg) | BWN_PHYROUTE_N_BMODE)
#define BWN_PHY_OFDM(reg) ((reg) | BWN_PHYROUTE_OFDM_GPHY)
#define BWN_PHY_EXTG(reg) ((reg) | BWN_PHYROUTE_EXT_GPHY)
#define BWN_PHY_VERSION_OFDM BWN_PHY_OFDM(0x00)
#define BWN_PHY_BBANDCFG BWN_PHY_OFDM(0x01)
#define BWN_PHY_BBANDCFG_RXANT 0x180
#define BWN_PHY_BBANDCFG_RXANT_SHIFT 7
#define BWN_PHY_PWRDOWN BWN_PHY_OFDM(0x03)
#define BWN_PHY_CRSTHRES1_R1 BWN_PHY_OFDM(0x06)
#define BWN_PHY_CRSGAIN_CTL BWN_PHY_OFDM(0x10)
#define BWN_PHY_MINPWR_LEVEL BWN_PHY_OFDM(0x16)
#define BWN_PHY_OFDMSYNCTHRESH0 BWN_PHY_OFDM(0x17)
#define BWN_PHY_IDLEAFTERPKTRXTO BWN_PHY_OFDM(0x1a)
#define BWN_PHY_LNAHPFCTL BWN_PHY_OFDM(0x1c)
#define BWN_PHY_DCOFFSETTRANSIENT BWN_PHY_OFDM(0x1c) /* for LP */
#define BWN_PHY_PREAMBLECONFIRMTO BWN_PHY_OFDM(0x1e)
#define BWN_PHY_CLIPTHRESH BWN_PHY_OFDM(0x1f)
#define BWN_PHY_LPFGAINCTL BWN_PHY_OFDM(0x20)
#define BWN_PHY_CLIPCTRTHRESH BWN_PHY_OFDM(0x20) /* for LP */
#define BWN_PHY_HIGAINDB BWN_PHY_OFDM(0x23)
#define BWN_PHY_LOWGAINDB BWN_PHY_OFDM(0x24)
#define BWN_PHY_VERYLOWGAINDB BWN_PHY_OFDM(0x25)
#define BWN_PHY_GAINMISMATCH BWN_PHY_OFDM(0x26)
#define BWN_PHY_ADIVRELATED BWN_PHY_OFDM(0x27)
#define BWN_PHY_GAINDIRECTMISMATCH BWN_PHY_OFDM(0x27) /* for LP */
#define BWN_PHY_CRS0 BWN_PHY_OFDM(0x29)
#define BWN_PHY_CRS0_EN 0x4000
#define BWN_PHY_PWR_THRESH1 BWN_PHY_OFDM(0x29) /* for LP */
#define BWN_PHY_ANTDWELL BWN_PHY_OFDM(0x2b)
#define BWN_PHY_ANTDWELL_AUTODIV1 0x0100
#define BWN_PHY_DSSS_CONFIRM_CNT BWN_PHY_OFDM(0x2f) /* DSSS Confirm Cnt */
#define BWN_PHY_PEAK_COUNT BWN_PHY_OFDM(0x30)
#define BWN_PHY_GAIN_MISMATCH_LIMIT BWN_PHY_OFDM(0x31)
#define BWN_PHY_CRS_ED_THRESH BWN_PHY_OFDM(0x32)
#define BWN_PHY_INPUT_PWRDB BWN_PHY_OFDM(0x34)
#define BWN_PHY_AFE_ADC_CTL_0 BWN_PHY_OFDM(0x36)
#define BWN_PHY_AFE_ADC_CTL_1 BWN_PHY_OFDM(0x37)
#define BWN_PHY_AFE_DAC_CTL BWN_PHY_OFDM(0x39)
#define BWN_PHY_AFE_CTL BWN_PHY_OFDM(0x3a)
#define BWN_PHY_AFE_CTL_OVR BWN_PHY_OFDM(0x3b)
#define BWN_PHY_AFE_CTL_OVRVAL BWN_PHY_OFDM(0x3c)
#define BWN_PHY_AFE_RSSI_CTL_0 BWN_PHY_OFDM(0x3d)
#define BWN_PHY_AFE_RSSI_CTL_1 BWN_PHY_OFDM(0x3e)
#define BWN_PHY_LP_PHY_CTL BWN_PHY_OFDM(0x48)
#define BWN_PHY_ENCORE BWN_PHY_OFDM(0x49)
#define BWN_PHY_ENCORE_EN 0x0200
#define BWN_PHY_RESET_CTL BWN_PHY_OFDM(0x4a)
#define BWN_PHY_RF_OVERRIDE_0 BWN_PHY_OFDM(0x4c)
#define BWN_PHY_RF_OVERRIDE_VAL_0 BWN_PHY_OFDM(0x4d)
#define BWN_PHY_TR_LOOKUP_1 BWN_PHY_OFDM(0x4e)
#define BWN_PHY_TR_LOOKUP_2 BWN_PHY_OFDM(0x4F)
#define BWN_PHY_LMS BWN_PHY_OFDM(0x55)
#define BWN_PHY_TABLE_ADDR BWN_PHY_OFDM(0x55) /* for LP */
#define BWN_PHY_TABLEDATALO BWN_PHY_OFDM(0x56)
#define BWN_PHY_TABLEDATAHI BWN_PHY_OFDM(0x57)
#define BWN_PHY_OFDM61 BWN_PHY_OFDM(0x61)
#define BWN_PHY_OFDM61_10 0x0010
#define BWN_PHY_ADC_COMPENSATION_CTL BWN_PHY_OFDM(0x70)
#define BWN_PHY_OTABLECTL BWN_PHY_OFDM(0x72)
#define BWN_PHY_OTABLENR_SHIFT 10
#define BWN_PHY_OTABLEI BWN_PHY_OFDM(0x73)
#define BWN_PHY_OTABLEQ BWN_PHY_OFDM(0x74)
#define BWN_PHY_HPWR_TSSICTL BWN_PHY_OFDM(0x78)
#define BWN_PHY_IQ_ENABLE_WAIT_TIME_ADDR BWN_PHY_OFDM(0x81)
#define BWN_PHY_IQ_NUM_SMPLS_ADDR BWN_PHY_OFDM(0x82)
#define BWN_PHY_IQ_ACC_HI_ADDR BWN_PHY_OFDM(0x83)
#define BWN_PHY_IQ_ACC_LO_ADDR BWN_PHY_OFDM(0x84)
#define BWN_PHY_IQ_I_PWR_ACC_HI_ADDR BWN_PHY_OFDM(0x85)
#define BWN_PHY_IQ_I_PWR_ACC_LO_ADDR BWN_PHY_OFDM(0x86)
#define BWN_PHY_IQ_Q_PWR_ACC_HI_ADDR BWN_PHY_OFDM(0x87)
#define BWN_PHY_IQ_Q_PWR_ACC_LO_ADDR BWN_PHY_OFDM(0x88)
#define BWN_PHY_ANTWRSETT BWN_PHY_OFDM(0x8c)
#define BWN_PHY_ANTWRSETT_ARXDIV 0x2000
#define BWN_PHY_OFDM9B BWN_PHY_OFDM(0x9b)
#define BWN_PHY_A_PHY_CTL_ADDR BWN_PHY_OFDM(0x9c)
#define BWN_PHY_RX_COMP_COEFF_S BWN_PHY_OFDM(0x9e)
#define BWN_PHY_N1P1GAIN BWN_PHY_OFDM(0xa0)
#define BWN_PHY_SMPL_PLAY_COUNT BWN_PHY_OFDM(0xa0) /* for LP */
#define BWN_PHY_P1P2GAIN BWN_PHY_OFDM(0xa1)
#define BWN_PHY_SMPL_PLAY_BUFFER_CTL BWN_PHY_OFDM(0xA1) /* for LP */
#define BWN_PHY_N1N2GAIN BWN_PHY_OFDM(0xa2)
#define BWN_PHY_4WIRECTL BWN_PHY_OFDM(0xa2) /* for LP */
#define BWN_PHY_TX_PWR_CTL_CMD BWN_PHY_OFDM(0xa4)
#define BWN_PHY_TX_PWR_CTL_CMD_MODE 0xe000
#define BWN_PHY_TX_PWR_CTL_CMD_MODE_OFF 0x0000
#define BWN_PHY_TX_PWR_CTL_CMD_MODE_SW 0x8000
#define BWN_PHY_TX_PWR_CTL_CMD_MODE_HW 0xe000
#define BWN_PHY_CCKSHIFTBITS_WA BWN_PHY_OFDM(0xa5)
#define BWN_PHY_TX_PWR_CTL_NNUM BWN_PHY_OFDM(0xa5) /* for LP */
#define BWN_PHY_CCKSHIFTBITS BWN_PHY_OFDM(0xa7)
#define BWN_PHY_DIVSRCHIDX BWN_PHY_OFDM(0xa8)
#define BWN_PHY_DIVP1P2GAIN BWN_PHY_OFDM(0xab)
#define BWN_PHY_LP_RF_SIGNAL_LUT BWN_PHY_OFDM(0xac)
#define BWN_PHY_DIVSRCHGAINBACK BWN_PHY_OFDM(0xad)
#define BWN_PHY_RX_RADIO_CTL BWN_PHY_OFDM(0xae)
#define BWN_PHY_RF_OVERRIDE_2 BWN_PHY_OFDM(0xb0)
#define BWN_PHY_RF_OVERRIDE_2_VAL BWN_PHY_OFDM(0xb1)
#define BWN_PHY_PS_CTL_OVERRIDE_VAL0 BWN_PHY_OFDM(0xB2)
#define BWN_PHY_PS_CTL_OVERRIDE_VAL1 BWN_PHY_OFDM(0xB3)
#define BWN_PHY_PS_CTL_OVERRIDE_VAL2 BWN_PHY_OFDM(0xB4)
#define BWN_PHY_TX_GAIN_CTL_OVERRIDE_VAL BWN_PHY_OFDM(0xB5)
#define BWN_PHY_RX_GAIN_CTL_OVERRIDE_VAL BWN_PHY_OFDM(0xB6)
#define BWN_PHY_AFE_DDFS BWN_PHY_OFDM(0xb7)
#define BWN_PHY_AFE_DDFS_POINTER_INIT BWN_PHY_OFDM(0xB8)
#define BWN_PHY_AFE_DDFS_INCR_INIT BWN_PHY_OFDM(0xB9)
#define BWN_PHY_TR_LOOKUP_3 BWN_PHY_OFDM(0xbb)
#define BWN_PHY_TR_LOOKUP_4 BWN_PHY_OFDM(0xbc)
#define BWN_PHY_GPIO_OUTEN BWN_PHY_OFDM(0xbe)
#define BWN_PHY_GPIO_SELECT BWN_PHY_OFDM(0xbf)
#define BWN_PHY_CRSTHRES1 BWN_PHY_OFDM(0xc0)
#define BWN_PHY_CRSTHRES2 BWN_PHY_OFDM(0xc1)
#define BWN_PHY_4C3 BWN_PHY_OFDM(0xC3)
#define BWN_PHY_4C4 BWN_PHY_OFDM(0xC4)
#define BWN_PHY_4C5 BWN_PHY_OFDM(0xC5)
#define BWN_PHY_TR_LOOKUP_5 BWN_PHY_OFDM(0xC7)
#define BWN_PHY_TR_LOOKUP_6 BWN_PHY_OFDM(0xC8)
#define BWN_PHY_TR_LOOKUP_7 BWN_PHY_OFDM(0xC9)
#define BWN_PHY_TR_LOOKUP_8 BWN_PHY_OFDM(0xCA)
#define BWN_PHY_RF_PWR_OVERRIDE BWN_PHY_OFDM(0xd3)
#define BWN_OFDMTAB(number, offset) \
(((number) << BWN_PHY_OTABLENR_SHIFT) | (offset))
#define BWN_OFDMTAB_AGC1 BWN_OFDMTAB(0x00, 0)
#define BWN_OFDMTAB_GAIN0 BWN_OFDMTAB(0x00, 0)
#define BWN_OFDMTAB_GAINX BWN_OFDMTAB(0x01, 0)
#define BWN_OFDMTAB_GAIN1 BWN_OFDMTAB(0x01, 4)
#define BWN_OFDMTAB_AGC3 BWN_OFDMTAB(0x02, 0)
#define BWN_OFDMTAB_GAIN2 BWN_OFDMTAB(0x02, 3)
#define BWN_OFDMTAB_LNAHPFGAIN1 BWN_OFDMTAB(0x03, 0)
#define BWN_OFDMTAB_WRSSI BWN_OFDMTAB(0x04, 0)
#define BWN_OFDMTAB_NOISESCALE BWN_OFDMTAB(0x05, 0)
#define BWN_OFDMTAB_AGC2 BWN_OFDMTAB(0x06, 0)
#define BWN_OFDMTAB_ROTOR BWN_OFDMTAB(0x08, 0)
#define BWN_OFDMTAB_ADVRETARD BWN_OFDMTAB(0x09, 0)
#define BWN_OFDMTAB_DAC BWN_OFDMTAB(0x0c, 0)
#define BWN_OFDMTAB_DC BWN_OFDMTAB(0x0e, 7)
#define BWN_OFDMTAB_PWRDYN2 BWN_OFDMTAB(0x0e, 12)
#define BWN_OFDMTAB_UNKNOWN_0F BWN_OFDMTAB(0x0f, 0)
#define BWN_OFDMTAB_UNKNOWN_APHY BWN_OFDMTAB(0x0f, 7)
#define BWN_OFDMTAB_LPFGAIN BWN_OFDMTAB(0x0f, 12)
#define BWN_OFDMTAB_RSSI BWN_OFDMTAB(0x10, 0)
#define BWN_OFDMTAB_UNKNOWN_11 BWN_OFDMTAB(0x11, 4)
#define BWN_OFDMTAB_AGC1_R1 BWN_OFDMTAB(0x13, 0)
#define BWN_OFDMTAB_GAINX_R1 BWN_OFDMTAB(0x14, 0)
#define BWN_OFDMTAB_MINSIGSQ BWN_OFDMTAB(0x14, 0)
#define BWN_OFDMTAB_AGC3_R1 BWN_OFDMTAB(0x15, 0)
#define BWN_OFDMTAB_WRSSI_R1 BWN_OFDMTAB(0x15, 4)
#define BWN_OFDMTAB_DACRFPABB BWN_OFDMTAB(0x16, 0)
#define BWN_PHY_CCKBBANDCFG BWN_PHY_CCK(0x01)
#define BWN_PHY_PGACTL BWN_PHY_CCK(0x15)
#define BWN_PHY_PGACTL_LPF 0x1000
#define BWN_PHY_PGACTL_LOWBANDW 0x0040
#define BWN_PHY_PGACTL_UNKNOWN 0xefa0
#define BWN_PHY_TSSI BWN_PHY_CCK(0x29)
#define BWN_PHY_LO_LEAKAGE BWN_PHY_CCK(0x2d)
#define BWN_PHY_SYNCPEAKCNT BWN_PHY_CCK(0x30)
#define BWN_PHY_SYNCCTL BWN_PHY_CCK(0x35)
#define BWN_PHY_DACCTL BWN_PHY_CCK(0x60)
#define BWN_PHY_CLASSCTL BWN_PHY_EXTG(0x02)
#define BWN_PHY_GTABCTL BWN_PHY_EXTG(0x03)
#define BWN_PHY_GTABNR_SHIFT 10
#define BWN_PHY_GTABDATA BWN_PHY_EXTG(0x04)
#define BWN_PHY_LO_MASK BWN_PHY_EXTG(0x0f)
#define BWN_PHY_LO_CTL BWN_PHY_EXTG(0x10)
#define BWN_PHY_RFOVER BWN_PHY_EXTG(0x11)
#define BWN_PHY_RFOVERVAL BWN_PHY_EXTG(0x12)
#define BWN_PHY_RFOVERVAL_EXTLNA 0x8000
#define BWN_PHY_RFOVERVAL_LNA 0x7000
#define BWN_PHY_RFOVERVAL_LNA_SHIFT 12
#define BWN_PHY_RFOVERVAL_PGA 0x0f00
#define BWN_PHY_RFOVERVAL_PGA_SHIFT 8
#define BWN_PHY_RFOVERVAL_UNK 0x0010
#define BWN_PHY_RFOVERVAL_TRSWRX 0x00e0
#define BWN_PHY_RFOVERVAL_BW 0x0003
#define BWN_PHY_RFOVERVAL_BW_LPF 0x0001
#define BWN_PHY_RFOVERVAL_BW_LBW 0x0002
#define BWN_PHY_ANALOGOVER BWN_PHY_EXTG(0x14)
#define BWN_PHY_ANALOGOVERVAL BWN_PHY_EXTG(0x15)
#define BWN_GTAB(number, offset) \
(((number) << BWN_PHY_GTABNR_SHIFT) | (offset))
#define BWN_GTAB_ORIGTR BWN_GTAB(0x2e, 0x298)
#define BWN_PHY_G_LOCTL 0x0810
#define BWN_PHY_RADIO_BITFIELD 0x0401
#define BWN_PHY_G_CRS 0x0429
#define BWN_PHY_NRSSI_CTRL 0x0803
#define BWN_PHY_NRSSI_DATA 0x0804
#define BWN_FWCAPS_HWCRYPTO 0x0001
#define BWN_FWCAPS_WME 0x0002
#define BWN_MACFILTER_SELF 0x0000
#define BWN_MACFILTER_BSSID 0x0003
#define BWN_SEC_KEYSIZE 16
#define BWN_SEC_ALGO_NONE 0
#define BWN_LED_BEHAVIOUR 0x7f
#define BWN_LED_ACTIVELOW 0x80
#define BWN_DEBUGINTR_REASON_REG 63
#define BWN_DEBUGINTR_PANIC 0
#define BWN_DEBUGINTR_DUMP_SHM 1
#define BWN_DEBUGINTR_DUMP_REGS 2
#define BWN_DEBUGINTR_MARKER 3
#define BWN_DEBUGINTR_ACK 0xffff
#define BWN_FWPANIC_REASON_REG 3
#define BWN_FWPANIC_DIE 0
#define BWN_FWPANIC_RESTART 1
#define BWN_WATCHDOG_REG 1
#define BWN_CCK_RATE_1MB 0x02
#define BWN_CCK_RATE_2MB 0x04
#define BWN_CCK_RATE_5MB 0x0b
#define BWN_CCK_RATE_11MB 0x16
#define BWN_OFDM_RATE_6MB 0x0c
#define BWN_OFDM_RATE_9MB 0x12
#define BWN_OFDM_RATE_12MB 0x18
#define BWN_OFDM_RATE_18MB 0x24
#define BWN_OFDM_RATE_24MB 0x30
#define BWN_OFDM_RATE_36MB 0x48
#define BWN_OFDM_RATE_48MB 0x60
#define BWN_OFDM_RATE_54MB 0x6c
#define BWN_RX_CHAN_PHYTYPE 0x0007
#define BWN_RX_PHYST0_GAINCTL 0x4000
#define BWN_RX_PHYST0_PLCPHCF 0x0200
#define BWN_RX_PHYST0_PLCPFV 0x0100
#define BWN_RX_PHYST0_SHORTPRMBL 0x0080
#define BWN_RX_PHYST0_OFDM 0x0001
#define BWN_RX_PHYST3_TRSTATE 0x0400
#define BWN_RX_MAC_KEYIDX 0x000007e0
#define BWN_RX_MAC_KEYIDX_SHIFT 5
#define BWN_RX_MAC_DECERR 0x00000010
#define BWN_RX_MAC_DEC 0x00000008
#define BWN_RX_MAC_PADDING 0x00000004
#define BWN_RX_MAC_FCSERR 0x00000001
#define BWN_PS_ON (1 << 0)
#define BWN_PS_OFF (1 << 1)
#define BWN_PS_AWAKE (1 << 2)
#define BWN_PS_ASLEEP (1 << 3)
#define BWN_TAB_NOISESCALE_SIZE 27
/*
* SPROM GPIO
*/
#define BWN_LED_ACT_LOW 0x80
#define BWN_LED_ACT_MASK 0x7f
#define BWN_LED_ACT_OFF 0
#define BWN_LED_ACT_ON 1
#define BWN_LED_ACT_BLINK 2
#define BWN_LED_ACT_RF_ENABLED 3
#define BWN_LED_ACT_5GHZ 4
#define BWN_LED_ACT_2GHZ 5
#define BWN_LED_ACT_11G 6
#define BWN_LED_ACT_BLINK_SLOW 7
#define BWN_LED_ACT_BLINK_POLL 8
#define BWN_LED_ACT_UNKN 9
#define BWN_LED_ACT_ASSOC 10
#define BWN_LED_ACT_NULL 11
#define BWN_VENDOR_LED_ACT_COMPAQ \
BWN_LED_ACT_RF_ENABLED, \
BWN_LED_ACT_2GHZ, \
BWN_LED_ACT_5GHZ, \
BWN_LED_ACT_OFF
#define BWN_VENDOR_LED_ACT_ASUSTEK \
BWN_LED_ACT_ASSOC, \
BWN_LED_ACT_2GHZ, \
BWN_LED_ACT_5GHZ, \
BWN_LED_ACT_OFF
#define BWN_VENDOR_LED_ACT_DEFAULT \
BWN_LED_ACT_BLINK, \
BWN_LED_ACT_2GHZ, \
BWN_LED_ACT_5GHZ, \
BWN_LED_ACT_OFF
#define BWN_TAB_ROTOR \
{ \
0xfeb93ffd, 0xfec63ffd, 0xfed23ffd, 0xfedf3ffd, 0xfeec3ffe, \
0xfef83ffe, 0xff053ffe, 0xff113ffe, 0xff1e3ffe, 0xff2a3fff, \
0xff373fff, 0xff443fff, 0xff503fff, 0xff5d3fff, 0xff693fff, \
0xff763fff, 0xff824000, 0xff8f4000, 0xff9b4000, 0xffa84000, \
0xffb54000, 0xffc14000, 0xffce4000, 0xffda4000, 0xffe74000, \
0xfff34000, 0x00004000, 0x000d4000, 0x00194000, 0x00264000, \
0x00324000, 0x003f4000, 0x004b4000, 0x00584000, 0x00654000, \
0x00714000, 0x007e4000, 0x008a3fff, 0x00973fff, 0x00a33fff, \
0x00b03fff, 0x00bc3fff, 0x00c93fff, 0x00d63fff, 0x00e23ffe, \
0x00ef3ffe, 0x00fb3ffe, 0x01083ffe, 0x01143ffe, 0x01213ffd, \
0x012e3ffd, 0x013a3ffd, 0x01473ffd \
}
#define BWN_TAB_RETARD \
{ \
0xdb93cb87, 0xd666cf64, 0xd1fdd358, 0xcda6d826, 0xca38dd9f, \
0xc729e2b4, 0xc469e88e, 0xc26aee2b, 0xc0def46c, 0xc073fa62, \
0xc01d00d5, 0xc0760743, 0xc1560d1e, 0xc2e51369, 0xc4ed18ff, \
0xc7ac1ed7, 0xcb2823b2, 0xcefa28d9, 0xd2f62d3f, 0xd7bb3197, \
0xdce53568, 0xe1fe3875, 0xe7d13b35, 0xed663d35, 0xf39b3ec4, \
0xf98e3fa7, 0x00004000, 0x06723fa7, 0x0c653ec4, 0x129a3d35, \
0x182f3b35, 0x1e023875, 0x231b3568, 0x28453197, 0x2d0a2d3f, \
0x310628d9, 0x34d823b2, 0x38541ed7, 0x3b1318ff, 0x3d1b1369, \
0x3eaa0d1e, 0x3f8a0743, 0x3fe300d5, 0x3f8dfa62, 0x3f22f46c, \
0x3d96ee2b, 0x3b97e88e, 0x38d7e2b4, 0x35c8dd9f, 0x325ad826, \
0x2e03d358, 0x299acf64, 0x246dcb87, \
}
#define BWN_TAB_FINEFREQ_G \
{ \
0x0089, 0x02e9, 0x0409, 0x04e9, 0x05a9, 0x0669, 0x0709, 0x0789, \
0x0829, 0x08a9, 0x0929, 0x0989, 0x0a09, 0x0a69, 0x0ac9, 0x0b29, \
0x0ba9, 0x0be9, 0x0c49, 0x0ca9, 0x0d09, 0x0d69, 0x0da9, 0x0e09, \
0x0e69, 0x0ea9, 0x0f09, 0x0f49, 0x0fa9, 0x0fe9, 0x1029, 0x1089, \
0x10c9, 0x1109, 0x1169, 0x11a9, 0x11e9, 0x1229, 0x1289, 0x12c9, \
0x1309, 0x1349, 0x1389, 0x13c9, 0x1409, 0x1449, 0x14a9, 0x14e9, \
0x1529, 0x1569, 0x15a9, 0x15e9, 0x1629, 0x1669, 0x16a9, 0x16e8, \
0x1728, 0x1768, 0x17a8, 0x17e8, 0x1828, 0x1868, 0x18a8, 0x18e8, \
0x1928, 0x1968, 0x19a8, 0x19e8, 0x1a28, 0x1a68, 0x1aa8, 0x1ae8, \
0x1b28, 0x1b68, 0x1ba8, 0x1be8, 0x1c28, 0x1c68, 0x1ca8, 0x1ce8, \
0x1d28, 0x1d68, 0x1dc8, 0x1e08, 0x1e48, 0x1e88, 0x1ec8, 0x1f08, \
0x1f48, 0x1f88, 0x1fe8, 0x2028, 0x2068, 0x20a8, 0x2108, 0x2148, \
0x2188, 0x21c8, 0x2228, 0x2268, 0x22c8, 0x2308, 0x2348, 0x23a8, \
0x23e8, 0x2448, 0x24a8, 0x24e8, 0x2548, 0x25a8, 0x2608, 0x2668, \
0x26c8, 0x2728, 0x2787, 0x27e7, 0x2847, 0x28c7, 0x2947, 0x29a7, \
0x2a27, 0x2ac7, 0x2b47, 0x2be7, 0x2ca7, 0x2d67, 0x2e47, 0x2f67, \
0x3247, 0x3526, 0x3646, 0x3726, 0x3806, 0x38a6, 0x3946, 0x39e6, \
0x3a66, 0x3ae6, 0x3b66, 0x3bc6, 0x3c45, 0x3ca5, 0x3d05, 0x3d85, \
0x3de5, 0x3e45, 0x3ea5, 0x3ee5, 0x3f45, 0x3fa5, 0x4005, 0x4045, \
0x40a5, 0x40e5, 0x4145, 0x4185, 0x41e5, 0x4225, 0x4265, 0x42c5, \
0x4305, 0x4345, 0x43a5, 0x43e5, 0x4424, 0x4464, 0x44c4, 0x4504, \
0x4544, 0x4584, 0x45c4, 0x4604, 0x4644, 0x46a4, 0x46e4, 0x4724, \
0x4764, 0x47a4, 0x47e4, 0x4824, 0x4864, 0x48a4, 0x48e4, 0x4924, \
0x4964, 0x49a4, 0x49e4, 0x4a24, 0x4a64, 0x4aa4, 0x4ae4, 0x4b23, \
0x4b63, 0x4ba3, 0x4be3, 0x4c23, 0x4c63, 0x4ca3, 0x4ce3, 0x4d23, \
0x4d63, 0x4da3, 0x4de3, 0x4e23, 0x4e63, 0x4ea3, 0x4ee3, 0x4f23, \
0x4f63, 0x4fc3, 0x5003, 0x5043, 0x5083, 0x50c3, 0x5103, 0x5143, \
0x5183, 0x51e2, 0x5222, 0x5262, 0x52a2, 0x52e2, 0x5342, 0x5382, \
0x53c2, 0x5402, 0x5462, 0x54a2, 0x5502, 0x5542, 0x55a2, 0x55e2, \
0x5642, 0x5682, 0x56e2, 0x5722, 0x5782, 0x57e1, 0x5841, 0x58a1, \
0x5901, 0x5961, 0x59c1, 0x5a21, 0x5aa1, 0x5b01, 0x5b81, 0x5be1, \
0x5c61, 0x5d01, 0x5d80, 0x5e20, 0x5ee0, 0x5fa0, 0x6080, 0x61c0, \
}
#define BWN_TAB_NOISE_G1 \
{ \
0x013c, 0x01f5, 0x031a, 0x0631, 0x0001, 0x0001, 0x0001, 0x0001, \
}
#define BWN_TAB_NOISE_G2 \
{ \
0x5484, 0x3c40, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, \
}
#define BWN_TAB_NOISESCALE_G1 \
{ \
0x6c77, 0x5162, 0x3b40, 0x3335, 0x2f2d, 0x2a2a, 0x2527, 0x1f21, \
0x1a1d, 0x1719, 0x1616, 0x1414, 0x1414, 0x1400, 0x1414, 0x1614, \
0x1716, 0x1a19, 0x1f1d, 0x2521, 0x2a27, 0x2f2a, 0x332d, 0x3b35, \
0x5140, 0x6c62, 0x0077, \
}
#define BWN_TAB_NOISESCALE_G2 \
{ \
0xd8dd, 0xcbd4, 0xbcc0, 0xb6b7, 0xb2b0, 0xadad, 0xa7a9, 0x9fa1, \
0x969b, 0x9195, 0x8f8f, 0x8a8a, 0x8a8a, 0x8a00, 0x8a8a, 0x8f8a, \
0x918f, 0x9695, 0x9f9b, 0xa7a1, 0xada9, 0xb2ad, 0xb6b0, 0xbcb7, \
0xcbc0, 0xd8d4, 0x00dd, \
}
#define BWN_TAB_NOISESCALE_G3 \
{ \
0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, \
0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa400, 0xa4a4, 0xa4a4, \
0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, \
0xa4a4, 0xa4a4, 0x00a4, \
}
#define BWN_TAB_SIGMASQR2 \
{ \
0x00de, 0x00dc, 0x00da, 0x00d8, 0x00d6, 0x00d4, 0x00d2, 0x00cf, \
0x00cd, 0x00ca, 0x00c7, 0x00c4, 0x00c1, 0x00be, 0x00be, 0x00be, \
0x00be, 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, \
0x00be, 0x00be, 0x0000, 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, \
0x00be, 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, \
0x00c1, 0x00c4, 0x00c7, 0x00ca, 0x00cd, 0x00cf, 0x00d2, 0x00d4, \
0x00d6, 0x00d8, 0x00da, 0x00dc, 0x00de, \
}
#define BWN_PHY_G_TSSI2DBM_TABLE \
{ \
77, 77, 77, 76, 76, 76, 75, 75, 74, 74, 73, 73, 73, 72, 72, 71, \
71, 70, 70, 69, 68, 68, 67, 67, 66, 65, 65, 64, 63, 63, 62, 61, \
60, 59, 58, 57, 56, 55, 54, 53, 52, 50, 49, 47, 45, 43, 40, 37, \
33, 28, 22, 14, 5, -7, -20, -20, -20, -20, -20, -20, -20, -20, \
-20, -20 \
}
#define BWN_PHY_G_RF_CHANNELS \
{ \
12, 17, 22, 27, 32, 37, 42, 47, 52, 57, 62, 67, 72, 84, \
}
#define BWN_BITREV_TABLE \
{ \
0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0, 0x10, 0x90, \
0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0, 0x08, 0x88, 0x48, 0xc8, \
0x28, 0xa8, 0x68, 0xe8, 0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, \
0x78, 0xf8, 0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4, \
0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4, 0x0c, 0x8c, \
0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec, 0x1c, 0x9c, 0x5c, 0xdc, \
0x3c, 0xbc, 0x7c, 0xfc, 0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, \
0x62, 0xe2, 0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2, \
0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea, 0x1a, 0x9a, \
0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa, 0x06, 0x86, 0x46, 0xc6, \
0x26, 0xa6, 0x66, 0xe6, 0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, \
0x76, 0xf6, 0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee, \
0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe, 0x01, 0x81, \
0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1, 0x11, 0x91, 0x51, 0xd1, \
0x31, 0xb1, 0x71, 0xf1, 0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, \
0x69, 0xe9, 0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9, \
0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5, 0x15, 0x95, \
0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5, 0x0d, 0x8d, 0x4d, 0xcd, \
0x2d, 0xad, 0x6d, 0xed, 0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, \
0x7d, 0xfd, 0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3, \
0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3, 0x0b, 0x8b, \
0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb, 0x1b, 0x9b, 0x5b, 0xdb, \
0x3b, 0xbb, 0x7b, 0xfb, 0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, \
0x67, 0xe7, 0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7, \
0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef, 0x1f, 0x9f, \
0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff \
}
/*
* LP PHY
*/
#define BWN_TAB_TYPEMASK 0xf0000000
#define BWN_TAB_GETTYPE(v) ((v) & BWN_TAB_TYPEMASK)
#define BWN_TAB_GETOFFSET(v) ((v) & ~BWN_TAB_TYPEMASK)
#define BWN_TAB_8BIT 0x10000000
#define BWN_TAB_16BIT 0x20000000
#define BWN_TAB_32BIT 0x30000000
#define BWN_TAB_1(table, offset) \
(((table) << 10) | (offset) | BWN_TAB_8BIT)
#define BWN_TAB_2(table, offset) \
(((table) << 10) | (offset) | BWN_TAB_16BIT)
#define BWN_TAB_4(table, offset) \
(((table) << 10) | (offset) | BWN_TAB_32BIT)
#define BWN_LP_RADIO(radio_reg) (radio_reg)
#define BWN_LP_NORTH(radio_reg) BWN_LP_RADIO(radio_reg)
#define BWN_LP_SOUTH(radio_reg) BWN_LP_RADIO((radio_reg) | 0x4000)
#define BWN_B2062_N_COM1 BWN_LP_NORTH(0x000)
#define BWN_B2062_N_COM2 BWN_LP_NORTH(0x002)
#define BWN_B2062_N_COM4 BWN_LP_NORTH(0x004)
#define BWN_B2062_N_PDNCTL0 BWN_LP_NORTH(0x010)
#define BWN_B2062_N_PDNCTL1 BWN_LP_NORTH(0x011)
#define BWN_B2062_N_PDNCTL3 BWN_LP_NORTH(0x013)
#define BWN_B2062_N_PDNCTL4 BWN_LP_NORTH(0x014)
#define BWN_B2062_N_LGENC BWN_LP_NORTH(0x017)
#define BWN_B2062_N_LGENATUNE0 BWN_LP_NORTH(0x01E)
#define BWN_B2062_N_LGENATUNE2 BWN_LP_NORTH(0x020)
#define BWN_B2062_N_LGENATUNE3 BWN_LP_NORTH(0x021)
#define BWN_B2062_N_LGENACTL3 BWN_LP_NORTH(0x022)
#define BWN_B2062_N_LGENACTL5 BWN_LP_NORTH(0x024)
#define BWN_B2062_N_LGENACTL6 BWN_LP_NORTH(0x025)
#define BWN_B2062_N_LGENACTL7 BWN_LP_NORTH(0x026)
#define BWN_B2062_N_RXA_CTL1 BWN_LP_NORTH(0x028)
#define BWN_B2062_N_RXBB_CTL0 BWN_LP_NORTH(0x02F)
#define BWN_B2062_N_RXBB_GAIN1 BWN_LP_NORTH(0x033)
#define BWN_B2062_N_RXBB_GAIN2 BWN_LP_NORTH(0x034)
#define BWN_B2062_N_RXBB_CALIB2 BWN_LP_NORTH(0x03A)
#define BWN_B2062_N_TXCTL3 BWN_LP_NORTH(0x048)
#define BWN_B2062_N_TXCTL4 BWN_LP_NORTH(0x049)
#define BWN_B2062_N_TXCTL5 BWN_LP_NORTH(0x04A)
#define BWN_B2062_N_TXCTL6 BWN_LP_NORTH(0x04B)
#define BWN_B2062_N_TXCTL_A BWN_LP_NORTH(0x04F)
#define BWN_B2062_N_TX_TUNE BWN_LP_NORTH(0x052)
#define BWN_B2062_N_TX_PAD BWN_LP_NORTH(0x053)
#define BWN_B2062_N_TX_PGA BWN_LP_NORTH(0x054)
#define BWN_B2062_N_TSSI_CTL0 BWN_LP_NORTH(0x057)
#define BWN_B2062_N_CALIB_TS BWN_LP_NORTH(0x05D)
#define BWN_B2062_S_COM4 BWN_LP_SOUTH(0x004)
#define BWN_B2062_S_PDS_CTL0 BWN_LP_SOUTH(0x010)
#define BWN_B2062_S_BG_CTL1 BWN_LP_SOUTH(0x015)
#define BWN_B2062_S_LGENG_CTL0 BWN_LP_SOUTH(0x017)
#define BWN_B2062_S_LGENG_CTL1 BWN_LP_SOUTH(0x018)
#define BWN_B2062_S_LGENG_CTL8 BWN_LP_SOUTH(0x01F)
#define BWN_B2062_S_LGENG_CTL10 BWN_LP_SOUTH(0x021)
#define BWN_B2062_S_RFPLLCTL0 BWN_LP_SOUTH(0x034)
#define BWN_B2062_S_RFPLLCTL1 BWN_LP_SOUTH(0x035)
#define BWN_B2062_S_RFPLLCTL2 BWN_LP_SOUTH(0x036)
#define BWN_B2062_S_RFPLLCTL3 BWN_LP_SOUTH(0x037)
#define BWN_B2062_S_RFPLLCTL5 BWN_LP_SOUTH(0x039)
#define BWN_B2062_S_RFPLLCTL6 BWN_LP_SOUTH(0x03A)
#define BWN_B2062_S_RFPLLCTL7 BWN_LP_SOUTH(0x03B)
#define BWN_B2062_S_RFPLLCTL8 BWN_LP_SOUTH(0x03C)
#define BWN_B2062_S_RFPLLCTL9 BWN_LP_SOUTH(0x03D)
#define BWN_B2062_S_RFPLLCTL10 BWN_LP_SOUTH(0x03E)
#define BWN_B2062_S_RFPLLCTL11 BWN_LP_SOUTH(0x03F)
#define BWN_B2062_S_RFPLLCTL12 BWN_LP_SOUTH(0x040)
#define BWN_B2062_S_RFPLLCTL13 BWN_LP_SOUTH(0x041)
#define BWN_B2062_S_RFPLLCTL14 BWN_LP_SOUTH(0x042)
#define BWN_B2062_S_RFPLLCTL18 BWN_LP_SOUTH(0x046)
#define BWN_B2062_S_RFPLLCTL19 BWN_LP_SOUTH(0x047)
#define BWN_B2062_S_RFPLLCTL21 BWN_LP_SOUTH(0x049)
#define BWN_B2062_S_RFPLLCTL22 BWN_LP_SOUTH(0x04A)
#define BWN_B2062_S_RFPLLCTL23 BWN_LP_SOUTH(0x04B)
#define BWN_B2062_S_RFPLLCTL24 BWN_LP_SOUTH(0x04C)
#define BWN_B2062_S_RFPLLCTL25 BWN_LP_SOUTH(0x04D)
#define BWN_B2062_S_RFPLLCTL26 BWN_LP_SOUTH(0x04E)
#define BWN_B2062_S_RFPLLCTL27 BWN_LP_SOUTH(0x04F)
#define BWN_B2062_S_RFPLLCTL28 BWN_LP_SOUTH(0x050)
#define BWN_B2062_S_RFPLLCTL29 BWN_LP_SOUTH(0x051)
#define BWN_B2062_S_RFPLLCTL30 BWN_LP_SOUTH(0x052)
#define BWN_B2062_S_RFPLLCTL31 BWN_LP_SOUTH(0x053)
#define BWN_B2062_S_RFPLLCTL33 BWN_LP_SOUTH(0x055)
#define BWN_B2062_S_RFPLLCTL34 BWN_LP_SOUTH(0x056)
#define BWN_B2062_S_RXG_CNT8 BWN_LP_SOUTH(0x05F)
#define BWN_B2062_S_RXG_CNT16 BWN_LP_SOUTH(0x067)
#define BWN_B2063_COM1 BWN_LP_RADIO(0x000)
#define BWN_B2063_COM8 BWN_LP_RADIO(0x008)
#define BWN_B2063_COM10 BWN_LP_RADIO(0x00A)
#define BWN_B2063_COM15 BWN_LP_RADIO(0x00F)
#define BWN_B2063_COM16 BWN_LP_RADIO(0x010)
#define BWN_B2063_COM17 BWN_LP_RADIO(0x011)
#define BWN_B2063_COM18 BWN_LP_RADIO(0x012)
#define BWN_B2063_COM19 BWN_LP_RADIO(0x013)
#define BWN_B2063_COM20 BWN_LP_RADIO(0x014)
#define BWN_B2063_COM21 BWN_LP_RADIO(0x015)
#define BWN_B2063_COM22 BWN_LP_RADIO(0x016)
#define BWN_B2063_COM23 BWN_LP_RADIO(0x017)
#define BWN_B2063_COM24 BWN_LP_RADIO(0x018)
#define BWN_B2063_PLL_SP1 BWN_LP_RADIO(0x01A)
#define BWN_B2063_PLL_SP2 BWN_LP_RADIO(0x01B)
#define BWN_B2063_LOGEN_SP1 BWN_LP_RADIO(0x01C)
#define BWN_B2063_LOGEN_SP2 BWN_LP_RADIO(0x01D)
#define BWN_B2063_LOGEN_SP4 BWN_LP_RADIO(0x01F)
#define BWN_B2063_LOGEN_SP5 BWN_LP_RADIO(0x020)
#define BWN_B2063_G_RX_SP1 BWN_LP_RADIO(0x021)
#define BWN_B2063_G_RX_SP2 BWN_LP_RADIO(0x022)
#define BWN_B2063_G_RX_SP3 BWN_LP_RADIO(0x023)
#define BWN_B2063_G_RX_SP7 BWN_LP_RADIO(0x027)
#define BWN_B2063_G_RX_SP10 BWN_LP_RADIO(0x02A)
#define BWN_B2063_A_RX_SP1 BWN_LP_RADIO(0x02C)
#define BWN_B2063_A_RX_SP2 BWN_LP_RADIO(0x02D)
#define BWN_B2063_A_RX_SP7 BWN_LP_RADIO(0x032)
#define BWN_B2063_RX_BB_SP3 BWN_LP_RADIO(0x035)
#define BWN_B2063_RX_BB_SP4 BWN_LP_RADIO(0x036)
#define BWN_B2063_RX_BB_SP8 BWN_LP_RADIO(0x03A)
#define BWN_B2063_TX_RF_SP3 BWN_LP_RADIO(0x03D)
#define BWN_B2063_TX_RF_SP4 BWN_LP_RADIO(0x03E)
#define BWN_B2063_TX_RF_SP6 BWN_LP_RADIO(0x040)
#define BWN_B2063_TX_RF_SP9 BWN_LP_RADIO(0x043)
#define BWN_B2063_PA_SP1 BWN_LP_RADIO(0x04C)
#define BWN_B2063_PA_SP2 BWN_LP_RADIO(0x04D)
#define BWN_B2063_PA_SP3 BWN_LP_RADIO(0x04E)
#define BWN_B2063_PA_SP4 BWN_LP_RADIO(0x04F)
#define BWN_B2063_PA_SP7 BWN_LP_RADIO(0x052)
#define BWN_B2063_TX_BB_SP1 BWN_LP_RADIO(0x053)
#define BWN_B2063_TX_BB_SP3 BWN_LP_RADIO(0x055)
#define BWN_B2063_REG_SP1 BWN_LP_RADIO(0x056)
#define BWN_B2063_BANDGAP_CTL1 BWN_LP_RADIO(0x057)
#define BWN_B2063_RC_CALIB_CTL1 BWN_LP_RADIO(0x05A)
#define BWN_B2063_RC_CALIB_CTL2 BWN_LP_RADIO(0x05B)
#define BWN_B2063_RC_CALIB_CTL3 BWN_LP_RADIO(0x05C)
#define BWN_B2063_RC_CALIB_CTL4 BWN_LP_RADIO(0x05D)
#define BWN_B2063_RC_CALIB_CTL5 BWN_LP_RADIO(0x05E)
#define BWN_B2063_RC_CALIB_CTL6 BWN_LP_RADIO(0x05F)
#define BWN_B2063_JTAG_CALNRST BWN_LP_RADIO(0x064)
#define BWN_B2063_JTAG_CP2 BWN_LP_RADIO(0x068)
#define BWN_B2063_JTAG_CP3 BWN_LP_RADIO(0x069)
#define BWN_B2063_JTAG_LF1 BWN_LP_RADIO(0x06C)
#define BWN_B2063_JTAG_LF2 BWN_LP_RADIO(0x06D)
#define BWN_B2063_JTAG_LF3 BWN_LP_RADIO(0x06E)
#define BWN_B2063_JTAG_LF4 BWN_LP_RADIO(0x06F)
#define BWN_B2063_JTAG_SG1 BWN_LP_RADIO(0x070)
#define BWN_B2063_JTAG_SG2 BWN_LP_RADIO(0x071)
#define BWN_B2063_JTAG_SG3 BWN_LP_RADIO(0x072)
#define BWN_B2063_JTAG_SG4 BWN_LP_RADIO(0x073)
#define BWN_B2063_JTAG_VCO1 BWN_LP_RADIO(0x075)
#define BWN_B2063_JTAG_VCO2 BWN_LP_RADIO(0x076)
#define BWN_B2063_JTAG_VCO_CALIB3 BWN_LP_RADIO(0x079)
#define BWN_B2063_JTAG_VCO_CALIB5 BWN_LP_RADIO(0x07B)
#define BWN_B2063_JTAG_VCO_CALIB6 BWN_LP_RADIO(0x07C)
#define BWN_B2063_JTAG_VCO_CALIB7 BWN_LP_RADIO(0x07D)
#define BWN_B2063_JTAG_VCO_CALIB8 BWN_LP_RADIO(0x07E)
#define BWN_B2063_JTAG_XTAL_12 BWN_LP_RADIO(0x081)
#define BWN_B2063_LOGEN_RCCR1 BWN_LP_RADIO(0x0A1)
#define BWN_B2063_LOGEN_VCOBUF1 BWN_LP_RADIO(0x0A2)
#define BWN_B2063_LOGEN_MIXER2 BWN_LP_RADIO(0x0A4)
#define BWN_B2063_LOGEN_BUF2 BWN_LP_RADIO(0x0A6)
#define BWN_B2063_G_RX_MIX3 BWN_LP_RADIO(0x0C4)
#define BWN_B2063_G_RX_MIX4 BWN_LP_RADIO(0x0C5)
#define BWN_B2063_A_RX_1ST2 BWN_LP_RADIO(0x0CF)
#define BWN_B2063_A_RX_1ST3 BWN_LP_RADIO(0x0D0)
#define BWN_B2063_A_RX_2ND1 BWN_LP_RADIO(0x0D3)
#define BWN_B2063_A_RX_2ND4 BWN_LP_RADIO(0x0D6)
#define BWN_B2063_A_RX_2ND7 BWN_LP_RADIO(0x0D9)
#define BWN_B2063_A_RX_PS6 BWN_LP_RADIO(0x0DF)
#define BWN_B2063_A_RX_MIX4 BWN_LP_RADIO(0x0E3)
#define BWN_B2063_A_RX_MIX5 BWN_LP_RADIO(0x0E4)
#define BWN_B2063_A_RX_MIX6 BWN_LP_RADIO(0x0E5)
#define BWN_B2063_RX_TIA_CTL1 BWN_LP_RADIO(0x0EC)
#define BWN_B2063_RX_TIA_CTL3 BWN_LP_RADIO(0x0EE)
#define BWN_B2063_RX_BB_CTL2 BWN_LP_RADIO(0x0F3)
#define BWN_B2063_TX_RF_CTL2 BWN_LP_RADIO(0x100)
#define BWN_B2063_TX_RF_CTL5 BWN_LP_RADIO(0x103)
#define BWN_B2063_PA_CTL1 BWN_LP_RADIO(0x10B)
#define BWN_B2063_PA_CTL11 BWN_LP_RADIO(0x115)
#define BWN_B2063_VREG_CTL1 BWN_LP_RADIO(0x11D)
+
+/* N-PHY, etc TX configuration */
+
+#define BWN_TXH_PHY1_BW 0x0007 /* Bandwidth */
+#define BWN_TXH_PHY1_BW_10 0x0000 /* 10 MHz */
+#define BWN_TXH_PHY1_BW_10U 0x0001 /* 10 MHz upper */
+#define BWN_TXH_PHY1_BW_20 0x0002 /* 20 MHz */
+#define BWN_TXH_PHY1_BW_20U 0x0003 /* 20 MHz upper */
+#define BWN_TXH_PHY1_BW_40 0x0004 /* 40 MHz */
+#define BWN_TXH_PHY1_BW_40DUP 0x0005 /* 40 MHz duplicate */
+#define BWN_TXH_PHY1_MODE 0x0038 /* Mode */
+#define BWN_TXH_PHY1_MODE_SISO 0x0000 /* SISO */
+#define BWN_TXH_PHY1_MODE_CDD 0x0008 /* CDD */
+#define BWN_TXH_PHY1_MODE_STBC 0x0010 /* STBC */
+#define BWN_TXH_PHY1_MODE_SDM 0x0018 /* SDM */
+#define BWN_TXH_PHY1_CRATE 0x0700 /* Coding rate */
+#define BWN_TXH_PHY1_CRATE_1_2 0x0000 /* 1/2 */
+#define BWN_TXH_PHY1_CRATE_2_3 0x0100 /* 2/3 */
+#define BWN_TXH_PHY1_CRATE_3_4 0x0200 /* 3/4 */
+#define BWN_TXH_PHY1_CRATE_4_5 0x0300 /* 4/5 */
+#define BWN_TXH_PHY1_CRATE_5_6 0x0400 /* 5/6 */
+#define BWN_TXH_PHY1_CRATE_7_8 0x0600 /* 7/8 */
+#define BWN_TXH_PHY1_MODUL 0x3800 /* Modulation scheme */
+#define BWN_TXH_PHY1_MODUL_BPSK 0x0000 /* BPSK */
+#define BWN_TXH_PHY1_MODUL_QPSK 0x0800 /* QPSK */
+#define BWN_TXH_PHY1_MODUL_QAM16 0x1000 /* QAM16 */
+#define BWN_TXH_PHY1_MODUL_QAM64 0x1800 /* QAM64 */
+#define BWN_TXH_PHY1_MODUL_QAM256 0x2000 /* QAM256 */
#endif /* !_IF_BWNREG_H */
Index: user/ngie/bsnmp_cleanup/sys/dev/cxgbe/firmware/t4fw-1.15.28.0.bin.uu
===================================================================
--- user/ngie/bsnmp_cleanup/sys/dev/cxgbe/firmware/t4fw-1.15.28.0.bin.uu (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/dev/cxgbe/firmware/t4fw-1.15.28.0.bin.uu (nonexistent)
@@ -1,9540 +0,0 @@
-/*-
- * Copyright (c) 2016 Chelsio Communications, Inc.
- * 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.
- */
-begin-base64 644 t4fw
-AAAEIwEPHAAAAQkEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAABAYEFQQdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAENoZWxzaW8gRlcgUlVOTUVNIERFQlVHPTAgKEJ1aWx0IEZyaSBGZWIgMjYgMDk6
-NTk6NDMgUFNUIDIwMTYgb24gdm5jNC5hc2ljZGVzaWduZXJzLmNvbTovaG9tZS9maXJtd2FyZS9j
-dnMvZnctcmVsZWFzZSksIFZlcnNpb24gVDR4eCAwMS4wZi4xYy4wMAAAAAAAAAAAAAAAAJfa4oVg
-AMgA4QB78AAQAADhADC4eP///x/84UCAAAAB4QB7cAAAEAAf//2c4QGUcCAAAADhAZwE4QB5AAAC
-AEDhAHmAAAYAQAACAAoABgAK4QB5BAAMAACAAAEC4QB7POEAe0ThAHvk4gAAAAABAADhAHuQIAAA
-AAAAgADhAHsAAABAAeEAe5wAAEAAREREQuAAAADjAARzREREQOMACAAgAAJcAAAAAB//kvAAAAAA
-H/+S9AAAAAAf/5L4AAAAAB//kvwf/8AAAAAAAAAAAADAABL/zRP/zZMgEv/NE//NhCAEMwGTIBH/
-zBL/zJIQEf/MEv/MkhAR/8wB9DER/8siCv+SEADkMQAFMQECABL/yALnMQIWABH/x4EQAQFfwCEC
-EQHJERH/xBL/xJIQEf/EEv/EkhBgAA8R/78S/8OSEBH/vxL/wpIQgRAR/8HAIJIREv/AkhLAIJIT
-Ev+/khCCEALyUGUv9xH/vccvkhAR/7ySEBL/vBP/vJMgwDKTIRP/u5MigiIS/7oT/7qTICMiIRT/
-uQQzAck4E/+4gzADgxQIMxEU/7akM5MhE/+qkyJgAAjCMJMhE/+nkyIS/7GQIJAhkCKQI5AkkCWQ
-JpAnkCiQKZAqkCuQLJAtkC6QLyAmECAmEYIiEv+kwDAtNzAtNzQtNzgtNzwjPQFyM+0AAgAS/6HA
-MC83AC83EC83IC83MCM9AXIz7QACABL/l8AwKDcwKDc0KDc4KDc8Iz0BcjPtEv+VwDAnNwAnNxAn
-NyAnNzAjPQFyM+0S/5AV/5AW/5HAMNcgBWYBYAAZAAAAAAAAAAQ2BQACANMP0w8FMwxuOxQHRxQH
-BEN2MeYENgUFMwxvO+0AAgAS/4MV/4EjCgACJwIHBEMEPgUFMwwHRxRvO/ADAgAS/33JLoMghCGF
-IrwidDsOhlC0VZYwtDN0M/Rj/+YAZT/iZV/fEv9xwDIDLgUDAgAS/2jAMCg3QCg3RCg3SCg3TCM9
-AXIz7QACABL/ay0nAMARAUkxAEgxAQIAwAAU/2gE0jEV/2eUUBT/ZwTTMRX/ZpRQFP9mBNQxFf9m
-lFAU/2UE1TEV/2WUUBD/ZQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-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
-H/+uQAAA/4AgBtOwIAtgkOEALgAf/640AAAc4B//qfwf/67wH/+qYAAAFyDgAACg4QAwuAAAgADh
-AGAQAABAAOECEADhAjAA4QJQAOECcADhABAIH/zhQOEAe3Af/7R8H/+0dB/84Agf/7R4H/+0lB//
-tIwf/7SQH/+0rB//tKQf/7SoIAbXYB//sUAf/6vUH/zeAB//rOQf/61AH/+dYB//rwwAAP+AAAAd
-wB//k0Af/68YH/+vFB//r3ggCwVgBAAACAUAAACD/wAAgQAAAAAQAAAqAAAAIAAHrCADC4gf/4mQ
-H/+FQB//h0Qf/7BQZ0UjAe/Nq4mYutz+EDJUdh//gAAAAD8oIAMOTM////8gCwZQEAAAAD////8C
-AAAAQAAAAP//f/8gCwdwH/+wQCAAIbggCwegIAsIEAgAAAAA////IAsIgPf///8gCwpwIAAeYP/+
-//8gCxVQgAAAACADDGAMAAAAAABAAAAA//8AAIAA//v//w/2gAAgCxjAIAsY8AABAAAABAAAIAtx
-wCAAMHggADJYIAAuECALGYAgACtAIAsaECALGmAgCxrwBAEACOAAAAAgCxtwIAsbMFMAAAAgCxuQ
-UgAAACALG9BRAAAAIAHolB//qmAgCx5gIAsewCALHpAgCyFAH/+tsCALIZAf/51YH/+tXCALI4AU
-AAAAgAAAAngAAACAAAAGgACwAAAACgAA4zCS///wAIAAsQDhAZoAAAIAACALI0Af/5rUAAB+QB//
-rZQA/8AAH/+TxAEAAAAoAAAAJgAAACALI7Af/6/0H/+p8CALJgAf/7EYOwAACA4AAADAAAAA0AAA
-AB//gFAAAB/aAACJFB/84HQAAAhQH/+UAAYAAAAFgAAAIAt3MB//qbQrAAAAIABNsB//q0w1AAAA
-A4AAAAMAAAAH////AD///4BAAAAID///H////yAAAAAAAMAAH/+teD0AAAAf/5lMBwAAAIEEAQCB
-BAAAH/+rtAAAOpjDAAAAAAAP/wBDAAAAAAgABAAAACALd5Af/7PwH/+xYB//mKwABgAA4QB6AB//
-mRwgoAAAH/+r5B//nWgf/51UIAt3wAADB4AgC3gwH/+bNAAgAAAAQAAAAAAJAAAAMAL//Ph/o/+7
-AKP/ugANAAAA4AMAAIP/tgAP////D//4AP8AAAAgC3hwIAsm8CALJyAgC3kAAA8AAAAKAAD//wAP
-H/+tgAP/wACD/8AAIAt5gCALefAf/65gH/+x0P9g8AAf/7GwH/+TAASAAAgf/4BgAEQAAP8f//8A
-wAAAAYDCAAAAgQDwAAAAgYAAAP9///8f/6ik/7//////AAAAgAAAAACG3R//nqwf/OIAH/+T8O4A
-AAAAAAl8H/ziDA8AAAAgCydgH/+uAAAACHwf/68EH/+fKB//mUgf/4BwIAbVUAAAMAAAACcQH//c
-gCALgdAf/65kAAD//h//nUjerb7vIAMHoDQAAAA/AAAAH/+uzAAAiQYAmQAAEAAHAgHAgACZAAAA
-H/+x1ACIAAiCgAABH/+xaB//sHQDFQAAAxEAAAAPA/8gCyuQH/+tZCALgiAgCyvwIAssQCALLNAg
-CyvAIADkFCALLKAgCy5wIAsuoCALLvAgCy9QIADpuCkAAAAgAPAcIAuCkCALgvAgAPoQ8PDw8P8A
-/wCqqqqqzMzMzB//s+AAACCgH/+x6AAD//8AACf/IAECkCALg2AAD0JAIAQ9aB//reQf/640AAkA
-AAAASACCAAAAIAEmmCALg9AAAB9AIAs4oCALOMAgCzjgAAkACB//sNwwAAAAH/+x3B//rqQgCzsQ
-IAs68P//9/8gCztwIARDrAAAg/8gBtkoFaAAACAG2iAf/6wAAAAIBgAAiMx/AAAAAAAP/gAMAAAf
-/7EoIAuIMCALiHAgC4dQIAuH4AAA4AAgC4Zw//wAACALh7Af/5roAAQD/woAAAAf/7AEH/+ukB//
-sMQf/55Ag/+3AIP/tiAgCzug4QAAADMAAAAf/7EwH/+yJAP/4AB///8AAD/2kAAAH+gD//AAIAt2
-gCALdkAgC3agH/+zMCALPCAaAAAAIAs8cCABcSgf/7EsAA///x//q/Af/7DgH/+rzB//rpQgC4jw
-H/+diB//rUgf/6oIH/+r/CAAaoAgBtTYIAAFiB//qEAf/5poH/+Y6CALiTAf/6pcIAs/YMAEAAAf
-/6wIH/+xFB//saAgC4pQIAs/oCADDRAgAGtg4AEAAB//nrAgC4uQIAs/4CAAp+Af/56oIACk4CAL
-ixAgC4tgH/+tmB//mwggC0Gw4P/+ACALZdAf/560IAtMwB//lTwgC1fgIAtYcB//sOQgC1uQIAtb
-4CALWyAgC1tQSAAAACABu0gf/6tcIAG9TB//mZwf/6n8H/+o9B//qTwAABfwAAAV/B//rCQgBtdU
-H/+pxB//mSDhAC4AH/+sMOEAXgDhAg4A//+//+EADgDhAY4A//++/x//nVAf/6o4IAHCYCABzojg
-BQAAA/8AAB//qYQgAwxoH/y//zwAAAAABf//gwAAAB//qPwgAeQgIAtkUB//rnQAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAACBgAAAAAAAAP////////////////////8f//yQH//8kB///Fgf//xYH//8WB///Fgf//XY
-H//5CB//91wf//dcH//3XCAGqLgAAAAAAAAAAAAAAAAAAAAAIAasACAGrAAAAAAAAAAAAAAAAAAA
-AAAAIAaouCAGqLgf//n8H//5/B//+fwf//n8H//5/B//+fwAAAAAIAHDeAAAAAAAAAAAAAAAAAAA
-AAACAQAAAAAAAAAAAAAAAAAABAAAAAAAAACBgAAAAAAAEAUAAAAAAAAEAAAAAAAAAAAAAAAAAAAA
-AIEAAAAAAAAYBQAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgCgAR8pMT8pPTDwPmMQECABbykRfy
-kndrBpBgtGZ3Y/hUDzVVxLIPFABj//kAAABsEAgoIAUnIAcpMQX4IIYV4BlFAPkADoVhdwEAiiIW
-8oT95QgF4AyVAPFXvA3gD6UA6vKBG8cCgACmiCuCngp5CimSv/1gDYOiAJ0AKIKdCYgB6BYFJA1R
-gAAo0gj3AA2okgCdACtiruzydRWKuYAAKmKtLMJ/7KsBBHP9AAD9QAoeIgCdAC7WCP1ACh4iAJ0A
-LyAUpP8PD0cvJBT14Axd0gCdABnyZy4iFiwhKYgVH/JlrsyfgOoiHi5nwoAA/QBmFaANJQD9AEYV
-4AtlAO3yXh1WAoAAC6oCixSagekAFQRAQQAAiRUIAIooPBD9IMYV4EwFAP0g5hWgDEUA7Ls2BMiB
-AABtuQUIAIYJAmHu8k8VoIeAAIgV7gAFDc8CgACpiOiMICWkNQAAC8kMbZkCCAJhLSEp0w/qISgm
-6AUAAA0NTy0lKf1AB3RiAJ0A/+SABeAMFQD6IKgV4B7lAOoiHi7NQoAA+CAmFeAIBQD4IAYVoA0F
-AOgWAiXZgQAAWISM/uAAFzfFAQD3wABHMA2VAO3mnSgECoAA+YAFWVIAnQDAINEPAAAA6iQACdgE
-gADsRAAK6ASAAFiGddKg0Q8AAAAAwLAPiTTp1ggt9i4AAPpAaB2gG8UA/AACHaANFQBYiyNj/8EA
-AOokAArYBIAAWIf20qDRDwD/+VgNoAgFAOokAAPYYQAA/AACHaANlQBYixdj/5HAoFm+MB3yBojY
-+R/yCJAPpQBj/6TaIFgLjmP+cAAAAAAA/AACHeAKBQD6RSQdr/wqAIon60QACmgEgAD7RAAVoAwF
-AFiABdKg0Q8AAABsEAYuIhCUEeUhGirQBIAAJiAH9kEoFeAfxQDqFgAqx8KAAP8CUg3hZgEABwlC
-8SBwDeKFAQBkgfLU8CkgBfxASBWgG4UA/p4ADbAaRQD7IA+VIgCdAOfx3x4L1gAA5fHbG08CgAD0
-wAwSEgCdAKWZLZKeB2oKKqK/96ARu1IAnQApkp0KmQHulAAEjkmAAIwpiyoMBz4Muwz3YAkD4gCd
-ACogTi0gTLGo+6AN7CALFQAoJE4qMAEpIhjzQA32kgCdACsgBy0hJPhgJBWgDFUA/UAEBTC7EQDg
-qhEN2oKAAAuqAhvxwwqIAiohBywhCQvdAvsGAAx6qgEA6/G+HVMCgAAKzAIqISKY4IggnOOd5Auq
-Apri/QAAFDAKZQAKiAKY4S0iEJ3lLCA4G/Gz+AAiHaBNFQD5wSYVoMwZAAzYOR3xr5ToDL05+aYA
-DrALBQCb5xjxop3m7fGjFOAFAAAsJhib65nq6AAVB0jBAAAJAIrt5g4hyEEAAO/mDyd5AQAACSCG
-DwJjCQCGDwJhDG4Rpe7q5p0jgLGAAIgpLyA4p4goJgnz4AgXkgCdAIkQCQlH+SAHAVIAnQDAINEP
-nhLqJAAL2ASAAFiIzo4S/00QDeAfxQDsEgEpUASAAO0SACnYBIAAWIXR0qDRDwAe8XmK6PdABjiS
-AJ0ADGkRpZkrkp73YAaLUgCdACmSnQdrCiuyvwuZAWSQv7CsnOjulAAM834AAGAALAAAAAAA89/w
-SFIAnQAJVAz0nQAVr/gCAAAAAAAA6xIAKVAEgABYh0bSoNEPAOokAANYYQAA/AAiHaANZQBYimlj
-/2mNIsDkDt0C/EBGFe/9fgAAAAD4Q6gVpNkBAADRBAC8GgyIAvhDphWv+MYAiieNEcDA6qwgLtgE
-gABYf1rSoNEP2iBYhWdj/vkAAP/3PA2gCQUAwKBZvW4e8UOK6Plf+XiQH8UA//0oDaAJBQDAkMC6
-C6s0+8EGFe/87gAAAABsEA6VHCgiEC4iCSchNSkgByMWDioyAv5giBXgDRUA/GBoHae1AQDjIRol
-2/kAAAvbOfohphXhmQEA5/82CbfCgAD+wlIN46oBAA4OQvHAcA3i0wEAZNRjJiAFwej5/gAPMBdF
-APbAJB1iAJ0AhyKLHvTl/A3gDoUAK7ABnxHzYCEnEgCdAJkQmRqaFBjxFu3xFxIwDQAA5hYLLK8C
-gADoVQgM34KAAK276xYJInAFAACJGp4YjRv1IAaqEgCdACtSnoYZ/WAKI+IAnQAvUp0mYr8G/wFk
-9DkZ8QSJmPcgCZiSAJ0AKoKuZKFSGvEBI4KtKqJ/HfD9CjsB6xYFJNv9AAD6YAnmIgCdAJvY+mAf
-ZiIAnQCHKYYqDAM+B2YM8sAJq+IAnQApGgDzIjIN4Pr1ACsgFpwT+2AJ/SIAnQCLEYbDKiA49+Dm
-FaAGBQD34SYVoEcFAPvhBhXgqhkACnY5F/DvlhYtIhcW8Oyd+i0iG537icQKdjmWF/lgEUriAJ0A
-hh2eH+wWAyMN2YAAYAEIGfDWiZhqkS6LGypSno8Ze6NLLVKdL/K/D90BnRWGFevwzhTT/QAA72QA
-AwHpgACauGX/E2ADSp4f/CBmFaAKBQBZvO8Z8MWJmBjwwowT7hIPJI7bAAD//1wNoA8FAMCg+iCm
-Fa/+5gAd8LzAugubNPuhBhXv/vYAAAAAAP/7FA2gDwUAnh8vFhD8IGYVoAoFAFm82xnwsYwTLxIQ
-iZiOHxjwrfk/9XCSAJ0AYAK9wKCaFYsVFvCpwNoNnTTtZggt9iYAAGACpJ4fLxYQnBPqJAAJ2ASA
-AFiH7IwTLxIQ7hIPJXWhgABgAlqeHy8WEPpA8BWgDAUAWIfEjBMvEhDuEg8tdWYAAGADx44XixOI
-FIwR9iDIFa+KBQAqJDsMmQwIZgKZtKzYBu4CLSIQ6CYbKVAEgABYhnCOH4wTGPCG+rOmFaEJBQBz
-mw0rIBYqCv/7YARNIgCdAIopKyA4DwIAo6rqJgkoBAqAAPNgBD+SAJ0AJiE1L8IEKyEaKSIQ5v82
-De/CgAB/2wsKCkJkoAULDUJk0HP+ICYV4B2FAPn+AA7wChUA+iGmFaAGNQD2IYYVr/XGAIonLxYQ
-ix7qrCAqYASAAFiDGC8SEJoTLSIb+UCIFe/83gAAAAAAAADqIAcp4ASAAFiHXRjwW4wT/iHoFa/9
-ngDaIFiEdxjwVowTjh/6QSgVr/22AHGeiAq/DP/9ABXv/goAixSKFi0iEBnwXAuqAhvwXApoAoYd
-GvBTCYgC6fBSGws+AAAjFhElFhImIAeFwCMhB/ZBJBXgZhEA61UBCzKCgAD2pgAKujMBAOYhIimb
-AoAAA3cCClUCIyEkCWYClfCFIJfzlvL94KYV45gBAOj2BizKAoAACTkC4xIRIlP5AADp9gQqrgKA
-AOXlAgZAgQAA5fYBJ8jBAADlEhIiFDUAAG2pBQgAhgkCYSYgFKRmBgZHJiQU9MAINdIAnQCIGPiz
-phWhBwUA8uHyDeD59QArIBb5YAjNYgCdACoiF7Gq6iYXIYCpgACMKSsgOKPMnCnzYAefkgCdAI0d
-ZdDPwCDRDy8gTmT72Q54AvhARhWgAIYAAAAAAADzH9zAUgCdAA4/DP/9ABXv7jYAAAAAAADrEg4p
-UASAAO0SDCpgBIAAWIRX0qDRDwDrEgwpUASAAFiF4tKg0Q8A+kBoHaAbxQD8ACIdoA0VAFiJBWP/
-wYsQ+kBoHaAMFQDtEgsl2GEAAFiI/2P/qQAAJiA7ZGBx6iQADlgEgAD8ICgVr4kFAOkkOyxwBIAA
-WIXP+iEGFaALBQArJhv6R2Yd7/vOAAAAAADrEgUpUASAAFgJa2P+74on60QACmgEgAD7RAAVoAwF
-AFh959Kg0Q8A2iBYg/Vj/wjqIAcp4ASAAFiG02P+3AAAJyEJJRYSIxYRJBYTJiAHhMAjIST0QOQV
-4GYRAOtEAQsygoAABkQCCkQC9kREFaq1AQDrIgct0wKAAAp3AglmAiqxFZoSlPCFIJfzlvL94KYV
-40gBAOj2BioiAoAABDMC4/YEJdiBAAD0ImgVr8MFAAO7ASMSEeupCAquAoAABeUC5fYBJmCBAADl
-EhIkyQEAAOnLQ35ABIAALUz+DNYRpobmkzt34MEAAPSf7/ESAJ0AbdkFCACGDAJhY/3tixD6QGgd
-oAwVAPtiQBXgDQUAWIisY/5aAAAA+48ADD/+9gAInQwNSRRtmQUIIIYMAmPv2ggFwQEAAOlMDAVI
-wQAA9Z/tQRIAnQArzP5tuQUIQIYJAmVj/ZQAAGwQBiggBRzvifffDgXgGkUA+wAKnSIAnQArIE6J
-yLC7KyRO9yAIyJIAnQAucq7t74EXEXGAACtyrS3Sfw27Aea0AAWRKYAAsJ7uxggliDmAAC8gFLP/
-Dw9HLyQU9eAQxdIAnQAuIHP4Q6gV7/r1APvABADQCxUA4LgaB2gFAAD7FwANNN0BAC0kcwmIAQi4
-OQqZAekmHSwHDgAAiiJ8pwQoIE7Jj32nCCsgTCkgTnuTFMxsLCAU7SICLlgcAABk0cnAINEPAI4n
-x/MPrwHvJgInUMEAAFh0yuPvZRUBOYAAKKAA0w/TDwOICiiCEOygBy1YBIAA+kBoHaANRQALgABl
-r9yJJ9MPZJ+mKpkUyqeKmWSvnCigAAOICiiCEOygBy1YBIAA+kBoHaANNQALgABlr+Bj/3oAAP//
-VA2gCgUAwKBZu2Qc7zmJyPk/9uiSAJ0AwGApIBSzmfhChh3v/B4AAAAAAAAAAOokAArYBIAAWIUU
-0qDRDwAqIAUrIAfB1P1ADmVhuwEABQVH+KAOeVIAnQCTEI02nRLt7yUdmASAAPVgCYoSAJ0ADLoR
-p6ouop73wA2c0gCdACqinQ28CizCvwyqAWShPfpACBXgDBUAWCHhHe8ZKSEJGO8ZKyEiLyAHHu8j
-LCEk+WYADbD/EQDoEgIv+oKAAA/MAg7MAiymAI4gm6L5QKYVoA8lAOmmAy92AoAAD+4C/0AmFaAJ
-BQDtABUFUGEAALGZ6oMeDI/oAAAMORH3IABE8AilACiWnfS/8rkSAJ0AiifrRAAKaASAAPtEABWg
-DAUAWH0DY/46//dsDaALBQDAugubNOvGCCtvBgAAY/7b6iQAC1gEgABYCHf93dQFr/d2AIonwLD7
-RAAVoAwVAFiFmBnu9pmg/kAIFaAbxQD53egFoAwVAPlARhWgDRUA/cAAFzAIFQDo7gINeASAAO72
-ASlQBIAAWIfmwCDRD4nI9yAEoJIAnQAMOhGnqi6invfABVTSAJ0AKqKdDT4KLuK/DqoBZKCYsJ+f
-yGWuwYgi6xYBJAThgAD4v+w5UgCdAIonKwoA+0QAFaAMFQBYgXSLEB7u0p6gjCAd7tKdov2AABYw
-DRUADcwCnKGLtvtAZhXv9UoAAAAA61QACVAEgABYhJpj/TyPM/4gRhXv+NYA//lkDaAKBQD6ICYV
-4AoFAFm61hzurInIixEd7qv5P/q4kgCdAP/9yA2gCgUAAMCgwIoImDT5gQYVr/2KAAAAAOokAAXY
-YQAA/AAiHaANpQBYh6tj/1EAAGwQBCggFO+LHmoYBIAAiif6YGgd4AwFAOqsICnoBIAAWHyh0qDR
-DwCLInO+SxTuj4pIaqFHG+6MLLKuyscd7o0ssq0t0n8NywF9wBuwrp5IfcAhLyAU7yQUL9rQAADa
-IFgID2P/p8CwwIoIqDToRggt/xYAAIkiyZXAINEPwKBZuqWKSGuhrWP/6gAAAAAAAPpAaB2gG8UA
-/AAiHaANFQBYh4HAINEPAGwQCCwiDy8gByghNCcyB/5DRBWn1QEA+b/AFeALFQDpuTkJsASAAOsi
-CSpQBIAA+CCGFeAEFQDodzYPT8KAAPciUg3h/wEACwlC8SBwDeKOAQBkgnLBtOx7Hw6UdAAALCBP
-6SBNJmAFAAAMDEcsJE/9IBSjogCdACwgBfuAEv1iAJ0AjSL6IAYVr/s1AP1gDljiAJ0AKCIZjjL5
-wBTVIgCdAIk4GO5LHO5I5JJib9+CgACaEJgRrLvo7kIVSA0AAJkT6xYCL6cCgACoRPXgDSISAJ0A
-ixMqQp77QBsb4gCdAIoSKUKd0w8qor8KmQHulAAEknGAAIwpiyoMBT7TDwy7DPVgCdviAJ0ALRoA
-9aHyDeD49QArIBb5YBl1IgCdACwhIhnuPSghByohJCshCfxA8BXqiAEA6aoCDEMCgAAIuwIZ7jYY
-7icNLUDpzAIO6oKAAAjdAp3giSCc4prk+8BmFeAKVQDr7i4czgKAAAqZApnhiC+Y5SwgOPfBBhXg
-DQUA/cDmFeAKJQD93EwF4EklAPjAiBWgzBkADJo5mOkM2zmNZZ3qHe4g/MDIFaAJBQDs5gsjh+GA
-AAqcEA3MApzsjBGJaJfvme6IaSjmEI1qLeYR7AAVB0khAAAJAIqIZ/jgC6OiAJ0AH+4FCr0CD90C
-nebAxfyTphWhCQUA9SHyDeD49QArIBb5YBOlIgCdACwiGYopKyBPKSA45aoIBmAFAADsJhkl2/0A
-ACskT5op8yAPj5IAnQCLFGWx78Ag0Q+fFZ8WnhfqJAAK2ASAAFiFKY4X7xIFJXWRgACMFGXP24on
-2zDsEgAlUMEAAFiATsAg0Q8a7dSKqPdAEIiSAJ0AjBMrQp79YBFDogCdAIsSKUKdK7K/He3LC5kB
-5JIUZWP9AACc2O6UAAzyZgAAYACOKCA58R/4DhIAnQD/++QNoAkVAAAAAADzn+xIUgCdAAnnDPb9
-gBXv9foAAAAAwbN7yRQpIDqaEP4gxhXgDPUA/SAQ/SIAnQDqJAAK2ASAAFiDltKg0Q8A8AAYDaAa
-1QDAoYw3KyEJjTiOMuuvEQ3dAoAAD7sC5LsCCVAEgABYg3rAINEPAAAA//9YDaAahQDqJAAH2GEA
-APwgaBXgDBUAWIarY/8FAAAKuAKY5sDV/JOmFeEMBQB1yw0rIBYpCv/5YA41YgCdAIoUZKFdi2qM
-Z4ppq3sHzAycZ/dg0g3gDgUAsaqMZZtqi2aaaazqq3t3uwGxqo4pm2aaZS0gOKXuninzoAo3kgCd
-AIknKJkUyoKLmcm+Ge2PKLAAnxWfFgmICiiCECywB/pAaB2gDTUAC4AAjxWLIsej+1/ygOIAnQAo
-ITSHZy4hGooviynodzYPZ8KAAHfLCgsJQsiUDgtCZLC0wdT6/gAOsAwVAPwghhWv8q4A2iBYgYZj
-/gqKJ+qsMCtYBIAAWGub0qDRDwAA//KoDaAJBQAAAJ8VnxaeF/pA8BWgDAUAWISGjhfvEgUtZf4A
-AOokAAfYSQAA/AAiHaANBQBYhmJj/eAAAAAAAOogByrgBIAAWIRPY/2BnxX+IMYV4AoFAFm5dBrt
-SoqojxX5X+7YkgCdAP/34A2gCQUAwJAc7UTAugurNPuBBhXv95oAAAAAAPNf+jhSAJ0ACecM9v2A
-Fe/88gCKJ58V7xYGKdgEgADsEgAlUMEAAFh/rtag/iCoFe/6FgCfFe8WBilQBIAAWIFO/iCoFe/6
-tgAAAMFT+kBoHaALBQD8AAIdoA01AFh54SsgBY8WihD1f9qFYgCdAGP9IZ8VnxbqIAcq4ASAAFiE
-IP4gqBXv+K4AAAAAbBAOkxyVGogviikuIRonITQvMgT4QPAV57UBAPt/wBXgDRUAC9s56xYLKeAE
-gAD34QAP8ZkBAOcgBS83woAA/sHyDeKqAQDxQHAN4m4BAGRkQcGkCPqN+uAjTSIAnQCOIosc9cRc
-DeAKhQArsAGfEvNgIFcSAJ0AmRGZGBjs/Ovs/RJoDQAA7RYJLK8CgADoVQgM14KAAKuq6hYHInAF
-AACGGJ4Wixn0wAXqEgCdACpSnoYX+0AJY+IAnQAvUp0mYr8G/wFk9CEZ7OqJmPcgCOCSAJ0AKoKu
-ZKE5GuznI4KtKqJ/HezjCjsB6xYDJNv9AAD6YAkeIgCdAJvY+mAepiIAnQCHKYYqDAM+B2YM8sAI
-4+IAnQApGgDzIjIN4Pr1ACsgFpwQ+2AJJSIAnQAb7OgpIDj72cwFoAYFAPfg5hWgRwUA/YCIFeCZ
-GQAJdjkJujmLEpoUlhX9YBHS4gCdAIYbZGHTYAEDGezCiZhqkS6LGSpSno8Xe6NLLVKdL/K/D90B
-nROGE+vsuhTT/QAA72QAAwHpgACauGX/K2ADSp4d/CAGFaAKBQBZuNsZ7LGJmIwQGOyu7hINJI7b
-AAD//1wNoA8FAMCg+iBmFa/+5gAd7KjAugubNPuhBhXv/vYAAAAAAP/7dA2gDwUAAJ4dnx78IAYV
-oAoFAFm4xxnsnYwQjx6JmI4dGOyZ+T/2OJIAnQBgAr7AoJoTixMW7JXA2g2dNO1mCC327gAAYAKl
-nh2fHpwQ6iQACdgEgABYg9iMEI8e7hINJXZ5gABgAl2eHZ8e+kDwFaAMBQBYg7GMEI8e7hINLXZO
-AABgA8ScEP4hphWviQUA6SQ7JjhBAAAHAIbnEgInsIEAAAYCYY3Hl/iKxInGrX0HqgyaxHfbCZ4d
-7BYAJMgFAACMEosQhhWOFJm2nbcG7gLtIg8pUASAAFiCVI4dGOxqjBD6s6YVoQcFAHN7CCsgFikK
-/3m5foopKyA4o6rqJgkoBAqAAPNgBCeSAJ0AJiE0j8QrIRqJL+b/Ng3vwoAAf9sKCgpCyKQLDUJk
-0HP+IEYV4B1FAPn+AA7wChUA+iFmFaAGNQD2IUYVr/XGAAAAAAAAnh2KJ58eixzqrCAqYASAAFh+
-/O8SDi1gBIAA/iGoFa/8UgDqIAcp4ASAAFiDQ4wQGOxA/iGoFa/9tgDaIFiAXYwQGOw8jh36QSgV
-r/3CAHGeiAq/DP/9gBXv/goAF+w+G+w+HexDBqkChhsa7ELtmQIGQEEAAOVhVGfogQAAJRYQkx8l
-IAeDwAUlQOozAQqqgoAABTMCBzMCJyEHKiEiJiEJ9EHoFep3AQDrqgILuwKAAAdmAichJJPwgyCW
-85n2mvL14KYV46kBAOUSEC1SAoAACncC5/YEKZ4CgAAD4wLj9gEiU/0AAOMSDyIMNQAAbakFCACG
-DQJhJiAUpGYGBkcmJBT0wAgd0gCdAIgW+LOmFaEHBQDy4fIN4Pn1ACsgFvlgCLViAJ0AyD+LKSog
-OKO7mynzQAffkgCdAIwbZcDXwCDRDy0gTmTb8wroAvhARhWgAIYAAAAAAADzH93QUgCdAArvDP/9
-gBXv7r4AAAAAAADrEgwpUASAAO0SCipgBIAAWIBD0qDRDwDrEgopUASAAFiBztKg0Q8A+kBoHaAb
-xQD8ACIdoA0VAFiE8WP/wYsR+kBoHaAMFQDtEgkl2GEAAFiE62P/qQAAAAAAJiA7ZGB3K/qAKyQ7
-7BICLlgEgAAIIIYNAmPs9ggs8ASAAO0iDylQBIAAWIG3+iDGFaAMBQD8R2Ydr/vKAOsSAylQBIAA
-WAVVY/7yiifrRAAKaASAAPtEABWgDAUAWHnR0qDRDwDaIFh/32P/AOogByngBIAAWIK9Y/7fAAAA
-JyEHJBYRJiAHhMCTH/JERBXgZhEA6kQBCzKCgAAGRAIW67osISSKJwZEAiYhCfpmAAn6dwEA66EV
-K7sCgAAHZgKHL5TwhCCX9ZPy9+BmFaM5AQDp9gYpmgKAAAPMAuMSDyomAoAABOQC7PYEJVCBAAD1
-4CYVr8wFAAyqAaq85BIRJmEBAADsiz18SASAALBIDIYRppZ2wzb0n/CIkgCdAG2JBQlAhg0CZWP+
-AIsR+kBoHaAMFQD7YkAV4A0FAFiEmmP+YgAAAPsPAAz//w4ACcwMDEgUbYkFCWCGDQJn780IBUkB
-AADoTAwGwIEAAPWf7diSAJ0AsM5t6QUJgIYIAmlj/agAAABsEAYoIAUjIAckCgP9D0BEUTMBACgg
-ImSAbwIqAlh3mv1MwIDQDRUALCAhGOttDwIA7DMRBn1WgACoMykyng8CAG6TRSsynWSwP/pACBWg
-/uUADs4B/cYADvAPBQD8RCYd4AkFAPggBhXgDAUA+CAmFeAOlQD4IEYV4A0FAFh9uPRzphWgAgUA
-0Q/AINEPAABsEAoqIAX4QPAV4AwVAPhgaB2ntQEA6BYAJdv5AADryzkKGASAAOsWBSwgBIAA/UHA
-BFGZAQDBw/1AICUiAJ0AjSLv60UenBYAAOvrQRGwEQAA5hYELPeCgACv7u4WAyzXAoAAq6rqFgcs
-wASAAIcX9QAEIhIAnQCKFCdynoYTjxf64AdbogCdACZivy/ynQb/Ae8WBieaEYAAJSEbikKHKYYq
-BaU29U8ADnELBQB8swHVoJgaB2YM9MAF4+IAnQAqGgD1QjIN4Pz1ACsgFpga/WAF/SIAnQCKQvqg
-DnqiAJ0AjBUb6zaHQ5ga63cBBgj5gABgALYAABrrF4qo6BYKJQzfgACLF4wUhhMrsp6PFyZiv3yz
-Qy/ynRzrDgb/AeTwOWVb/QAAm8jvFgYv+24AAGACowAAAAD4IWYV4AoFAFm3LhrrBIqoiRvoEgol
-Dt8AAP//TA2gDwUAwPAc6v7AugurNPuBBhXv/wYAAAAAAP/8eA2gDwUAmRvqJAAK2ASAAFiCQIkb
-6BIKJXmpgABgAjUAmRv6QPAVoAwFAFiCGYkb6BIKLXmWAABgAxrw4ASIUgCdAC0hGowplxj4IUYV
-ou0BAOkWCy8EFgAAlxj4IUYVouwBAOkWCycDgYAAmBrpFgsu/8KAAHX7Xg7VDPnV6AWgt+kA5kID
-LdyCgAALeQKZGAhmAfaAZhWgAQIAiieZGysSAOqsICngBIAAWH2AiRv4IUgVoAslAOukAi0gBIAA
-6qICKAQKgADy//u4UgCdAIwplxiYGpkbjhiPFuWtDApYBIAA5cwICVAEgADtRgIq6ASAAOwmCSng
-BIAAWH2biBqJG48X+/OmFaEOBQB16wgrIBYmCv92uQzAofogphWv93YAAAAA6iAHKuAEgABYga2J
-G/ghSBWv/4oAjykY6sWJFqX/nymMQ4tAjRXnxAAEyIEAAPwOAAU36wEA7hYBLojmAAAnIAcHB0EI
-dwoncp/urRANU8KAAO2qAgJAQQAA6ncBAdP9AADnxwIBjD0AAG2pBQgAhgkCYYtAwICYEhnqsBrq
-ry8hGoYWHuqsJCEHGOqp/CAoFaHXMQD/oABGukQBAO3QgConAoAA7MwPJnBBAAD4hgAKNMwdAORm
-ACZgBQAADDwMFOqEDV0M6CIAL/oCgACfZpdnnmOdZQykOQmJAulmBCxGAoAA5GYCIdAFAAAIqAKY
-YSYgFONmCA0gBIAA5iQUKAQKgADzYAQakgCdAIgX9ROmFaEHBQD04fIN4Pn1ACsgFvlgBR1iAJ0A
-iBLSgNEPAIoVZKCjwCDRDwAAAAAAAADqJAAE2GEAAPwgiBXgDBUAWINpY//Ziif8ISYVp9tBAOqs
-ICgECoAA9aAEYdIAnQCMFisKAezMICnoBIAAWHhemhL6gAgV7/vOAACLFuxNEQlQBIAA/WAARfAM
-FQBYdkL0gGAVr/2iAGW7/Plf38jSAJ0ALyAg8f/fd5IAnQBj/3MAAAAAAAAA6iAHKuAEgABYgTuI
-EtKA0Q+KJ9ww6xIAJVCBAABYfOjAsvtARh3gAgUA0Q8AAAAA6zQADjgEgAD8YGgd4AwFAFh4O9tA
-7DQACugEgADqFgIr8ASAAO8SBilQBIAAWH0H+oAIFe/7FgDqJAAE2EkAAPwAIh2gDQUAWIMtY/7p
-AABsEAiSFJMVGeoriED4IEYVr8sFAOsqAQJwIQAA+iBmFaeIQQDkgcBiUBEAAI8TLSEFqYwswACv
-3wTMC+/8QC5YBIAA/4ANiuIAnQD6ICYVoGgBAP4AIh3gDQUABv04C98L690KB9ghAACCFZ4Q+QAA
-RXAMJQDyQQAV4A8FAPJAgBWgAg4AjRQOVQz/4CAVoAMFAO/kAARABQAA8Q5gDeB+AQCGEyKgAC3R
-BQQiC+bWCAlYBIAA4hYGIzEBAAD2QAZ6ogCdAAgGQPIAIh2gDQUABi04C9IL690KAVghAAD3IBAV
-oAIVAAcjOIcVB2YLF+oCpzcncKAGMgoGMwvsfAgBmCEAAI7QCwCJBe42LiYAAwCLItIA6qwBJMgF
-AAD0X/sj4gCdAAUpDA4qDPugBhWgBxUA9WAoFeAGBQAJdjgIaAgisgAF5QgltgF+WwIiLAHitgAm
-fRKAABbp6YsSHuno5rYBB5AFAAAGIgKGFe67AQxuAoAADbsCkmD6gAYV4SwdANEPixD8ICgV7/1S
-AAAA/E8ADf/8xgCFFRnpuQXFC/gAChXgAgUAsSLlgx4JD+gAAB3p0oYSGunS7W0BB9gFAAANuwKN
-FepmAQxOAoAACWYC69YAJhAFAAD2gAYVoSIdANEPAAAAAOoWAS1oBIAA+8BoHe/51gD9jwAN//k+
-AGwQDPhASBWgCgUA6yAHKcgEgADygGgd58UBAP2fwBWgBBUA7Ew5DLgEgAD8ISYVobsBAPMbXA3g
-DAUAmhacFZkTmxSbGx3psC4gFhXpixjpregWCC3/goAApf8V6YUY6YXvFgotpwKAAPSAAEJw//UA
-f+ETAioCWCygGOl+Hemi6hYIJSoRgABgABcAAGZjy/jAHyiQ+vUAKSAW+yAZTSIAnQCJiPcgBhCS
-AJ0AK1KuHOlzZLDRLMJ/K1KtDLsBZLDHsJmZiBzpkWSzSyzAgCzMN/4haBWkzB0ArDzrFgImYB0A
-APXABYISAJ0ALkKe/cAIK6IAnQCMGitCnSzCvwy7AesWACWZUYAAKnEMiXeZEf1ADqxiAJ0ALHAQ
-63IDJglBgAD5n/so0gCdAC5yA2Tg0I8WZfGwhhGPGI0U7hIAKVAEgADm/zYL2ASAAO8WASngBIAA
-WCpWGOlHHelr568ubTAEgABgAvIAAMCgWbVrGOlBiYgd6WT5P/mIkgCdAP/9CA2gCwUAwLDAqgqZ
-NPkBBhXv/M4AAGqRJCtCnnyzQYwaK0KdLMK/DLsB5LA1ZPP9AAD/AQYVr/0qAAAAAAD8IaYVoAoF
-AFm1VBjpKomIHelO7BINJI8TAAD//IwNoAsFAMCwwPoPnzT/AQYV7/xSAAAAAAAAAP/8GA2gCwUA
-AAAAihjAsZsW+V/5KuIAnQDA4J4W+V/4yuIAnQDrdAAJUASAAO0SCSngBIAAWCqS/gAiHeAHFQDn
-FgktOASAAP9AZhXv+7oAZLBJjxX+ACIdoAwFAA/sOGTAjIgRhhjqJAAL2ASAAO0SBCngBIAA6GY2
-CPAEgADmFgEg+BEAAFgrHujo/B0wBIAA/dI+Be/3/gAAAACLGA8CAA8CAPlhNg3gDAUAeaMBwMH4
-ACId4A4FAAyeOOwWBSd8kYAA63QACVAEgADtEgkp4ASAAFgrvPdAaB3gCxUA+iEmFeAKFQD64GYV
-r/2eAIsQFekBKiEHiXAc6P3/0cgF6qoBAP9AABU4mQEA7KoCBMA9AAD8ISgVpIgdAOq2ACRACQAA
-CDgMjiCZs+hfOQGz/QAA77YCL3YCgADubgIFqEEAAO62AS4O5gAAiBPojCAhlFUAAOo8/irIBIAA
-bakFCACGCQJhKzz+DLsRq1ubECggFCwgBKOI9YAImRIAnQAICUcpJBT1IAouUgCdAIhyKCYciXHo
-FgctqASAAPMgCjBSAJ0A8TX4DeAHBQCnZiZGnSogFisK/3uhCusSASlQBIAAWC6KjBllwOPAINEP
-6xIBKVAEgABYLoUuIBYY6Kf90ZYF4P/1AP/f5RxiAJ0AY/yHiBllj9IqcBDbcPxgaB2gCRUA+1/g
-FaANBQDqnTgJUASAAFgpSMAg0Q8AAAD6QGgdoBvFAPwAIh2gDRUAWIGhY/+9AAAd6Lct0IDrEgQm
-6N0AAPpAaB2k3R0A/GAARvAMFQDt3Acl2GEAAFiBlmP/jy4gFi8K///f+vRiAJ0A6xIBKVAEgABY
-Ll3AINEPixAMbBGsu/ogBhXv+5YAKCQUjXDxv/i6kgCdAPpAaB2gDAUAWHRw9sBgFa/8EgCKJ+s0
-AAnoBIAA+0QAFaAMBQBYdn3SoNEPAAAAAAAAAOsSAilQBIAAWAH1+iAIFe/6wgAAAAAAAOokAAxg
-BIAAWAN4iBeJcZoc56QADV8CgADrVQgE9U2AAOtUAAlQBIAA/QBoHeAMBQBYAz33QABD//o6AIon
-/KBoHaALJQDqrCAp6ASAAFgpOitwEPl/8TjSAJ0AKXAVCQhFZI4ZK3EJHOhwKnEML3ARjicMqgyr
-/w+ICf3CpBWvzQUA7uwgJHiJAADt7gEEQEkAAAr4Oah9rs7u7EAm6IEAAO7bWn7QBIAADuowG+hg
-LaEB/UAEFaH5MQAL/worIhfv8p8uZAKAAAzdAgvuDA/uLK7dqF79wCQd792BAP3ABB3v9nYAixT6
-QGgdoAwVAPtiQBXgDQUAWIE1Y/4NAAD9rwANP/6aAGwQBCMgACQK7XQxBiIhA7wi0Q+EIYYg8kBo
-FaAIJQD3ZAACsJRxAPkPAAxzNgEA9GAAQfNmgQDl6D0cAQqAAABmGvZgAQG9RAEA5SIBAag5AADl
-IgwBmGkAAAQkLAQzKKMi0Q9sEAiKIicgB4kwlRX4QtAVoXcBAPFdTA3omQEA+CAmFeD89QB8gR0F
-C0f7f8AV4AkVAOubOQlQBIAAWC4E81MwDeD89QAa5/iIqBbn9vcADZiSAJ0ALmKuGef2ZOHbKZJ/
-JWKtCVUBZFHRKIz/KKYI6VQAAo2BgAAb6BIlsIDt5+sSqN0AAPggBhXkVR0A5UUIC88CgADmmQgC
-qA0AAPTgCJISAJ0AKJKe9QATO+IAnQAlkp0NeAoogr8IVQFkUYgpIBb9IyYNoOvVACowEPtAElRi
-AJ0AKzELvLvaIFgtryggFCwgBKSI9YAMQReYAQApJBT1IA4uUgCdAIoVHufpjREoIQcc580Z5+X/
-oeAV6ogBAP8AABQ0/x0A6YgCB/gFAAAPTwyYUIsgD+w5/KBmFeeqAQDsVgIt3gKAAOtLAgLIQQAA
-61YBIcBBAAD5QAlxUgCdAOhBDWJT/QAAbakFCACGCQJhwICYFOkgBCJb/QAADLsRq1v1IAkJEgCd
-AIgyKCYc6TIBJdhBAACbEygWAvMgCbhQBQUAZpFQpUyIFAx9Eabd7NadLBAEgADRDwAAAAAA9wAO
-kJIAnQAMeRGmmS6SnvXADvviAJ0AJZKdDXsKK7K/C1UBZFHNsI2dqGVe3WAAYwAAAAAAAADqJAAJ
-2ASAAO0SBSpgBIAAWHvh0qDRDwDAoFmzshrnh4io+R/yGJD89QD/+VgNoAUFAAAAAAAAAPpAaB2g
-G8UA/AAiHaANFQBYgItj/7HAUMDqDog0+UEGFa/4rgAd550t0IAt3Df64wAV5N0dAO1NCAlQBIAA
-/aBgFeAMFQBYgH5j/3sAAAAA+EKGHa/6DgAAAACKJ/0gaB2gCxUA6qwgKmgEgABYdXT6IIYVr/tK
-AIsw82AIopIAnQDiEgQr5wKAAKbMJMad0Q8AAAAAAAAA6xIAKVAEgABYAOVj/jAAAOokAAxgBIAA
-WAJqiTGLE4gS7KwRDSgEgADsuwgE9Z2AANog/QBoHeAMBQBYAjGIFKWlpUwMfRGm3ezWnSwQBIAA
-0Q8AAAAAAP/2lA2gBQUAjTWMNB7navpg6BXgCSUA/HAAB7CtcQD7LwAMu4whAPsgBADTzAEA6MwI
-D/gKgAD/gAEGfd0BAO67AQZwOQAA7rsMBmBpAAANvSwNzCj9YABFv/W6AAAAAOokAAPYSQAA/AAi
-HaANBQBYgDdj/mHAoFmzUBrnJoioHecm+R/xCJD89QD/+PANoAUFAMBQwLoLizT7QQYV7/i2ALBL
-DLsR61sICVAEgAD7YgAV4AwFAFhzErNM4hIEK+8CgACm3SzWndEPAGwQBIk3F+c5KzAW+c5gBaMq
-BQAKKigLtgnoqAgLNwKAAKhmGOczp2fkcr8pAQqAAP74CBWgDBUA6GYIDmgKgADmQRh0wCEAAIsy
-mOCek5aSDbsCKHbAmzLRDwAAH+cmr68p8r0AsQTt8sEucAqAAA6ZAvn3phXv/vUADt0DDZkBHuce
-5XLAKW8CgACu3ZnQjzKYUOaGACkBCoAA5YYBLiAKgAAE/wIodsCfMtEPAAAAbBAKGecSCSkKKJJ/
-4hYIKWgEgAD7AAQA0AYVAOYWCisoCoAA+CCGFeBVTQAS5wkb5wkc5voY5tf1zhAFoyoFAOraKA6/
-AoAA6ZJ/Juu5AACdFaSkqHesrJwWKHK5JEKf66oIBMv9AAD6IOYVo5kBAPghJhXgYwUA+IAEAjAA
-bgAAihrAsP3/4h2gYwUA7FUDBQLxgACbGi1yuAReAQ7dAZ0QAQCHAzZgaD7VihiLF40ViBbjOQkB
-8oEAAO4WCSzPAoAA+QAARH//9QDijAgEQv8AAODhBARC0QAA6IKfK0gKgAAPmQMJRAELgABj/6eK
-GYsUsaoKCkMqtn/RDwAAAGwQBBvm1ioiAA8CACuyfx7m1PtPAA1zLwUAD68oDv4IKeK/KOK+/c2e
-Be/79QALmQPpiwENZwKAAP2AAEZ/9PUA/YAIFaADFQD5DuAd4A0FABnmxRjmsvkAAEZ/LAEA7PwI
-Bf1EgADLKQjqMCnCvy/iwAmIDOj7E36BCoAAL+K+ADgaBIgDCP8BL+a+/aAgFeG7HQDksCxmYMEA
-AH+3FGP/xAAACeow+ZfmFe//hgAAAAAAAP2gIBXhux0A5b/cZmDBAABYLlzAINEPAGwQBCYhCfhC
-kBXv+AUAJyAV6JgBCzYCgADomQwLuQKAAAdmAvhChh3gBwUAJzQA+GBmHaAEFQAEZgKWMRXmYyRW
-rdEPAAAAAGwQBBbmlRXmbdMPpiIFNQIlJoAkIoBnQAttCAUoIoBngAJj//PRDwBsEAQT5owiNopj
-//wAAAAAbBAEKCAFJSAH+mCoFa/01QD6QEgV4AMlAP0BIBHRVQEAwCDRDwCIKZorDwIA+wAIPCIA
-nQAa5nwKWgnpofwlUAsAACqhAPsgBLOiAJ0A82AEcBIAnQACKgJYclYrIgIPAgADugFkr7iKJwS7
-AesmAiVQwQAAWGuq4+ZFFQE5gAAooADTD9MPA4gKKIIQ7KAHLVgEgAD6QGgdoA1FAAuAAGWv3Ikn
-0w9kn3YqmRTKp4qZZK9sKKAAA4gKKIIQ7KAHLVgEgAD6QGgdoA01AAuAAGWv4GP/SgAA//9UDaAK
-BQDaIFhyQysgIuq7DAlQBIAAWHON2lD6ACId4AwFAFh1OosiA7oB83/65mIAnQAvIAfaIPwAIh2g
-DQUA9WAEBzG/AQDuJgIl2H0AAFh/F8Ag0Q8AAAAAAAAA6yAiKVAEgABYc3kqIAXBg3ihDGioKYsi
-82AEBX/8RgApIDrAv3uZ6vpAaB2gCwUA/AACHaANJQBYcrBj/9cAAPpAaB2gCwUA/AACHaANJQBY
-cilj/78AAGwQCogrHeYVLiAhizf8YMgVoP/lAA/uAS4kIQ3MAQy7DOuJCHjIBIAAwCDRDwMAhgkC
-YZsVKCAFJSAH+CEGFe/01QD8QEgV4AMlAP0bQEHRVQEAiikc5hCbK/tACBRiAJ0ADFwJ68H8JmAL
-AAAswQD9YASjogCdAPOgBGASAJ0A2iBYceiLIgO6AWSvm4onBLsB6yYCJVDBAABYaz0KqwLj5dcV
-ASmAACiwANMPA4gKKIIQLLAH+kBoHaANRQALgADrpAANfx4AAIknZJ9aKpkUK5IJyqhkv08osAAD
-iAooghAssAf6QGgdoA01AAuAAOukAA1/LgAAY/8tAAAAAAD//0gNoAsFANogWHHVKyAi6rsMCVAE
-gABYcx/aUPoAIh3gDAUAWHTMiyIDugHzf/rOYgCdAC8gB9og/AAiHaANBQD1YAQHMb8BAO4mAiXY
-fQAAWH6pwCDRDwAAAAAAAADrICIpUASAAFhzCyogBcGDeKEMaKgpiyLzYAQFf/w6ACkgOsC/e5nq
-+kBoHaALBQD8AAIdoA0lAFhyQmP/1wAA+kBoHaALBQD8AAIdoA0lAFhxu2P/vwAAbBAEHOW4izQp
-MBb9YAQFtZkdAPUgCAiSAJ0A7uWzFIiJgAD7y2QFr/3lAOTlhhSkuQAAaZUiLKF+7LMMdlARAAD7
-YAibogCdACsgBrC7CwtH6yQGJYLJgADAINEPLKF+0w/sswx2eBEAAP9gB9PiAJ0AKCAGsIgICEfo
-JAYsft4AAIkniyIqmRQNuwGbIouZZKC0KLAABIgKKIIQ2iD9YPAVoA01AAuAAMAg0Q8AiyKKJw8C
-AA27AesmAiVQwQAAWGrFya0ooAAEiAooghDsoActWASAAPpAaB2gDUUAC4AAZa/giSdkn28qmRRk
-oGCKmWSvZCigAASICiiCEOygBy1YBIAA+kBoHaANNQALgABlr+Bj/0IAAOokAAnYBIAA7EQACugE
-gABYcsPAINEPAOokAAnYBIAA7EQACugEgABb/0HAINEPAP/9HA2gCwUA//50DaAKBQCINyLifwmI
-EfhAAEE/+5YAiDci4n8JiBH4QABBP/v6AGwQBBrlQyiiy2SACwnqMCuizAuZDGeQAdEPWHTi0Q8A
-bBAEHeVVJyAHHOVU/kEEFeDnEQAO3DmcMIgg+8oyBeAKJQD6YEYV4BkFAOk2AyxGAoAACokC+GAm
-FeF3AQDmIHkrvAKAAPfmAA9wDQUA/AQCHaALNQDp5UITAjmAAJ01nDMLigIW5T+aMRrlPwbuAiYh
-CZ40mjYEZgIiIAedOZU7+MYAC3EiAQDmNgopFAKAAAL/Agn/Au82CC2QBIAA0Q8sIQgrIQmdNZU3
-B8wCBLsCCbsCCcwCnDTrNgYtEASAANEPAGwQBBjlDx7lIywgBx3lIxnlJvpBBBXg/BEA/80ADvHM
-AQDtNgAuZAKAAAy7Agm7AuOAgCmwBIAAHeTh/EAIFaAOBQCeZe1mAiG43QAA+sCGFeR3HQDqfP8u
-ZgKAAOx8Ag1XAoAA7GYBJVPhAACaYwIEiZlmI2YHBiCLJSEJ9MFmFaQzHQDlZgorkASAAOiABQMo
-wQAAbTkCBQJh0Q8AAABsEAYd5QILKxGtsyoyf/lACBWgBAUA+aBAJeAGFQDn3eUky4EAAOm5CAQB
-qYAALDJ4LzJ7+YAFjGIAnQBl8RYsNnwrMnkrNnvdQA3kFgECAJSgDeQWwMn8QAXsIgCdAC8ye8HA
-7eTrF4OhgAAiMnwqIQSOIPPh/g2mugEAJDZ89G9mFaAAHgAuNnztrwEFw/0AAAj/Au8lBCWMWQAA
-IjJ8sMzvMnshAPGAAMnGY/+/2iBYdPtloMQqIQT/QSAMFpoBAMiZ0Q8A2iBYdO7RDwDaIFh0sNEP
-AAAAAAAA+kBoHaALBQBYdX7RDy4s+OrSiC8BCoAA/MABBd/89QAMuwMLqgEq1ohZts4kNnwkNnv6
-b+gVr/zaAAAAFeR8L1BhZPBqWawpWHRnKHLL0w/IgVh0PClQYWSfJ1h0NsiuFeS2LFJrsMzsVmsm
-AsmAAFhzvWP/DAAAAAAc5LD+b4gVoApVAPxvSBXgC0UA7RYAIWvlAABZtP76b+gVr/sqAC4ye+I2
-fC96DgAAIjZ70Q8f5KQv8q5x9ov2rCYdr/4iAAAAAABZq/D6rWYVr/6SAGwQBBTknBnknOjkdRle
-woAApLQjQn+piOi4CAGCIYAAKjIAeKkCKkJ7HOSOKzEEKkZ/DLoB6jUEKdAEgABYdK3OqSkxBP8h
-AAwW2QEAyNfRD9owWHSh0Q/aMFh0Y9EPAPpAaB2gCwUAWHUy0Q8jRn/RDwAAbBAE8GDgDe/59QCI
-Igk5AwmIAZgiiicqrDBYaajj5EIVARmAACigAAOICiiCEOygBy1YBIAA+kBoHaANRQALgABlr+CJ
-J8uSKpkUyqWKmcmtKKAAA4gKKIIQ7KAHLVgEgAD6QGgdoA01AAuAAGWv4NEPAAD//1wNoAoFANEP
-AABsEAgW5GEb5GEU5Bb9yHAF4BjFAOMs6CXTgQAA+EANzCczAQAMNRGkVehSnilmwoAApsQpQH/5
-ABCT4gCdAChSnWSCB5sR6gseDUgEgACZEAoghgsCZQsCYw0AhwkCYQkCYRbkTB/kSu3DCAkBCoAA
-8iCmFeAOFQDj5AwfcAqAAJ4Tr8/+IIYV7//1AP/XAA9wB0UA/iBGFaAAugAAipnJrSigAAOICiiC
-EOygBy1YBIAA+kBoHaANNQALgABlr+ApQiBkkOstQHwe5CiMFQ3bCa7eDLsKLEB9pruKsi7ggGSh
-OP3Hvg2gCBUAwPANjziIFQ//CQj/Ci/9Fy/8vC/yG/HhcA3gDAUAwLEL2wMLC0crRHwLuwkIuwqm
-u/yPph2gDAUAjbDvUp4m8/8AAC7g///gBHuiAJ0AL1Kd9v/gFeD49QDx58AN53cBAHhxdOoSBCZA
-BQAA6ER9JuPhAABYdDKJE9Kg6xICJIBhgACKoguqASomAoonKqwwWGkwya0ooAADiAooghDsoAct
-WASAAPpAaB2gDUUAC4AAZa/giSdknxsqmRRlrvL/+8QNoAoFAIwRixAMgIYMYIYLAmkLAmfRD48R
-jRAuRH8PwIYPoIYNAm0NAmvRD5sR6gceDUAEgACYEAoAhgsCYwsCYQ3ghwgCb+jsAAnQBIAAWatT
-ZK+v7eO6Ga8CgADkVQgJZsKAAPeAAEI/+TIAAAD+IKgVoAsVAPu3AA3wDAUA/I+mHae7AQArRHwL
-uwn/YAEFsAwFAPdgAEW/+3oAAAALYIYLQIYKAmcKAmXRDwAAbBAEGOOBAgNHDDMRqDMrMoQZ444o
-sACKsQmICgohjAIKPiiCEAMCPvxAaB2gDSUAC4AAIjaE0Q9sEAQU43MCA0cMMxEEMwgkMoQqQgEm
-QAAoQAj6mGgdoKklAAIFPgMCPnmBIxjjeghoCiiCEOpUAApYBIAA/EBoHaANJQALgAAiNoTRDwAA
-AOskAApQBIAAWHP380BoHa//NgAAAAAAAGwQBFmusRLjWBPjeQwCACkiggkajgOoCoiEC4AAY//r
-EuOfA+gwBO4wBbEwkyCUIZUiEuObE+NbhCAEMwKTIBLjmcAwKDdAKDdEKDdIKDdMIz0BcjPtEuOU
-wDCTIMcvE+OTAyMDEuOShCAENAGUIBLjkYQgBDQBlCAS44+EIAQ0AZQgEuOOhCAENAGUIMcvwDED
-IwMS44uEIAQ0AZQgY//8AAAAEuOIgyADExQPMxGTIBLjhcAwIyYAV//ZEOOEkQCSAZMClAMR44KC
-EAHqMKIRAfAxwEAE5BYAAgAR436CECMaAAMiApIQEeN7wCGSEATkMYQDgwKCAYEAANIwASMAAAAA
-EON2kQCSAZMClAMR43SCEAHqMKIRAfExwEAE5BYAAgAR42yCECMqAAMiApIQEeNswCGSEATkMYQD
-gwKCAYEAANMwATMAAAAAEONnkQCSAZMClAMR42WCEAHqMKIRAfIxwEAE5BYAAgAR41qCECNKAAMi
-ApIQEeNdwCGSEATkMYQDgwKCAYEAANQwAUMAAAAAAFyUAV2UAl6UA1+UAEMAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABckAFdkAJekANfkABTAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnJQAHZABnZQCnpQD
-n5QECJQFCZQGCpQHC5QAQwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyQAZ2Q
-Ap6QBx2QA5+QBHiQBXmQBnqQB3uQAFMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AADclAAdkAHdlALelAPflAQElAUFlAYGlAcHlAgIlAkJlAoKlAsLlABDAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAA3JAB3ZAC3pALHZAD35AEtJAFtZAGtpAHt5AIuJAJuZAKupALu5AAUwAAAB///bQA
-0jEQ//4KAAAAAAAf//38ANMxEP/+CgAAAAAAH//+RADUMRD//goAAAAAAAD0MAoAAAAAAPQwCgAA
-AAAA9DAKAAAAAGwQCCcgB4giFuJW/cSkBeF3AQDlgPFr1wKAABjiTy6AgOaqCAdw3QAA/VPIFaTu
-HQCuTuviShdwCQAA/4AIS6AJpQAqop0LfAoswr8MqgHqFgIlB/mAAIjY9wAI8JIAnQAvYq7s4kAX
-hcGAACpirSzCf+yrAQRz/QAA/UAFJiIAnQCe2P1ABS4iAJ0ALyAUpP8PD0cvJBT14AeuUgCdAPgg
-SBXnhQEA+QAHcVIAnQDoPBAiDD0AALBKbakFCACGCQJhwFCIEo0y7SYcIkv9AADrMgEszwKAAKmI
-mBPzYApAUAoFAOoWAC2LSgAAixDrSwgL5wKAAObMCAXb/QAA68adKpAEgADRD+okAAnYBIAA7EQA
-CugEgABYdgPSoNEPAMCwCYw07NYILfseAACNImXf1fpAaB2gG8UA/AAiHaANFQBYerFj/7///AwN
-oAoFAAAAjiJl77AtgIAt3Df64wAV5N0dAO1NCAlQBIAA/aBAFeAMFQBYeqRj/4zAoFmtvR3h9YjY
-+R/2wJAJpQBj/5zaIFv7G2P/BgCOJ54RiOn7wqQV78kFAOXpFCdggQAACckB6b0IClcCgADqVQwE
-QEEAAJjpCFUy5eUUJukBAAD9AAg64gCdAGirPairK7zw+6AE0+IAnQDvEgIiDHUAALBObekFCACG
-DwJhK8IBC6sI5ckEJdvBAAD9YAbMYgCdAOvGAS3ABIAAZFCp9QBoHe/6lgAAAAAAAOokAA7gBIAA
-7BYELFgEgABb/HqLMYgTjRTqFgAtZwKAAOyICAX0/YAA2iD7AGgd4AwFAFv8QY0Q7a0ICpAEgADt
-TQgL9wKAAObuCAbr/QAALead0Q8I3Qz6IEgV5P0dANMPbfkFCCCGCwJjKxIC708MBMEBAADtuwgH
-jEEAAC78/23pBQhAhgsCZS/JBA2oDKiYKIww6MYBL/rWAAAqnECawfuABhWgCAUA+YCEHa/9FgAL
-iAz5wSYVr/vaACicQPmAJhWv/LIAbBAEHOGdGuGdDwIALcJ/KqF+LMKbo93qOgwO7kKAAP2AAEZw
-CwUAK8QEK8QFWRR6+kBoHaALBQBb/O7RDwAAAGwQBIUjgyAU4Y74QIQVoVUBAOrhjBquwoAA5FQI
-AYC5gAD7AAQENpg5AAmIAiglBCJCf9EPHeGDE+GEH+GEJkJ+KyEELkJ/kmCWIaP//WAEBfbLOQAM
-uwKvX+8mACcoBQAAJUZ/IkZ+6yUEKpAEgADRDwAAbBAEgiMCAkHRDwAAbBAEiiBloFAd4XLqIgMp
-9sKAAK7d/a/oFeAMFQD8gEAGMaoBAAaqAg3ILAjdKCclBe3MDARYBQAA/W0ADD/7xQDrqgEMTkKA
-AAlZAgOqApojCYgCKCUE0Q+PIxvhXg8PQQv+EavrLbJ/GeFYLLJ+ctkb2cDzJB4NoAwFAMDALLZ/
-LLZ++kAIFaAATgAAANjA8wyGDaAMBQBy0R2NIZrQjiApsn2d4Zwg7CYBJMv9AAD5b6YV7/1SAAAZ
-4UMY4USpiKjoeKEh6rZ/L4E2AADNriqyfWqiGS2ye/1v5hXgAE4AAAAAAAAAAOy2fyf/IYAA+kAI
-Fa/+ngAc4TSIIayZqen5DwAM8AwFAAnIOPlvxhWv/iIAbBAE9cJgBeAGFQD0QGgdoAI1APaAQAMw
-AB4AALAiKFJ/6GP3cquBAADRDwBsEAT0QkgVpCNBAPJaAAk/U4EABCIKhCaCIQVEKApEEaQi0Q9s
-EAQqIhIjIAf6PgAEMAY1APUACRCRMwEACshR9QAJKJIAnQD6KAAGsDsFAP3CJgWgClUAWbE5F+EF
-5OEDGc8CgAD0YAYSEgCdAKeZKpKe90AIidIAnQAqkp0EOworsr8LqgHxTuAN50UBACghBxnhA//C
-BgWqiAEA6+ECHEcCgAAJiAKYoBjhAPxACBXgPAUAnKf7QKYV4BmFAJmj+UBGFaAIBQCYpu7dAg7+
-AoAAnaQG/wKfoS8iEg+PQeimCC//AoAAn6nt4PEZ9wKAAKfuJuadLCISKiIQDcwC7CYSKVgEgABY
-0d1oQhmKJ/oAIh3gDAUA+0QAFaANFQBYbn3SoNEPAMAg0Q8c4M6LyGqxWww5EaeZLZKebtNmKpKd
-BD0KLdK/DaoB5KBZZfP9AAD/gQYVr/zCAC8aAA+qAvpCRhWv+2IAKCoACKoC+kJGFa/7VgAAAIki
-y5loQk3AINEPAAAAAP/77A2gCgUAwKBZrHwc4LOLyGuxlv/7mA2gCgUAAMCgwNoNvTT9gQYV7/ta
-AAAAAOokAAHYYQAA/AACHaANNQBYeVNpQrGMJy/JFIrJ/4QAFa/IBQDo7gEH+EEAAO/FFCVTwQAA
-6sYJJ3EBAAB+qyopwRUd4K6qmprJnaCMIPvBWAXgDRUA66YCLmYCgAANzAL9QCYVoAIFANEPHeCk
-naCMIPvBRgXgDRUA66YCLmYCgAANzAL9QCYVoAIFANEPAGwQGBTgnZIQjiAZ4JqLIy0iASwiAiwW
-Ii0WJCsWI/ggxhXgCBUA+CDmFaAPNQD+ISYV4AoFAPogphWgD7UA/iImFeAKdQD6IaYVoAiVAPgh
-5hWgCYUA+CHGFeALZQD6IYYV4A1FAPwhRhXgDFUA/CFmFaANxQD8IkYV4AzVAPwiZhWgC+UA+iKG
-FeAJ9QD4IqYV4AhFAJgUGuB6+iSmFaACJQDyIQYVoAKlACIWEBLgc4UWKxIkKRIFJlF+LBIiJ1F/
-BpkoL0CAqXn4XogVo5kBAAOZCu6SAC9QBIAAJVI+LRIjCO4IC1AAjhcsEiQtEiIG7igvQIGufvhe
-qBWj7gEAA+4KjuAqFhbqEiMtWASAAKjuC1AAjhgsEhYtEiQG7igvQIKufvheyBWj7gEAA+4KjuAq
-FhfqEiItWASAAAjuCAtQAI4ZLBIXLRIWBu4oL0CDrn74XugVo+4BAAPuCo7gKhYY6hIkLVgEgACo
-7gtQAI4aLBIYLRIXBu4oL0CErn74XwgVo+4BAAPuCo7gKhYZ6hIWLVgEgACo7gtQAI4bLBIZLRIY
-Bu4oL0CFrn74XygVo+4BAAPuCo7gKhYa6hIXLVgEgAAI7ggLUACOHCwSGi0SGQbuKC9Ahq5++F9I
-FaPuAQAD7gqO4CoWG+oSGC1YBIAAqO4LUACOHSwSGy0SGgbuKC9Ah65++F9oFaPuAQAD7gqO4CoW
-HOoSGS1YBIAAqO4LUACOHiwSHC0SGwbuKC9AiA5+CPhfiBWj7gEAA+4KLuIAKhYd6hIaLVgEgACo
-7gtQAI4fLBIdLRIcBu4oL0CJDn4I+F+oFaPuAQAD7gou4gAqFh7qEhstWASAAAjuCAtQAC4SECwS
-Hi0SHQbuKC9Aiq5++F/IFaPuAQAD7gqO4CoWH+oSHC1YBIAAqO4LUAAuEhEsEh8tEh4G7igvQIuu
-fvhf6BWj7gEAA+4KjuAqFiDqEh0tWASAAKjuC1AALBIgLhISLRIfKBIlBu4oL0CMrn75D+gVo+4B
-AAPuCi7iACoWIeoSHi1YBIAACO4IC1AALBIhLRIgLhITL0CNKBIlBu4omhOufvkQCBWj7gEAA+4K
-juDqEh8tWASAAJsRqO4LUACMES0SIS4SFC9AjigSJQbuKJoSrn75ECgVo+4BAAPuCo7g6hIgLVgE
-gAArFiOo7gtQACwSIy4SFY0TKBIlBu4oL0CPrn75EEgVo+4BAAPuCo7g6hIhLTAEgAAmFiLo7ggL
-WASAAAtQAI4RKhYkKRISKxITKBIlLRIVjxXsEhQkQQEAAOgWJSboQQAA7RYVJ/hBAADvFgUmYEEA
-AOwWFCXYQQAA6xYTJMhBAAApFhKLHYkcjB4vEhCNH+gSESZgQQAA7BYOJ/hBAADvFhAm6EEAAO0W
-DyRAQQAA6BYRJMhBAADpFgwl2EEAAJsdiRaLF4gbjRnvEgohEQEAAOwSCCRAQQAA6BYLJuhBAADt
-Fgkn+EEAAO8WCiIgQQAA7xIEJmBBAADsFggl2EEAAOsWByTIIQAA6RYGJ/v9AADvFgQv4WYAAIsQ
-iBOMEo+wibONso6xrJmm3aruqP+fsJ6xnbKZs9EPAAAAbBAEKSIV+KAABPA4dQDpjAwBIEEAAPMg
-AEU/iwUA66QQJVBFAAD5AAXTYgCdACsKAFmoOywiFSsiFO3NEQlABIAA/EJGFe6APQD9awANsAk1
-APpCZhXgCiUAbaoMjoQODo7uhgQkQBEAAA8CANMP0w9tmiHpggQkQEEAAIqBi4KMgwkJjgoKjgsL
-jgwMjpmAmoGbgpyD60QACVAEgABb/q2KIIgiiSGPIwgIjgkJjg8PjgoKjpognyMpJgHoJgIpQASA
-ABnfRQIAhgMCYfgAChXgCbUAbZoCCACK0Q8AAAAAAAAA/YEAFaALBQBZqAz4QGgdoAlFANMPbZoh
-6YIEJEBBAACKgYuCjIMJCY4KCo4LC44MDI6ZgJqBm4Kcg+okAApYBIAAW/6L2kD/+/wNoDyFAABs
-EAYpIhX4QogVoEYFANMP+IAARXWZAQAJZgx0qwGxiComFQYqDOgmFCVRQQAA9oAHs6IAnQDrNAAL
-YASAAFmn4PhAaB2gCUUA0w/TD22aIemCBCRAQQAAioGLgoyDCQmOCgqOCwuODAyOmYCagZuCnIMl
-LBDqJAAK2ASAAFv+aAZHDPbgBY7SAJ0A5jQICtAEgAD24GgdoAMFAOQWACpABIAA+MhoHaAJRQAK
-AmcIQIYKAmUIIIYKAmMIAIbqDAAJQASAAG2aIemCBCRAQQAAioGLgoyDCQmOCgqOCwuODAyOmYCa
-gZuCnIPqJAAK2ASAAFv+S+pUAAGYBQAA5mzAIiEBAADvbZpqQASAAIsQCjwRC8sI7HwMCtAEgABZ
-p6jRDwAAAAAAAOs0AApgBIAAWaej0Q8AAAD2YABGMAMFAPwgBhWv/yYAbBAEGN7ZGd7XGt7VE97Y
-kyOYIpkh+kAGFaALBQArJhUrJhTRDwAAAGwQBt4g5OIQKmAEgADnQgcr0ASAAPu9igXgGDUA40IV
-KZAEgADncg4i++kAAHj7Jxjexgj4CoiAmhOcEu4WASwAIoAAAJMQKrKl7FQACVgEgABZqWFkpcfy
-gqYV4AIFANEPAAAAACviEgubUu4WASX/QYAAGt6u4xYAKVgEgADqoscq4ASAAFmpVGSlehrep9sg
-6qLJKuAEgABZqU8jfQXkps9hmgEAABreodsg6qLLKuAEgABZqUj3R+AN44YFABrem9sg6qLNKuAE
-gABZqUJkpsQa3pbbIOqizyrgBIAAWak9+0BCiBIAnQArMOXBWPVgK+BiAJ0AabchJTTlixD6gqYV
-4AIFANEPkxAqsp3sVAAJWASAAFmpMGSnAosQ+oKmFeACBQDRDwCTECqyq+xUAAlYBIAAWakoZa8a
-+iBoHaALtQBYzeH6ACId4AMFAOqzOAUA4YAA6hICK1gEgABZp6zIqRzeeY0RDKw2LNYXZTMljRD8
-gqYV4AIFANEPLkBuZO7SkxAqssHsVAAJWASAAFmpEWWuv/ogaB2gG2UAWM3K+gAiHeACBQDqsjgF
-AKmAAOoSAitYBIAAWaeWLH0DKsUoZSLRjRD8gqYV4AIFANEPAACTECqys+xUAAlYBIAAWaj9ZKK3
-Gt5R2yDTD+qinyrgBIAAWaj4Za5a+iBoHaALVQBYzbH6ACId4AIFAOqyOAUn6YAA6hICK1gEgABZ
-p3wsQG/xgCc+0gCdAGSk34oT+gCiHeAM1QBYzY7SoNEPkxAqsrnsVAAJWASAAFmo4mWux/ogaB2g
-GyUAWM2bZKI1K0BuZLdv6hICK1gEgABZp2gsQhYKzDYsRhaLEPqCphXgAgUA0Q+TECqyt+xUAAlY
-BIAAWajQZKIzGt4k2yDqorEq4ASAAFmoy2WubfogaB2gC+UAWM2FZKHb6hICK1gEgABZp1MrfQIq
-tRSLEPqCphXgAgUA0Q+TECqyqexUAAlYBIAAWai8ZKIqGt4P2yDqorUq4ASAAFmot2SjhxreC9sg
-0w/qoqMq4ASAAFmosmWuB/ogaB2gC3UAWM1rZKF1K0BuZLbjGt4AixLqou8rYASAAFmoqGWmRitA
-b8DIDLsCK0RvixD6gqYV4AIFANEPAACTECqyv+xUAAlYBIAAWaidZKHvGt3x2yDTD+qioSrgBIAA
-WaiYZa2f+iBoHaALZQBYzVFkoQ0rQG5ktmoa3eaLEuqi7ytgBIAAWaiOZKZ5K0BvLAr9DLsBK0Rv
-ixD6gqYV4AIFANEPAJMQKrKn7FQACVgEgABZqINkobca3dfbINMP6qKbKuAEgABZqH5kotoa3dHb
-IOqiuyrgBIAAWah5ZKxfGt3N2yDqosMq4ASAAFmodGWsTBrdyIsS6qLdK2AEgABZqG9lpFKLESuy
-EguZUsiZaJIH+SAPYdIAnQCMESvGEvKCphXgAgUA0Q+TECqyl+xUAAlYBIAAWahiZKF6Gt212yDq
-opkq4ASAAFmoXWWstPogaB2gCyUAWM0WyqIa3a2LEuqi7ytgBIAAWahVZayUihP6AEId4AzVAFjM
-+NKg0Q/AINEPAAAA+iBoHaAL9QBYzQhkr+rqEgIrWASAAFmm1+sSACPgCwAAKsUV+oKmFeACBQDR
-DwAA+iBoHaAbFQBYzPxkr7otQG5k1QYpQG/xP+GXkgCdAPE/4VfSAJ0A6hICK1gEgABZpsUuQhcK
-7jYuRheLEPqCphXgAgUA0Q8A+iBoHaALpQBYzOpkr3IvQG7TD2T0duoSAitYBIAAWaa3KEE0+wAP
-AqIAnQCKE/oBQh3gDNUAWMzJ0qDRDwAAAPogaB2gG1UAWMzaZK8y6hIBKlgEgADsEgIraASAAFjM
-YosQ+oKmFeACBQDRDwAAAPogaB2gC5UAWMzOZK8CKUBuZJQZGt1kixLqou8rYASAAFmoC2WiXCtA
-b40Q/IKmFeAMFQAMuwL6jeYd4AIFANEPAAAAAAAAAPogaB2gCxUAWMy8ZK66Gt1TixLTD+qi7ytg
-BIAAWaf6ZaspihP6ACId4AzVAFjMndKg0Q8AAAAA6hICK1gEgABZpoD1QBXykgCdAMcv0Q8A+iBo
-HaALhQBYzKj6ACId4AIFAOqyOAUBSYAALEBuDwIAZMODGt1D6xICK2AEgABZp+Jlom4tQG/A6A7d
-Ai1Eb2UuNY8Q/oKmFeACBQDRDwDqEgEqWASAAFjMnWWvnCsw5WP6cwAAAAD6IGgdoBsFAFjMjmSu
-AihAbtMPZIL16hICK1gEgABZplspQhiLECtGFQqZNviDBhXgAgUA0Q8AAPogaB2gCzUAWMyAZK3K
-Gt0XixLTD+qi1StgBIAAWae+490dHQcuAACLESuyEgvJUciZaJIH+T/5EdIAnQCOEYwQA70BLeYS
-/IKmFaACBQDRD2UthI8Q/oKmFeACBQDRD+oSAitYBIAAWaY6KkU0ghDygqYVoAIFANEPJX0E9LAA
-FeALBQD6oGgdoIwFAFmly+oSAirYBIAAWMy1KzDlwMQMuwL6fCYdp7sBAPp8ph3v5f4ALTDl+iBI
-FaAOJQAO3QLtNOUrWASAAFmmIisw5fp8hh2v5W4AAIoSWZptLzDif6kUihJZmmrcoOoSAiPYEwAA
-WaeJZKG3wKL9uc4FoDsFAFms+ccv0Q8a3NiLEuqi1ytgBIAAWaeAZa4+ixErshILyVFokQpokgf5
-P/Fp0gCdAB7c2gO9AQ7dAo4RjBAt5hL8gqYVoAIFANEPihP6ASId4AzVAFjMF9Kg0Q8AAAD6IGgd
-oAtFAFjMKGSsahrcv4sS0w/qotUrYASAAFmnZuPcyB0FZgAAixErshIL6VHImWiSB/k/7hHSAJ0A
-jhGMEAO9AS3mEvyCphWgAgUA0Q8a3K6LEuqi3ytgBIAAWadWZa2WixErshILmVJokQpokgf5P+wp
-0gCdAB/csoIR778CA+gXAADvJhIm6gEAACzQ5cDhDswCLNTl8oKmFeACBQDRD4oT+gECHeAM1QBY
-y+nSoNEPI30FIzyAKzDlwMEMuwILC0f6fKYd7+ASAAAAGtyPixLqotcrYASAAFmnNmWtF4sRK7IS
-C+lRaJEKaJIH+T/oMdIAnQAd3JMDvAENzAKNESzWEosQ+oKmFeACBQDRDwAAAAAA9uAAQzALBQD6
-wGgdoIwFAFmlTMFQ6hICK1gEgABYzDYrMOUFuwL6fCYdp7sBAPp8ph3v3hIAAAArMOXAyAy7AgsL
-R/p8ph3v3b4AihP6AOId4AzVAFjLudKg0Q+KE/oCAh3gDMUAWMu10qDRD4oT+gFCHeAMxQBYy7HS
-oNEPihP6ASId4AzFAFjLrNKg0Q8AihP6AQId4AzFAFjLqNKg0Q+KE/oCQh3gDMUAWMuk0qDRDwCK
-E/oCIh3gDMUAWMuf0qDRD4oT+gDCHeAMxQBYy5vSoNEPihP6AOId4AzFAFjLl9Kg0Q+KE/oAwh3g
-DNUAWMuS0qDRDwBsEAQkIhBkQGwpMBAqMBEsMBrrMBIszgKAAAqZAuowEyzOAoAAC5kC6zAZLM4C
-gAAKmQLqMBgkhREAAAiqEQuqAuswGy1WAoAADKoCCKoRC6oCsarqJhYkhI0AACkiEuvcNxTAKIAA
-C5sBKyYSLEAFLQqVfcFJwCDRDwAuMBQvMBXoMBYvdgKAAA/uAu8wFy92AoAACO4CCO4RD+4C/ddg
-AFCNBQAvIhJ49yTApf24SAWgOwUAWawwwCDRDwAAAAD6gGgdoAtlAFjmbMAg0Q8AjCcpyRSLyfmE
-ABWvygUA6ogBBMkBAADpxRQl2wEAAOvGCSRBAQAAeLsGLsEVq+ubyRjcENmw+AAIHaAPRQBt+gIJ
-AmEc2/acsIog/UAAFTAMRQAMqgKasSkwFCowFR7cBu8wFizOAoAACpkC6jAXLM4CgAAPmQLutgIs
-zgKAAAqZAum2BCHAIQAA6AYABfhhAAAPAIoqIhKJIg2qAuomEiz35gAA+kBoHaANNQAL4ABj/ukA
-bBAGKCAEKQoYeYEDwCDRDyoiEiQiENMP80AKR9IAnQAvQG7TDw8CAP3nAIDQnFUAK0AFfLHVHNvk
-/EAIFeAKJQD+gAgVoDsFAFmr6vqAaB2gDSUA/EymHeALFQBY5ibAINEPABzb2o0gjjYvMQv4Y/AV
-oApVAPggBhWgOwUAWavdGtvTJCIYLDELiCyJSoVH/QAARDALBQD4QYYVoA0FAOVSDiSQSoAALUYe
-Cp4C/oFGFaAAHgArQh7rWggB2IEAAFmkdi9CHi4xC41Ar+4uRh4qUAQsUAUY27/rUAYtVgKAAAyq
-AulQBy1WAoAAC6oC7Nu6HS4CgAAJVQIIVQH0oGAV7/jFAPigBAKwOwUA/qBoHeAKVQBZq7cqIhMp
-MQsrQh4PAgAKmQjpJhMiwMEAAPl/9sUiAJ0AHdupLEIKDcwB7EYKKVAEgABY4zP6QGgdoAsFAPwA
-Ah2gDSUAWDb3wCDRDwAvIhMuMQv6QGgdoAsFAP/AAEdwDAUA/kJmFaANJQBYNu7AINEPAAAAbBAG
-HNuULSIALjIF9EDoFadVAQD+v8AV4AgVAA+POfSCghWgClUA9CAGFaA7RQBZq46JImWQmCYgBxfb
-VwYGQeoyBStHAoAAp4grgp4krB/5tqIF5EQdAHSzfCiCnQlrCiuyvwuIAe2EAAQDqYAAHNtxDACH
-bUkCCAJhiDQe21Ke0IkgHNtU6tYDJthBAADs1gIszgKAAOlJAgHggQAA6dYBKVAEgAALgAAMbxGn
-/+T2nSKUdQAAiif6AUId4AwFAPtEABWgDaUAWGjd0qDRD8Ag0Q8AAAAA//4sDaAIBQDqJAAKaASA
-APrDABXgDAUAWHPTwCDRDwBsEASHJyp5FB/bTfjipBXvzQUA6HIIJVAHAADscgslUoEAAOqTd3PY
-gQAADbsBq5nowXR0yQEAAC6NAep1FCdSgQAA6pNxfDAEgAB5oX2aeO8ABQs4BIAABwJhBwJhBwJh
-BwJhBwJhBwJhBwJhBwJhBwJhBwJhF9sbl2CFIJNllGTztm4FoAelAOJmAiquAoAAB1UC5WYBKxAE
-gADRD8Ag0Q8AAAAAAAD3gGgdoAgFAPjhZhWv/nIACJoMCroMKq0BKqzg+uEGFa/+IgAsvED84QYV
-r/32AABsEATHjwhYAwg4AghIA6ho6CIIC4EKgAACIhiiMtEPAGwQBAQ4AwhYA6ho6CIIC4EKgAAC
-IhiiMtEPAABsEAQEOAMIWAEISAOoaOgiCAuBCoAAAiIYojLRDwAAAGwQBAVIAwg4AQhYA6ho6CII
-C4EKgAACIhiiMtEPAAAAbBAEIyIQKDAF+EJIFeCUJQB0iUj/KKADEI0FAHifPXCfGera+xS9WIAA
-CpoB+kJGFaACBQDRDwAAAAAA/bXsBaAKVQD8YAgV4DsFAFmq8yswbtMPabEFLDAFdMEGwCDRDwAA
-APpgaB2gDSUA/EymHeALFQBY5SrAINEPAIwnL8kUi8n/hAAVr8gFAOjuAQf5AQAA78UUJdsBAADr
-xgkncQEAAH67BinBFaubm8kc2s7ZsPwACB2gCkUAbaoCCQJhHNq0nLCJIB7ayfv/4h2gDEUA6rYE
-LM4CgAAMmQKZsSgiEo8inrINiALoJhIv+4YAAPpAaB2gDTUAC+AAwCDRD2wQBBPaxQMiAtEPAGwQ
-BiYgB4giHNqO9EIIFeFmAQDlgntrTwKAAKyZKJKeGtqH9wATitIAnQAkkp0KaAoogr8IRAHo2pcS
-EumAACciEoop+EFIFeB3QQCXEAh3CidykOqZDAPYwQAA+yAPs+IAnQArIBYoCv94sRL6QPAVoAwF
-AFhxOezachURoYAAKyEHHdp7+bVEBeq7AQDv2nsd3wKAAA27AptAiCD7tTwF4EoFAPqAZhWgBlUA
-70YCLHYCgAAG7gKeQS0iEo4QLyEa+7UoBaLdUQDq7hEO7YKAAA3uAgvuAvsGAAwx3jEAqd0t0IDo
-RgQv+gKAAJ9GDX0M7kYHJujBAACdRSoiFYsp90AARX/pBQDnuwgFUMEAAOomFSXYwQAA6yYJIlCB
-AAD4gAtsYgCdABvabMSQ+gAIHeANBQAKAmEKAmEKAmEpRCAtRCQtRCctRCb8hKYd74oFACpEIS9S
-Ef6HZh3o/x0A/odGHej/HQD+hyYd6P8dAC9EOC4iFv6H5h2o7h0A/ofGHajuHQD+h6YdqO4dAC5E
-PIo0GNpi79pWEfBhAAD1QAYYEPn1AO4GAAJQoQAACgCKKUQwKEQx/oZGHe/+9QAuRDOKNC1EI/qG
-5h2o/R0A/oRGHejqHQD+hsYdqO4dAP6Gph2o7h0ALkQ06wAFAkkBAAAJAmEoIAcICEEMiBGsiCaG
-nSsgFi8K/3+xCvpA8BWgPAUAWHCmiDRogCeKJ/oAgh3gDAUA+0QAFaANRQBYZ64rIhIs+n8MuwH6
-QkYV4AIFANEPHto2LSISDt0C/EJGFe//LgDaIFhw4OzZ+RVwKYAAYAAriF4Z2imxiJheCYgC+IZm
-Haj4HQD+hkYd6P8dAP6GJh3o/x0A/oYGHe/83gDAINEPAADrbBgpUASAAPwAIh2gDVUAWHKPwCDR
-DwDrbBIpUASAAPwAIh2gDQUAWHKJwCDRDwBsEAYkIhIqCo7pIhMifGyAACgxC6mI+EJmFaAJBQDp
-JhEskASAANEPLyIYL/B0evFUKCAFGtoK6doKFAJZgAArMQsKRAEkJhKNOSwiE32YPy4iEavM7CYT
-ImWegABk4JKN7H3XIIjr+8BoHaALBQD8AAIdoA0lAAuAAMCQ6SYRLJAEgADRD8Ag0Q8AAAAAAAD9
-s+oFoAolAP5ACBWgOwUAWanpKiIQKaAFKwqVe5HWwML8TKYdoAsVAFjkJMAg0Q8c2eqN4P/AsBWg
-ClUA9CAGFaA7BQBZqdwtIhLAkPhCJhXvvvUADt0B7SYSLJAEgADRDwDaIFjhXcCQ6SYRLJAEgADR
-D2wQCCoiEg8CAPNADyfQiOUALSIYK9B0+WAOtCIAnQApIAUc2dHv2dEUjkGAAAyqAiomEvNAJztS
-AJ0AjiwoMgYkMCD8YUQVr/XFAP8AJ60lRAEADAxO/ZtgFaAmVQD1gAQGcIW1APVgEtRgJxUAD6gC
-rOn4QYYV4DsVAPhCRhWgLCUA9oJGDeAKBQB2QQp7QQf8gCg9IgCdAC0wMCoiEC4wMS8wMuqgcC7u
-AoAADt0C7jAzLu4CgAAP3QLo3REFeBkAAO7dAg+CCoAADQ4Z9cAj11X9AQAK5REF9QKVEfogBhWg
-OwUA/bNEBaAKVQBZqZUb2WIssogvIhgrspulzO/wdC5mQoAArLv6QiYV4Ii1AOqwBS3oBIAA+eAY
-TSCcpQD9QBgMIJ61AP9AF8wiAJ0A9UAXiJIAnQAvCpn/QCClYgCdAPaABXxgD0UA9oAFPCIAnQAp
-MEEsMEAuMDwqMD3oMD4uZgKAAOnMAg92AoAACu4CKTA/6jBCL3YCgAAI7gLoMEMuZgKAAOrMAg92
-AoAA6e4CDmYCgAAIzAIOyAzqIhAkBIuAACWiEn5RCAXoDGaAAi6mEi6iE3zhCA7JDGaQAiymE4q8
-D6oCmrx2QT3DwfyACXwiAJ0A9oAPjGIAnQDC4v6AF3QiAJ0ALxAQZfMSwCDRDwAAKDAjwJEImDko
-tEEoFBD2n/pdIgCdACowIX+nuykwQSwwQC4wPCowPegwPi5mAoAA6cwCD3YCgAAK7gIpMD/qMEIv
-dgKAAAjuAugwQy5mAoAA6swCD3YCgADp7gIOZgKAAAjMAg7IDOoiECQEi4AAJKISfkEIBOgMZoAC
-LqYSLqITfOEIDskMZpACLKYTLjA4KDA5jLzpMDovdgKAAAjuAugwOy92AoAACe4C6tk0H3YCgAAI
-7gLvzAIHcAUAAC4mFpy8+2FmFa/8tgAAAPgAYh2jmuEA+R/s9mIAnQAoMCQpMCXrMCYsRgKAAAmI
-AukwJyxGAoAAC4gCCIgR6YgCBlgRAAD5bQAOP/W+AAApMCHxIAfOEgCdACowJCwwJe4wJi1WAoAA
-DKoC7DAnLVYCgAAOqgIIqhEMqgJloM8sMEwuME3vME4uZgKAAA7MAu4wTy5mAoAAD8wCCMwRDswC
-6iIQJgVpgAAuohj9wAUTogCdACy2EiowSC4wSe8wSi1WAoAADqoC7jBLLVYCgAAPqgIIqhEOqgIq
-thQpMDQuMDXqMDYszgKAAA6ZAujY9RzOAoAACpkC+mbwFaAOBQAuthUuthPotgsszgKAAAqZAvlh
-phXv+IYALjA4LzA56DA6L3YCgAAP7gLvMDsvdgKAAAjuAgjuEQ/uAuzY4xdwBQAALiYW/WFmFa/3
-sgAAKiIQL6AFKAqV+f/vBCIAnQDAkvhMph3gCxUAWOMKwCDRDxzY1u2yAC1wBIAA+kJIFaA7BQD6
-IAYVoApVAFmowC0iEvpCCBWgTgUADt0CLSYSLjBBKzBALDA8LzA97TA+Ld4CgADuuwIOZgKAAA/M
-Ai4wP+8wQi5mAoAADcwC7TBDLd4CgADvuwIOZgKAAO7MAg3eAoAADbsCDL0M97/qaBIAnQAtohJ8
-0QgNzwxm8AIsphIsohP7n+mcYgCdAAy4DGaNKPtCZhXgAgUA0Q8AAAAqMDgsMDnuMDotVgKAAAyq
-AuwwOy1WAoAADqoCCKoRDKoC6dijFVAFAAAqJhaZu4rXKTwg+0HIFaALNQBtugUJAIYKAmHAINEP
-KSIRZJB/iZeJnvkmABXgC2UAKjwg0w9tuQUKIIYJAmPAINEPAAAqIhBj/rwAAP/uMA2v9fUAHNiN
-LzAwKTAxjrDoMDIv/gKAAAn/AukwMy/+AoAA6P8CDWgEgADoMCAv/gKAAPnmAA/wCiUA+CAGFaA7
-BQBZqGzAINEPAAAA+kImFa/9kgCJ1ysxC4mev7sLS0vlv3xkyMEAAGP8NQBsEAYrIgcmIAcPAgAo
-uRQFDUf1YcgVoWYBAOOyCSQOUYAA+aAQUVIAnQAc2GkoIgD/YEgVoApVAP2/wBXgCRUA7Z05CXgE
-gAD4IAYVoDsFAFmoTRzYYPxgEBXgClUA/koQFaA7BQBZqEgX2BPl2BIbTwKAAPTAC8ISAJ0Ap5kq
-kp73QA9aUgCdACqSnQVrCiuyvwuqAWShpSshBykgQC8gB/WwKAXquwEA7dhLHd8CgAD1IAuYke8B
-APUgCRkSAJ0A9YAI2pIAnQDAwPmwiAWg/xEA6SEIL/qCgAAPuwLtuwIPdAKAAA6ZAgiZApugjiCY
-pvVARhXgPwUA+UCGFeANRQD/QGYV4AkFAOmmBSVYgQAA6aYHL3YCgAD9xgAPcA8lAO6mAS52AoAA
-7+4CBUkBAAADIIYLAmMDAIYLAmH/QSYVr5V1AASAhgkCaQRghgkCZwRAhgkCZegiEitPAoAAp5nt
-lp0hISEAAPUMRg2vZ4UAFtgbIyISDwIABzkIKpInJZR9LJImLKYAK5Im+2AmFaAIBQDoliYhm4EA
-AOiWJynQBIAAWaX3+gCiHaA7BQDsZAAJ6ASAAFmn8y8iEsDh0w/17wAPsA0FAA/tOGTfpOUkBSlQ
-BIAAWaXqwCDRDwD8gFAVr/ueAP/42A2gAwUAHNevi8hqsX8MaRGnmSiSnvcABHJSAJ0AKpKdBW0K
-LdK/DaoBZKB8sL6eyGWueWAAHAAAAAAAAAD8EEIdr/p+AC8gQAj/EP5gBhXv98IAjyJk8F8c1+ju
-IgApaASAAPngaB2gCRUA/y0ADHAKVQD4IAYVoDsFAFmnyMAg0Q8AAAD/+IQNoAoFAMCgWaNUHNeL
-i8j5f/uQkgCdAP/+NA2gCgUAwKDA2g29NP2BBhXv/foAAACPMOokAANYYQAA/6+cBaf/wQD+SAYd
-4AwVAP5gBhWgDUUAWHAm/kBIFe/93gBsEAiJJysgByiZFPTgAAZxuwEA5pIJJAgJgAD5gAnhUgCd
-AC0gQRzXb+TXbx2YBIAA8bNMDeAFRQD2AAId4A0FAPVgBtoSAJ0ADLoRpKouop71wA0b4gCdACmi
-nQy+Ci7ivw6ZAeqUAASJ6YAALyBBZfFmHNdsGdekKCEHLSAHHtej/kEEFeqIAQD8IAAF8N0RAOrd
-EAxHAoAA7YgCDdwCgAAL/wIO/wIJiAKYoIggn6T/QMYVoA0FAJ2l/UDmFeA7BQD9QEYVoAlFAOum
-AyxGAoAACYgC6KYBJUiBAAAGIIYJAmMGAIYJAmH84AAVsAwlAAy7ApupDDoRBKoI9VOmFe+ZdQDp
-JAUpUASAAFmlacAg0Q8AAAAA//v8DaAGBQAf1y+O+PfABriSAJ0ADDoRpKooop71AAeD4gCdACqi
-nQw4CiiCvwiqAeSg3mdL/QAAmfj5QGgd7/w6ACogQAiqEPrABhWv+voAj54t8AQn8AUe10nl8AYu
-7gKAAAfdAu/wBy7uAoAABd0CCN0RD90CDt0BJdxn9I4ACvCHlQD0oIAV7/p+AI8i6xYEJ4R5gAAc
-11vuIgApaASAAPngaB2gCRUA/y0ADHAKVQD4IAYVoDsFAFmnOcAg0Q8s3Ejr3GcpcASAAP7AaB3k
-ux0AWaYgY/5/AAAAAAD/+aQNoAkFAJsU/CCmFeAKBQBZorwf1vONFY74ixQc1vP53/iAkgCdAP/8
-uA2gCgUAwKDAygzsNP3hBhWv/H4AAAAAjWDqJAAF2GEAAP2ubAWn3cEA7SRAKugEgAD8wAYVoAwV
-AFhvjP5ASBXv/TIAbBAGiScjIAcomRQDA0HmkgkkBzGAABTW2vWtsAXnhQEA+QAIoVIAnQD0YAaa
-EgCdAAw5EaSZKpKeBTsKK7K/90AJ6lIAnQAqkp0LqgFkoPcpIAcrIQcc1xL7QAAF8NkRAOrdEA3f
-AoAADbsCDLsCm6COIPmtpAWgPwUA/0BmFeANRQDopgIvdgKAAA3uAp6hLCBB+gACHeAPBQD5RAAV
-4ekBAOXA0W90AoAALCEIn6UOzAIe1vyfp56mDswCnKQGIIYJAmMGAIYJAmH9YAAVsAwlAAy7Apup
-DDkRpJn9M6YV75h1AOgkBSlQBIAAWaTXwCDRDwAAAAD//GgNoAYFABfWnYt4arF/DDkRpJktkp4F
-PArswr8oBAqAAPegBApSAJ0AKpKdDKoB5KB1Zev9AACdeGWvGWAADi4gQAjuEP7ABhWv+5oAAI8i
-ZPBlHNbb7iIAKWgEgAD54GgdoAkVAP8tAAxwClUA+CAGFaA7BQBZprfAINEPAPoRIh3v/L4A//sk
-DaAKBQDAoFmiQot4+X/7qJIAnQD//mANoAoFAADAoMDKDLw0/OEGFa/+IgAAAAAAj2DqJAAB2GEA
-AP+tgAWn/8EA/kgGHeAMFQD+wAYVoA1FAFhvFP5ASBXv/cYAbBAEiiqOrxjWt+gmCyFIgQAA6eYA
-JXjhAADvJggpWASAAP5BJhWgDAUA+UHmFe+YhQD4QKYdoA0lAFhtgMAg0Q8AAABsEAQb1qgqMQzT
-DyuyfxzWivhiEBXgFGUA+0P2DeAFBQB8oRfqJAAK2ASAAOw0AApoBIAAWOAcwCDRDwBokUFokiFo
-lAnAQP//ZA2gBQUAfKHRe6vO2jBY4EnVoP//EA2gBAUA/UDmDaAUZQB7owJgAAHAQNowWOBf//6c
-DaAFBQDaMFjgceWkAAUBEYAA/a0MBaAKVQD8YCgV4DsFAFmmY//9/A2gBAUAAAAA//3QDaAExQBs
-EAQpMBPxJgAN4PWFAGiRA8Ag0Q+EJ4ROHNZ37TARIkAXAAAthGL+YlAVoApVAP8MZh2gOwUAWaZQ
-Kk0E7DARIdhhAABY4ILlOwgCUBcAAOwwEiVTgQAAWOB96iQAClgEgABY4dPAINEPhCcPAgAPAgCE
-ThzWYi0wES1EAv5iUBWgClUA/oBmHaA7BQBZpjrrPBgiUAsAAOwwESVTIQAAWOBr5TsIAlAPAADs
-MBIlUqEAAFjgZ8Ag0Q8AAGwQBPRAYCXosx0AI1RX+qrGHeBENQD0qqYdoAh1APiqhh2gCQUA+Kpm
-HeBKBQAqVFLRDwBsEASPOP2shAWgClUA/GIQFeA7BQD/4Ggdof/xAFmmGikwEOrWPBSMkQAAaJJZ
-aZQSiDYion8JiBGoIiggBSkKlXmBXsAg0Q8AAADaMFjiqP9fAA3gCXUAi6eLviyyjgydVv0jQB3o
-7LkAwNN+0BD7YEAl4AwFAFjidMAg0Q8AAFjhj8Ag0Q8AizYqon8JuxH7QABFcAsFAFjhHMAg0Q8A
-AAAAwKX9rDgFoDsFAFml9vpAaB2gCyUAWOA0wCDRDwBsEASILiMsOHOJBcAg0Q8AAIsuiLPsRAAK
-6ASAAOu84ClQBIAAC4AAjCLtIAUufu4AAGTf1Y4uc+nWY//NAAAAbBAWKyAHhzUjFhqINOUWFypI
-BIAAmRzqEhcp+ASAAP/h5BXgAxUA8iHmFeDIWQD8I2YVobsBACsWFvwjSBWgv3kA+iJmFeeqAQAq
-FhUb1fMuwT0twh/8IgYV4/b1APtvxBXgd/kA/iJGFaBIUQD9g7AVrDgdAOs7DARUPoAADwhJ+CHG
-FaAAGgCWHvwgBh2vuwEAKxYU9UA8IRIAnQCPIvvgQaCSAJ0A8OVwDeAKBQDqFhEjgEmAANowWOrz
-9AACHeAGBQAtEhvacPoAYh3gDCUA7bw5ClgEgABY6tv3QABDMA71AHbgVPQhZhWk9h0A4xYKJ/gF
-AAD+IwYV4AE6AAAAACgSEmSHYikSGomVfZaeKxISLBIQ/CBoHeAKFQDqFhEp0ASAAFjrCWankvoA
-Yh3gBQUACrU6ZFd8w2CUG/IhRhXkxh0ALBYYLRIWHNVXHtVZ49VZHqAEgAD1oAk6EgCdAOkSGC63
-AoAAo2YoYp75AEEj4gCdACZinQ7YCiiCvwhmAdtg5rQABb2BgACPyJsV9+A96JIAnQApMq7q1aAU
-u4GAAC4yrS2iYe3rAQfT/QAA/cA65mIAnQCayP3AOv5iAJ0AjRwsIBQPAgCtzAwMRywkFPWAPH5S
-AJ0ALhIbKRIU8cDADeAINQD5AD2I4gCdAGRQzoobDwIAyKFkUGPrZAAJUASAAPwAYh2gHYUAWOr8
-7hIOLXgEgADmEgoir5mAABzVgC0SE/mqYAXgCgUAmvKa85r0mvXpaQIPRAKAAOn2AC7ogoAA6N0C
-CvbCgAD/pgAOsBvFAP3gJhXgClUAWaVJKxIV+WA4KVIAnQDAIOwSGCpvAoAAo90s1p3RDwAAAAAA
-AI/I9+A44JIAnQDpEhgqNwKAAKNmKGKe+QA5O+IAnQArYp0OTQot0r8NuwHmtAAFuNmAALD+nsj6
-wGgd7/sWAC8SEdMPZPB36xIFKVAEgAD8AGIdoB2FAFjqyRnVUhbVT44aKBAAJmKdCe4CGdUkCB8U
-5oYLD/sCgADp/wIEfKCAACwSEO0SEiNb/wAAKLI/K7F9nqCfoZ2inKObpPlAphWgAHIAACwSEC0S
-EithBYhjnqCfoZuimKOdpJylJqwYLRITjB4C3RDtFgcuZAKAAOwWCCum/gAAGtTj+CFIFaAPBQD+
-IMYV4A8lAJ8dCogCKBYJ62QACVAEgAD8AGIdoB2FAFjqno0ZLxIaiRYrEhqP9fE10A3j/vUAHNUj
-i7T/QEYVoI+ZAP1ABhXgb4kA/UAmFaDfoQDw0AATMM+RAO7VGx7pQoAA7qYDLEECgAD9BgAMebsB
-AOumBC5gwoAADGYCCGYCJqYFLBIN6ZwBJTBhAADpFgYmY/0AAOwWDS57pgAA62QACVAEgAD8AGId
-oB2FAFjqehbVBokXjxj6ISgV4A0FAJ0RnRKdE50UnaT9QKYV7/71AJ6inqOboC4SGun/AgrGwoAA
-6P8CAOAxAADm/wIA2CEAAO0cECUwYQAA76YBINARAABY6Ur5QGgd4AwVAOrJOQ0oBIAA6RYeJSAJ
-gAAkFh/+ACIdoA0FAAntOOUWICbq4YAAE9TmiBiMFxrU5SsSG4QaFdS18XgAFLAOFQDr6zkKJ4KA
-APSGAAp2DwUAC685/SYADLANNQD5JgAMMAwlAAvcOSwWHQn5AikWGfnmAA+wBQUA/iOGFeADCgAA
-D1ZQ/hgABfDPyQD8ISgV4I+xAP1ABhXg73kA7O4RDEQCgADrzBAN2oKAAOy7AgszwoAA+MYACzDP
-gQD9iAAWMY9pAOzuAgxFAoAACO4CHNSPnKEoEAAG7gL7xgAPcG+5APTIABM7vwEA98YADzAGJQDm
-7gIN3QKAAO6mBCxCAoAAC4gCmKUb1LCbohjUsPlAZhWv+Y4AmaGUoJ6inqOepJ6lnaadp52onakv
-Eh3lXAElMKEAAP6gEZxiAJ0A62QACVAEgAD8AIIdoC2FAFjqD+RQUWrOwoAA9KAKYJIAnQArEhzH
-7/smAAzwDQUA45kCC/0uAACNEywSGo4SjxGLzCzCEJmhm6n1QAYVoAgFAJiimKafo56knaecpYwU
-/UEGFa/+JgAtEhssEhkb1IkMmQLrmQIGhBmAAPDiQA3v/vUAmaGUoJ6inqOepP9AphWgDQUAnaad
-p52o/UEmFe/9NgAvEhoiFiEr8hYm8Tgi8Tos8hXo8TkrNAKAAAYiAibxOy3yG+7yGixEAoAACGYC
-KPIXL/IZn6Keo52knKabp5iolqWZoZSgkqnyJCgVr/v2AAAAAAAAAADw4kAN7/v1AJmhlKCbopuj
-m6T7QKYV4AgFAJimmKeYqPlBJhWv+zoALBIajRIvwTsmwTkowTguwTrrwhgrNAKAAOb/AgxEAoAA
-CO4CJsIUiMwswhCbpJinlqiZoZ2ilKCco5+lnqmMFP1AxhWv+hoAKxIb7BIZJYNRgAAb1EfH7/0m
-AAywDQUA65kCA4DxgACZoZSgnqKeo56knqWdpp2nnaj9QSYV7/kyAC4SGiIWIS3iEiziEyviGIjt
-hu4v4hSC7y7iEZ6inaOcpJulmKaWp5+pmaGUoJKo8iQoFa/4VgArEhzH3/smAAzwDAUA45kCA4Dx
-gACZoZSgnaKdo52knaWcppynnKj9QSYVr/eaAJmhlKCOE/4gKBXgCAUAmKKYo5ikmKaYp5ion6X/
-QSYVr/cKACoSGhnUGYqlE9OzJRIg5BIfJUwwgADj068Tg7mAABzUE4saDLsC+z9GFe/nogCFH8DS
-960ACv/oJgDApf2oGgWgG8UA7j4RCegEgABZo9Vj+GcAAPoiiBWgDgUAnhGeEp4TnhRY6E4kFh/l
-FiAlYmGAAPoiiBWgCwUAWOhBJBYf9CQGFe/w2gAvEhBl+JZj+Doa082IGgqIAvk/RhWv5dYAwKBZ
-XZjIpxvT8yuwgGSwWioSFFjoOukSHi1fTgAA+iKIFaALFQBY6C74I8gV7+9aAAAA/+AkDaA2BQDr
-EhIp0ASAAOwSECjoBIAAWOj9Y/hWAAArEhqMHO0SFylQBIAAWGdm0qDRDwAAAAD7p7YFoUsVAFmN
-kiwaAAysAvunrAWhSxUAWY2SY/+FAADAsMDaDf007cYILcVOAAD6QGgdoBvFAPwAAh2gDRUAWGwL
-Y/+hAAAAACsSFvpAaB2gDAUA7RIYJdhhAABYbARj/4TAoFmfHRzTVY/I+f/ByJIAnQBj/7faIFvs
-e2P4bIonjRzAwOqsIC7YBIAAWGD40qDrEhgqZwKAAKPMK8ad0Q8AAAAAAAD/36ANoAYFAP/hSA2g
-BUUAwKBZnwgc0z+PyB7TQPn/xriSAJ0A/+PwDaAGBQAAAAD/45QNoAsFAMDaDf00/YEGFe/jkgAA
-AABsEAQU05+CICRCfxPTngQiDAMiAtEPAABsEAwa0zEY05opopsqopEogH0JqhHqmQgEfECAACSd
-AfSQABWgAC4AACSdAyRMgBnTWyhBKfkACCxiAJ0AGtNH6gAFCMgEgAAJAmEJAmEJAmEJAmEZ04kY
-02Mf04aOIJ8S+CDGFaAKRQDpFgAvdgKAAArqApoRKUAHL0Ep/acABaGZAQDj7gIMzAKAAAn/Agj/
-Ap8UKyA5/iFmFaANJQCdGQy7AusWCCgECoAA9GAE0ZIAnQCJRyqZFOSgg2TggQAAjZmLwP/4Ah2g
-JYUA7s4BBoI5gABtCC59sTwv0AAp0Ad18TMvwQXu+AgMzwKAAOndCARBAQAA6NsVftAEgADtpAAF
-AKmAAGP/ygAAAAAAAP+vAA1//64A/W8ADXAJBQAKnTjm1AAOgaYAAOpEAAjYBIAA/ACCHaANJQBY
-XJzRD//9/A2gDQUAAAAqHDr6R0AV4AxlAFmbuGP/WMJ2jmj6AKIdoDtFAOzTRhtoBIAA/kcwFePu
-AQBZowaKaAqPV3fxbYpHLqEV+0QAFa/LBQALqwGr6+tqcHNpAQAA76IAJoGBgAB98Sgs0ADTDw8C
-AHXBHSnQBwyZEendCAXBAQAA6NskftAEgADtpAANfsYAAP3vAA3wCgUAC6045tQABvphgABj/3YA
-AP+vAA0//3IALCA5Cg1DfcmIjiAI7hEOPgKea9EPAAAA/68ADr/+QgBsEAQY0xwpgn8qMActkQIu
-kQT9IKQVoA8FAOuSACaJKYAA7uz/JpP9AADilQIvdwKAAO67CA5nAoAA/W8ADbAAxgArkQUtkQSx
-u/+/4BWvuwEA65UFL3cCgAD9YAbUYgCdAIyQ7swIDd8CgAALywwLAIcP32DrAAcG8yeAAB7S/imR
-BSvifwmZEanZ7eJ9JYYpgACM0YvQm8CL0Jyxn9Cf0Svif7C7K+Z/9aAGNB+5AQCM2fmjABWvyQUA
-+QAEBH8SBQAC0ggrJjr/ogQd5UkFAOnVESQhAQAA5NYHLS8CgADk1gYqWASAAPWABNwiAJ0AJdUQ
-6FgIBHgbAADsjEAn+gEAAP3gBFuiAJ0AyTLpRAAFAIGAAG2pBQMAhgkCYSsiQqtY/wAFhGIAnQDo
-JkImk+EAANEPAAAvlQX//IwNoAsFAMCl/aWaBaA7JQBZoozAINEPLeKAjNGL0JvAi9CcsZ/Qn9Er
-4oKwu/vQRhXv/O4AAMDA+w/oFaANFQBYX3zAINEPAAAAAO/WCSaT4QAA0Q8AyzD6YGgd4FzFAOys
-NgpwBIAAbckFCyCGDgJj+GAARfBeRQB+oQ0vrKzTD235BQtAhgQCZSmN++kmQiaT4QAA0Q8AAAAA
-5CZCJpPhAADRDwAAbBAMKCAEjCfkIAcqUASAAOoWCikwBIAA/YHIFaAZxQD5ABoEYUQBAIgi6tKc
-HAOeAAArIFMtIBYLuwnsFggt3wKAAKuqKqJ/KhYJ9GAX6ZD+9QD0YBeqEFcFAH7RGAULR/t/wBXg
-DxUA6/s5CVAEgABY/R5ko2LaIOt8HyvgBIAA9iFmFaS7HQDrFg0qaASAAFj84uakAA0CbgAAjCJk
-wyKNGh/Sf44gkxKfEP3AABcwDyUAD+4C7hYBJoCJgADb0PohgBWgDGUAWZre6iQACNgEgAD8oGgd
-4AwlAFhl7dKg0Q8AAIobjBn7pNwF4A8FAPtE0BWg3DkA/sFEHeLsQQDo7hEO7UKAAP+mAA62zAEA
-7cwCDVQCgAAMqgILqgKaZPRgEjmSAJ0A9GAR+hIAnQDEsCtlCx3SXCkhGRjSXJ1m+yAAF7vJAQDo
-/wIGAHmAAAneFATuEQ6uAp5kn2b0YBJpEgCdAPRgEioSAJ0AHtJQ6eECIOhhAADp1QIjUIEAAP/A
-CBWgDGUA7tYALtgEgABZmqwe0kgc0dTqbCYheQEAAO8WDCms0AAALyBBLSBALWQmL2QnKyBDKiBC
-KmQoK2QpKCBFKSBEKWQq+MVmHaAAvgAAAAAAAAAAjBsswCYb0cIMzAkMzBGsuyu9IPt7QBXgDGUA
-WZqTHtIvHNG7I2QzGtIt+sWmHaCJlQD4xYYd4BgFAPjFxh2gDwUA/sYGHeANVQAtZDH0YAmJkgCd
-APRgCUoSAJ0AwKoqZDX6IWgV4A8lAC9kOP7HJh3gDQUA/MbmHeANBQD8xsYd6PodAC9kNCuwJgu7
-CQy7EevLCANQ6QAA/2AARbAMZQBZmnIqbET6RwAV4Ak1APjIJh3gCEUA+MgGHaAMhQBZmmrAtfrJ
-ph3gCrUA+smGHaAMZQDrEgwjUTkAAFmaYypsWPpJABXgDIUAWZpfKmxV+k0AFeAMNQBZmlzqEg0o
-BAqAAPRgBLGSAJ0A9GAEchIAnQAf0fMMThEP7gia4CwgFi0K/33BCut88ClQBIAAWPw/ihiLoYmg
-BQhH55kIBdgFAADrpgEky9EAAOmmACQUrQAAiif6AEId4AwFAPtEABWgDSUAWF8N0qDRDwAAAAAA
-APYfAh3v9C4AwCDRDwAAAAD/+2QNoDpFAPZBCBWv8wIAKwro+sFkHe/3DgAe0dL8wCAl4An1APjM
-Bh3gK5UA+swmHeAPZQD/oIYd4AgVACjUBf+g5h2gDIUA/aDGHa/9EgAAAIsa+sQAFaAMZQBZmiJj
-/dQAAAAAAOokAAJYYQAA/CGoFeAMFQBYaedj/MaMImXMwSsgU/pAaB2gDBUA+2JAFeANBQBYaeBj
-/KgAAAAAbBAGKCAFLCAHwZQPAgD5ABB1YcwBACkiAmWRwy0wARvRK+bRKx44BIAA/6FABtAPpQAu
-IE5l4lfu0SMeTwKAAPWACtISAJ0Appkokp6cEAvLCvcAEZTSAJ0AK7K/KpKdC6sB6xYBJY5JgACK
-6PdADriSAJ0AKGKu7dEXFAv5gAAsYq0t0n/tywEFQ/0AAP2AC15iAJ0AmOj9gAtmYgCdACkgFKSZ
-CQlHKSQU9SANddIAnQAe0RQb0Q2MIPggKBXgCgUAKrYy7swCDm4CgAD9ZwYVoA5FAA7dAi22MRvR
-e9yQ6w8eDdAEgAAMAmcLQIYMAmULIIYMAmMLAIbsDAAE2QEAAArghgsCbwrAhgsCbQqghgsCawqA
-hgsCaS4xASghCS0gBywwARvRaSohJPwgAAYw3REA6t0QDmQCgAANzAIMqgId0WMsISILqgIqliAN
-zAKLIB3Q9iiWIy6WJCyWIv1gABWwDCUADLsCK5YhijPqliUkyAcAAO0AFQTKYQAACQCKDHgRpoj/
-E6YV5+UBAPnABrlSAJ0AwCDRDwAAiuj3QAfgkgCdAAx5EaaZLZKeC3sKK7K/96AIZNIAnQAtkp0L
-2wFksQCwrZ3o6xYBLfTmAAD8IAYVoAFmAAAAAAAA6iQACdgEgADsRAAK6ASAAFhkqdKg0Q8AAAAA
-wLAPqTTp5ggt9OYAAPpAaB2gG8UA/AAiHaANFQBYaVdj/8EAAOokAArYBIAAWGYq0qDRDwCLEPpA
-aB2gDBUA+2MAFeANpQBYaU1j/5fAoFmcZh7QnYro+V/w+JAPpQBj/6raIFvpxP/5NA2gD6UAAIon
-60QACmgEgAD7RAAVoAwFAFhePtKg0Q8AAAAA//dcDaALBQDAuAubAvpARhXv/R4AAAAA/CAGFaAK
-BQBZnE4e0IaK6IwQG9CG+V/3eJAPpQD//CgNoAsFAADAsA+tNP3BBhXv+/IAAGwQBhLQfhfQ/vWh
-BgWgE5UA+FDIFaCmJQAqIoJ/pyArIoJ/txgqIoQsoAgloAd2wTeIRMCgC4AABTMMZT/a0Q8tIoQp
-IocqIof5YAAE+6qBAHqZLwrqMCtCQcPCDLsoq6r6mYYVr/7qAC6hCy7s+A4OQ+7s/CLr/QAA/6IA
-Cr/+zgAAAAwCAC8ign//xiXQB25bwNxw+gCiHaALBQD+oAAXMP8FAFmgiSVc8cpbKApxmBHAoVmU
-5fogKBXgCfUACVk2mRAJuwz6ICYV4AoFAFl8EooQClUMZV/XwKFZlNv6DiId4AoFAFl8DGP/ZgAA
-AGwQBiggBSYgB+c0AArYBIAA+AKCHeAFNQD5AA+dYWYBAAsIR2iCFIoiGNA3F9A45GQABQPJgADA
-INEPACsiHWWx4Ygng4j7AqQV78wFAOmCCyRwgQAADOwB7LsICn8CgADsFgAl2QEAAPMgDfxiAJ0A
-LYkUo/qv3S2FFPtgDeuiAJ0AyXXJQ9kwbUkFBwCGCQJhiuAPAgAPAgCvqvtAEKxiAJ0A+8AGFa/9
-/gDsahEDJPEAAAeqCCuing8CAPdgCtnSAJ0AKqKdCGsKK7K/C6oBZaBP62wYKVAEgAD8ACIdoA01
-AFhos8Ag0Q8AG9AFibj3IAygkgCdAAxKEQeqCCyinveADQHSAJ0AKqKdCEwKLMK/DKoB5KGOZOv9
-AAAttghkr68Z0B2ZoIgg/6D0BeALFQDrpgIsRgKAAAWIApihiDMv8n//oBAFqIgdAKj/n6PuABUF
-SEEAAP+f9gXgCAUAsYjpgx4MD+gAAJ+mGdBq+UEGFeAYBQCYp44gCO4RBe4CnqkMTRGn3SXWnY4i
-LCAGiScL7gLr0GEWYAUAAOwkBiTIgQAAiJH9IIIV78wFAAycAe4mAiRDQQAA6JYBJujBAADtlQQm
-YQEAAHyLIiqRBR3P36iomJGdgIwg64YCLmYCgAAFzAL9ACYVoAIFANEPHc/XnYCMIBvQSeuGAi5m
-AoAABcwC/QAmFaACBQDRD9ogWGU/0qDRDwAAAP/6xA2gCgUAW/86Y/4XAADzIGgd4A4FAP8BZhWv
-974A47oMA4G5gAAKSxTsvAgrwASAAOxMNgnIBIAA0w9tyQUIAIYJAmGJEKp4600MBMkBAABt2QUI
-IIYJAmOLEAr8DKy7K7xA+8AGFe/2igDAoFmbZRvPnIm4GM+d+T/y+JIAnQD/+fwNoAoFAMCgwNoN
-nTT9YQYV7/nCAI8QL/xA/8AGFe/1pgAAAGwQDIgn+EBIFe/KBQDrgRUqZwKAAOw8CARAgQAACogB
-qLjojEAueASAAPmAJBKiAJ0ALfAHKyAHFs+E7Nz+L6gEgAD7oGAV4fsBAOSQCW/HAoAAwCDRDwDm
-jQgGyBkAACjSnh7PdusWAS/QBIAA+QAiM+IAnQAbz3Mp0p0L+worsr8LmQHnlAAEobmAAC3iCCoW
-DPegIkiSAJ0AL2Ku68/vF57hgAAuYq0vsuUP6AHoFgkmy/0AAP/AHj5iAJ0AGM9fmYj/wB5mYgCd
-AC0gFClQB62Z+iGGFaeZAQApJBT1ICDt0gCdABnPoB/P3eoiAC1vAoAAiDQez2Pm3QgNVgKAAPEA
-BQJSAJ0AKCAHKyEk/KAkFaAUhQCUc/7gRhWgBDUABKMC+57eBaCIEQDjdgEsQoKAAPkGAAxwAwUA
-+OAGFaAIJQDqAAUD0EEAAG2KAgoCYS4hCSkgB/LgphXgOKUA7HYJL3UCgAD5xgAPMckBAO52Bi5k
-AoAADLwCD8wCnHQrIQnaIP6gJBWgDAUA5NadLd0CgAD5ZgANsA0FAFhkmsAg0Q8AhicoYRXoFgMj
-MIEAAPYgxhWvyQUACWYBpojvXCAkQQEAAHjzBIgTCP8M6fIAJkAFAAAIqAKYF/j4AATwiBUAeJkc
-H8+fiBfodgEmS/0AAP7gBhXhmR0A+OBGFeAAUgCJFxjPmJhwmXGJ8QlZFJlyjxaJNhvPlJYQ+eCk
-FaKZHQALmQEbz4yYFKaIK7Ib7/IBJEEBAAAoFgoJuwjrdgMiSAkAAOvPhBzPAoAACf8IKRYIDEkI
-5hIIJMgJAADo8wp8zwKAACgSBAj/DOaZDAPAQQAA5JBMbjcCgACYFYgaD2kI+QAO6uIAnQApEgUP
-igz6IEYVpKodAG2pBQ8AhgkCYYgSKRIACs8MB4gI6ZxAJFBBAABt+QUJIIYKAmMqIgAIqhEYz2f2
-4ABEsA8VAP8gxhXgDEUADKoCmpWYlIhTL7IZFs9i/Z3cBaiIHQCo/5+X/AAKFaAKBQDsz14U2IEA
-ALGq64MeDQ/oAAD/IUYVoCgFAJibjzSIU4o1Bv8BFs9U7KoBDEJCgAAI/wIG/wKfnChQCStQCy9Q
-CiZQCOzPTh3ZAoAA5v8QDEMCgAD7BgAMMKYxAOv/Ag1RwoAACv8CCP8CijYYzuOfnf5hSBXlth0A
-7KoBDdhCgAALqgL7IcYVpGYBAOj/AQsyAoAABv8CiFWYn4ZWJpYQjFcvlhIslhGLVCuWEypQAS9R
-AevO7RgECoAA8UAEN9IAnQAqIAcKKkDsISQtUoKAAAuqAiqWFIgg+gMCHeAKNQDrlhcsRgKAAAqI
-AhrOvv8ixhWgCwUA+SKmFaAIJQDqAAUE0YEAAG2KAgoCYSghCS4gB/sAABQwGqUACogCKJYa+Z4g
-BaHuAQAA7hEOzgII7gKIESuWGS+WHe6WGCRADQAAKBYBjhEu1p0tUAeKJ/WgAEawDAUA69QABVCB
-AABYXCTSoNEPAAAAAOkSBSZy4YAA0w9tyQUPQIYJAmVj/kPA8J8ZiBkfzm7AmgnZNOn2CCxh5gAA
-+kBoHaAbxQD8ACIdoA0VAFhnEsAg0Q8AAAAAAPuPAA//7foA/+8kDaAJBQCNEev8GClQBIAA/aBg
-FeAMFQBYZwfAINEPAAAAAAAAAPwhZhWgCgUAWZocHs5UjeiKHIwb+b/dGJIAnQBj/5QAnBvrEgkp
-UASAAFvnd4oc/CFoFa/vUgAAbBAGKSAFJiAH2DD2AGId4BpFAPsgD80hZgEABQlH/SMAAV/FBQCL
-IhnOQRPOQeRkAAWDsYAAwCDRD4gni4gugRXpggskeIEAAAX6AeruCApvAoAA6hYAJ3EBAAD7IA5E
-YgCdACyJFJ0Rq9qtzCyFFPvADiOiAJ0AyTTJQtmwbUkFAwCGCQJhLBIBKvIADKoI/0ARJCIAnQCa
-8NOw+GBoHa/+GgAAAAAA7GoRAyT9AAADqggtop4Jaworsr/3oAsB0gCdACqinQ8CAAuqAWWgT+ts
-GClQBIAA/AAiHaANNQBYZr3AINEPAAAAAB3ODovYmBL3YAyQkgCdAAxKEaOqLKKe94ANEdIAnQAq
-op0JTAoswr8MqgFkoZCwvp7YZK+vHs4nnqCNIP2dCAWgCxUA66YCLu4CgAAH3QKdoYmDKMJ//5wk
-BeiZHQCpiJij7wAVBUhBAAD/nAoF4AgFALGI6YMeDA/oAACfphnOdPlBBhXgGAUAmKeOIAjuEQfu
-Ap6p6SIHKm8CgACj3SfWnSwgBu0iAiTIgQAA5Z8BBmAFAAAsJAaIkSyZBAvdAu0mAiRDQQAA6JYB
-JmDBAADslQQn+QEAAP8FMg3gDAUAKpEFHc3pqKiYkZ2AiyDshgIt3gKAAAe7AvsAJhXgAgUA0Q8A
-AB3N4Z2AiyDAwOyGAi3eAoAAB7sC+wAmFeACBQDRDwAA6iQACtgEgABYY0bSoNEPAP/6pA2gCgUA
-8yBoHeAOBQD/AWYVr/miAOvqDAGBuYAACk0U7NwIKcAEgADsTDYNyASAANMPbckFCACGCQJhiRCq
-OO1ODATJAQAAbekFCCCGCQJjjRGMEArdDK3MLMxA/eAGFa/4XgAAwKBZmW4dzaWL2IgSGc2m+X/y
-+JIAnQD/+egNoAoFAADAoMDqDr40/6EGFa/5qgAAiBAojED54AYVr/dmAAAAAGwQBBXNphbNn/CI
-ABOwCUUA5M4TGcYCgAAJiAIoZjEFNQLnZjIqGASAAOVmOCkwBIAAA2CGBgJnA0CGBgJlAyCGBgJj
-AwCG5gwAARkBAAAiLQHkHx4BEgEAAAMCbwTAhgMCbQSghgMCawSAhgMCadEPAAAAbBAGIyAHFM17
-AwNB6s15Gc8CgACkmSiSnvpgAQYwBTUA7MK/LBkcAAArkp0MuwHLuR/N/h3N/vpACBWgDgUAnhCe
-EvwgJhXgDAUA/ACiHeAe5QBYX2IMPxGk//XzphXgAgUA0Q8AAAAAAAAA6zwYKVAEgAD8ACIdoA01
-AFhmB8ck0Q8AbBAGKCBw9Zq0BeAGRQDqzVcUdeSAACMgBwMDQQw5EQWZCCuSniQiAAo6Cuqivy2h
-hAAAKJKd0w8KigFkoFHbQFj/XcDB/AACHeAOFQD5m64FoAkFAPggJhXgDwUA6RYCLVgEgADoFgAq
-UASAAFhfOgw8EaXMJsadKiBwKwr7C6oB+k4GHaACBQDRD8Ag0Q8A6zwYKVAEgAD8ACIdoA1FAFhl
-3cck0Q8AbBAEIyAHFM3AFc0v+5pcBaEzAQDkQn8pzwKAAKWZKJKeCjoKKqK/40QIDBFUAAAokp0P
-AgAKigFkoETbQPwAAh2gDSUA/gBCHaAfBQBZmpX/m14FoAgVAO6mACp+AoAACP8Cn6GNIJ2iDDwR
-9YAARnALJQD7k6YV4AIFANEPAADrPBgpUASAAPwAIh2gDSUAWGW3xyTRDwBsEBYvMBD3mhQF4Ap1
-APPk8A3gBgUA9eBFcJIAnQBo8gPAINEPKyAH+iCmFaeVAQD4I6YV4bsBAOsWHiyUaAAALCAF94Bg
-jFIAnQAtIHLzoGA3kgCdANogWGE/+0BCiJIAnQCOIvvAQjiSAJ0AKiIQLCEaiDWLKegWDS5/woAA
-ePsPCwlCyJkMC0L7YFoQEgCdAI4d/CPIFaAfhQDsFhsnaF0AAPveAA+03R0A7RYIJugNAACdGp0Z
-9YBPghIAnQAMyxGnuyiynrdJ+QBik+IAnQAdzNYrsp0NzAoswr8MuwH7YF/oEgCdAIwpjioMDz4v
-FhkM7gx/63cqICIpICMKmQz7IGHYEgCdACggBxrNWv1aABXhiAEADYgJLoH+Ce82D+4MLoX+LSAi
-r90NDUctJCL7oGEoEgCdACiif+4iCybL/QAA+wAEANAIFQDgmRoMQAqAAOnuCARD/QAACO4CLiYK
-KBIZDOkM+SBfw6IAnQCJGh7NQiwgByghBx3NGv5BJBXgzBEA9ZAAFjqIAQDtzAIMQwKAAAj/Ai0h
-JJywiiCIHRzMs+7dAg1WAoAACpkCmbEqISKdtJ+zDKoCHM0wmrIpIhCKFZm1Gc0u/EcQFeAPJQCf
-uZa3+WEGFaAOFQCeuvwDAAbwTnUADeo5Dck5CpkCihjmtgshwEEAAOm2BiXIwQAAbakFCACGCQJh
-HsyXnryNMPOgQtKSAJ0AKhIb6RIJLVcCgACnqimmnSggFC8SGaSI6CQUJ4DBgAAtEhmMKSsgOK3M
-nCnzYFY/kgCdAC4SHfnAVRlSAJ0AwCDRDwAuIAcvIAUtMBEODkEuFh754DFkUN05AI8i3OD/wAAV
-sBnFAOe7CAgECoAA++BMgJIAnQAtFhgosp4qFgUsFhv5AE3j4gCdABrMYSmynQ8CAArqCiqivwqZ
-ASkWDukWHCgECoAA+yBNCBIAnQD6QGgdoAtFAFmYLPtATWBQCxUAHMxRjMj3gE2okgCdAC1yrh7M
-5vegSg1SAJ0AKnKtLeLLGcxIDa8B7xYXJkP9AAD9QE3OYgCdACiWCP1ASSZiAJ0AKTAUKSQ4KDAV
-KCQ5JiQ7jziONo05jDopMgwqMgsqJSUsJSQtJSMuJSIvJQkpJEwoMg0oJE0vMhAuMhEuJhUmJHEm
-JHImJHArJHMmJh0rJhkrJhgrJhcmJhsmJE8mJE4rJSkvJSgtMBEqEgUuIRoNDUMtJDr/QC/wogCd
-AC0gOCr6/PvABAUwDyUAD9wB79AddVOxAAD/AAAHsAkVAP8tAA/5jh0ACP8IDv8RD6oM/5leBaAJ
-FQD9LQAOMAhFAAjYAQrvLAiYOQruLg6eORnMQ+/uCAt4BIAACJ85GMww3WAMjTkP3QIoIBQOrxzv
-JTQlS/EAAA6eHKSM7iU1LMwCgADp2QINdAKAAA7dAi4SGCkmECwkFO0mDyctKYAAGsxELyAHjSmd
-LI4+nh/+IcgVoJ8RAOghCCzKgoAACpkCmeD5mRYF4f8BAOoiAC/8AoAAD4gC+QYADHAPNQDpqQIN
-VgKAAA+qAprh/5fwBeAqBQCa4+/mAi5SAoAAC6oCjyuW5ZjkmeYq5gcv5gnt5ggneMEAAP4jhhXg
-HUUA/CCGFeAKBQD6IgYVoBmFACkWGiYkFCsSHPph6BWgDBUA+iImFaANBQD6QAgVoAkFAPggBhXg
-DgUA+CBGFeAIFQD4ICYVoA8VAFhdxCoWEiohKFmZ6iwgOfoiZhWgTQUA+MBoHaAJJQD5gAQGcOwB
-AP+iAAwwiwUA7SA4K1AEgAAMujjqiAILWASAAPmgBAZwGgUA/U0ADbDtAQD6wGgdoCwFAA7KOS4i
-FQuqAuqIAgt4BIAA+iJIFeCtEQAKnzkZzEYI/wL6QAgVpu4dAP4ihhWgDAUA/CAmFaDdGQD/pgAO
-8AwVAP4AAh3gDkUA6RYALu8CgAD/pgAOsA4FAPwgRhXgDQUAWF2VwMHvzDQdWASAAPpACBWkCQUA
-+CAGFeANBQD4IEYV4AgFAPggJhWgDhUAWF2KKBIR6RIPLVgEgAD6QAgVr/71AJ4Q/ESkFe//9QD8
-RIQVqJkBAPs4ABS4iAEA6YgCDuwCgAD9hgAOcB6lAPggRhWgDQUA/CAmFaAMFQBYXXbboPpACBWv
-/fUA/CAGFeAMBQCcESkhIighCcHs+SAAFL//9QD5BgAMcAwVAPggRhWgDQUAWF1oLhIQGMwJLxIU
-7MwBHVgEgAD6QAgVr/31AJ0QLMAcLRITCP8C7swCD0iCgADvFgIuYEKAAAyZAuzL+xbr/QAA/agA
-Fr//9QD9JgAM8B7lAP0mAAywDQUA+CAmFeAMFQBYXU/7QGgd4AwVAPpACBWgCAUA+CAGFaANBQD4
-ICYVoA4FAPggRhWgDxUAWF1FiTDzIBVikgCdAC4SGxvLSSwhB+0SGi93AoAAp+4t5p0oIA0rsoEd
-y9ePII4gKSAMKtL+rrvuIBUt3kKAAKuqKhYVKyAHK6QHKaQMLKUHKKQNjDkspQkupBUuMhH4YggV
-r8wBACwWFiilKCylI/2gCBXgCRUA+UUkHeAbRQArpAX/Q8YV5u4dAPoi6BXg//UA/6AARrAOBQD9
-QsYV4A0VAFj9QCsSFS8SGCgSFimwFfdihh2gKwUA66QDLEYCgADmpAAsyQKAAPkGAAxwCRUACYgC
-6KYBJ5QhgAAsIDrA3/2AE/xiAJ0ALzBXxOAP7gyeG8DR/h/iHeAOBQDsIQklWEEAAOwWDClQBIAA
-WP0liRyLGyYkFCggFSakACukA+iZEQxBAoAA+QYADHAJFQAJiAL5QCYVoAvFAIonHMsiiq6JFAwA
-hwoCYQoCYQoCYQoCYQoCYQoCYQoCYQoCYS0SGCt2rfhAph3gDhUA7iQXJoFZgAAvIDrAj3jxHhnL
-ACgwUAmICiiCEOwwVyHZQQAA+kBoHaANJQALgAAFCkf5QCBhUgCdAMAg0Q8A6iQACdgEgADsRAAK
-6ASAAFhezdKg0Q8ABQtH6xYdLZR8AAAqIAXBxP1AEMwiAJ0A90AEPFIAnQAtIHJ+33zaIFhfGWWg
-iY4iZeCEKCAUpIgoJBSPMHr2YiogBwoKQQyrEae7LLKe2aD3gCWiUgCdABzKwyuynQysCizCvwy7
-AekWHyWlKYAALyBx5ZQACeAEgAD6QGgdoO6lAO/mOQpoBIAA/sBoHaAPFQBYXtYMWRH3IABE8AhF
-ACiWnSoSHflAHbFSAJ0AwCDRDwAAAAAAAOokAAnYBIAA7EQACugEgABYXpnSoNEPAP2WhgWgCkUA
-/EAIFeArpQBZmtXAsf5DRBWv57YAAAAA7DQACmgEgAD7QGgd4A4FAPpAaB2gDxUAWF64KxIatLv6
-I0YV7/TSACwSHhrLMR7LMeqggC4BCoAA/WABBtAMNQD90AYdp80BAOrINH1wBIAAGcsp+CPIFa//
-9QAPzwMPqgEfyyYJiAoZyyIK2gL/E+YV56oBAOqUgCcN8YAAZKHBwcP8IIYVoAoVAPoiBhWgCQUA
-+CHmFeAYVQD4I0YVr+nyAAAAAAAA//dsDaALZQDE0PwhZhXv9iYAAI4a6SBxKeAEgADqJAAKaASA
-APgdQh2gDxUA6YY5D3cCgADuuwgLcASAAFhehY8atP/+ISYV793WABzKXozI94AZyJIAnQArEhsM
-uxGnuy2ynrdO/6AZ86IAnQAeylctEhsrsp0O3Qot0r8NuwFksyYYylCwz5+I+3+v2JIAnQBgAeyJ
-JyuZFC6cIOSxF2T4wQAAjZmM8Cn6wPnABATwCwUA78gMBmMhAADoyzkGg6GAAJkWiOB9gWgs0ADB
-lPmABaRiAJ0AwYX5gAVUIgCdAMGW+YAFBGIAnQDBiPmABLQiAJ0AwZn5gARkYgCdAMGK+YAEFCIA
-nQCIFizQBynhBZkX6JkIDmcCgADs3QgEyQEAAOnbO37gBIAA7cQADny2AADJuMLdLLAAfcFJjr7A
-sO74DAdzIQAACOs5Zb/nKCBO/MBoHaAfZQD57QAOMACmAIwX/a8ADj//DgAAAADzX6XwUgCdAAnO
-DC7s6P4hphWv0sIAAAD8TiYdr/PSAGSuRfAAGA2gCRUAwJAeyq4t4tLH/g/dAQ2dAv3aRhXv+KoA
-AAAAAAD/+6wNoA0FAOokAAnYBIAA7EQACugEgABYXfHSoNEPABnJ+8CKCMg0mJj6QGgdoBvFAPwA
-Ih2gDQUAWGKhY//HwCDRDwAAAAD/2VgNoAkFAAAAKxIe+kBoHaAMFQD7YwAV4B3FAFhilmP/nAAA
-AAAA+kBoHaAbxQD8ACIdoC0FAFhij2P/gcCgWZWoHMngjMj5n7IIkAsVAGP/joon+oBoHeAMBQDq
-rCAqaASAAFhXhNKg0Q8fydbA6g7ONJ74/V+yQOIAnQBj/2AAKxIe+kBoHaAMFQDrvBgiaB0AAFhi
-eGP7tIon+oBoHeAMBQDqrCAqaASAAFhXctKg0Q/aIFhdgGP1NAAAAAD/zvQNoAsFAIon60QACmgE
-gAD7RAAVoAwFAFhXZ9Kg0Q8rIAX1f9tAkgCdAIwiwNINzAL8QEYVr+1mAJwq/4BoHa/QCgArIAcY
-ylUP3Az8REYdobsBAAi4CS6B/q/uLoX+LSAizNiNKfxBRhXgALIAKaJ//kFoFaAPFQDgkQQGw/0A
-AOCIGg/4CoAA6O4IB/v9AAAP7gKeKuokAAXYfQAA/AAiHaANBQBYYkNj+uEAAP/tbA2gCwUA+0MA
-FeAMFQD6QGgdoA1FAFhiO2P7kcCgWZVUHMmMjMj5n+XokgCdAP/zmA2gCwUAwLAeyYbA2g3NNP3B
-BhXv81IAAABsEAQYyYaJICuCgSiCm/sgAETwCwUA6yQULM5CgAD5AABEcBkFACkkBeuEFClQBIAA
-W+TZ0Q8AAGwQBBnJzYoyKZJ/CaoRqpkskAaIksDb/SCmHe/75QDriAEGY/0AAOyUBizQBIAA+SBG
-FaALBQBb5MrAINEPAABsEAiIIi8gB4cwlRL0IIYVof8BAPMGfA3ndwEA7xYBI4jhgADrfAEpUASA
-AFmVSOaiKW0gBIAA9mBoHa+F1QDiFgAjhomAAAdyCec8ECkXAoAA8kAAQXAAmgAAAABpgQiKEItl
-WPug1KBmQNfnfDAjMMEAAPLABOQiAJ0AKGAQyI1ogUBpguQoYBFlj89gAG4oYBHIimiBHWdP0HVB
-zWAAoooQ62IFK+AEgABY+9/1QGgdr/+aAIoQi2VY+9b1QGgdr/9eAChgEciLaIEfZ0+bdUGYYABt
-AIoQ62IFK+AEgABY+9H1QGgdr/+WAACKEItlWPvI9UBoHa//VgAAAACKEOtiBSvgBIAAWPt89UBo
-Ha/9ZgCKEPwfoh2gCwUAWZZW1KD1QAuMbwYFAIgwBogB+GAGFaAAQgAAAAAA8iAGFaAEBQCJERbJ
-Eh/JE+fJFByoBIAA9SAGQhAKpQDiEgAszwKAAAeZCCuSng9cCizCv/dgEAJSAJ0AK5KdDLsB6xYD
-JY4BgACIaPcADnCSAJ0ALnKuHMkD7xIEJwwpgAApcq0swn/smwEEa/0AAP0gC44iAJ0AnWj9IAuW
-IgCdAC4gFK/uDg5HLiQU9cAM/lIAnQDrEgMp4ASAAPpAaB2n5AEA/CCIFeAPFQBYXQ2IEv6gABUw
-CUUA90AARXeIAQDppp0kFGkAAIonjRTAwOqsIC7YBIAAWFaL0qDRDwDAINEPiGiCEPcACqCSAJ0A
-DFkRp5krkp73YAryUgCdACuSnQ9cCizCvwy7AWSxTLCNnWjrFgMt+Z4AAGAA5wAA8iAGFa//RQD/
-X/blYgCdAPpAaB2gG8UA/AACHaAtBQBYYXHsEgQpUASAAO0SAinYBIAAWFy10qDRDwAAiBIICEdp
-gmyIEIiHgoj3AqQV78wFAOmCCyRogQAADNwBrHcnfEDzIAcUIgCdAIQUKYkUDEQRokWkmSmFFPTg
-BxviAJ0AyTOIFMiP2SBtiQUDAIYJAmEl0gAEVQj2oAjEYgCdAIggldAGiAH4QAYVoAIFANEPiTAG
-mQH4YAYV4AIFANEPAAAAwLAKjDTsZggt9LYAAPpAaB2gG8UA/AACHaANFQBYYUFj/zyLEfpAaB2g
-DAUA+2MAFeANRQBYYTtj/yTAoFmUVIho+R/xWJAKpQBj/7/aIFvhs2P+XP/4GA2gCwUAwKBZlEyI
-aB/Ihfkf9RCQCqUA//r0DaALBQDAsAqMNPzBBhWv+sIAAMDQnYuIkAaIAfkgBhWgAgUA0Q8AAAAA
-AOJ/DAGBuYAAjhQPRRTqXAgpwASAAOruNglIBIAAbekFCACGCQJhixSvOOW7DAZJAQAAbbkFCCCG
-CQJjiCAPTgyuzi7sQJ7QBogB+EAGFaACBQDRD4ggL8xAn9AGiAH4QAYVoAIFANEPbBAEKCAFzY4q
-IgcrogwtqRTuogklSMEAAOmxB3XjIQAAZcADyN3I6/pAaB2gCwUAW+Oy0Q8cyML/kegF7/j1APlA
-BhWgDQUAnSfq80N1WCEAACjCfR/I7ZuBn6Muwn2eoinCf+vGfSTIBQAAKcZ/G8joKbGOZJ+6LLFv
-iiB8q7IpIRpulDEtJRrwAMwNoAkFACnCgOuWASZACwAAmKMvwoCfoi7CguvGgCdwBQAA/5BGFa/+
-9gAAAPU/+7mSAJ0AwMEMnAIMDE8sJRr5n/sh0gCdAC2xeg2qDFj7EdEPAABsEAQbyCcssn8rspuj
-zAnMEay7KbEawOL9IgBCUAwFAP1jRB2gAC4AAAAAAGiTEC2xGg7dAg0NT+21GiacRQAA+kBoHaAL
-BQBb43TRDxzIFYqwK8F+C6oMWPr5Y//hAABsEDDjIAcp2ASAAB3ICwMDQe/ICBnXAoAAraooop7r
-FiYpYASAAPIqJhXgSaUA+QB9M+IAnQArop0POAoogr8IuwHtyBQduASAAPtgfJAf/vUAikgVyKAr
-FivxQAQQECr5ANbQ7QAVAMjBAAAJAIoGAImJTStCEypCEi1CEIhJL0IRmB6ITC8WEJ0fj0+NTioW
-ESsWEigWEykWFC0WFS8WFotL6xYXIMmBAAAJAIouFhsuFhwuFh0uFh4uFh8uFiAuFiEuFiIuFiMs
-FlIpUkkqUkgqFhn4I0YV4AFOAAAAAO3jBQDIwQAACQJhCQJhDR+HKUIJKRYUKEINKBYVL0IMLxYW
-K0IL6xYXIMmBAAAJAmEJAmEuFiEuFiIuFiMsFlIqUkkrUkgrFh8qFiAs+v8sFiPsFiIg0MEAAOwW
-ISDZgQAAWPq+L1F51qD/QHB54gCdAC9RhH+iDChRha+I+UBv4yIAnQBY+tX7QHRwH/ZFANogWVGY
-JVGEIxYnpaX6oHUQUgCdAB7HrhjH2CwSJi/ifyNCGC7im69f50IZL/5CgAD/wABHcA0VAC3lGi9B
-KyXGAS8WQBzISCZCGi5CFCtCFylCFikWQysWQgjoASkWAvgohhWjrsEAKhZB6hYAKugEgAD6ICYV
-4+7hAP4lRhWgCwUA+CBmFaAKVQBZl8PApf2QcAWgCwUA+ZBqBafyAQDvFkUp6ASAAO8WACvwBIAA
-6BYBK3gEgABZl7f8EAIdoAkVAPzgBAYwDgUA7Jw5D1gEgAALmzkMuwIsEirTD/WAUZkQDyUAKRY0
-IhYs+Z+gFaANpQD5ogAOMAgFAPgmZhWgDQUALRYyEsgbGcea/AAiHeAKBQAK2jkJOQEJ2Tn7JgAM
-tAA9AOc9GAgECoAA+yBQCBIAnQADelMqFjXwwEnCUgCdAAZaUPooxhWghqEAKBZH8sBHIxIAnQAo
-IjEIiEEoFkjwwEcNEgCdAAbJQSkWSfLAR6NSAJ0AKiIxCipB+AAiHeAPBQD/LQAP8BgFAAh4AQiY
-OQj/AvvgTSgSAJ0AH8f2/ibGFeAJBQApFjcGyVAJ+BMJiAL7AEzAEgCdAP+OpAXgCAUAKBY4LxY5
-Bt9QD/kTD5kC+yBMWBIAnQD5j8wFoAkFACkWOigWOwboUAj/Ewj/AvvgS/gSAJ0A+Y++BeAPBQAv
-FjwpFj0GuVAJ+BMJiAL7AEvAEgCdACwWKv+OqgXgCAUAKBY+LxY//CqGFeAMFQD6KmYVoA4FAP+N
-AA8wKgUA+uAEBTAZBQD7jQANMA0FAOrqAg74BIAA6p05DsAEgAAax34KOgEKyjn/RgANMIkFAAqY
-ORrHwAjdAgo6AfuNAA0wCYUA/0YADTAIZQD7LQAPsA5FAAuOOQ/rAg27Ai4SRi0SRyoSSB/Ho+fu
-EQ7tgoAADt0CHsexD28B/WYADfENBQD/zQAO8QA9AAc+GO27Ag1UAoAA9lcABr+bjQD3sAAWse4B
-AO2tAg91AoAA/2YADb+qjQAKmQINuwItElMuEjb6JugVrgA9AOc/GA7qgoAA/cYAD3/djQANqgIO
-uwItEkkuEjMKmQLuFkou6MKAAO27Ag93goAA/CcIFe+tjQAOqgL+KogVq4MhAOSIEQ/6AoAACP8C
-/WYADfPuAQAuFiktEjoP7gKeEi4SPA7dAg27Ai0SPgqZAioSNA27ApsRKxI5DaoRC6oCCpkCKxI9
-KhI7C6oCCpkCKxJFKhIy5rsQDVJCgAALqgIKmQIbx3QqEj/HjygWAPtGAA1///UA+iVoFeAOBQD7
-JgAMsA0FAOkWSyrQBIAAWFi0+iloFeOD4QD5jtAF4PZRAPggBhXn5gEA+iBGFesAPQD2awAO8AwF
-AP/NAA513QEA7xIqLu2CgADtzAIMQgKAAPwmqBXt45EA5O4QDVgEgADo7gIK0ASAAOD/EQ7rAoAA
-/6YADv//9QD/pgAOsA4lAP2GAA5wDQUA/CAmFaAMFQBYWJMmEikpEkAoIWf4KYYVoAwVAPggJhWg
-DQUA+CgoFaAORQD//+Id7/v1AOsWACzMAoAA6YgCDVgEgADoFgIq0ASAAFhYgv4Awh2v//UA7RJE
-LVgEgAD8IEYV4AoFAPogJhWv/PUA7BYAKtAEgAD8ACIdoA0FAFhYdvgoSBWgDBUA/imIFeANBQD7
-QGgd7/71AO4WACrQBIAA/iBGFeAOhQD4ICYVr//1AFhYaSwSSsDq///iHe/59QDpFgAuWQKAAOvL
-Ag5qAoAA+iBGFeTMHQDtzAINWASAAPqgaB2gDQUA/CAmFaAMFQBYWFnA7PtAaB3v//UA/EXoFa/9
-9QD8IAYV4A0FAO0WAirQBIAA/FgABjANBQDsFk0uZAKAAPwgJhWgDBUAWFhKLhJNLSFh+0BoHe/8
-9QDsFgAq0ASAAPugABewDBUA/XQABv/ugQD/xgAPf//1AP4gRhWvDgUA/6YADrAO5QD8ICYV4A0F
-AFhYNy0SQ/3/4h2mAD0A7BYALVgEgADnPxgK0ASAAP8gAAfwDBUA/inGFentsQDm3REP+wKAAP/G
-AA9///UA/iAmFaP+9QD/pgAOsB4FAPwgRhXgDQUAWFgiwDD3/+Id4AwVAPopyBXgDQUA/gJCHa/5
-9QD4IAYV4AgFAPggJhWpu2EA+iBGFe//9QDrpAAK0ASAAFhYE8DB/AACHeAeRQD//+Id4AkFAPgg
-JhXv+PUA6RYCLVgEgADoFgAq0ASAAFhYB/2NCAWgHmUA+0BoHe/99QD8IAYV4AoFAPogRhWv//UA
-7BYBKtAEgAD8ACIdoA0FAFhX+8DB/AACHeAehQD//+Id7/n1APggBhXgCAUA6RYCLVgEgADoFgEq
-0ASAAFhX7+mkAAMtyYAA9MAtiRIAnQD0wDJIkgCdAPTAMgqSAJ0AIxYY4xYZINmBAADntgIg4f0A
-AJezl7SXtZe2l7eXuJe5l7qXu+3F8BTwIQAA6pwgJNgHAADoEiwmMAUAAOzF7RXaAQAA6xYxILlB
-AADkhERk2MEAABjGC+kWKCsYBIAA5sXsGpeCgAD4RgAJMA9FAOIWUCrGAoAAD4gC/yBoHeACBQD4
-KeYVoAg1AG2KcZ3wKRJP6fYBL0gEgADmABUHcQEAAAkAisKYmfUpElEoElDo9gYpRsKAAAiZAhjG
-b5z06JkCARAFAADjPPApwASAAOn2ByvIBIAA6AseA7vBAADopAAH+QEAAOhMAAVRAQAA6QceDcAE
-gADoLAAF2QEAACsSKBfGV/4AAh3gCQUA+CMGFeAJJQDjctEt8ASAAOMWGiXYBwAA0w/nctAtmASA
-ANMP5xYZJbshAADrvOAhm8EAAG2ahP3GBhXgKoUA6BJPK8gEgADo5jEjuQEAAOYAFQfADQAACQCK
-LOY06RJQLBbCgAAq5jXp5jYn+AUAAP0AwEJQCRUAwJAoElEImRECmQIJiAIZxjou7EDpiAIAkYEA
-AOjmJynIBIAA4gceDcAEgADoLAAAkMEAAOIDHgGZAQAA6QwABdkBAAAnEij24CAl4ENFAOISJiO5
-AQAAKUEqKxJS8SANtBIAnQAYxiUexg2dcImwnHL+4KYVoAqFACp2A/imAAwwCiUA6HYELM4CgAAK
-mQIpdgHmABUDyGEAAAkAiuM8AiO4gQAAj0APAgDx4A2KkgCdACkgAQCZMoUhLkIZLUIY/INIFaep
-AQD6JcYVoQA9AA7dGP0gAAMx3QEA7RYtJQDBgAAvQhQZxX4PyFPp/wEEQ/kAAAj1OOuyACvQBIAA
-/AAiHeDM0QD+AIIdoD8FAFmSvh3FbisSLfwlyBWgCUUA7QAFDWgEgAANAmENAmENAmEexYgYxfLo
-pgIt7AKAAA1tAg7dAu2mACJ4IQAA7wYABXBBAAAOAIqVpihCFAwNBv1Dph3jiOEA6KQcIfARAAAv
-EicYxS8M/xGo/y72nfhABh3gAgUA0Q8AAAAoIi4ImFAoFkfAkCkWRvDfuSMSAJ0ABgpRKhZI8t+5
-PRIAnQAoIjH5wGgd4KgBAPvtAAywiAkACYgCKBZJ8N+4o1IAnQD/3EgNoaZxAAAAAAAAAAD4ACId
-4AgFAPIq5hWjrQEA+1/gFaACBQD7IgAMMAoFAAKaOCISV3iggsCB+CjmFa/+GgAAAAAAAPE/9FRS
-AJ0AH8UnLkIanXCKsPzgRhWgGAUA+OBmFaAJBQCZdp51nncPXwKfdP1AABUwDiUADqoC6nYBIZgJ
-AAD25AAV7/kqACkSJxrE8wyZEaqZ8zOmFeAIRQD4QAYdoAIFANEPKRYz8iWGFaAKBQDqFjQv6ASA
-AAvtOfwmRhXv12IAKSIyCQlT+CamFe/X/gDAgPgmxhWgDwUA/ibmFe/ZfgDA8P4nBhXgCQUA+Ccm
-Fe/ZsgDAkPgnRhXgCAUA+CdmFa/Z5gAAwID4J4YVoA8FAP4nphXv2hYAAAAAAAAA/CVGFaAPBQD+
-J8YV4AkFAPgn5hXv2iYAE8TvKhYw4wgFAMHBAAAIAmUjItDyI+YV4AhFAOIi0SqeAoAACDMCIhYg
-GMTU84neBaAKBQDqFi8q14KAAOMWTysYBIAA4qoCDDAEgAD6KgYVoAglAOISJizQBIAAbYqcLxIw
-naAoEk+YoeYAFQ9IBIAACQCK+CXoFaAJBQAiFlfv/EAvkASAAP4mBhXgDxUACJ856IwBLE7CgAAo
-Fi8oElHspgQv/gKAAA+ZAgmIAhnFUS8SUO+mBidxAQAA6YgCC/gEgAD5QOYVoCmFAOmmBSnABIAA
-6BceA7vBAADirAABm8EAAOISVy3IBIAA7xMeBdkBAADpjAAFUQEAACcSMf/xEA2gM4UA/AACHeAe
-pQD9inQFr//1APmKcgXgCAUA6RYBLVgEgADsFgAq0ASAAPggRhWgDBUAWFZz/j/iHaAMFQD9il4F
-7//1AO8WAC1YBIAA7RYCKtAEgAD+ICYVoA0FAP+KSgXgHsUAWFZnwMH8AAId4B7lAPgAAh3uDxUA
-+CAmFe/49QDpFgItWASAAOgWACrQBIAAWFZb+UBoHe/nMgAAAAAAAPwAIh2gDQUA+EYoFaAepQD7
-QGgd7//1APqgaB2gCQUA+CBGFeCIwQDvFgAsQ4KAAPggJhWv//UAWFZJwMH8AAId4B7FAP//4h3g
-CQUA+CAmFe/49QDpFgItWASAAOgWACrQBIAAWFY+wMH8AAId4B7lAP//4h3gCQUA+CAmFe/49QDp
-FgItWASAAOgWACrQBIAAWFYz+UBoHe/kqgCLSS1BFu5BFyEHMYAAHMTsKUIRik6PTShCEpYZmBOb
-GJoX+CAmFeAKVQD+IKYV4AkFAPggBhXgDwUA/iCGFeALBQD6IMYV4AgFAPggRhWgK4UAWZRWIxYn
-+t+NYFIAnQAiEib6KkgV75nlAPvzwh2gAwUA+kAmHa/rtgD/wZgNoAsFACsSUfuAaB2gTaUA+2MA
-FeAMBQBYXLvHJNEPIhIm/YmQBaAKVQDyJOYV4BuFAFmUPisSUvZAJh2v+UUA/+qIDaADBQAiEib9
-iX4FoApVAPIk5hXgG4UAWZQ0KxJS9kAmHa/5RQD/6eQNoAMFABzEt4hMj02WEvogJhXgClUA+CAG
-FaArhQBZlCj634fIUgCdAPIk5hXv/SYAbBAKJiAHHMPuBgZB68PsG1cCgACsqiiingtrCvt36BXg
-GVUA+QAWw+AONQAoop0LiwHqtAAFlpGAACswAxfEfO3EDB2W5gAAJUIUBYhTmBf8oAQC8+XhAPXA
-DGGSAJ0AwFAuQSobw+IZw+XxwAjMEA8lAI4xm6CIIAiIEQ+IApihGMSCmaKXpQjpAh7D5PlAhhXg
-CIUA6KYDJUhhAADuABUFUIEAAAkAiiVcAolA8SAI8pIAnQApMAEAmTIoQhknQhguQhoJC0f6IUYV
-4QA9APjrAAu5/gEA/iEGFeF3AQCXGecyASWAqYAAKUIUCctT7ZkBBdv5AAALlziLIP4aAAYwDRUA
-/gYCHeAORQBZkSOJGIsZjBodw9Eew/IYxF3tAAUNaASAAA0CYQ0CYQ0CYeimAi3sAoAADZ0CDt0C
-7aYAIhAhAADiBgAFeEEAAA8AipemLUIUDA4G/0OmHaPd4QDtpBwi+BEAABjDlQxiEagi/lOmFeAO
-RQD+YAYdoAIFANEPAAAAAADx3/kEUgCdAC5CGogxm6CHIJminqWep+7Dqxu+AoAAD3cC90AmFeAX
-BQCXow6IAvlAhhWgDgUA7qYGIqgJAAD7RAAVr/uGAAAMYhGsIvRTphXgD0UA/mAGHeACBQDRDwAf
-xDMYxDMpQhbqQSstWASAAJkVmhT6YCgVoAwVAPogxhWgCYUA+CBGFeAOxQD+IAYVoA0FAPggJhWg
-DiUAWFVgjhePFO3EJB1YBIAA+iDIFaAMBQCcEfwgBhXgDBUA+eAAF7ANBQD/xgAPcA8FAP4gRhWg
-DkUAWFVSlRL8ACIdoA0FAPtAaB3gDmUA+iDIFa/59QD4IAYV4AgFAPggJhWgDwUAWFVHixXA0PQg
-yBXgHgUA+3AAFbnLsQD6IEYV4//1AOwWAS1YBIAA+4ACHaAMFQDqFgAq0ASAAFhVOfwAIh2gDQUA
-/gACHaAIBQD4IAYVoA8lAOgWAS1YBIAA6BYCKtAEgABYVS4cwzQdw1//9aANoAX1AAAA//S4DaAL
-BQDrbBgpUASAAPwAAh2gHVUAWFvTxyTRDwBosyzBlnmxF8a6+mAmHe/ppQD/9hgNoAUFAAAAAAAA
-APnzwh3vnuUA/mAmHa//mgD+YAYdoAIFANEPAABsEBglIAcZwxf2gQgVoVUBAOvDExrXAoAAqaoo
-op4LXAoswr/3ABci0Gb5ACqinQyqAeykAAUW8YAAF8OwLXGOGcMw8atgDe/79QDkYUVg0MEAAAkC
-iQoAiihCECpCES9CEy5CEo1JCQKJnR6NTSoWEJgfikyITy8WEi4WEY9OKBYWLxYVLRYUKhYTLkIL
-7hYXINGBAAAKAIosFiUrFhsrFhwrFh0rFh4rFh8rFiArFiErFiIrFiMuckQvckMvFhkuFhorFiMr
-FiIrFiHqHDAg2YEAAFj15Chxb+wSJS1YBIAA+UAH2aIAnQAqcXopcXt6sgmqmflgB0NiAJ0AwHDr
-IgArEU4AAMDQ+4BoHaAONQD84GgdoC8FAFmQSRvDk4kgHMOQL0IYLkIZLMJ/9+YAD/CIBQAI7gIM
-mQwLmQIrQRaZoIhNK6UCKUEXKaUDmKKNTJ6ln6Sdo4xJnKb6g0gV4A0VAPtA5hXgDzUAGcK+DFgR
-qYgvhp0tNAAuIAaMIu3MAgdwBQAALiQG/EBGFaACBQDRD+kABQDQwQAACgJhCgJhLBYlCQCHiEko
-FhSPTS8WFY5MLhYWjUvtFhcgyYEAAAkCYQkCYSsWISsWIisWIylyRCpyQyoWH/gkBhXv+5oALUEW
-LkEXh0nrFiQjD0mAABzDVSpCEY9OiE0pQhL2IQYV4AsFAJsQnxeaESkWA/ggphWgCQUA+CCGFeAI
-BQAoFgb+JIgV4AoFAPogRhWgK4UA/iEmFeAKVQBZkr4rEiTsEiUt9coAAIYx/YVkBe+e5QAuNAH6
-gogVoD8FAPiDKBWhAD0A9oMIFeAORQD4g0gV47rhAP1ABAVwDRUA6HcYBdv5AADrpjgOUASAAPga
-AAZxdwEA+kAIFekpAQBZj+gYwpjZoPgACB2gDzUAbfoCCQJhG8K1GMMf6KYCK8wCgAAJKQILmQLp
-pgAiECEAAOIGAAV4QQAADwCKlqYuQhQtCmL9Q6Yd4+7hAP9Dhh2gCUUAHMJcDFsRrLsptp34YAYd
-4AIFANEPAAAAAAD/9IgNoAoFAOtcGClQBIAA/AACHaANVQBYWvnHJNEPAMDQ+4BoHaAOVQD84Ggd
-oD+FAFmPwB3DCIwgL0EWLdJ/L6UCLkEXDcwMLqUDHcMFLkIRnqMNzAItQhCdoitCE5ulKUISmaSI
-TZinj0yfpo5PnqmNTp2oKUIYKEIZnKD3JgAM8IsFAAuIAoxJnKwrQhqYq/tBphXgDVUA+UFGFeAL
-FQAfwi0MXhGv7i3mnSs0ACwgBooi66oCBmAFAAAsJAb6QEYVoAIFANEPHMLfKBIkj02JTJkQ9iAm
-FeAKVQD4IEYVoCuFAFmSUCoSJOwSJS1oCgAAY/5EAGwQCvZgaB2nhQEA9QAICRIAnQCJIs2SKTAY
-ZJCH9SAEuJIAnQBokwlolBzAINEPAAAAJTwY21DqJAAJ4ASAAFv5+mSgk2av4hPCA4o490ANeJIA
-nQAbwgIdwgMssq7t0n8mBDmAACyyrQ3LAe3Ae3Vz/QAAnjh9wH4vIBSk/w8PRy8kFPXgDF5SAJ0A
-iif6gGgd4AwFAOqsICpoBIAAWE+a0qDRD9og7DQAAdhhAABb/tNj/4wAAADlPBgpUASAAOw0AArY
-BIAAW/31KzAY+X/7gdIAnQBj/1ssMBj5n/paUgCdAGP/XQAAwLDA2g2tNO02CC38LgAA+kBoHaAb
-xQD8AAIdoA0VAFhaf8Ag0Q8ALTEWjzguMReDOf/pwAAQX/EAHMKSK2IRiG6JbSpiEvIhBhXgDwUA
-nxCYF5oT+CCmFeAKVQD6ICYV4AkFAPgghhXgCwUA+iBGFeAIBQD4IMYVoCuFAFmR8mAAGgAcwoGI
-bI9t8iAmFeAKVQD4IAYVoCuFAFmR64MnjDj6YqQV78cFAOoyCyHogQAAB9cB92AARfAPBQDsoXJ1
-2QEAACg5FAxOEazqrogoNRR6s3LJZ9Ng6cQAAgCZgABtSQUDAIYJAmEq0gAOqgj7QAT0YgCdAJrQ
-48QAAoH5gAAvNBgvNBn+Y2Yd7/v1APpg5hXv+F4AwKBZjVyKOPlf8lCSAJ0AY/7lANogW9q6Y/5w
-nzvjpAAK/k4AAMDD/GMGHa//CgAA7LsMAwGxgAALQxToPAgrSASAAOhINg5QBIAA0w9tiQUJIIYK
-AmMLaQjjSAwD0QEAAG2JBQlAhgoCZQvpDKl5KZxA+aAGFe/9sgAqfED7oAYVr/2GAAAAAGwQEBvC
-OiggBSwgB+WxYirIBIAAKjAD9oBAFeHMAQD9AUAEUFUJAMAg0Q8AAI0i6RYELpgOAAAuIBb6IGYV
-oP/1AH/hIvwihhWnuQEA+3/AFeAIFQDrizkJUASAAFgHAuwSFCUnIYAAHsFaK+CAHcFXH8FY5sFZ
-FdjdAAD8ICYVpLsdAOt7CQvHwoAA6BYFJdgNAAD1gBGyEgCdAAzOEabuKOKe+wAjg+IAnQAr4p0P
-yAoogr+cEQi7Ae+0AAWUaYAAitj3QBWAkgCdAClirg8CAGSSOB7CBSxirS7iIA7LAZsW/4ARXiIA
-nQCwqCjWCP+AEW4iAJ0A7sH+GpbmAAAqMCApCu35QBd0YgCdAMC+e6EKLAru/UAgdSIAnQDAgOgW
-CiHggQAA/CGmFaANBQCdGRjB8I3AiiwI3QEYwSkuICwZwe0ogpwrIRf4QAgd4AkVAOioDA90AoAA
-/2YADbaIHQAImWINuwKbHPkAFbRiAJ0AwMApIBYqCv96kRssFhAvFhWKHVvYjOukAAlQBIAAWAaJ
-LxIVLBIQGsHaKyEHHcHXHsHX+4ABBTq7AQDqogAt3wKAAA67ApvQiSCLE/ugZhWgDAUA7NUFLM4C
-gAAJeQLp1gEhwEEAAOgLHgbwQQAADgJl69YPKpM+AADewCwgFKTMDAxHLCQU9YAVblIAnQCFFAUF
-R+UWByIr+QAADF0RLRYIGsG5/eBoHeAMBQDqEgctWASAAOsPHgZgBQAA7WwADifQAADtEg0n4QEA
-APlACqFQCwUA/IJAAVAJBQANgIbsjAAF2AUAAHW58YsZZbFhjBiIGo0cr8yo/+32ECZ5AQAA7xYL
-JwDRgAAewaIPdxH/pgAOsA4FAPwhhhXv/hoAhDIkJhyMMekWAi/YBIAA84AREFIAnQCFEfggRhXg
-CgUA6hYOLhHKAACqfwxSEaYi7yadLJAEgADRDwCK2PdAFTCSAJ0AjhEM7hGm7ijinvsAFgPiAJ0A
-iREo4p0PmQopkr8JiAGYFo4W6+QABxWBgACwr/+hBhXv9sIAwICYFokWwLoLqzTr1ggs7t4AAPpA
-aB2gG8UA/AAiHaANFQBYWVPqJAAJ2ASAAO0SBCpgBIAAWFSW0qDRDx7AoS7ggI0VLuw3+kBoHaTu
-HQDu3QgGWGEAAP2gYBXgDBUAWFlEY/+/AAAAAPoiphXgCgUAWYxaHcCSitgvEhX5X+nokgCdAGP/
-igAALhYSiieZEi8WFeXiMmVQgQAA/IBoHeALJQBYTjOLGS8SFS4SEumkAAX1EYAAjRD94gYV4AwF
-AP3iRhWv+kIAACggLBnBRAMCie4AFwxAwoAAKJbeDqCH+hQgAN/0NgAAGsFGHcFE+GEIFeAeBQDu
-Fgoh2IEAAJsdmxkNmQHqmQIB4MEAAPggBhXv9EYAK6AA82AOJhIAnQDA0CugAfNgDy4SAJ0AwJAP
-nBEM3AJnzSxkW9tgAOcAAB3BKBzBJgPDjA0AbSggLCzC3PsABADQDhUA/cABB1iMuQD5wAQHMA31
-AP+gBxYiAJ0ALjAQ88AQP9IAnQAMCUL1IAlIkgCdACqc/vgAIh2gDgUA+wIADz/1IgAuFhIvFhXr
-EgYpUASAAFvZby8SFf4iSBWv9P4AAOUSASlQBIAA6/QACmAEgABb2vCMMYsbiRLqFg4tbwKAAO27
-CAZufYAA4xIOKVAEgAD8gGgd4AwFAFvataOurn7iEgIq/wKAAKb/Lvad0Q8AnBH/7nANoAsFAAAA
-AAAAAOokAAnYBIAAWPOeZFrwH8DuA+OM/hwMFeACBQDRDwAA+kBoHaANBQD7gkAV4AwVAFhYyWP9
-1QAA/EAABLAIFQD5P2AV4A4FAPkCAA9/8e4AAAArFhP8IoYVoAoFAFmL2R3AESwSFIrYKxITH8AQ
-+V/p8JIAnQD/7GANoAsFAMCw+iDGFe/1OgDA6g6uNP+hBhWv7AYAGcBEiBz5BgAMcA4FAPghhhWv
-8IYAAAAAAAAA/IBoHeALJQBYAIEvEhWJEv4iSBWv8coACiGHjjYtMQsNDj8ODT8KAIcsFhH4BQgd
-pJsBAPkABPLiAJ0A//hoDaANFQAAAInC8SAFeNIAnQAJzBQKY4cKQocMDknY4PjIiB2kmwEA+QDW
-DeAMFQDAwHq3DPmAaB3gAFIAAAAAAAD6ACIdoAkFAAypOJ0f7xYVLO6mAACMMvpAaB2gCxUA/fAA
-BjANBQBY8zMvEhWNH//20A2v+fUAAB7AoY00ftEH/+1MDaAOFQAoMQppgvH/7RQNoA4FAIwy7xYV
-KVAEgAD98AAGMAsFAFjzIi8SFSwSEYos//WMDa/99QAYwJEuMQ546Qv8YeQVr/0uAAAAAADxf+qO
-UgCdAJ0fLxYV//3QDanuAQAAAABsEASNJ/mhCBWvzwUA6tEVKVgEgADi0gsm4IEAAA/PAe+qCAp3
-AoAA6CFMdVEBAAAm2RSo6a5mJtUUeaNSyTjiNAACALGAANOAbUkFAgCGAwJhKcIA0w+umXqRfZnA
-yFsK6jDqthcsEASAANEP0oDRDwAAAAAAAAD4QGgdoAwFAOzWCyr+5gAAY//hAAAAAADoqQwBgbGA
-AAlKFO2sCCmQBIAA7U02DDgEgADTD23ZBQIAhgcCYQkyCOpGDAeZAQAAbWkFAiCGAwJjCeoMqvoq
-rED7gAYVr/4iAC38QP2ABhXv/fYAAAAAbBAEjCHtIQUqWASAAPKvAAp/zgUA7i4BCUAEgADu2ggJ
-zwKAAOnCCAVRAQAA6isvev8CgADp/wwKNwKAAOYmCAeAuYAAdqMhyExtSQUCAIYLAmGCgdEPANLA
-0Q8AAAAA/E8ACX//RgAAAAKnDPNgaB3kVx0AbVkFAgCGAwJhC3MI5UkMBxEBAABtmQUCIIYDAmOC
-gdEPAABsEAYdwCbiv2AZIASAAOXAJBrIBIAAmRCKRyhBKC9BB/6FJBWvywUA6HgIBVCBAAD7QAQF
-+v8BAOVmAidggQAA7GYDL/8CgAAC/wKfYCwyByUyCyg1GwfMDPygBALwAiUA6FUCAfkBAADsNgcj
-aEEAAOU2CyHggQAAbSoFDACGDQJh5eCNYxDBAAAsTEAMIIYCAmMtoQX94GgdoAUVAOvZCANZAQAA
-+GAGceACRQDdcFvUp49AoqKlruj/EQdwDQAAD+4CnmGNNxi/94o56TIIJoS5gACMOvkgBAQ/uoEA
-+GEGFa+qAQDnzAgF2AUAAOw2Ci3cAoAAC6oCmjmPEBi/kg8PRwz/Eaj/8+AGFaACBQDRDy2hBavY
-6Dpkf+AEgAC/7vmAaB3kXh0AbVkFCUCGAgJlKUEsZZBO/UCkFe//BQAP7wGs/KvZ5vsIApANAADp
-nEAl2MEAAPmf+pPiAJ0A/Y8ADn/9KgAYv6kImAKYZNEPAAAAAAAA/e8ADn/8ygD97wAOf/5yAKaS
-IiwwCOowLUIXDYgMLTAVH7/DDW1BD90KLdKfDYgsLUEwL0ExAN0RDf8CqP/+QCQd7/+BAP5ABB3v
-/d4AAABsEAQpMBWLJ9gg+KAABP/MBQDkUK5l0IEAABa/sh6/ko07izCPOIc5+wAABfAFJQD+cAAB
-e08hAP+gBAawd3EA9q8ACvPvAQDm/wEKgQqAAOTuCAkQCoAA4u4KBduBAADrhSkncDkAAC6FKP5h
-BhXv7gEA/68ADr+7AQDtNgclhUmAAOytAQSLUYAAJDEJIjARpCICkgmyIgICTyKFLCShBSIsEKIy
-rU3lLDAm6QEAAPygCkriAJ0AhizmhhgpkASAANEPhbgtsRUMrwGCu6/d5rkUJukBAAD0QAmkYgCd
-AAxOEaXirmYmtRTzoAnTogCdAMk6yUjiNAAKmASAAG1JBQIAhgMCYSKiAA8CAA4iCPxACvRiAJ0A
-kqDTUAbqMPcC5hWv+94AACShBeynAQGRAQAA50cIBEkBAAD2YAcJ4AsVANogCgCGCQJhhSEkgSiK
-Ixm/ZXVLV4UiJIYRjCEdv2OqSgTMDJwhdKsjHb9gLIIQ6iYDIqgFAACVIgnMAQvMAg3MAuyGECmQ
-BIAA0Q8ALIIQlSKaIwnMAQvMAg3MAuyGECmQBIAA0Q8AAAAAAAD0guYN4Q4FABa/TSKCEAYiAuKG
-ECmQBIAA0Q8vghAJ/wEL/wIvhhCNIBa/RA7dAp0gIoIQBiIC4oYQKZAEgADRD8CQ6YUsKZAEgADR
-DwRaDIqg6oYYKZAEgADRDwAAAADyQGgd4A0FAP1hZhXv/AIA9E8ACT/8fgDl2wwBgbGAAAtNFObc
-CCmQBIAA5kY2CrgEgADTD21pBQIghgcCYwsyCO1GDAeZAQAAbWkFAkCGAwJlC+0Mrf0t3ED9QAYV
-7/qyAC78QP9ABhWv+oYAAAAAbBAMlBiSHe4SDSmQBIAA5SIAKtAEgADy4AgV78kFAPTACBWv/QUA
-/8DoFahVAQDlFgkiqD0AAO1dAQv4BIAA5uEVK0AEgADi1wgHcIEAAAnpAelpCAO4gQAA6ZxAK+AE
-gAD44BAS4gCdAJgUnxOeEp0RnBCaFfl8SgXkZR0A6xINISiBAACVGpYb9XxaBedqAQDrsQcrP4KA
-AKl3lxb3fDgF6rsBAOYWBy3fAoAA5bsCCzcCgACnZvohhhXgBwUA9EGEFeAAigAoYp6MFvUACvui
-AJ0AK2KdLMK/DLsB5LQABYh5gACKEosRjBADVTaku+u8ECroBIAAW9ODBTMMp1eLHYwZHr7Ujx3q
-EgstaASAAIkniByq3QWZDJknmECP8Iga7kYCJugFAADsRgMv/gKAAA/fAu9GASJIQQAAbakFCACG
-CQJhK7IV7CIHLYPuAABkwIIuIQwYvewtZp1+M1kogICEGO295xRA3QAA/iDoFeSIHQCoRO3SCCIg
-HQAA+f/6IlIAnQD3oAVgkgCdAC5inogW9cAFy6IAnQAkYp0ogr8avdgIRAHkQKdmy/0AAJmo+oBo
-He/8ngCMFIsTlMD3YAYV4AIFANEPLrEAse7/YAQdr/36AC8hDAX/DGXwjoITiBSXIOSGAC6QBIAA
-0Q8evcUu4ICNGOsSBSdw3QAA+iGoFaTuHQD/oABGsAwVAO3cByXYYQAAWFZnghSPE5Qg9+AGFe/y
-RQDRDwAAAAD/+qgNoAsFAMCgWYl6Hb2xjdj5v/pQkgCdAP/9lA2gBAUAwEAfvazA6g7eNP/hBhWv
-/U4AAAAAAPbvAA4/9/oAGb6ALyEWLiAVKiAUKCEJLCARrqqqWqxCqCuozKysqKgsRQsqtRJ58RKP
-FI4TKCURlPDn5gAukASAANEPixTqEgMkS2EAACklEpSw56YALpAEgADRDwAAAGwQBIon+EBoHaAL
-BQDkUFxlSIEAABa+ZCUxFiwxDC0wFSowESIxCScwFKo0okmiqq13rHenqqJyKjUTJ5Ua9qAERCIA
-nQAiRRksMBUvMQkuMBHtMBQmA1GAAK/urt2tPS3cMu2GFSmQBIAA0Q+FqC2hFfNBaBWvzwUAD58B
-790ICncCgADlIUx26QEAACapFKXsrmYmpRR800XJNeI0AAIAmYAA01BtSQUCAIYDAmGMkK7MfcFz
-nJDyoGgd7/1mAOuGFSmQBIAA0Q8tLNj8g0Qd7/3iANMg+0FmFe/86gAA5doMAYGxgAAKTBTmzAgp
-kASAAOZGNgq4BIAA0w9taQUCAIYHAmEKMgjsTQwHmQEAAG3ZBQIghgMCYwrmDKb2JmxA9yAGFa/+
-SgAq/ED7IAYVr/4eAAAAAGwQBCYgB/V8NgWjJwUAB2cdKCAWpHIjIr77AAQA0AkVAACVGnU4OBi+
-FOQiwSs3AoAAqGaGYARUASgivwZWAfctAAswAxUA+KEghaACBQAAYhHRDwQyOAJiAQAiEdEPABO9
-MwiCCeNzCAkXAoAAoyIiLQojIcIiIcEDIgHRDwAAbBAMiiIpIAflMA4qwASAAJgXlRrlVQkCa/0A
-APFXDA3hmQEAHL0YF70YmRQWvRkqcICZG+1fNwzHAoAA5ogIBVDdAAD/E8gVpKodAKr/670PF/gN
-AAD/wAuz4AqlACiCnQuZCimSvwmIAdmA54QABAtBgACIyJkT9wAMYJIAnQArYq5ksSEbvQMpYq0r
-sn8LngHuFgkkc/0AAPsgCHZiAJ0Ansj7IAiOYgCdACggFv15/gWg//UA/wALVWIAnQAqMA+JFy/6
-wO68/hHAQQAA8VqADeeZAQAtIQcNDUoM3REO3QItxiyLIBq9xf1gABWwDTUADbsCK8YtCkCH+SAP
-6VIAnQCKGsDgnhhtqQ4IAIYIIIYHAmUHAmEHAmMoIBQvIAQsIQn1AABEMAkFAPXgC9EQChUALSAV
-KCQUixnozBEO6QKAAA3MAii0Aym0AArMAuy2ASvYBIAAKmatKSQUhDIkJhyMMfOADvhQCAUA6BYA
-Lg+yAACOEK5ejxviEggv/wKAAKb/Lvad0Q8AAAAAAOokAAnYBIAA7RIHKmAEgABYUK3SoNEPAMDw
-nxmJGQqLNOvGCCz3vgAA+kBoHaAbxQD8ACIdoA0VAFhVW2P/wAD/+lgNoAgFAB28rC3QgOsSBCbo
-3QAA+kBoHaTdHQD8oABG8AwVAO3cAyXYYQAAWFVOY/+LAAAAAPwhphXgCgUAWYhkHLyciMiNHfkf
-8xCQCqUAY/+TKyAH+3rmBaMpBQAJuR2ZFaqZ7pK+LAEKgAD+YMQV4AoVAO8WBi1QCoAA+8AJ2KIA
-nQAevWgMuBGuiIiALpK/+UAEBDAPFQAI+Dl+qFr5AGgd4AGqAADV0PkgCmlSAJ0AihPpPBAiDD0A
-ALBPbfkFCQCGCgJhwICYGIcTDNgR+OAAQ7/51gAoJBSJMPMgDXqSAJ0AihviEggtVwKAAKaqJaad
-0Q8AAAAALpLBwLH/QAQHMAkFAA65OAmJAe0WDSSGgYAA6xIGKVAEgABYAd+NHf142gWv9xoAiicr
-oRXsEgolUIEAAA+pAam5KZxAbckTCGCGCCCGBwJlBwJnBwJjeYsY0w/bQPyAaB3gDAUAWEoB+iEG
-Fa/3igAAAPsPAAx//44AANog63QACmAEgABb1wCMMeoWAC1fAoAA63sIBnCVgADaIPyAaB3gDAUA
-W9bHjBCsrKxenBCPG+ISCC//AoAApv8u9p3RD4kVCI8J7JkID/8CgACp/y/9Cinxwi7xwS/xxQnu
-Af/f+YLgCRUAixT6QGgdoAwVAPtiQBXgDQUAWFTcY/3DAACOJ54Rien7woIV78gFAOfhFSdQgQAA
-CKgBmBLoeAgKZwKAAOy7DATIQQAAmekIuzLr5RQkQQEAAPkgCfKiAJ0AaMtGqcfrFgwju8EAAPcA
-BiviAJ0A6xIDIgx9AACwTm3pBQmAhgsCaYehL6kEB8cI7xYMI7vBAACLHPjgCDwiAJ0A56YBK8gE
-gABksM/4IQYV7/j+AC8gBxy8Ug8rQO68oR3agoAADLsCLCEI+uAGFeH/AQD8QAgV4CsFAOt2Ay/8
-AoAAD8wC7t0CDs4CgAD/hgAOMAo1AAqZAplxGrwImnKJK/5BKBXgCwUAm3WcdO12BixyAoAAnnef
-eJl56yQUIsgNAACKG+ISCC1XAoAApqoppp3RDwmPDPogaBXkfx0A0w9teQUJoIYLAmuLE4kSB0cM
-r7vpnEAjjD0AALB+bekFCcCGCwJtiRIoqQQPywyrmSmcMOmmASx5pgAAjBLA4O6lBCZhAQAA/UAm
-FaAJBQD9QAYVr/xiAAAHmQz5wSYV7/r+AIkSKZxA+UAmFe/78gBsEAyVEYwiKiAH6TIAImgFAACd
-GfwhBhXhqgEA8Z8MDeiZAQAcu8CaE4jIFrvBmRL3AA+gkA2lAC5irhm7vmTiHCmSfyVirQlVAWRS
-EiiM/yjGCOlUAAKPiYAAG7uzJbCALhIDGruy6RYAIqjdAAD3wGgd5FUdAOVFCA9PAoAA5pkIAqgR
-AAD1wApqEgCdACiSnvUAGdPiAJ0AJZKdCugKKIK/CFUBZFHDKSAWKgr/epEQKjwQW9MW66QACVAE
-gABYARMoIBQrIASkiPVgDokXmAEAKSQU9SAUNlIAnQAbvGYtIQePEh67nvt3QAWq3QEA7N0RB+A9
-AAD/pgAOtMwdAO4SCSZgBQAADEwMnVCIIOy6OQfIQQAAmVPqVgIsRgKAAAjuAp5RLSAsKyEXHLxc
-6hIBLuwCgAANuwIMuwLrVgQiyIEAAOwyAyHAQQAA/qFkHeAOBQD+oUQdrw0FAP2ABAZ3vAEA7FYG
-LdsCgAD6oOYV56oBAPlACYFSAJ0A6EENYlP9AABtqQUIAIYJAmHAgC0gBLBKDKoR9aANIRIAnQCJ
-MikmHIsxqlXoFgwiqIEAAPNgDdBSAJ0AwDDoFgwtjwIAAKNLsbsMfBGmzOvGnSwQBIAA0Q8A9wAP
-4JIAnQAMeRGmmS6SnvXAEFPiAJ0AJZKdCnsKK7K/C1UBZFH4sI2dyGVeomAAYwAAAAAAAADqJAAJ
-2ASAAO0SASpgBIAAWE810qDRDwDAoFmHBhy7PYjI+R/wEJANpQD/+FQNoAUFAAAAAAAAAPpAaB2g
-G8UA/AAiHaANFQBYU99j/7HAUA2INPmBBhWv97IAAAAeuy4u4ICNGesSAydw3QAA+kBoHaTuHQD/
-oABGsAwVAO3cAyXYYQAAWFPQY/90AAAAAAD4QoYdr/jqAAAAjyefFIj5/eKCFa/NBQDq8RUn2IEA
-AA29AZ0V7a0ICk8CgADpzAwEQEEAAJj5CMwy7PUUJukBAAD9AAwS4gCdAGibTZwb6JoIAvCBAADu
-FgYlU8EAAPugCAOiAJ0A6EEeb2AEgACwTm3pBQgAhgwCYYqxL7kEqprvFgslU8EAAIwb/UAOjGIA
-nQDqtgEtQASAAGXOUmABCYsw82AJYpIAnQDsEggr7wKAAKbd7NadLBAEgADRDwDrEgApUASAAFvU
-GWP9bwAA6RYHKVAEgADrVAAM4ASAAFvVnIgciReaGosx46QADXcCgAD+oABCv/iWAAAAAAAA6iQA
-CtgEgAD9IGgd4AwFAFvVX6Ojo0voEgwl2AUAAAx8EabM68adLBAEgADRDwAA//NIDaAFBQDAoFmG
-mhy60YjIGrrS+R/vuJANpQD/+EgNoAUFAADAUA2PNP+BBhXv+BIACN0M/cBoHaStHQBtqQUIIIYM
-AmOIFa1e6kwMB1CBAADojEAmDD0AALDPbfkFCECGCgJliBUquQQNnAysiCiMMOi2AS1qVgAAjRXA
-4O61BCbpAQAA/WAmFeAIBQD9YAYV7/S6AAAKiAz54SYVr/nuAC8gBxy6ve669RJT/QAA/0AAFTDf
-EQDqWggO6oKAAA7dAh67P52ojSD9QUYVoAs1APxBBBWh/wEA7t0CDs4CgADrmQIP/AKAAA/MApmp
-/4YADjApBQCZqysgFI8r/kEoFaAJBQCZrZysna4uphDvphEt2gKAAJuvKSQUghmzIgx5EaaZ4pad
-LBAEgADRD4gVKIxA+WAmFa/4ygAAAABsEAQqIAcfu2P9drwFoy4FAA6uHSsgFqzsKMK++2AEANAN
-FQDkuoYe6AqAAH2ISBm7WgyoEemICA3KAoAACTkCmYAowr940CsowsAI2AIoxsAJ6jALsgnk6AgJ
-FwKAAKKIr4gign8phn4DIgzihn8pAYoAANEPAAALvAnk6ggOZwKAAKyqKq0JKqx8Kq0CKaED8y8A
-DPAMBQAMmTUppQPRDy7CwQ7dAi3GwVgB4NEPAGwQBCcgB/V2ZgXjKAUACHgdKSAWpYUjUr77IAQA
-0AoVAACmGnY4MBO7LAxyEaMigiApUr8CYgHzTQAJMAgVAPjAwIXgBAUA0Q8pUsEJaQEJhDgEIgHR
-DwAduk0JnAntjQgOZwKAAK3MLM0KLcHCK8HBLMHFDbsBfLsDwCDRD9Kg0Q8AAGwQBiogB4giHLo3
-93RwBaGqAQDlgOVtXwKAACnAgOa7CA04BIAA6LKeJMjdAAD9dFwF5JkdAO66KhTIDQAA+QAH0+AP
-pQArsp0NqAoogr8IuwFksPCK6JsQ90AIUJIAnQApYq4duiNkkKwt0n8sYq0NywH9gAUWYgCdALCv
-n+j9gAUOYgCdACggFKSICAhHKCQU9QAHNlIAnQApIAT9JOAEUPz1AAUKR2iiGIon+oBoHeAMBQDq
-rCAqaASAAFhHtdKg0Q/AINEPKyAsfLHWjTItJhyJMesSACgECoAA8yAFGFIAnQDxLDgN4AMFAAx9
-Eabd87OmFe/+vgAAAOokAAnYBIAA7EQACugEgABYTenSoNEPAAAAAMCwD6g06OYILfs+AAD6QGgd
-oBvFAPwAIh2gDRUAWFKXY//BAAD//EgNoAsFAAAALcCA66wYJujdAAD6QGgdpN0dAP2gYBXgDBUA
-WFKMY/+UwKBZhaUeud2K6Plf92CQD6UAY/+n2iBb0wNj/xWdEeokAA7gBIAAW9SIjRErEgApMgEq
-FgLjpAANZwKAAOy7CAT6LYAA+kBoHaAMBQBb1E3zQABB//zKAABsEAQTucwjMpwDIgwCYhTRDwAA
-AGwQCpUR/oBIFaANFQDvNAACOCEAAO8WAisYBIAA98ARPG/79QAfuhMVufOTEPpABADQCQUA6RYE
-LrAKgACWE/rXAAtwDAUAieGeFYvgm5CK4O1BESdD+wAAmBaZoZzhnOCLQiiCfvPv6BXgChUA928A
-DfAJBQDrqTgMRkKAAKgziDKZF4k3BogB+GBGFaACBQDlRRImhhmAAI6cLZkU6pIJJMDBAADo6AwH
-cyEAAOjiOQaE8YAAKhYIZSBFihjluc0VAYmAABm5qSigABW5ygmICiiCEOygBy1YBIAA+mBoHaAN
-NQALgAAtQRUrQRGaGH2zb8wriBhlj778YEgVoAG+ABm5miggAAmICiiCEOwgBylYBIAA+mBoHaAN
-RQALgAAsQRUrQRHSoP1gCduiAJ0AizctuRTI1vthKBWgABoAwKD6IQYVr/3aAAAAAAAAAP/9iA2g
-CgUAKEEQ+IIkHa/86gCMMszEZSBIZaBFGbpJfJA12sBZh4r7QGgd4AIFAPpgaB2v/PUAWE83ixaO
-Mo0TihWMQg7dAp0ymsEntoEstoCaQiJFEtEPfscdx/0PzAGcMokWixOIFYpBDLsCmzKYoCSWgCqW
-gZhBjRfAwOxFES6FNgAAjhSx7u4WBCcgO4AAjkL/c0gF7/l+AI9AdPlTiBfjEgAkAnGAAIoR/iBI
-Fe/59QD8ZAIdoAgVAOysKAmBCoAA7vLALEAKgAAJiAMZuhcI7gEu9sCsmSySwSmSvcfvDswDDJkB
-HLoRDKoRrKqZotEP0Q8AiUB0ka3qRAAL2ASAAFjtrvv/4h3gDRUA/oBIFa/3BgCMMmXO/2WvQooY
-Za89Y/70LkEQjxEYugD7c/4F4y0FAO39KA//AoAAqP+IEOvbCAxiAoAADOwCnPMvsr/7AAQA0AwV
-AADMGv+f+c5iAJ0AKbLACckCKbbACeowiBAauRsIiAnq2ggMRwKAAKqIKI0IKIx4L4LAKYa/Dv8M
-74bAJ/glgAAqssEKygIqtsGKEVgAi2P+7gAAAGwQCAZkCeMWAConAoAApDSMQBu52v1ztAXgDhUA
-/IANHC//9QATuVP6QAQA0ygFAPijAAwwCgUA6hYEKs8CgADtmQgPUAqAAOkWAisBCoAA76UDD0gK
-gACZEauI+CBmFaAHBQCPwYbAlvCCwJ8hl8GXwO9CACZz+wAALuJ+LTJ/5P8MD3ZCgACu3Z0V+6BI
-FeAGBQD9oOgVoA4VAA/mOAW7ASnCDPmCghWgAgUA69YCJlDBAADqmgwEyyEAAOqSOQQEeYAAKsIJ
-ZSBGya0ZuOcooAAJiAooghDsoActWASAAPogqBWgDTUAC4AAziJlr9aNEowRjhON0C7iv/2ABAbw
-DxUADf05/4AECKIAnQBgAEUZuNYoIAAJiAooghDsIAcpWASAAPogqBWgDUUAC4AAiRWJlyuZFOKk
-AAWAYYAA+yEoFa/+HgD//fwNoAoFAP/90A2gCgUAZdBHjkB06WGJEIoRKJLA/iBoFe/79QALqgMK
-iAEolsAo8sEv8r3HnwmIAwj/AYgSn4LRD4gTjxEogsHA4fngBAewDAUAD+w4fNC3ZW+0iRSxmekW
-BCSit4AA/IAIFaAHBQDzcdwF7/qaANEPFLlv8gAiHaAKRQDsuXIduASAAPygaB3gKwUAWYjCjBD6
-ZAIdr/71AOpaKAsBCoAA68LAKWgKgAAO3QOnqg27ASvGwCyiweqivSrfAoAA9WAARb/99QANzAMM
-qgGastEPbBAEHrh+E7lcLuKWLTJrou4J7hGu3Ri5Uf1yngWjLwUA7y8oCXcCgACo7ojgrPzqwsAk
-AwmAACvCwWSwS3q8UynCv8uVG7lNGrhyC6oICvoIbQgdKKLAL6K/+eAAR7GZHQDo/zQFUMEAAO+m
-sySAcYAAY//bAAAAAAAAAPmXqBWgCQUAKcbBmOKK1yqsEFhIF9EPAILXIiwQ2iBb1spooQLRDwDa
-IFvW5BK5NQuoEegiCAUByYAADOowKyKFi7AirP/suwgJUASAAFmJ+CoymPpABADQCxUAALsaC6oC
-KjaYWYot0Q8AAAAAAAD6AOIdoAsVAFhI0Cwifywmg9EPAAAAAABsEATAINEPAGwQBPVyOgWjJQUA
-BSIoGLg9pCT0k+gVoBX1AANVDKgidUUPAzQJDEQRpCIiLQsiIUDRDxK4atEPbBAG/XIgBaANJQD6
-YHAVoAkFAPRAaB3v+/UA+kLGHeACBQDiVRslE1GAAPNAAgJwD/UA/iAGFeAI9QAqMAgZuQL5QA0a
-ogCdAAmpComQCpAAAACGM/ZIAAO3ZgEA6nQAC1gEgABZhZYcuPcnVAwmVA35QOQVoA0lAPig5B2g
-BbYAiTP4IAYV4AWOAIszbrgH8AVYDa/ipQAqUAcKCkFZSt/9cdAFoA0lAPqixh2gBPYAAAAAAAAA
-AIsz+qLGHeAEsgCLM/VgCRISAJ0AaLYw/WagAtAKhQBoty39ZUAEUA6VAP9gCCUiAJ0AL1Ag/KCm
-HeAIRQAI/wL+pAYd4AO6APygph3gA5oAKVAgCpkC+KQGHeADYgCLM/qjZB3gAzoAAAAAAAAAAI4z
-/qNEHaAC9gApwn2PMyjCgirCgKn////gFeCZTQDp/wENAgqAAA8PGQ3/N/nhAA+w+PUACP82/qRm
-HeACHgCIM/ihhhWgAfYAKVAiizObW+tWCSSBYYAALsKAsJr7wAQA0A4VAOCqGg9wCoAA6roIB3P9
-AAAOqgL6oUYVoAEaAPqhRhXgAPoAjzP+oQQd4ADSABq4pIkzKFAHqpoqoIArCvvriAENV4KAAPsG
-AAww+sUACogBCYgC+KDmHaAAGgDGKrgz9H/yXSAI9QApURsowoCKEB636utQIy0BCoAA4O8aDAIK
-gAAPDxsN/zcPuzbrVCMsgxYAAC3CfRy4iypQFitRGv2BAA5w/fUA/UxmDeMoBQAtUAf/cQAF4d0B
-AAjdHK/fL/KfwY8KiAx49Sget50Krwnu3ggP/wKAAK/uLu0LLuFADsg2C4g3C4gsCLgcKFUb0Q/R
-Dw7INguINwuILAi4HChVG9EPwK/6IAYVr/2CAAvNLA29HC1VG9EPAABsEA4oIAT7bwAFp5UBAPc/
-wBXgCxUA9QAPcRAGBQDntzkJsASAAPUgBQEQ/hUALyAHjiIPDUHp1AAPDbYAACsgIQscQmXCIMDV
-CQtH9WAKihIAnQAMvBGqzC7CnpkX98AXcdIAnQAet2cswp0Ovgou4r8OzAFkwjQpIBSkmSkkFI9g
-8+AR+pIAnQArICH6LgAOcAp1AP1AFRiiAJ0AynX6QOgVoPwVAOy7AQpoBIAA+kQmHeAMBQDqrCAq
-WASAAFhE/NKg0Q/AINEPKSAF9SAU4JIAnQD1IBV7kgCdAPUgHdwSAJ0AZZ9FHLe6LcJ/ZNYeKcJ9
-i5GPkJ+wjZD7oCYV4AgFAJiQmJEvwn+w/y/Gf+siACTj/wAA68Y+JNvhAAD6QOYV4AgFACgkICgk
-IftwPgWgDgUA/kKGHaAPhQAvJAUuJBcuJRvuJRol6EEAAJ0fW9YGHLgWHbdkHrgVjyDqEg8tWASA
-AFvVvIonDwIAKqwQKhYOW9WY9UAqeJIAnQArICEsCv7suwEJUASAAOskISnYBIAAW/7w+242Ba/6
-RgAetxaO6JkX98AVcJIAnQAMvBGqzC/CnvfgFmHSAJ0AH7cRLMKdD78KL/K/78wBB0P9AADvtwoW
-FZGAAJj4Zc6W+CDmFeADIgAAAAAAAAAA6iQACdgEgADsRAAK6ASAAFhK89Kg0Q8AizCZFvUgCkEX
-uwEAjCIrIAf1lGwN4bsBAAy5EaqZLJKe94AqmdIAnQActvQpkp0MvAoswr8MmQFklQwsIBSkzCwk
-FI0w86ApupIAnQCNFvmgLTFSAJ0AwCDRDwAAAAAA9YAJIJIAnQD1gAnxEgCdAPWAHSGSAJ0A9YAe
-0hIAnQDHlfgfAAXwD3UA+AAiHaAOBQD7AgAPcA1VAOn9Ow9tHgAAY/9Cixf6QGgdoAwVAPtjABXg
-DTUAWE98Y/8qKCAHLiEIH7cX+CAAAbCIEQAKiBDviAIJnAKAAAPuAh+3YRO215jA+EAIFaAlBQCV
-w5PC/8YAD3ADNQDvjwIMRgKAAAOIApjBhSuIKZ7En8aYyPWBJhXgCAUA6MYFLKoCgAAF1QKVxygk
-FAy1EapV8rOmFe/1SgApCvEJuwH6RCYd7/VeAAAAAAAAAP/0hA2gDAUAZL64A7cLH7eVnxqXHfZg
-aB3gB5oAGrdMiCApoW95iwUroY5ltQ7AINEPAAAAAAAA+kDoFe/2igCOK4wpfsEJwPL+QEYV7/uu
-ACgK8flgBAQwCUUACYgCKCQh2dD1oBWKEgCdAAzbEaq7LLKe94AiwdIAnQActo4rsp0M3Aoswr8M
-uwGZGe0WCCWWUYAAGbdw+kAIFaAMBQCcEZkQKGAD/gAiHaCNFQD7AAAUMA8FAPggRhWgDAUAWEh4
-iBkatn0MiBH7AABEMA81AC+GnSggBi0gIY8iLgrx/6AEBrAJFQDp/wIEQAUAACgkBp8i/EQmHeAO
-ZQAO3QL8RCYd7/jSAAAALRYQ+iImFeAKBQBZgi0etmUatmeJF47oLRIQKxIR+d/poJIAnQD/9WgN
-oAwFAMDAGLZcwPoP7zT/AQYV7/UiAAAAiyeMuP9ipBXvxwUA7bILJaiBAAAHVwGn/y/8QP2gG2Qi
-AJ0AKLkUDEYRrG2miCi1FP3gGzviAJ0AyTfZMOvEAAIAmYAAbUkFCQCGCwJhLVIABt0I/6AcdGIA
-nQCdUIvAwNL3gGgdrw8FAPmAaB3niwEAbYkHKJAIaIELuJnAcf/sPA2gBTUAiJMPuwEIuwKbwCgg
-IQ6IAQ2IAvhEJh2v/3YAwJt5oUSKHbh3+uAGbCIAnQAqcAhkoJhooWdooudoo1ZpqdyJc26T3GmT
-2Ywn+4QAFe/NBQANuwHmxRQl2QEAAJvJ+4EGFe/+/gCMGo4ijyeNICkgFi/5FJkQ+OBoFaAKVQD4
-ICYVoAsFAFmGS4hz+ELGHa/+SgCJc/hBBB3v/iIAABy2+YtzKiAHrLwswIAtCvvtqgEOZ4KAAP1G
-AA0w/MUADKoBC6oC+kDmHa/9ZgCLcwuKQvohZhWnuwEAmxxZg4YsoQeNHI4bLiQMLSQN/EDkHa/8
-ygAAAAD7a/gFr+/iAPPf4yfSAJ0A/MAIFaD+xQD/4AQHMPgVAPlgBAQwCYUA+QYADH8JBQAJyQEN
-mQIOzAIsJAeZYPhEJh2gABoAiWD/8JgNp5kBAAAeteSO6J0Z98ARYJIAnQAMmxGquy+ynvfgEiHS
-AJ0AHLXfK7KdDJwKLMK/DLsBZLIvGLXYsO+fiJkZ7RYILen2AACLGPpAaB2gDBUA+2MAFeANNQBY
-TnwatdL/7wwNr/lFAIoeW9RfG7axC6wRrLvrFgUlAuGAAAzqMCuyhYuwsKqaFKy7WYd0HLaxjRQq
-wn/7oAQA0AsVAAC7GguqAirGf1mHqGP6bynCgIuRj5CfsI2Q+6AmFeAIBQCYkJiRL8KCsP//kEYV
-7+eCAAAAAAD6AOIdoAsVAFhGQokVKJJ/+TBmFa/o0gDqJAAF2GEAAPwAIh2gDTUAWE5T6iQACdgE
-gADsRAAK6ASAAFhJl9Kg0Q8AAAAAAAD/6vANoAkFACggBy4hCP1rzAXh+AEA+eAAF7CIEQDv7gIM
-QoKAAA2IApiQ+EAIFaAjBQCTkxO2LB+1o5+S88YAD3APNQDjgwIMRgKAAA+IApiRjSuIKZaVnpSd
-mfMgxhXgDUUA6JYILkICgAANiAKYlyYkFAyzEaoz/nOmFe/pYgCKJ/qAaB3gDAUA6qwgKmgEgABY
-QyfSoNEPAAAAAAAA/+7cDaALBQDAwJy7/aBoHa/zKgAAAAAA7P0MAYGxgAANTxTo/AgpyASAAOhI
-Ng5YBIAA0w9tiQUJIIYLAmMNOQjvSAwD2QEAAG2JBQlAhgsCZQ1pDKl5KZxA+KAGFe/x8gArfED6
-oAYV7/HGAB22SywhGg3MAfxDRB2gAgUA0Q/8IQYV4AoFAFmBHB61VBq1Vo7ojRiJGfnf7eiSAJ0A
-//d4DaALBQAAwLAYtUzA+g/vNP8BBhXv9y4AAABsEASJJyggBiuZFCqcIO2SCSRD/QAA8WcgDeeI
-AQDoJAYkAFGAAMAg0Q8AAPGksA3gLKUAK9AAfLlA/yKkFa/4BQD5ogAV788FAO+vAQJT/QAA7+4I
-DV8CgADoMR13cQEAAKvbK7wQ6+MsccBBAABoQQhtqQUIAIYJAmH6QGgdoAsVAFvQi8Ag0Q8AAOgk
-Bix8tgAAY//jDe0MLNzwDEwUuMsLqzZtuQUIAIYJAmGj2AxKDOn8QCUPEQAAsK1t2QUIIIYJAmNj
-/7EAAABsEASIMuokAAnYBIAA/GDwFaANNQALgADSoNEPbBAEKCAEIyAH/QEAA1EzAQDAINEPG7X5
-K7F++kBoHaK7HQBZBh5lr+fqJAAKaASAAPpjABXgDBUAWE2swCDRD2wQBhi174ouLSAH/WqqBaAE
-BQD5QAfMId0BACTCfwmoEahEjkeO7p4QiicpqRTrogkkhxGAAC6wFO+wFS24BIAA5bQABwB5gAAq
-rBBYRKvAINEPAObUAAeGIYAAKcJ/iZcomRT6AQIdoANFAOuSCSQHoYAALLAWsMzsozgNqASAABu0
-3+q04B7/AoAA9aAEohIAnQAK+gguop4tFgHzwAzb4gCdACyinQveCi7ivw7MAWTBYykgBRq1wy1Q
-B++ctSzPgoAA6pkIB5g3gAD5N6gV4AAeAADAkB+1vO9WACz2AoAADt0CnVErcBTocBUtgK4AAGSA
-yylQFuiRb2TT/QAAKlQWiicqrBBYRHzAINEPY/8VAP/8eA2gCwUA//2EDaADRQAftLWO+PfACLiS
-AJ0ADGgRqoosop7zgAl74gCdACyinQtoCiiCvwjMAWTBHbDpmfhlz1z8ICYV4AL2AAAAAAAA//ww
-DaALBQDaIOtUAAnoBIAAWTjdZE+HixAqsCgssCntsCotVgKAAAyqAuywKy1WAoAADaoCCKoRDKoC
-sar7ZWYdqKodAPtlRh2oqh0A+2UmHaiqHQD7ZQYdr/0aANog61QACegEgABZOMdkTzGMECvAKC3A
-Ke7AKi3eAoAADbsC7cArLd4CgAAOuwIIuxENuwKxu/uFZh3oux0A+4VGHei7HQD7hSYd6LsdAPuF
-Bh3v+8IAixHstWwZUASAAOx2ACnoBIAA+2MAFeAMFQBYTR7AINEPAAAA//nEDaAMBQD8ICYV4AoF
-AFmAMh+0ao0RjvgatGsbtGn53/aIkgCdAP/7sA2gDAUAwMDAigjoNPnhBhWv+3YAAGwQCiggBPkA
-HfuSAJ0A9wAduhfVAQAoIAcICEGYGPWgHVkSAJ0Aii4WtUsrMQgrJQgpYjgJqhGqmSmQBfpC0BXg
-OuUA+yAhhCBIJQD5ICFEIDzVAP0gIgUg/vUAiDn4IAAEsARFAAlEDAQEQfSB4BWv+YUACUQBpIgo
-jDToFgMiIf0AAP9jBg2kRB0A/b/AFaAKFQAMrDkqIEFYSwJkpD+LGBm0OOe0OBJoEQAA5bQADccC
-gAD1YBwSEgCdAAeICCyCnv2AIIviAJ0AJYKdCboKKqK/ClUBZFPdGLUgGbUe/EREFaALBQArFgAu
-MgkqIEEftJn8IIYVoA1FAPtAAIUxvgEA690MDVcCgAD74ABHsd0BAC0WBg3uCC/yf/hFRB3gDDUA
-7xYFJ3DxAAD+IOYVoA+FAO8kZCjYBIAA+aYADrAIdQDoJFwu7gKAAO0WACFRlQAAWXzq/EDkFaAL
-BQArJTX6TQYd4C7lAP5K5h2gTSUA/E6GHeBfJQAvJAWPFf1oHAXqzAEA7hIELmcCgAD+wAAEcp9B
-AO3MAgzOAoAA+QYADH3eHQD8oAYVoP85AOoiAC/9QoAA6bTGHu0CgAAP3QII3QIftOYpVgLptOYf
-dQKAAO/uAg1WAoAACkoC+qAmFaBKRQAqVgMsIEEqEgcuVgbpVgcuZAKAAA3MAh20vitVCipVCw3M
-AuxWBCFBIQAA6AceAviBAAAPAmP6RUQVoA4FAC5UMS5UMv6mZh2gDQUALVQ1LVQ2/KbmHeAMBQAs
-VC76peYd4AkFAClUMPqlph2gCAUA+KaGHaiqHQAqVCwvIFf6S4AV4AxFAP6nZh3o/x0A/qdGHej/
-HQD+pyYd6P8dAO9UOCLQ8QAAWXyc6VxAIUGBAAD4UGgdoAoFAAkEiggAiOmDHgHAgQAAHLP/+qpm
-HaAKBQD6qkYdoAoFAPqqJh2gCgUA6lRQIslhAAAIYIgJDIoIQIgJCIqKFh6zuS5WGupaCAVYIQAA
-K1YbKSB0KaR0KSEHKDAHmDHrIAcqfwKAAK9fLSEI+UAABPCrEQDsmRENUoKAAPsmAAyxuwEA6rPh
-HcQCgAAI3QIM3QIKmQKZ8IkgnvKd9P3gxhWgOAUA+eBmFaAKBQCa9Zr3/SAAFLAKRQAKmQKZ8eMP
-Hgf4gQAADwJnA0CGDwJlDL4R5+4IAmgRAAAt5p0rIBYsCv98sQcqIEGME1hKGyUhFCMhEg8CAPCi
-oA3gBAUAylLqYsYp2ASAAPwAAh2gDRUAWEClKGLH5EwBIZgFAAAIMy51SdvaIFg+FsAg0Q+HJ4t4
-/OKkFa/OBQDpcgsjsIEAAA5uAa7M7hYBJmEBAAD7IAh0YgCdAO95FCpHAoAAmBKriqj/L3UU+4AI
-K6IAnQDJNclD2bBtSQUDAIYJAmGOEopgDwIADqoI/UAJpCIAnQCaYPNgaB3v78IAABuzUIq490AJ
-SJIAnQAMWBGniC+CnrRM/eAJo6IAnQAJXAoswr8lgp0MVQFkUSKwrZ24ZVxpYABEAAAAAADqJAAJ
-2ASAAPyAaB2gjkUA7jUIKugEgABZPVPAINEPAOokAAnYBIAA/IBoHaCPVQDvNQgq6ASAAFk9S8Ag
-0Q8AiCJljwuLGO1MBClQBIAA+2MAFeAMFQBYS9jAINEPAAD/7+wNoAUFAIwiZc7jKyBB+kBoHaAM
-FQD7YkAV4A0FAFhLzcAg0Q8A8yBoHeAMBQD84WYVr+xqAOvMDAGBuYAADE8U7vwIKcgEgADuTjYN
-0ASAANMPbekFCYCGCgJpihGsOe9IDAVRAQAAbYkFCaCGCgJrjxKOEQz/DK/uLuxA/sAGFa/7XgAA
-iBEojED4wAYVr/smAMCgWX7LG7MCirgZswP5X/ZQkgCdAP/7nA2gBQUAwFDAmgmpNPlhBhXv+2IA
-AAAAbBAG+EDoFaANBQCdECogQRuzayYgBwqsCemJFC5nAoAArLv7b+gV4WYBAOsWASSaSYAAJIIJ
-8pPgDeBIlQAuQBLz03AN4FtVACkgBfsgGWRg/PUAKyAWKCQFfLETBQxH/Z/AFaANFQAM3DlYSadk
-o6LAMeWy3RtIBIAA9MAYQhAHRQAastoMaBGqiC+CnvrgaB2gC8UAA7o5++Abe6IAnQAFagoqor8l
-gp0KVQHrsvYSmYGAAPigaB2gDMUA6wAFC8gEgADjyTkK0ASAAOkWAiKwgQAAbZkCCAJhZDGxLiEH
-GLLO/2d0BeruAQDqs7QfdwKAAAjuAi5WACsiAP1llAXgbEUA/KBGFeAIhQDsVgMt3gKAAAi7Avqg
-JhXgCXUAKSRc+EyGHaAMNQDqJSoo2ASAAO8WACFRlQAAWXuKKyEi/CAoFaBfJQD+QKYd4CjlAPhK
-5h2gSSUA+E6GHeAIBQAoJTUoJGj4SDAV5twBAPxIAAc9qx0A5KoRD3YCgAD/pgAOsMw5AO6zkB5l
-QoAADKoC+KFEHaBfRQAvVQscs4kNqgLuVgcszAKAAAqZAuqzax3dAoAADLsCm1YKmQLpVgQhaSEA
-AO0HHgtgBIAADAJj/kVEFeALBQArVDErVDL6pmYd4AoFACpUNSpUNvqm5h2gCQUAKVQu+KXmHaAO
-BQAuVDD+paYd4A0FAPymhh3o/x0AL1QsLCBX6lw8IVlxAAD8p2YdqMwdAPynRh2ozB0A/KcmHajM
-HQD8pwYdoAxFAFl7SCgsYOgmAALRAQAACgSKCACICgCK9sAgJaALBQD6qmYd4AsFAPqqRh3gCwUA
-+qomHeALBQDrVFAi0AcAAOsgdCVSAQAA61RwIzIBAACPQB2yniwhBy5AB55BKCAHFbKc+EEEFerM
-AQD/gAAWMOgRAPXQABcxiAEA7swCDFwCgAALmQIFmQIbslcNzAKcoIwgm6KZpPVAxhXgDgUAnqX/
-QOYVoD0FAO2mAy5mAoAAB8wC/UAmFaf/wQAEYIYGAmcEQIYGAmWLJx6yOIwS/wAAFr/KBQDu3QgF
-2IEAAAq6Af2zphWgDAUA7LUEJVEBAACasftgBhWgOWUA+eAEZGA4VQD54AR8IgCdAMo4KyAWKQr/
-ebEg+kgwFaBcRQBYSL/AINEPxK8qJAUrIGixu+skaCn+1gAAwCDRDygkBf/zwA2gAwUAG7IWirj3
-QAUgkgCdAByyFgyYEayILIKe/OBoHeAOxQAD7Tn9gAVD4gCdAAWcCizCvyWCnQxVAWRQlrCt/WEG
-Fe/zmgAAZD+W2iBYPKxj/5PF4v5Aph2v/b4AjyJl/5H6QGgdoAjFAOOHOQNYYQAA/OBoHeAMFQBY
-SqXAINEPAAAAAAAAAP/ydA2gBQUAiSJln14rIEH6QGgdoAwVAPtiQBXgDQUAWEqZwCDRDwD2IGYV
-oAoFAFl9sBux6Iq4iRP5X/pQkgCdAP/xbA2gBQUAwFDAygysNP1hBhWv8TIAAAAAbBAUlRaXFCIW
-HuMWBSpYBIAA6xYHKfgEgAAs8APiISIpGASAAOcyDiugBIAA5jAHK2gEgACSGigwQRKyRv+AAEZ/
-+QUA6IgJBmD9AAAJzAHsFgksRwKAAPhAAEExZgEA6sIBI0BhAAAoFgjiIn8mYEEAAPugMlqiAJ0A
-LgoA8iAmFaALBQAO0gweshUu4n8JfxGv7i7hNyh6//8AM7KiAJ0AFbJTlhMXsrAncn/vAgALsASA
-APugBHKiAJ0AjhkCqgyP45cSjuIPLwhy+wIu7AGIFPcALOiQBwUA90AsqJIAnQDAIG0IWwpJNAYo
-CglZNJmABikLn5OekoiADwIADwIACEQMCKoMr4npFgshEAUAAOibBn94BIAAse/u9AADuAUAAO8S
-CyEMMQAA9sMAFaACBQD2gClQkgCdAPdAKRCSAJ0AY/+dlxIMvgsMugqKoI/jjuICqgyvL3L7AbHu
-wCDyIiYVoAIFAPaABPiSAJ0A/COGFeAAxgAoEhHoeAgF2AUAAOgWESWMMQAA/YMAFaALBQAMvgsM
-ugqKoI/j7uICIg2fgAD/XPAN4AcFAGpBx20ITAYpCwYtCgpINAhYNAhEDAiqDJjQnpKfk++NCAEQ
-BQAA6NsGf3gEgACx7+70AAO4BQAA6CEMbvgEgAD2wwAVoAIFAGSvf/af++CSAJ0AY/+sAAAAAAAt
-Ehz0IIgVoAsFAJsQKzAWhhL8IyYV4Pn1AHmxGowW+mgwFafMAQD9n8AVoA0VAAzcOVhIGWSk5S0S
-EemxUBaewYAAFbJEihEdsUuME4IanB7szxEOZ4KAAPngAEf9ch0A7cwICRUCgAD0RgAJdooBAPwh
-hhWgBQUA9CNGFeK6QQDvFhAt3gKAAAuIAuIWFSHZIQAA6xYSK70CgADyIeYVoKo5AO8SES1VQoAA
-CncC6HcCAdFxAADqFhMhwYEAACgWFCcWFuexVBf4FQAA/iMGFeAFVQD2IaYV4AIFAPAASA2gBwUA
-AAAALBIY/KAZ/CIAnQDA1Q1dL+TSd2KoBQAAJ30BJ3yALzEHGLEo9kABBLr/AQDusesf/wKAAAj/
-Ap9wjDD+4EYVoE1FAJ1z/YAAFjANhQANzAKccYuQwKT8aDAVobsBAAuqDCsSFukWFy5kAoAADLsC
-HLHl/iJIFaGqAQAqFhsMuwKbdCsSFfkgCBXgDAUALHUKm3aqmeqx9hTI8QAAKXULmnfuAx4D6IEA
-AA0CYfplRBWgDgUA/uaGHaAPBQAvdDX65aYdoAgFAPjm5h2gCwUAK3Qu/OXmHaANBQD85mYd4AwF
-APzmJh2gDQUA/OZGHeALBQD65gYd4AgFACh0NisSE/gjSBWoqh0AKnQsLzBXqYj4I0YVoAxFAP7n
-Zh3o/x0A/udGHej/HQD+5yYd6P8dAO90OCPQ8QAAWXm06RIUI9EBAAAJIIgKBIoJAIgKAIopMhwo
-Ehj46mYd6JkdAPjqRh3omR0A+OomHeiZHQApdFB4WTP6I2gVoEslACs0dBuxvwoKQftGAA1wC4UA
-+mymHeAMNQDoqhEI2ASAAOoWACPRFQAAWXmZLDE19kACBDA9ZQAtNFfqggMmYAUAACw1NSwSFxux
-ryt2FonAKnYZKXYXj8AuMhyNP4iCKHYYr+4uNhyMwC4SGQ9EDK3Mrv7uFhkhEAUAAOw2DyEMMQAA
-9sMAFaACBQAfsLL4I2gVoA5VAA5eLy92GueICARIIQAAKXYbLzB074R0L26+AAAqEhEFqgy2qvdf
-7jlSAJ0ALhIQjR8t5p0rMBYsCv98sQgqMEEsEhpYRyuNH4kV+iMoFaBLdQArNAWal48y9SEmFa+E
-jQDolggvh84AANow+iEIFeAMFQBYSS3RDwAALxIRjB4PAgAF/wz/4MAV4ApVAAr/Ng3/Ee8WDyYl
-OQAAKBIQDwIAKIKe/wAG0+IAnQCIHCcSECiCvydynQh3AWRwvIkd/uBoHaAKBQDpAAUH6hGAAG0I
-D+4MAAVQBQAA/1/pfGIAnQBj/+kasGSKqPdABOCSAJ0AKxIQK7Ke/2AFi+IAnQCIHCcSECiCvydy
-nQh3AWRwnRuwWbCp+WEGFe/+ggCOE/wh5hXgDAUA7BYaL3cCgACp7i4WECkSEIgfKJadKzAWLwr/
-f7EIKjBBLBIaWEbpixWMF+0SBinQBIAAW/1O0Q+PwycWEY7C+4AIFa/r8gAAAAD//6gNoAIFAP3g
-aB3v+yoA//zQDaAHBQD+I6YV4AoFAFl8ABqwOIqoLxId+V/6iJIAnQD//EQNoAcFAMBwHLAxwLoL
-qzT7gQYV7/v+AACPGY/0khGq/+/Tbn1wBIAAwLDz4GgdoA8FAO/8BClwBIAA6PQPZdgFAAAszBj+
-AAId4AsFAKzygiCuInLb2/+/zBKiAJ0A/c8ACX/l9gAAAAAA9iBmFaQFBQAF5Tb/5hANr1UBACgw
-QfkCQBWgDQUA+CEGFa/4UgAAAP//AA2gCwUAbBAKLyEiKiBB4xYBKugEgADsRAALqASAAOewfRsg
-BIAAlBQsFgPtFgIp8ASAACbgAyMgBwqpCf7AAEMwCwUA+iAGFe/4BQDrIBYszwKAAPjgAEPxMwEA
-53J/IchhAADpFgUjMP0AAPjABAMw+PUAeLEd/iEGFefNAQD9n8AVoAgVAAyMOVhGte8SCCUWMYAA
-FK/s6q/qGc8CgAD0YBFiEgCdAASZCC2Sng8CAPegFMRSAJ0AKZKdCjsKK7K/JRYHC5kB5ZQABJJJ
-gAAer+n8QOQV5rcBAPZIAAZ9rx0A5KoRDmYCgAD9ZgANsMc5APuIABY63QEA7KoCDu8CgAAO3QIL
-qgKdUB2woPxACBWgTkUAnlOdUv2AABYwDYUADcwCnFEcsL2IYekgQS/dAoAADLsC/ACCHaF4AQDn
-xwwMzAKAAAqZAvthNAWhdwEAp4jrVgYkQPEAAJgWCpkCKFULmVQZsK74oOYV4AkFAOlVCiF5IQAA
-7wMeAvCBAAAOAmH4RUQVoAsFACtUNStUNvqm5h3gCgUAKlQu+KXmHeAPBQD+pgYd4A4FAP6mhh2g
-DQUALVQxLVQyKFQt/KZmHeiIHQAoVCwtIFcqXDz8p2Yd6N0dAPynRh3o3R0A/KcmHejdHQDtVDgh
-WXEAAFl4cyksYOkmAALRAQAACgSKCQCICgCKKSIcH7CJ6xQAAtEVAAD4qmYd4ecBAP/GAA94mR0A
-+KpGHeiZHQD4qiYd6JkdAPiqBh3gCIUA+EymHaBPJQDvJHQvdgKAAP4gBhWgDDUAWXhap1wer4r+
-RqQV4DhlACgkV4pji2HtYgAn+AUAAC8lNS1WFitWF4hhKlYZiWIpVhgoJhyPYZ8v7lYaI+ghAAAt
-VhsrIHQrxHQMOhH1QABFMAmFACmmnSsgFigK/3ixCCogQSwSBlhF/osRjBPtEgIpUASAAFv8Y9EP
-AB2vWo7Y98AEoJIAnQAMORGkmSuSng8CAA8CAPdgBWRSAJ0AKZKdCjsKK7K/C5kBZJCa5RYHJ2P9
-AAAs1gjllAAM7f4AAPQg6BXgDYUAiBH4IIgV4Ep1ACokBZmHjiL1ASYV4A8FAO+GCC98ngAA2iD6
-IKgV4AwVAFhH6dEPwJD0IOYV7/XWACsgQftiQBXgDQUA+iCmFe/+3gAAAAD+IQYV4AoFAFl6+B2v
-MI7YjxgarzD53/q4kgCdAMCQ9CDmFe/99gAAAAAAAAAAwJD0IOYV4AylAAzsNP2hBhWv/YYAAGwQ
-BiggBPkAB3uSAJ0A9wAHOhANBQD6YGgd54UBAPUAB7ESAJ0AKrADLLEIGa9xLCUILCIOKZJ/66oI
-DmZCgAAMmQgokAX7R+AVr/wFAP1ABAUwPOUA/QAJVCBOJQD/AAkUID/VAP8ACZ1gTnUAKCAF7K+j
-FLGhAAD/AAnMIE+VAP8ACzxgDoUALSRoLSRmLSU1LiRkLiRn+V/mBe+IBQD4TKYdoC/lAC8kVykl
-KikiHP4KQh3gCBUA+EuGHaBOFQDuJHQkgDmAACgkaC8kBYi7eMMoKaADaZEiKmEDeKMc2iDsRAAK
-6ASAAP9gyBXgDgUAW/7YwCDRD8Ag0Q/aIOxEAAroBIAA/2DIFeAOBQBb/QDAINEPAACIJ4uI/QKk
-Fa/OBQDpggskMIEAAA5uAe7MCAo/AoAA7hYAJmEBAAD7IAeMYgCdAC+JFKt6p/8vhRT7gAd7ogCd
-AMk36bQAAgCpgADYMG1JBQgAhgkCYSpiAAeqCP1ACMwiAJ0A+sAGFa/6mgDaIPygaB3gjEUA7LUI
-KmAEgABZONXAINEP2iD8gGgdoI1VAO21CCroBIAAWTjPwCDRD4gnLokUZOBFi4mIu3jDVC+gA2nx
-TiqRN3ijSNog7rIHKmAEgADvsgkq6ASAAFv+nMAg0Q8AAOokAAnYBIAA7EQACugEgABb+6rAINEP
-AIjb+YIWDaALBQAsoANpwQUtkTd427baIO6yBypgBIAA77IJKugEgABb/LjAINEPANuQ/QFmFe/3
-sgAAAAAAAADrygwBgbmAAApMFO7MCCnABIAA7k42DcgEgADTD23pBQgAhgkCYYkQqjjsTwwEyQEA
-AG35BQgghgkCY4wQCn4MrswszED8wAYVr/ZmAI8QL/xA/sAGFe/2MgAAAGwQGCIWIyMWIi0hFSQW
-FIgvLiAHKyIcLDADKxYb+iOmFe/6BQD8YABDse4BAO4WHCO4/QAA6ncBBCSpgAAsEiOOcysSIizB
-ExOvZ/thaBXgCQUA9YHQDevuAQCbUZlQLjJkKBIjDcoMKhYeIoEQL4ESJoERKIIW6BYAL/6CgACv
-7i4WHyoymu2uvhlgBIAA9EUQDe/19QD7QGgd4A4FAG0pIIJzj3Ki4n4rAbH/BfgBDSkB6bYBJ3BD
-AADotgAl2CEAAPeABOqiAJ0AbQhliXT5YAAF8A4VAPvNAA32mQ0A+yAARPAOBQDkkA1snQKAAPuA
-AgWwARYAAHbBZ4l1+WAABfAOFQD7zQAN9pkNAPsgAETwDgUA5JASbJ0CgAD7gAIFsAgWAAAAAAAA
-AObLNHO4YQAAY/+TAACCd492ouLuKwZ2YAUAALH/BfgBDSkBmbHotgAncEMAAOPj3HXYIQAAdsmX
-H66RHq6rHK4fFK4wG65ILRIjFa4eE64eKdEjKBIfLdBA/TAAFLACpQD5AABEcAcFAOgWHy6avgAA
-KRIbCWYMKBIdLRIeCogL6BYhJp9hgAApEhwC1TYFXQnslAAO78KAAPUgFhoSAJ0ADJsRo7sosp79
-AChb4gCdABiuBCKynQiYCiiCvwgiAeckAAEW0YAAKxIeKBIjBbsMKYEjKoEVIoIcpZmlqgJSCiqF
-FRquICKGHCmFI+oABQvIBIAAbdkCCQJhJxYT6xYeIpVxgAAlFhoqEh+IEC0WJPwjJhWgAgUA6ogR
-C5gEgAD4JAYVoAcFAG1ZjS0SIJ4w/CQoFaWKHQD4YGYVoAklAJkyKBIjKRIirHyLgPRghhWgRQUA
-lTWdN/9mAArwDWUA5TYGLd4CgAANuwKbMYmb6TYIKegEgAD5AegVoAUFAOg2CSlYBIAA9GFmFeAJ
-BQDpNgohqKEAAPdnUg2gDwUAj8H/gAgVoADKAOd8ICEQEQAA6qxAIZmBAAAtEiQrEhonEhPzW4IF
-4AwFAAy7NfwjKBWgAVIAwODv1g0l2AUAAO7WDCboIQAA5dmsdmAhAAAerj7/XEQF7/7OAIJ5j3ii
-4g0pAZmx7isGdmAFAACx/wX4Aei2ACdwQwAA4+PcddghAABj/dkqEh4MzhGj7u3mnS0IlgAALxIU
-KBIjC7IJ7hIAKRbCgADy4ABBMA0FAC2FFS2FE/0DhhXgDBUALIRAKoEh6YERL3aCgAD/4AYVoF8V
-AC+EBQqZDCmFIdEPwGBqwRT9YAAHsAoVAP9NAA/2jA0AqP8PZggscAMPAgAPAgCwzOrBSWsQBIAA
-B30CiNT5YAAHMA8VAP/tAA82iA0A6O4IBmP9AADuZggGAOGAAI7VDgpL++0ADTbuDQAOqgjqZggG
-Y/0AAO3cGCYPCwAAKBIjm1GZUC+BFOKFECMoDQAA9wIkHaJVHQDlFh4vlZYAAAvEFLNEBCQU5EwD
-KOAEgADqhAAKWASAAFgJfygSIyoWHySFFCkSHyoSI+WlEyzgxgAAwCDRD+xyASd5kYAA/4AARjAG
-FQD9ngAlr/ySABqtV4qo90AZWJIAnQAMyxGjuyiynv0AGlPiAJ0AGK1RKbKdCMgKKIK/CJkBZJM1
-GK1LsKubiOeUAAzpdgAA0nDRD4lzCQlL+EHmFe/tmgAA//nIDaALBQD63jwN4AwFAGP8dAAtEiMo
-EiKN34iH+gAIHeAJFQANnTn4IQAV7IgdAPmgAEawCEUAbYoCCQJhLdz/DQ1BZNHi7RYVJsAFAAAo
-Fhj1AAUS0AsFACgSFSkKBOiZDA1oBIAAbZlJKRIYKRYWdrsLidCI0fgi5hWgADoAwJD4IuYV4AkF
-ACgSFuIWJiQQBQAA4hYYIJAhAAACiAuZhiISF+KGByXYBQAA4hImJughAAD8IqgV4AD+AAAAKhIj
-IhISiBAnpRUnpRP3Q4YV4FkVACmkBSyhISkSFPtCJBXgDRUA7aRALEaCgACYkAy7DCulIdEPwLMN
-uwx2uwf6I6YV4AAeACYWHSkSHCkWGfUgDGoSAJ0ADJsRo7stsp73oBDTUgCdACKynQWYCiiCvwgi
-AfhAaB3gAqUAZJHrLRIfwIKYkugSIybrAQAA/yAGFaXdHQCdk42AD9sCm5b9oAAWsAtlAAvdAosQ
-KRYS5JYELd6CgACblysSIv0gJhXgTQUAnZWLu5uY+QHoFaALBQD7IUYV4A0FAJ2b7ZwwINiBAAD5
-ISYVoAhVAG2KBQsAiA0Aii0SGekSHS7vAoAA86AARvALZQAr1p15awfwACgNoAYFACgSHQhmDO0S
-IyNIDQAA+COoFaKZHQApFh4o1hwo1SEn1ED5omQd7+smAAAAAAAAAP/sEA2gAgUAKoESKTJkK4IW
-6xYALVaCgACqmfgj5hXv9X4AwNMNbTbtFh0jB3mAAIuhiaCbG+kWCisQOAAAi6P5QEgV4AAyAPoA
-Ah3gCQUAmx3pFgwrGEgAAIul+UCIFeAAQgAAAAAA+gACHeAJBQCbH+kWDisgSAAAi6f5QMgV4ABC
-AAAAAAD6AAId4AkFACsWEfgiBhXv+bYAjcjqFiUoBAqAAPegBLiSAJ0AKxIZDLsRo7sosp73AAU7
-UgCdACgSGSmynQWICiiCvwiZAWSQkrDb+4EGFe/5egAtFiT4IyYV4AoFAFl4Txqshh6tEB+s9Yqo
-LRIkLBIZ+V/lsJIAnQD/81wNoAkFAMCQGKx9Aqs0+wEGFe/zHgDAsP/8TA2gCQUAKhIj56UTLJAE
-gADRDwAAAAAAAP/3yA2gAgUAwKBZeDgcrG8erPqNyB+s3SoSJfm/+rCSAJ0A//dcDaAJBQDAkALb
-NPuBBhXv9yoAbBAGiC8XrWMmMAMuIAfqclwpKASAAPLAAEN/+QUA9sfgFaHuAQDpZgEEDvmAAC+h
-AiyhBImg+0CkFeANBQDszP8n+/0AAO+lAi5nAoAA7JkIDd8CgAD7LwAM8ADeAAAAK6EFLKEE6aIA
-JdgFAAD5n+AVr7sBAOulBSxHAoAA/WAInCIAnQDomQgN/wKAAA+ZDAkAhw29YOkABwXzF4AALHKh
-L6EF/PRIFeAIFQAoVRPoVRQv/kKAAK+/L1US790ID/6CgADvzAgPUASAAO1WFiYKKYAAG6wy76wx
-H08CgAD1wAb6EgCdAKuZLpKe98AK+1IAnQAikp0PqAoogr8IIgFkIRUZrJQerDUfrK3+QAYV4Agl
-APhARhWl/B0AnyOIUP5AhhWgTAUA7CYFLvaCgACeJ/kGAAzwD2UA6SYGLEYCgAAPiAKYIY07nSj8
-oegV4AwFAJwqnCuJY5ktiGKYLIljGKxyjGLtJgkk6EMAAHnbLejYAQZIBQAAmS6YL+5GAC1PAoAA
-q5n/M6YV4FgVAChUBdEPLaUF//uoDaALBQAYrGOcLgjYAZgv7kYALU8CgACrmf8zphXgWBUAKFQF
-0Q8AABKr9I4o6hYCKAQKgAD3wAQgkgCdAAypEauZKJKe9wAE+1IAnQApkp0PqAoogr8ImQHkkI1n
-e/0AAJ8o4pQADPgWAABgABCIYwgIS/hB5hWv+HIAwCDRDyZRFCNREvDCgA3gBAUA6nJcKdgEgAD8
-AAIdoA0VAFg5CShyXeRMASGYBQAACDMudknb0Q8AAP/6tA2gAgUAnRD8ICYVoAoFAFl3lBurzowR
-jRCOKB+ry4oS+d/7CJIAnQD//fwNoAkFAMCQwPoP7zT+QQYV7/3CAAAAbBAaKCAE6SAHKTgEgAD5
-ACfzkgCdAPcAJ7IQChUAIxYp9OAABHGZAQDpFigkY/kAAOysOQwVxAAAiCeLiP0CpBWvwgUA6YIL
-JGiBAAAC0gHizAgKfwKAAOaJFCZhAQAA+yAsxGIAnQAL+ggPZggmhRT7gCy7ogCdAMk3yUXptAAJ
-wASAAG1JBQgAhgkCYSrSAA+qCP1ALuQiAJ0AmtD6JSYV4AwVACkSKRir7ymRCCl1CIl+KIJ/CZkR
-qYgogAXD3v0AKKRgSiUA+wAoZCA71QD7ACwNYE6VAC1wBf+gLSQg//UAK3AWf7ELKnBBWEJOZKW6
-LXAFInAHxWH3q6YNoSIBACgKVHjRUioSKRmsGyqiC3qTHiwSKSvAAwy7CPtn4BXv/AUADLsBK7AD
-9WAjoJIAnQDrEikr0ASAAO0cCCjgBIAAW/z0ZKRvLhIpjxD/wSYV4A0FAJ3oLXAF8iTmFaBWRQD3
-oAq0IAMVAJMUFqulJXEILRIpG6xlFKxjGqua/1jCBeACBQCSF5IWkhiSHiIWEiIWFCIWGi8WFfok
-BhWv+PUAKBYbKBYhJBYT+iHmFeAONQD+IUYVoBulACsWHPQk6BWgDiUA/iEmFaAYtQD4IgYVoB7l
-AC4WFonbjNgsFhgGVQKN2ZUd/CMmFe9VjQDlFgws0gKAAPoj5hWomR0AKRYe9IAaihIAnQAdq0AM
-TBGtzC/CniYKD3bzDhmrOiLCnQlICiiCvwgiAWQjih+rRotwHKtDJHEH/WAAEbAFNQDlMwIAyEEA
-APVWeAXgFoUA9UAAAjAKVQDsuwIKJwKAAOVEAglABIAA5as2HZAEgABtqiyUgJOBn4KWg5KEipSL
-lYySjZDukgMkyGEAAJqGm4eciJ6JBdoC6oYFJEDBAAAqEicbqxkMqhH7QABFcAn1APlTphXgWEUA
-KHQFKxIn9WASehIAnQAdqxAMvBGtzC3CnvegHiPSAJ0AGasLIsKdCbgKKIK/CCIBZCLLGat7LnEH
-H6v6E6sR9iUoFaruAQDscSIvdwKAAAPuAp4ginD7VhoF4F2FAPxAZhXgA3UA6yYCLVYCgAADqgKa
-IYhnKBYkhmb2JKYVoAoFACoWJvzgsBXviJUA+OymHaAm5QAmdFcqdTUqdGf+5UQd4AuFAPrshh3g
-DlUALnRcK3BBLnBo+uzGHaBPJQAvdHTrugkHcAUAAO50aC1XAoAAqpn5L+gV4FoFAHrRDsT+f9EJ
-xWb3oBf9IgCdAAkORvlgABay+UEA+gkCHe2MHQDrJQssRQKAAP3gABewCwUA/8YAD3D5OQDrJQov
-/UKAAAj/Ag/uAhirwOyrwB59AoAAnCcO3QIeq6II/wKfJg7dAu0mBCPRIQAA6gceAUCBAAAIAmP6
-5UQVoAgFAPhGhh2gDQUALSQ3+kXmHeAJBQApJDP6RaYdoAwFAPxGRh2gDwUA/kYGHeAOBQD+RiYd
-oA8FAP5Gph3gDgUA/kbGHaAMBQD8RcYdqKodACokLClwV/rrgBXgDEUA+EdmHeiZHQD4R0Yd6Jkd
-APhHJh3omR0A6SQ4IVDxAABZc3sofGDoJgABSQEAAAkEiggAiAkAiihyHCosVPov4BXgDMUA+Epm
-HaiIHQD4SkYdqIgdAPhKJh2oiB0A6CRQJdhFAABZc2orcHQrJGQqEigbqokMqhGrqiOmnStwFikK
-/3mxCvroMBWgTIUAWEEexMX84KYdoAIFANEPwCDRDx2qe43Y96ANkJIAnQAsEiceqnoMzBGuzC7C
-nvfADbvSAJ0AGap0KBInIsKdCYgKKIK/CCIBZCGfG6ptsNqauGUtl2AAYB2qaY3Y96AM0JIAnQAs
-EiceqmgMzBGuzC7CnsD//8AM4+IAnQAZqmIoEiciwp0JiAoogr8IIgFkIYQbqluw2vthBhWv8kIA
-AAAAAOsSKSvQBIAA7RwIKOAEgABb/e1lq4+McmXPUCsSKPrgaB2gDBUA+2MAFeANdQBYQvjAINEP
-KxIp2nD8oGgd4IxFAOy1CCpgBIAAWTRdwCDRDwAAAAAAAAD7IGgd4A0FAP0BZhXv6loA68oMAYGx
-gAAKTBTuzAgpwASAAO5ONg3IBIAA0w9t6QUIQIYJAmUKOAjsTgwBSQEAAG3pBQhghgkCZwr4DKgo
-KIxA+aAGFa/pMgArEinacPyAaB2giVUA6bUIKugEgABZND7AINEPAAAqLED7oAYVr+iOAAAAAAAA
-6nQACdgEgADsRAAK6ASAAFj+b8Ag0Q8A//EsDaACBQDF0vzgph3v8/4AjnJl7lwrcEH64GgdoAwV
-APtiQBXgDQUAWEK7wCDRDwAAwKBZddMdqguN2Pm/8iCSAJ0A//m4DaACBQAAwCAfqgXA6g7eNP/h
-BhWv+W4A2iBZdcgdqf+N2Pm/8uCSAJ0A/+xoDaACBQDAIB+p+sDqDt40/+EGFa/sIgBsEArApf1V
-8AWnVQEA/L/AFeAGFQD8zQAO8DsFAFl6JSciEPigIqlQCgUA2iBZAynnFggtKASAAPVGAA3vzgUA
-j6eM+CvxFenyCyfogQAADt4BrrvuFgUl2QEAAP0gIiQiAJ0AJvkUDE4RDOoIDmYIJvUU+2AiK6IA
-nQDJNenEAAIAmYAAbUkFAwCGCQJhKtIADqoI+0AjjGIAnQAq1gAMwwItUgAeqtEvMQjoEggutgKA
-AAZGAiY2ASiAcC9VCC7ifw7dDPcAwBWm7R0A9cAfH1X9AQAAYQQA5BoE9AIkFgH4IAYVoApVAP1V
-ggWv+PUA+CBGFaA7BQBZee7kVg4ioSEAACRWEiRWEy8wIQ8PRu9UUCGggQAA9eAWmJIAnQD14BZZ
-EgCdALhKWXgCHKqxLUAA/oAwFaA7BQDvUFAtMASAAPYgBhWgClUAWXnaHKqqLTEI/qEEFaAKVQD+
-oYgV4DsFAFl50ydSEihcSPjgHVwiAJ0AiSIdqZvqqZkclrYAACkgBwkJQQyYEa2IK4KemRT3YBzy
-0gCdACOCnQqWCiZivwYzAWQylSsiEogpHKmi9kFIFeC7QQArFgYMuworspAIdwzrFgcl2MEAAPrg
-EvPiAJ0AKyAWLwr/f7EV+kDwFaAMBQBYQEYdqX7zVMAN4P/1ACghBxmph/dTXAWqiAEA56mHHEcC
-gAAJiAKYMBipq/xACBWgSwUAmzP2YEYV4A5VAOeppR5WAoAADqoCmjEpIhKKFishGveGAA5ymVEA
-6qoRDM2CgAAJqgIIqgL4IOgVoZoxAKaZKZCA7DYELdoCgACbNgmJDOo2ByTIwQAAmTWHKSYiFah3
-6GYIA7jBAADnJgkjMMEAAPZCphWv7AUA/GAN9CIAnQDkCx4BwIEAAAgCZQQghggCYwQAhggCYSYi
-FhmpY/Zn5h2oZh0A9mfGHahmHQD2Z6YdqGYdACY0PPqhyBWgCwUAKzQk+mZmHaAMBQAsNCf8ZGYd
-oAwFAOw0Ji4wBIAA9mRGHaiqHQD6ZkYdoAwFAPxkph2oqh0A+mYmHaiqHQAqNDDpABUBwSEAAAgA
-iooYKqIRKFIS+mdmHai6HQD6Z0Yd6LsdAPpnJh3oux0AKzQ4iYaaX/hm5h3omR0A+GbGHeiZHQD4
-ZqYd6JkdACk0NIiH+GhmHaiIHQD4aEYdqIgdAPhoJh2oiB0AKDRAJyAHBwdBDHcRrXcudp0rIBZ/
-sQr6QPAVoDwFAFg/rMlSiFjIjoxZwLCbW5jAjVic0ZtYm1mIGByqEI0gLoIRL4IUKIITmBD2ocgV
-oApVAPYgJhWgOwUAWXk1KfqZ+KCmHeACBQDRDwAAAI037DIGKtgEgAD6QGgdr/71AFl3XO2kAAVp
-AYAAwKX9U/gFoDsFAFl5J8HW2iDrVAAJ4ASAAFg/YMAg0Q8AAADaIFg/0+2o7BVs6YAAYAAUixT6
-QGgdoAwVAPtjABXgDVUAWEGOjFhlz86PLxap6uZWCyLogQAA7fYAIXDhAACeWJ9Z/EHmFeACBQDR
-D4g3KYkU1TDnFggkhmmAAIOJ9GQAFa/yXgAAAAAAAAAA/BHCHe/97gDzIGgd4AoFAPvhZhWv78oA
-//CYDa/09QDsugwBgbmAAApLFO+8CCnABIAA7082DkgEgADTD235BQhghgkCZ4kVqjjrRgwEyQEA
-AG1pBQiAhgkCaYsVCu8Mr7srvED7oAYV7+5qAIYVJmxA96AGFa/uNgAAAAAAAAD9U3YFoApVAPyg
-CBXgOwUAWXjhY/7mAAD/8bgNoAMFAIsU+kBoHaAMFQD7YkAV4A0FAFhBT2P+//NAaB3v/NYAbBAE
-KiAE/UDgC9AYhQBrpAZ4oRvAINEP6iQACdgEgADsRAAK6ASAAFj+SsAg0Q8A6iQACdgEgADsRAAK
-6ASAAFv+mMAg0Q8AbBAKwKX9UzAFp1UBAPy/wBXgBhUA/M0ADvA7BQBZeLwnIhD4oCBRUAoFANog
-WQHA5xYILSgEgAD1QUAN784FAI+njPgr8RXp8gsn6IEAAA7eAa677hYFJdkBAAD9IB/EIgCdACb5
-FAxOEQzqCA5mCCb1FPtgH8uiAJ0AyTnpxAACALmAAG1JBQMAhgkCYYrQDwIADwIArqr7QCEMYgCd
-ACrWAAzDAi1SAB6pZy8xCOgSCC62AoAABkYCJjYBKIBwL1UILuJ/Dt0M9wDAFabtHQD1wByfVf0B
-AABhBADkGgT0AiQWAfggBhWgClUA/VKuBa/49QD4IEYVoDsFAFl4hORWDiLRIQAAKlYTKlYSKTAx
-0w/2ZwAV5pkBAOlUUCGgwQAA9SAUMpIAnQDacFl2mBypTy1AAP6AMBWgOwUA71BQLTAEgAD2IAYV
-oApVAFl4cC0xCBypR/6hBBWgClUA/qGIFeA7BQBZeGqIIikgBx2oNOqoMhwUngAACQlB6RYELMcC
-gACtiCuCngqWCiZiv/dgGeLSAJ0AI4KdBjMBZDJSKyISiCkcqDv2QUgV4LtBAJsWDLsKK7KQCHcM
-6xYHJdjBAAD64BDj4gCdACsgFi8K/3+xFfpA8BWgDAUAWD7fHagY808QDeD/9QAoIQcZqCD3UI4F
-qogBAOeoIBxHAoAACYgCmDAYqET8QAgVoEsFAJsz9mBGFeAOVQDnqD4eVgKAAA6qApoxKSISihYr
-IRr3hgAOcplRAOqqEQzNgoAACaoCCKoC+CDoFaGaMQCmmSmQgOw2BC3aAoAAmzYJiQzqNgckyMEA
-AJk1hykmIhUIdwjoZggDuMEAAOcmCSMwwQAA9kKmFa/sBQD8YAvcIgCdAOQLHgHAgQAACAJlBCCG
-CAJjBACGCAJhJiIWGaf89mfmHahmHQD2Z8YdqGYdAPZnph2oZh0AJjQ8+qHIFaALBQArNCT6ZmYd
-oAwFACw0J/xkZh2gDAUA7DQmLjAEgAD2ZEYdqKodAPpmRh2gDAUA/GSmHaiqHQD6ZiYdqKodACo0
-MOkAFQHBIQAACACKKBIIKIIR+GdmHaiYHQD4Z0Yd6JkdAPhnJh3omR0AKTQ4JyAH+KHmFaF3AQAM
-dxENdwgudp0rIBZ/sQr6QPAVoDwFAFg+U8lTiFjIj4pZwJCZW5igi1iasZlYKVYJiBgcqL2NIC6C
-ES+CFCiCE5gQ9qHIFaAKVQD2ICYVoDsFAFl33Cn6mfigph3gAgUA0Q/acFl1+PqgaB3v/fUA/0Bo
-Ha/89QDvUFApUASAAFl2AWStWsHWAioC61QACeAEgABYPgnAINEP2iBYPn3tp5UVbvmAAGAAFIsU
-+kBoHaAMFQD7YwAV4A1VAFhAOIxYZc/Rjy8WqJrmVgsi6IEAAO32ACFw4QAAnlifWfxB5hXgAgUA
-0Q+INymJFNUw5xYIJIWhgACDiSQ8MPZnABXv84oAAAAA/BHCHe/9+gDzIGgd4AoFAPvhZhWv8QoA
-//HYDa/09QDsugwBgbmAAApLFO+8CCnABIAA7082DkgEgADTD235BQhghgkCZ4kVqjjrRgwEyQEA
-AG1pBQiAhgkCaYsVCu8Mr7srvED7oAYV7++qAIYVJmxA96AGFa/vdgAAAAAAAAD/8ygNoAMFAIsU
-+kBoHaAMFQD7YkAV4A0FAFg//2P/GPNAaB3v/ToAbBAG/ABCHaBGJQD5UIYFoAcFAPYgBhXgBTUA
-+EVEHaALFQD0gAaKECnlACowFekkVyIEQYAA9IAG8JIAnQD0gAYhEgCdAG5FOAprFHtQBSwwFCwk
-YCosZe2oSxjYBIAA/CAGFeAMNQBZcBUnJGgnJGknJTUnJhwmJHQep2ouJTfRD25Dw++oKBrgBIAA
-+kyGHeAoNQDoJFwhUZUAAO8WACjYBIAAWXAGJyRoJyRpJyU1JyYcJiR00Q8AKTAwwaL7IARMIgCd
-AOskZCFRdQAA/ABiHaArJQDrJFwh2HUAAFlv+CosYfpjIBXgDDUAWW/0KjAVY/9SAAAdp48tJSr8
-ZgYdr/ymAMD2/kuGHeAOhQD+TIYdr/zWAOosXSHYdQAA/EuGHaAoBQDoJGQq4ASAAFlv4ykwGNMP
-f5e0Kixh+mMgFeAMNQBZb95j/6Map1YsMRwqon8JzBGsqiyhNiw1HIqg+kPGFa/9hgAAAGwQCioi
-EPohBhWnZQEA+MAd6VBHJQApMDAPAgAPAgD44B4Y4gCdANogWQAo5aQABRshgACLp4y4/WKkFe/P
-BQDpsgsl8IEAAA/vAa/d7xYFJukBAAD9IB9cIgCdACa5FAxPEaz6r2YmtRT7oB9zogCdAMk2yUQM
-yQJtSQUDAIYJAmGK4A8CAA8CAK+q/UAhJGIAnQCa4NPAjVAep9IvMQjoEggutgKAAAZGApYxKIBw
-L1UILuJ/Dt0M9wDAFabtHQD1wBx/Vf0BAABhBADkGgT0ApQR+CAGFaAKVQD9T4YFr/j1APggRhWg
-OwUAWXbvKiIQlF4poAUrCpX7IBj8YgCdAIwi6SAHLhP2AAAuohMtohQaprEO3Qz5oBPAkgCdAB2m
-rwkJQekWBCzHAoAArYgvgp4KlgomYr/34Bt60gCdACSCnQZEAeymuhIRMYAAKyISiCn2QUgV4LtB
-ACsWBgy7CiuykAh3DOsWByXYwQAA+uAO2+IAnQArIBYvCv9/sRX6QPAVoAwFAFg9Wx2mlPNS4A3g
-//UAKCEHGaac902GBaqIAQDnppwcRwKAAAmIAphAGKbA/EAIFaBLBQCbQ/aARhXgDlUA56a6HlYC
-gAAOqgKaQSkiEooWKyEa94YADnKZUQDqqhEMzYKAAAmqAgiqAvgg6BWhmjEAppkpkIDsRgQt2gKA
-AJtGCYkM6kYHJMjBAACZRYcpJiIVqHfoZggDuMEAAOcmCSMwwQAA9kKmFa/sBQD8gApsIgCdACg8
-MOgLHgJIgQAACQJlCCCGCQJjCACGCQJhKTAwZJEBwGD2hMYdoAcFAPaE5h3gCQUA+ISmHeAJBQAp
-RCQoIhb4h+YdqIgdAPiHxh2oiB0A+IemHaiIHQAoRDyMXosY/IZmHajMHQD8hkYdqMwdAPyGJh2o
-zB0ALEQwK7IRJkQiJ0Qj+odmHejLHQD8h0YdqMwdAPyHJh2ozB0ALEQ4KiAH+qHmFeGqAQAMqhGt
-qi6mnSsgFn+xCvpA8BWgPAUAWDzTyVKIWMiOi1nAoJpbmLCMWJvBmliaWS0wMMjbLvqZ/qCmHaAC
-BQDRD4YYKGIUImIRsYjoZhQhEAUAAPLCJhWvn5UA/qCmHeACBQDRDwAAAADaIFg9Ce2mIhVxAYAA
-YAAmwKH6hAYdr4kVAPiEJh3v+8IAixT6QGgdoAwVAPtjABXgDVUAWD7AjFjKwMAg0Q8AAAAAAADq
-JAAK2ASAAPxgaB2gjeUAWDx+wCDRDwCPLxanG+ZWCyLogQAA7fYAIXDhAACeWJ9Z/EHmFeACBQDR
-D4g3KYkU5TQABIghgADzASgV7/RSAAAALjAx/U4aBaXZAQD6AKIdoDsFAP5ACBXm7gEAWXYq6iQA
-CdgEgADsRAAK6ASAAFv9YcAg0Q8AABynAY0gLiIYhlCPoP/OkBWgOwUA9iAGFaAKVQBZdhzAINEP
-AAAAAPMgaB3gDwUA/2FmFe/xIgD/8egNr/T1AOzaDAGBuYAACksU5rwIKcAEgADmRjYOSASAANMP
-bWkFCGCGCQJniRWqOOtNDATJAQAAbdkFCICGCQJpixUK/Qytuyu8QPvABhXv78YAAAAA//JcDaAE
-BQCPFS/8QP/ABhXv72YAixT6QGgdoAwVAPtiQBXgDQUAWD5sY/6sAAAA//BQDaADBQBsEAooIATT
-D/EB0A3ntQEA/QGAC9AWhQD5ABtiEgCdAHaBBcAg0Q8AACgiENqA+WAeMVBMJQAqMDCYGPuAHpii
-AJ0A2iBY/ujlpAAFHKGAAIyni8j9gqQV788FAOnCCyZwgQAAD+8Br93vFgUm6QEAAPsgH9xiAJ0A
-JskUDE8Rq/qvZibFFPugH/OiAJ0AyTbJRAu5Am1JBQMAhgkCYYrgDwIADwIAr6r9QCGkYgCdAJrg
-07CNUB6mki8xCOgSCC62AoAABkYCljEogHAvVQgu4n8O3Qz3AMAVpu0dAPXAHP9V/QEAAGEEAOQa
-BPQClBH4IAYVoApVAP1NBgWv+PUA+CBGFaA7BQBZda8qIhCUXimgBSsKlfsgGXxiAJ0AjCLpIAcu
-FI4AAC6iEy2iFBqlcQ7dDPmgFUCSAJ0AHaVvCQlB6RYELMcCgACtiC+CngqWCiZiv/fgG/rSAJ0A
-JIKdBkQBZEI5KyISiCkcpXj2QUgV4LtBAJsWDLsKK7KQCHcM6xYHJdjBAAD64A7L4gCdACsgFi8K
-/3+xFfpA8BWgDAUAWDwcHaVU81QQDeD/9QAoIQcZpV33SwgFqogBAOelXRxHAoAACYgCmEAYpYH8
-QAgVoEsFAJtD9oBGFeAOVQDnpXseVgKAAA6qAppBKSISihYrIRr3hgAOcplRAOqqEQzNgoAACaoC
-CKoC+CDoFaGaMQCmmSmQgOxGBC3aAoAAm0YJiQzqRgckyMEAAJlFhykmIhWod+hmCAO4wQAA5yYJ
-IzDBAAD2QqYVr+wFAPyACxwiAJ0AKDww6AseAkiBAAAJAmUIIIYJAmMIAIYJAmEpMDBkkP/AYPaE
-xh2gBwUA9oTmHeAJBQD4hKYd4AkFAClEJCgiFviH5h2oiB0A+IfGHaiIHQD4h6YdqIgdAChEPIxe
-KxII/IZmHajMHQD8hkYdqMwdAPyGJh2ozB0ALEQwK7IRJkQiJ0Qj+odmHejLHQD8h0YdqMwdAPyH
-Jh2ozB0ALEQ4KiAH+qHmFeGqAQAMqhENqggupp0rIBZ/sQr6QPAVoDwFAFg7lMlSiFjIjotZwKCa
-W5iwjFibwZpYmlktMDDI2y76mf6gph2gAgUA0Q+GGChiFCJiEbGI6GYUIRAFAADywiYVr5+VAP6g
-ph3gAgUA0Q/aIFg7yu2k4xVxEYAAYAA+wKH6hAYdr4kVAPiEJh3v+8oA6iQACdgEgADsRAAK6ASA
-AFj8/8Ag0Q8AixT6QGgdoAwVAPtjABXgDVUAWD17jFhlzGiPLxal3+ZWCyLogQAA7fYAIXDhAACe
-WJ9Z/EHmFeACBQDRDwAAAOokAArYBIAA/GBoHaCN5QBYOzLAINEPAIk3K5kU1TDoFggliCmAAPMh
-KBXv9BYAAAAALjAx/UuSBaA7BQD+QAgV5doBAP7AAAcwClUAWXTm6iQACdgEgADsRAAK6ASAAFv8
-HcAg0Q8AABylvY0gLiIYhlCPoP/OkBWgOwUA9iAGFaAKVQBZdNjAINEPAAAAAPMgaB3gDwUA/4Fm
-Fe/w4gD/8agNr/T1AOvaDAGBuYAACkwU5swIKcAEgADmRjYNyASAANMPbWkFCGCGCQJniRWqOOxN
-DATJAQAAbdkFCICGCQJpjBUK/QytzCzMQP3ABhWv74YAAAAA//IcDaAEBQCPFS/8QP/ABhXv7yYA
-ixT6QGgdoAwVAPtiQBXgDQUAWD0oY/6vAAAA//AQDaADBQBsEAQqIhQpIhMFA0fqmQwBlB0AAGSQ
-mCogBxykcwoKQQyrEay7LrKe7aRvGAQKgAD3wARBUgCdACuynQ2uCi7ivw67AWSwdC0hBx+kiB6k
-cvlI6gWq3QEA758CDu8CgAAO3QIepRQttgAtIgAvtgX5YEYVoBQFACS2Axikcv+mAA8wBCUA7rYE
-Lu4CgAAE3QIttgHoABUF2GEAAAsAigyvEQz/CCT2nS4iFAnuCC4mFPhgBGFSAJ0AwCDRD4giZIEG
-+GAHYVIAnQCJJyeZFORw7mT4gQAAipmM8PP4Ah3gLqUA4/MBBQHRgAB6wTIooADTD9MPfoEoJPEF
-K6AHDwIA40kIDd8CgADrqggEyQEAAOmrJH1YBIAA6rQADf52AAD7jwAOsAUFAA1aOOalQh0DbgAA
-YACnAAD1TwANv/9yAIon+gAiHeAMBQD7RAAVoA0VAFgxz9Kg0Q8k8QWrq6NN7dxALdAEgAD9YAai
-4gCdAMmvesEdKKAAKaAHfoEUDJkRqartqzF9WASAAOq0AA3/HgAACssMC1o4ZKBBjaAroAcNjVfu
-2bF93wKAAIiidomnwCDRDwAAAPVPAA2//z4A//xQDaAKBQD7QwAV4AwVAPpAaB2gDSUAWDytY/7i
-ivErfBDr9QQlU8EAAOr2ASHJAQAAeaskLPEFHqQMqsqa8Z6gjSDA4eamAi7uAoAADt0C/UAmFeAC
-BQDRDx6kBJ6gjSDA4eamAi7uAoAADt0C/UAmFeACBQDRDwAAAAAAAAD1bwANP/yyAGwQBhmk5OKS
-XSlwBIAA7UQACeAEgADyYAiSoA8FACWSXJUQK1EE5VIAJiP9AADyTwAJ8AgVAOy7EQ4QBIAA9WAA
-RfAAOgCx//PgBwRiAJ0AD1YUDmYRBrYMJm3/9sfoFaSvAQAAoQQAiRrpZgENAgqAAPJAIBWhZp0A
-/tyMDeAJBQDowTxnsAUAAG1JLgZXFA53EQe3DCd9//bn6BXkVgEAAFEEAIoa6ncBCoIKgAAHBxnl
-cAZjMAUAALGZCcoMaaGDZMBHhxAqcQQp+v/sqhEPmASAAG3JNPLgCBWlQx0A/pAAEjRTAQDgUQQB
-mAUAAOoiCAwoCoAABCIM6VIDASPxAACGQAJiAQJSApJAEqShLOUTKCKiL+USIiKhqPiY0OjmFi+u
-goAApSLRDxmkmimSoizlEy/lEqn5mdD5wsYV4AIFANEPAABsEAySHYwdlBEiMAMrwRMkwAfyYABB
-P/kFAOzBFSEQ/QAACSIBiiMZpIjsFgIpwASAAPQgAAI7qgEA6hYMLaEWAACLIee0AAUcwYAAqrv7
-fgAl4AYVAGqxE/tgAAbwDxUA/e0ADvbrDQCu3a1mKSADDwIAsJnqkVVrGASAANsgbQhIjLSwmf9g
-qBXgDhUA94AAQ/usAQD7zQANNswNAP1AAEU73wEA6mYIBIDJgAAN7Tn34ABD9v8NAK/d7WYIBMv9
-AADrvBgkjB+AAGP/sIodI6UQJqURKYATZJNTl1GKHfrAYBXgDAUA/KAGFaK7HQDrFggo4ASAAFv/
-b44dmhONGO3lFCUVMYAA7qO2GcgEgADycrAN7/X1ABqkSyqimvlAaB2gDwUAbTkgiyODIqv7f7sB
-sTMFPAEOvQHthgEn+EMAAOyGACRAIQAAlB73IAW6ogCdAPQAIh2gDBUAiCQPAgAIC0v7jQAN9ogN
-APsAAERwDwUA5I01BAGJgAAKmAvTD23aJIsngyar+w69AZ2B77sGdMgFAACxM+U8AQf4QwAA7IYA
-JEAhAAD3KwYNoAwVAIglCAtL+40ADfaIDQD7AABEcA8FAOSNNQQBgYAACpgLbdoliymDKKv777sG
-dMgFAACxMwU8AQ69Ae2GASf4QwAA7IYAJEAhAAAiLBj3P/rboAwVAIQejxLuEggvxsKAAKiomBmI
-E+r5EQ//goAAD2YMqYjoFgMnE/mAAPNGEgXgAqUAAuo2mhcKqgnkFgYtV8KAAJoV9IAM6hIAnQAZ
-owIMSBGpiCyCnvuAEhOiAJ0AKIKdA0kKKZK/CYgB6BYEJBEZgACIFIkVjRePHYwYG6MdLvEVDcwM
-LBYIDe4ILvUVCwCHbZkCCAJhjxfTD2TxlRSi/BijdBKjWfwgiBXgCQUA/+AAh3AFBQD8IAgVoAMl
-AOoSAy92woAA7t0IDtgEgADtFgsuZoKAAPwhRhWl6h0AjByYsJOyjxmes40djhqvX43Q5LYEJVEB
-AAD3YQYV4EMFAOy2CSKogQAA82CmFeAMZQD/YOYVoAMFAPNhZhXgDgUA7rYKLZgEgADi3gIO7gKA
-AO62BizwBIAA7N0CBMgRAAD9YCYV4AxVAG3KJffB0g2gBAUAhPH94AgV4AAaAMDQlD3tNgwncAUA
-AO/8CCGYIQAAjBsUosf7bAAV4AMlAP1/+uUl6h0AjRfA4A7dNYkWGqKxjxjoEgUszwKAAKqZ6Jad
-J4BJgADAINEPAIoQixGCFO3YCQ1WgoAAmrCLHQuIEfhAAEEwCQUA+WKkHeBaFQAqtAXRDwAAAAAA
-AP/xyA2gBgUAFaKZjlj3wAa4kgCdAIgWGaKY7BIFLEcCgACpiCuCnv1gBquiAJ0AiRYogp0DmQop
-kr8JiAFkgMGw6ppY6BYELHJ2AABgAGUA9wDGFe/yogD//VgNoA0FAPDBEA3gCQUAGqOAlB77U0gV
-r/QSABqjfPtTSBWv9rIAKZJkihKGHfZgyBXgDAUAnFCXUSxiFgq6DJoYKmESnBAjYRDmYREtVoKA
-AKqZ+CBmFe/x4gCCFNEPAAAAAAAAAP/3KA2gCAUAjh2CEPggKBWgDwUA/8KkHeBdFQDt5AUpFoKA
-AJKA0Q/AoFluKI5Y+d/5EJIAnQD//SQNoAgFAADAgALpNPihBhXv/O4AAAAAbBAWGaLDJ5KMIhYb
-JnIXInIZ9OSIFeeFAQAqchgqFhf1AEyBEgCdAIw3K8kUIxYa+2BQ4BIAnQCDyd0wLhIbLuIQL+AF
-KAqV+eBTvCIAnQAvEhuP8vvgUQiSAJ0AKeITKOIUCYgM+QBK8JIAnQAqEhqKrPWgcBWgCyUA80AQ
-r9//9QCk04M/KRIaDygDCDMBI5YULtBEKNBF6tBGL3YCgAAI7gLo0EcvdgKAAAruAgjuEQjuAqPu
-IxIXrm7gMAQHc/0AAA4OGQ4OT7Po/yVkHaGIDQD5JUQdr6NFAPLgTsxiAJ0AKBIaKfq0+QBOXGIA
-nQD7wE4YEgCdALDqCuwBeuAabQgMsM/vzAEOcASAAH/gB///sA2gCyUAD+4RGaMpHKMmE6Mn7qLm
-F1ANAAD/RkYF4qodAAOjAQ6uAQ+vAf1ABAYwCBUADIw5D485Do45A4M5CaoB+w0ADTAIBQDZgOq5
-OQxQBIAA+GYACfAZBQAOmjn5AGgd4A6FAA/pOfsmAAywCkUADKg5LHIoCYgCCDMC84BJG+IAnQAq
-cikDPg8K6gqKoCyhAg7uEZ4W+4BMOBIAnQCdFVgra4wWK3IprLuMtumyAS5mgoAADKworJksEhqN
-FR+iHOnGEynGAoAA7rIGLWQCgAAIzAKLtAruKA/MAq67+iCGFeAJBQAoEhoMnwIPDkfvhhIoBAqA
-APvASHCSAJ0AHKI+KxIbioAswnMrshAMqgz7bhAV5uodAPXAR69V+gEA7BIEJcAZAAAAgQTtFgUv
-OAqAAOf3Ag5GgoAACHcClxHsFgItaASAAPogBhXgClUA/UWGBaA7BQBZcfIqEhqJrI0V90HGFeAL
-JQD7JgAM8AwVAAyZAvlBhhXv//UALhIaLuEq7RYFJyY5gAAlFhkTosgYocek2g8pA5kbKhYQmB7j
-FhUlWQEAAPohphXgAwUAkxwoEhrjosAVUOEAAJoYKIIT+CImFaAF+gAAACoSGK39/UAZrWIAnQBk
-sy0rEhCMGo6/LsZ/i74rxn4vEhsoEhOMHykSERqiHfuABhWliB0A+YBGFaWZHQCZw4/wLhIS7RIF
-L/4CgAAP7gKPHp7B/0M2BaAJBQDvABUGYEEAALGZ7IMeDI/oAACPHysSFCwSE//gxhWgBAUA7PYH
-JYXJgAAfoYeHHx6h6/6AAgJwC0UA7HwIC5AEgADnfDgmYOEAACoSGw8CAIqgDqoCmigqEhopEhko
-og4JiAEoJgkl0EQo0EXp0EYqrgKAAAhVAujQRyquAoAACVUC40QICq4CgAD4pgAKsAkFAPRBRhXg
-CAUA6qIUK6gEgADpJg0juQEAAPpBZhWgCQUA6CYMIREBAADkBgAEyAUAAOWDHgyv0AAA1LAPRAvv
-AgAF2BEAAPz/+30iAJ0AKBIbKIAHCAhBKxIaLxIUGaFPLrEqDIgRqYgP7gwvEhL/E6YV7+4BAO61
-KicY4YAAKhIUKRIRCqoRqpkpFhEvEhscoUL/4PAV4ARFAAToNigWFP0QABQx/wEA6BYTL/cCgACs
-7uviniRAvQAACEgUKBYS+WAvq6IAnQAYoTMi4p0I+Aoogr8IIgFkJa4qEhosEhAuEhQvoSuSH+zA
-My93goAAD+42H6JDiqwuFhj/wAIHcA8FAP/P5hXgCwUAK+Z+8UAFx5IAnQAqEhCeGogbia+PHIqu
-+QAEBHAJFQAImDkK/wEPnzkI/wLsFgknkPGAABqheSwSEIgYLxIVLhIaCCCIDwSKLuIUGKIqi80O
-bgwpgn8L7jYOuwwKmQEphn/rxg0lgMGAAI/PjM6v7377AizMAS4SEJ/vLOYOLhIajOydFfoiCBXv
-/9UAD8wBnOyLvSoSFygSGKa56Zz/LQIKgAD5H+AVoZmdAAmINvEcsA3gDwUA8ADUDaANFQArEhCe
-Gou9KhIXKBIYprnpnP8tAgqAAPwhJhWhmZ0A+QEADHAPBQDtFgUkDGGAAMDQLhIQKhIYjBgSoOz9
-TwANcA8FAOmqNg5ABIAACECIrfUCVQujVQUIiovth++E7utlNgf4BQAA5bsMDkAEgADr5g0lgHmA
-AKdXl+91ewGxRJTuevnGY/zBiBmKHfojxhWgCQUA6RYdJEP9AADoFhYsAX4AAGP8wQApEh0rEh4u
-EhzqEhYkyAUAAOkWHSXgYQAADss5KxYe+z/k9CIAnQArEh0sEh74IugV4LsBACsWHAy7CoKwLhIV
-LxIY5igIDIIKgADlEhwkQ/0AAP3vAA/xiJ0A+eEAD7AJBQDsVQsHgpmAAC8WH6367qoLAuAhAADu
-3gsOQASAAOhmAA8gBIAABAyKgrDiZDYHcCEAAOQiDA5ABIAA4rYAIQCZgACHU49Sp0eXU3R7AbH/
-n1J66cgvEh8oEhgP+Tmp3f0f+dViAJ0AZC8yKxIeKhIcC6oLixqMoyy2f4qi+2/GFa/vegArEhCL
-vSoSFywSGKa56Zz/LQIKgAAJCRn5gQAOcA8FAO0WBS5z5gAA/+48DaANBQD/7hwNoA0VAAAAAAAA
-LRIbLtIULdITHKGZDt0MLt1AfsMFHqGXfesS+iNoFaALBQD8AAIdoA0lAFv7+yUSG49SJVAH8+28
-DeFVAQAaoHEMWRGqmSiSnvcAGfLSAJ0AGKBrJJKdCFgKKIK/CEQBZEMnKRIbJ5ISFqB7ipn5IUgV
-4HdBAAZ2CiZikNMP6pkMA1jBAAD7IBEb4gCdACsSGyuwFiMK/3OxECoSG/tA8BWgDAUAWDceZKL3
-LhIbKeEHG6BgCQlK6qCHHM8CgAALmQKZQIng9UC8BeBIBQD0gEYV4AtVAOhGAyyWAoAACyICkkEv
-4hIcoHwdoHz88AASsv9RAOjhGi/9goAAD1UCDVUC/SYADLElMQCqIuIggCxCAoAAmEaZRAJiDOVG
-ByEQwQAAkkWP6S3iFab/5t0IB/jBAADv5gkm6MEAAP3CphXv7AUA/IAObCIAnQCJFSxMIPkmABXg
-CjUAbaoFCQCGDAJhKhIbwJEpRCAoohYuEhr4h+YdqIgdAPiHxh2oiB0A+IemHaiIHQAoRDyP7i2i
-EP6GZh3o/x0A/oZGHej/HQD+hiYd6P8dAC9EMP2iKBXgCAUAKEQj/IdmHeAJBQD4hEYd6P0dAP6H
-Rh3o/x0A/ocmHej/HQAvRDgsoAf9weYV4cwBAB2gBwzMEa3MK8adK6AWc7ENKhIb+0DwFaA8BQBY
-NpwrEhpksHOJuGSQbi0SG/NhKBWgDwUAn7st0hCZIIi4LNIRLtIUkoGfuO+2CSZgBQAA7NYRJ3AF
-AAD/ooYVr5qVAPtgph2gAgUA0Q8AkxUqEhtY+SeNFZoX6hYaLQLWAAAuCo7qEhsu4ASAAOsSGi9o
-BIAAWDZUwCDRDyoSGyqiECmiESuiFOgSGiTIBQAA6aYRJdgFAAD7QoYV75KVAPMAph2gAgUA0Q8A
-ACoSG1g2u2St12AAW4qn2zDqrCAqYASAAFgyHYwXjsDroQgvdgKAAA5OAu6mAS1oBIAA+4EEHe/X
-0gAAAAAA/9eYDaADBQAqEhsroAf6IAAF8AwVAO0SEiXYYQAAWDhoLRIaLBIRLNYTLhIajujI7cAg
-0Q8AAAD/6GgNoAIFACISGykSGoovG6DR65YLJPiBAADvpgAhQOEAAJiYmpn+QeYV4AIFANEPwMD/
-3PgNoBllACkSGxygxigSGo2QKZIYj+CIgP8ukBWgClUA+CAGFaA7BQBZb9TAINEPAAAAAOoSGyLY
-YQAA/AAiHaANVQBYOENj/3MAAOoSGyLYSQAA/AAiHaANBQBYOD1j/1sAAP4Roh2v+p4A/CCIFa/3
-9QD8IKYV79yGAMDA/9r8DaAJJQAAAGwQOiggBCIWZyMWVeUWVCQ5oYAA+QAtw5AShQD3AC2CEgCd
-AI0wJhJnIxZQ/sDwFafdAQDtFlEm6a0AAPYrBhWk3R0A/CpGFeHuAQAuFk/1ADFKEgCdACgSWCiA
-BcSu+wArTCIAnQApClF5gSsrClR7gSUqElgrElDsHBQg6GEAAFv70vtAmLASAJ0AKhJQKBJYiRWZ
-pyiABcW0+wAPZGIAnQAlElgfoF4doFwToBvyImYV4AkFAJkb+CXmFeAGNQCWHvYnBhWgCAUAKBYK
-+CXGFaA89QAsFij8JUYVr/T1ACQWHyQWJfwjJhXgBwUA9iZGFeAbBQArFiz+IuYV4AoVAPohBhWg
-H7UALxYU+ioIFewKBQAqFikqFisqFjH8KegV4AclAPYhphXgBAUAJBYMJBYQJBYSJBYW9CMGFaAc
-5QAsFhokFhz0I8YVoAdlACcWNSQWNCQWNi0WUyQWOvQnhhWj+PUAKBYwKBY9Fp9rJVEIGZ9jKRYk
-JRY79iImFaAapQD6JAYVoBgVACgWJv9gyBWgBvUAJhY3K7IH6xYdL3oCgAD+JGYV6O4dAC4WIvWg
-I9oSAJ0AFp8bDNMRBjMILDKeLQobfcMRGJ8VJhJTJDKdCGYKJmK/BkQB+oCI4BIAnQAZnzfYQPgA
-CB3gGbUAbZoCCAJhJRJYFp8Xg1AfnxjlUQcgyIEAAOYzAgneAoAA9z4gBaAKlQD1QAAC8Aw1AOy7
-AgqvAoAA5lUCCkAEgADmnwodoASAAG2qLJWAlIGfgpKDk4SKlIuVjJKNkO6SAyTIYQAAmoabh5yI
-nokG2gLqhgUkQMEAACoSUxue7egSWC1XAoAA+0AARXAZtQD5U6YV4FZFACaEBSsSWNMP0w8rsBYs
-Cv/TD3yxJiwSVCoSWA8CAPzgAAYwDRUA6qBBJmP5AAAM3DlYNaH7QH8gEgCdAC0STy0WU/WgGJIS
-AJ0AFp7UDNMRpjMmElIvMp734ICDogCdABieziQynQjWCiZivwZEAfqAfAgSAJ0AGZ7wCQCHKRJS
-2EBtmQIIAmErElUtElj9P24FoAcFACcWRP2lRB2gLuUA/6rmHaAPZQD/q4Yd4AaFACbUZCuwFfrO
-AA3wCjUA+0B76OIAnQAqEljsn8MQ2AcAAOwWRCXYQQAA+0ygFaAMNQBZZ4wpElIoElgsElH/PcQF
-oE8lAP8Ohh3gAwUAI4YcLYEHLoU3I4U1Hp6w8w0mHerdAQDjhGgu7wKAAA7dAp1AioAbnq3rRgIm
-YTEAAOxGAy1WAoAACpkCmUEjgEElgSIfnwoDNgnogAUrNwKAAKb//+/oFeBdBQB9gQ7EbnaBCcV2
-9wB75WIAnQAWn2guElEan4D+wAAD8I85AP0+/AWiv0EA/IDmFaANBQD8gUQd7ZUdAOSZEQ3eAoAA
-63cCDEVCgAAJiALrElgqzQKAAAqZAulGBidw8QAALhZLLkUL6HcCCZQCgAAHIgIGIgLiRgQl+SEA
-AO8DHgJwgQAADgJh/WVEFaAOBQD+hiYdoA8FAP6GRh3gAgUA8oZmHaAGBQD2hoYdoAcFAPaGph3g
-CQUA+IbmHeAKBQD6hcYdoAgFAChENixELfyF5h3gDQUA/IYGHejMHQAsRCwosFf6h4AVoAxFAPiH
-Zh2oiB0A+IdGHaiIHQD4hyYdqIgdAOhEOCXZcQAAWWcrKBJYDwIA70xAJEGBAAAIIIgPBIoIAIgP
-AIosElgswhwrElD8imYdqMwdAPyKRh2ozB0A/IomHajMHQDsRFAiUVEAAOwSUSXYwQAAWWcXLxJR
-KxJYr08usHQu9FgtElMenjXsElIu7wKAAK7dLNadK7AWLQr/fbELKhJYLBJLKqBBWDTIKhJYKBJQ
-xJUppAUogBJkgEUUn0aDpwSEKOpEAAGYQQAAW7z8LxJY7Z5YGmAEgADun0AdWASAAO/yACnQBIAA
-W7yvIhJYgiciLBDaIFu8jPVAauCSAJ0AwCDRD8FpeGL28wALWaIAnQBj/+sbng6LuPdgbvCSAJ0A
-IxJTFp4N7RJSKZ8CgACmMywynv2AbvPiAJ0AGJ4GJhJTJDKdCGYKJmK/BkQB+oBuMBIAnQAanf2w
-uZmoZUzSYAxMG536i7j3YG3gkgCdACMSUxad+QwzEaYzLDKewdv9gG3z4gCdABid8yYSUyQynQhm
-CiZivwZEAfqAbTASAJ0AGp3qsLmZqGVLa2AMgADvVAALUASAAOw0AADYQQAA/GEEFeAOBQBYFg0t
-Coj9QGz0YgCdAI4UZO8kiOeLiPUCpBXvxgUA6YILJGiBAAAG1gGmVeYWRiKpAQAA+yBtBGIAnQAn
-iRQMTBGrz6x3J4UU/qBs2+IAnQAoElXJgMhO2bBtSQUIAIYJAmGP0Az/CPXgbqRiAJ0An9CJ4OgS
-ZyzOAoAACUkCmbEogAX6KgYV4DblAPcAaVwiAJ0AxKL7AGkMIgCdAMPN/QBtVSIAnQD+KwYVr+Re
-ABOe2SMyeC4SVCIyFycyGSUyJC8yGP4sZhXn7gEA9cBNuRIAnQAoElWJhyaZFCgWZvrAUmASAJ0A
-jJnnFkkuaASAACgSZyiCECmABSoKlfsgVQwiAJ0AKRJniZL7IFJYkgCdACuCEyqCFAuqDPlATBCS
-AJ0ALxJmj/z1oHAVoA4lAPPgEF/f/PUAKxJJpNqKrygSZgy7AwuqASqGFCnQRCvQRe/QRizOAoAA
-C5kC69BHLM4CgAAPmQIImRELmQKqmSoSY6kp4KAEBMv9AAAJCRkJCU+zl/kFZB3hdw0A9wVEHe+m
-RQD2YE/8IgCdACz6tP0AT6QiAJ0A+yBPYBIAnQCwnw+YAX+QD7CG5ogBDEgEgAB2mPIPmREbnokf
-noUYnobmnkUU4A0AAPc9BAXizB0ACMgBBsYBB8cB/4AEB/AKFQAPrzkHpzkGpjkIqDkLzAH9TQAO
-MAoFANug7Os5DWAEgAD7BgAMcBsFAAa8OftAaB3gBoUAB2s5JzIo/WYADbAMRQAPyjkLqgIKiAL4
-4Eq7ogCdACoyKQiHDwp6CoqgL6EC6BZIK7+CgAD74FUIEgCdAC0WR1gmySsyKae7iLbmsgEsRoKA
-AAioKC0SR6hmKBJmLxJIHp165oYTLUwCgADssgYv/gKAAA+ZAou0CswoDpkCrLv6KKYV4AgFAC8S
-ZgmOAv/iRhWnzgEA+4BRQJIAnQAanlQpEmeI8CqiXymSEAqIDPkuEBXm6B0A9cBQf1X4AQDrEkUk
-0BkAAAChBO0WRy84CoAA5/cCDdaCgAAKdwKZEJcRHJ4l+iBGFeAKVQD9AGgd4DsFAFltUS4SZovs
-LRJH98HGFeAPJQD/ZgAN8A8VAA+7AvvBhhXv/PUAKBJmKIEqZITeJRZlJhJJKRJmH54nE50lIxZa
-LxZhE54lKZITDGYDJhZW+CumFeAGBQAmFlek2ekWXCTRAQAA6hZZJMjhAAD4KYYV4AX6AAAnEmSt
-TfzgGlViAJ0AZLNCKBJcKRJOio8qln+IjiiWfi8SZyYSXywSWygSXRmdfPmABhXlZh0A94BGFaWI
-HQCYw4/wLhJeLRJH6xJaL/4CgAAP7gL/gCYVoAkFAOsAFQZgQQAAsZnsgx4Mj+gAACsSXywSWyoS
-YB6c8f+AxhWgBQUA68YHJQWpgAAZnUoUnOPrzAgOeASAAPngaB2gC0UA7/w4JmDhAAAuEmcu4gAn
-EmUqEmYJ7gIuhggmog4HZgEmhgku0EQm0EXn0EYvdgKAAAbuAubQRy92AoAAB+4CBFcL43cID3YC
-gAAG7gIuhgr7QogVoA4FAP8BphWgBQUA+wFmFaAKBQDqhgwv8ASAAOdGAAKoBQAA7oseCq/QAAAo
-jEDv/EAtqASAAO8CAAXYEQAA/f/7jSIAnQAqEmcqoAcKCkEvEmYpEmAbnK0o8SoMqhGrqgmIDCkS
-XvlTphXviAEA6PUqJBmJgAAsEmArEl0KzBGsuysWXSkSZxqcofkg8BXgDEUADI82LxZg/fAAF7GZ
-AQDvFl8sxwKAAKqI7oKeJ/i9AAAPTxQvFl7/wDJ74gCdABqckSiCnQqaCiqivwqIAWSF4CsSZikS
-XCwSYC6xKygWW+mQMy5ngoAADsw2Hp2hi7wsFmT/gAIGMA8FAP+P5hXgDgUALsZ+8WAF75IAnQAv
-ElwsFk4rElaO/yoSV4/+/2AEBbAOFQAL6zkPqgEK6jkLqgLpFk0lEaGAABmc1yYSXC8STC4SYSwS
-Zg9giA4MiizCFB+diIRtDCwMKPJ/BMw2DEQMCYgBKPZ/5GYNIgCxgACEb4lupMR8SwGxmSoSXJSv
-ma4uEmaM7PoriBXv/9UAD8wBnOyLvSYSYywSZKK15Vz/KwIKgAD9n+AVoVWdAPWBAA5wBAUA7RZH
-Jg75gADwAPANoA0VACsSXCYSYw8CAIu95hJkKwIKgAACtQjsFk4iq/0AAPgpphXhVZ0A9MEAC3AE
-BQDtFkcjDMmAAMDQKRJcKhJkLBJMGJxH/U8ADXAEBQDlqjYOeASAAA+AiK1OCO4Lo+4OEIorkg0l
-kg4LLjbuuwwCIAUAAOuWDSWAqYAAL5IPD+8IL5YPfvsCJVwBlZ7qScV+eASAAGP8rCYSTSkSWfgt
-RhXgCAUA6BZpIzP9AADmFmIrAX4AAGP8qwAnEmkpEmorEmjoEmIjuAUAAOcWaSTQYQAAC6k5KRZq
-+P/kRCIAnQArEmkkEmQsEmr4LGgV4LsBACsWaAy7Coiw6RJhLIIKgAAuEmjzAABDMAcFAO1EDAMz
-/QAA/cACBzFmnQDmRDYHYCEAAOYSZCICeYAAJBZrrUoJqgvp2QsOKASAAOWmAAz4BIAADxSKiLAI
-JTbliAwEyCEAAOi2ACQAoYAAj+OE4q9fdfsCJEwBn+OU4uqZzH4oBIAAJBJrBEc5p9383/nNYgCd
-AGSPMSkSaigSaAmICykSToqDKpZ/iIL5L8YVr+8aAAAAKxJci70mEmMqEmSiteVc/ysCCoAABQUZ
-9UEADXAEBQDtFkctc34AAP/t0A2gDQUA/+2wDaANFQApEmcqkhQpkhMcnPIKmQztFkck6QMAAH3D
-BRqc73mrEvos6BWgCwUA/AACHaANJQBb91MlEmeLUiVQB/NvPA3hVQEAGpvJDFkRqpkmkp72wBqy
-0gCdABabwySSnQZWCiZivwZEAWRDPycSZyNyEhKb04h59uFIFeAzQQACMgoiIpDTD+h3DAFYwQAA
-+uARm+IAnQArEmcrsBYoCv94sRAqEmf7QPAVoAwFAFgydmSjby0SZybRBxebuAYGSumb3xs3AoAA
-B2YClkCH0P83bAXgCFUA/oBGFeBFBQDlRgMr9gKAAAjuAp5BLNISGpvUG5vU96NEFaLMUQDqNREO
-ZYKAAAxVAgtVAvrmAAux9TEAqf/v8IArMgKAAJZGl0QPLwzlRgcn+MEAAJ9FLtIJLNIVAu4I4swI
-B3DBAADu1gkmYMEAAP2iphWv6wUA+oAPHGIAnQApEkcsTCD5JgAV4Ao1AG2qBQkghgwCYysSZ8Bx
-J0QgJrIWLhJm9ofmHahmHQD2h8YdqGYdAPaHph2oZh0AJkQ8L+IOLbIQ/oZmHej/HQD+hkYd6P8d
-AP6GJh3o/x0AL0Qw/aIoFeAGBQAmRCP8h2Yd4AcFAPaERh3o/R0A/odGHej/HQD+hyYd6P8dAC9E
-OCywB/3B5hXhzAEAHZteDMwRDcwIKMadK7AWKgr/erENKhJn+0DwFaA8BQBYMfIrEmZksH2IuGSA
-eCwSZ/9hKBXgDgUAnrsswhCY8IK468IRLdAEgAAtwhSfIZ6o7qYJJdgFAADrxhEm6AUAAP2ChhXv
-mZUA+UCmHeACBQDRDyoSZy0SVS0WR1j0ey0SRyoWSuoWZi0CxgAAKAqO6hJnLuAEgADrEmYsaASA
-AFgxp8Ag0Q8oEmcoghAmghEpghTiEmYjMAUAAOaGESTIBQAA+QKGFe+flQD+QKYd4AIFANEPKhJn
-WDIPZK3HYABjiqcrElXTD+qsICpgBIAAWC1wLBJKjsAnFknroQgvdgKAAA5OAu6mAS1oBIAA+4EE
-He/XLgAAAAAAAP/W2A2gDAUAKhJnK6AH+iAABfAMFQDtEl4l2GEAAFgzui0SZiwSXSzWEy4SZo7o
-+9+eqJIAnQAiEmcoEmaJLxqcJeqGCyR4gQAA75YAITDhAACWiJmJ/kHmFeACBQDRD//nAA2gCAUA
-wJD/3EANoBhlAAAuEmccnBgmEmaN4C7iGI+AhmD/zpAVoApVAPYgBhWgOwUAWWsmwCDRDwAAAADq
-Emci2GEAAPwAIh2gDVUAWDOVY/9zAAAvEliP8vv/mjiSAJ0AKxJP+isIFaAMFQDtElIl2GEAAFgz
-i8Ag0Q8ALBJYjML7n5j4kgCdACoSWCugQcDB+2JAFeANBQBYM4LAINEPLBJVLMAU/awGHa/B9gAA
-AAAAAADqEmci2EkAAPwAIh2gDQUAWDN3Y/77AAD/v/wNoAQFAC0SWI3S+7+WOJIAnQArEk/6KwgV
-oAwVAPtjABXgHbUAWDNrwCDRDwDaIFu5UBKboQumEeYiCAUHiYAADOowKyKFi7Cwouy7CAlQBIAA
-WWxkHJvXKsKf+kAEANALFQAAuxoLqgIqxp9ZbJnAINEPAAAtEljFwv2gph2vwf4AAAAA+BGiHa/2
-5gD6KKgV7/f1APwo5hXv2B4AwJD/1qANoAglAC4SWI7i+9+RKJIAnQArEk/6KwgVoAwVAPtjABXg
-TQUAWDNDwCDRDwAAwKBZZlsbmpOLuPl/kMCSAJ0A/8kwDaAEBQAAwEAdmo3Aygy8NP2hBhWvyOYA
-2kBZZlAbmoeLuPl/kdCSAJ0A/8msDaAEBQDAQB2agsDKDLw0/aEGFa/JZgAAAAAA+gDiHaALFQBY
-Kw4tIn/8UGYV4AIFANEPKhJn6xJVKmAEgABZJcvAINEPANrg/CqIFeCPRQDvtQgqYASAAFkkhsAg
-0Q8AAAAA+yBoHeAGBQD3AWYVr8o6ACgSVetaDAQB4YAACkMU6TwILDgEgADpSTYNwASAAG2ZBQdA
-hggCZScSVSgSRgNPDOp3CARBAQAA0w9t+QUHYIYIAmcpEkYKzwyvmSmcQPmgBhXvyOIAAAAmEkYm
-bED3oAYVr8iiANrg/CqIFeCIVQDotQgqYASAAFkkYcAg0Q8AbBAIHZtrDwIAKNF+xGXlmnIRIZUA
-APEADQ+QJ+UAuBr6gGgd4Aw1AFljHYwSDIwUnBKKNgWrAZsTKSAFLDAeKzAidplK94AK3GA9ZQD9
-gAr9YgCdAC4gaC8hNfvACo1iAJ0ALDEQsf//gAolYgCdACwlNeskaCpQBIAA6DIJINgxAAD4Q4YV
-oAw1AFljBYo280AIYhIAnQAZm0f5QAgM4EslACowH/tAB7ViAJ0ALCAF94AHXSIAnQCJJyogBy2Z
-FImZKCEI8a1gDeGqAQAemhZkkMsMqxGuuy2ynhyaEvegEipSAJ0AK7KdDK0KLdK/FJodFZpWDbsB
-7ZpTFZFZgAAqIQcskAeckSwgBwoKSv9AABUwPBEA9HAAEbHMAQDjqgIOfAKAAA+IAgWIAg2qApqw
-jyCYtPVgRhWgMwUA82BmFeANBQCdtZ23lbb94AAXsAVFAAX/Au+2ASXQgQAACSCGCgJjCQCGCgJh
-iScMyhH/QABFP8gFAOWmnSTIgQAACJgB7ZUEJEEBAACYkPkgJhWgXyUA7yQFLpAEgADRDwDAINEP
-LDEQ+mRQFe/7FgAAxbX6QKYd7/tqAACOJy/pFGTxT4jpmBQamg8pITf7IApkIgCdAI022hD6gGgd
-593BAPwgphXgDDUAWWKtihAKjRSdEI82jhUF/wGfESsgBfnACejSAJ0AdrmVLDAed8EH80AJYdIA
-nQB73hkoIHTEknmIESogV3ehFi4gaC0wIn7RDWABCi8gV/fgCCViAJ0Aji8tMQuKFK7dnS8ooBNk
-gK6KpvugBTUiAJ0AxPgvJAX3gAUkYEuFAMOG+YAGlSIAnQAqMCIpIGj7IAYlIgCdAC0hNSwxELHd
-/YAFpWIAnQAdmn0sJTUemsYqJGiKES7hfg2sAfPABq+SAJ0A/UAEhmIAnQAfmdQtITcsMQp/2Xws
-JTd8p3l5rnZ/rnN6rnB7rm18pgcoMB/EknmAYrQb+mEoFaAMNQDqJhwqUASAAFlibMAg0Q8AAAAA
-AAAAfaM/95/7JWIAnQAsMRD6ZFAVr/4GAMCw+iCGFe/6ugAsMQr8RuQdr/rGAI0iytrE6f5Aph2g
-AgUA0Q8AAAAAAHzRgvd/8uUiAJ0AxfX+QKYd4AIFANEPAAAAAPtDABXgDBUA7SQACVAEgABYMhnE
-6f5Aph2gAgUA0Q8AAAAAAAAYmkH9gGgd4AkVAAydOXioER+ZnS4hNiwxCn/hHSghN3yJn/wAIh2g
-CQUADck4ZZ8UY/+OAAAAAAAAAPxGxB2v/5IAbBAEwCDRDwBsEBInIhDTDw8CAP7gaB2nhQEA+QA1
-YVIAnQDaIFjyjOWkAAUyIYAAiqcDOwLqrCAqYASAAFgrmI1Q7ppLHv4CgAAPTwKfoS7ifyZwcO7d
-DA0YBIAA+MDAFabtHQD1wDT/Vf0BAACBBADkGgT0ApYQ9CAmFaAKVQD9NHoFr/n1APggRhXgOwUA
-WWlplF4uIhAqMQgqVQgr4AUsCpX9YDHMIgCdAI0iZdNzKOITL+IUCP8M+eAtkJAKJQAtIhIscG8u
-IAf9DgAM8N1BAOrLAQZ4KIAACp8BD90CGZkhDg5BDOoRqaooop4cmR0uFhH3ADDNUgCdACainQzo
-CiiCvxSZLQhmAeTUCgMwEYAAJEKQKxYW5LOaYiDBAAAsMEQoMEUvIhfpMEYuZgKAAAjMAugwRy5m
-AoAACcwCCMwRCMwCD8w2pMSIKY8qCP8M9eAVS6IAnQApIBb4IeYV4Pr1AHqRaSogBx+Z2PohxhWj
-KAUACKodmhmvqiiivvsgBADQDxUAAP8a/wAnyOIAnQCIHhmZzgyIEamIiID54AQEMAkVAAiYOSmi
-v5gdefgH+iGoFaAAZgAqosHAkfvgBAUwCAUACpg4ih0IqgFkpN4pPDDpCx4DUIEAAAoCZQkghgoC
-YwkAhgoCYcCRKWQgKCIW+MfmHaiIHQD4x8YdqIgdAPjHph2oiB0AKGQ8j17+xmYd6P8dAP7GRh3o
-/x0A/sYmHej/HQAvZDApchEYmN0oFhD4x2Yd6KkdAPrHRh2oqh0A+scmHaiqHQAqZDj4oeYV4AoF
-AOpWFyWOiYAAKmQj/MTmHaj8HQD+xMYd6P8dAP7Eph3o/x0AL2Qk7zIZI0mBAADpFgwjQUEAAOgW
-BCHJwQAA6mQiJ5EpgAAqVhYPzzbvZhUhwaEAAOimAANRYQAAChSKKDIZD8wM/w8ADHAKBQDoNhkk
-E/GAACkyGywyGqn5mRp/mwGxzCw2Go8aLzYbIwoALxIQGZirKCEHAzwJJRYX+UAABDBlBQDlzAoM
-RwKAAAmIAhmZaZhg9EAIFeBIBQCYYwufOSgSERmZMu9mAiZgPQAA/kNEFeTMHQDpiAoKzgKAAAnJ
-AplhGZkrKIKf6YgBDs6CgAAJiALpmaof+gKAAJ9mH5i3CYgC+MDmFaGIMQCo/xiYtC/wgAhVAg9P
-DJ9l5WYEIZgFAADlEhclgHmAABmZnYsUCTkCKbYAiSkrIhWkmaS7KyYVmSkYmHEM7xGo/yz2nSsg
-Fi0K/32xDOogBypgBIAAWC8GwKAtchEuchSJWO9SCSboBQAA7XYRJ3AFAAD+4oYVr5yVAOxUBSSC
-IYAAmluZ8IJYnyGaWPqhJhWgAgUA0Q8AAC4WEy0WFCwWFeokAApYBIAAWC88KxIWLBIVLRIU7hIT
-JWnRgACIWGSCIMAg0Q/ToGW+tBiZHykhByMSEByYVwkJSuuDOQzPAoAADJkCmWAcmOYpEhGIIPLA
-RhXgTwUAn2MjIRoMmQr9AAAXsAxVAAz/Ap9hH5jeKZKfCDMQk2YPmQHvmV0enoKAAAOZAhOYag+Z
-AvjA5hXhmTEAqTMjMIAZmGcDQwwJiAKYZPLAphXv+5IAAAAAAAD/8kANoAwFAC9SFgP/Ci/yHGTw
-ew/PNi9mFShSFgmIC+IWGCRAIQAA6MYAAxFhAAACGIooUhYJiAqCgA8iDJKAIlIWKRYSCSgKiIAP
-zAySG+ISGCQBEYAAjBsJzAuJw4PCqfmZFX+bAbEzk8KIFfmAZhWv9u4AjxvTD2TxCyhSF+pWFiRA
-BQAA6FYXJMhhAAD/jkAN4AMFAC9SFp8bjxyIGyUWGiMWGQmFCoVQ8iMGFaAzAQAPMgoFxTaVICIS
-GiIiFg8/CyUWGwkiC+USGiEQIQAA4gYAB/ghAAAPAIolUhaTGC8SGwlVCoNQKRYSIhIaDzMMk1Ao
-IhYjEhmYGwmICoiAD8wM4hIYKSgEgADlgFNhmAUAAIgbIhYY4hIMJAGhgAAvUhf6osYVoAgFAOgW
-Cyf4BQAA71YXJMhhAACPGCgsGA+COZIc4hIYLnqOAABj/iTA8f6ixhXgCBUA+CFmFa//dgCMGwnM
-C4jDicKZFqj4mBd/iwOxn58WiBaPF5/D+YBGFa/3zgDAgfiixhWv/AYAiy8cmOzsVgsiyIEAAOm2
-ACFQ4QAAmlibWfhB5hXgAgUA0Q8AAOokAArYBIAA/GBoHaCN5QBYLirAINEPAAAJmAkal76JGeqZ
-CAxHAoAAqYgojQopgcIvgcEogcUJ/wH5/9kSoAoVACsSEfpAaB2gDBUA+2JAFeANBQBYMFJj/VmJ
-NyyZFOU0AAYC4YAA8yEoFe/nCgAAHJjIjSApIhiIUI/g/y6QFaAKVQD4IAYVoDsFAFlnzsAg0Q8A
-AAAA/+WoDa/09QAAACsSEfpAaB2gDBUA+2MAFeANxQBYMDpj/PkAAAAAAP/lqA2gAwUAbBAWKiAE
-HZeZ5JeJGkAEgADtFhglGzGAAPlAGrOQFoUA90AachIAnQAmMgApIAcjFhMoFgr4IAAE92YBAOYW
-FSMxrQAA+CFmFeRmHQAmFhb1QE5iEgCdACogBS4KTv9AGKQiAJ0ALwpH/0BZXGIAnQArIBYmCv92
-sR36SDAVp8UBAP2fwBWgCBUADIw5WC4v+0BWqBIAnQCNGy0WEvWgSRoSAJ0A5hIWLscCgACkiC+C
-ntMP9+BYA6IAnQAZl1wlgp0J1gomYr8GVQH6oFPgEgCdABqXfikSFuoABQrABIAAbZkCCAJh/TCM
-BeAHBQCXFPxFRB3gLuUA/krmHaAPZQD+S4Yd4AaFACYkZCwwFfzOAA4wCzUA/WBTaKIAnQAqLGXo
-mFIQ2EEAAPgghhWgDDUAWWAdKRITLBIYLRIVLiEH/y7kBeBGJQD2ToYdoAgFACgmHCglNS8lNx+X
-QfhNJh2q7gEA6CRoL3cCgAAP7gKeUIsgKhIW7FYCJukxAADtVgMt3gKAAAuqAppRKZAT+yBD6BIA
-nQAuIEEvISIal5gO6wnoIAUt3wKAAKuq+0/oFaBZBQB5gQ/EznyBCi0KVv0AUhViAJ0A8iKoFeaK
-AQD3MB4FoA0FAPyhRB3imkEA5lYHLM4CgAAJiAL6BwAEva8dAOSqEQzNQoAA6pkCAZjxAAAjVQsa
-mADpiAIPPAKAAAh3AuiX4x/NAoAACpkCmVYIdwLnVgQhQSEAAOgHHgK4gQAABwJj/EVEFaAKBQD6
-poYdoAsFACtUMPyl5h3gDgUA/qXGHaAPBQAvVDcvVDb+pqYd4AYFACZUMyZUMixULfamJh2ozB0A
-LFQsKSBX6yxcItDxAAD4p2Yd6JkdAPinRh3omR0A+KcmHeiZHQD4pwYd4AxFAFlfwOpcQCFBgQAA
-CCCICgSKCACICgCKLCIcKxITDwIA/KpmHajMHQD8qkYdqMwdAPyqJh2ozB0A7FRQItFRAADsEhUl
-2MEAAFlfricSFSYgdA8CAKdXJnRYLxIS7hIWL/8CgAAE/wgu9p0rIBYtCv99sQrqIEEp4ASAAFgt
-XygSEykKRikkBSiAEmSAQRSX3iMiBwSEKOpEAAGYQQAAW7WT7ZbwGmAEgADul9gdWASAAO8iACnQ
-BIAAW7VHgiciLBDaIFu1JWmhBWAITHahBMAg0Q8AJyIQmBoPAgD44Ggd56UBAPlAOqFSAJ0A2iBY
-7+LlpAAFN2GAAIqnAzsC7BIKJVCBAABYKO6NUI8a7pfAHrYCgAAG/wKfoS7iXyhwcO7dDA0YBIAA
-+wDAFabtHQD1wDoXVf0BAAChBADpGgn5AikWF5gQLBIX/CAmFa/79QD6IEYV4ApVAP0vHgWgOwUA
-WWa9JxYULhIXKSIQLTEILVUInl4vkAUmCpUPAgD34DaMIgCdAIgiZYODK5ITKpIULBIUC6oM+UAy
-MJAJJQAtIhIswG8vIAcNiBT5gAQF8N1BAP+BQAeR/wEACY4BDt0C6ZZxH8cCgACkiCaCni8WEQn5
-CvbANU1SAJ0AKZK/KIKdCYgB6YQABDURgAAYlnwI2AoogpArFh3ks8RkQMEAACwwRCYwRS4iF+ow
-Ri5mAoAABswC5jBHLmYCgAAKzAIIzBEGzAIOzDaoyIYpjiqYHQbuDPnAFVOiAJ0AJyAW9iIGFeD6
-9QB6cW4qIAcelyj6IeYVoyYFAAaqHZoYrqomor764AQA0A4VAADuGv7ALEiiAJ0Ahh8Xlx4MZhGn
-ZoZg98AEAzAHFQAGdjknor+WHnfoB/ohyBWgAHoAKqLBwHEPAgD7wAQFMAYFAAp2OIoe0w8GqgFk
-pWnnEhQh0MEAAOoTHgTwgQAADgJpCmCGDgJnCkCGDgJlwGEmlCAuIhb/J+YdqO4dAP8nxh2o7h0A
-/yemHajuHQAulDyKXvsmZh2oqh0A+yZGHaiqHQD7JiYdqKodACqUMCdyEfcnZh3opx0A+ydGHaiq
-HQD7JyYdqKodACqUOPah5hXgBgUA5lYXJY+pgADslCcksYEAAOYWCSTxQQAA/iCmFah8HQD3JMYd
-6HcdAPckph3odx0AJ5Qk/mMoFaAHBQD3JGYd4AcFACeUIuTiQmG5wQAA/4EADzAGBQAmVhbulhUh
-0aEAAOpGAASxYQAABgiKKjIZDswMDqoM6jYZJRRxgAAsMhsqMhqs7H7LAiqsASw2Gyo2GsCgIyEH
-9yvyBaBuBQD7QACGOjMBAO7MCgmfAoAABjMCJhIYk5CHIPMtbAXgTgUAnpMuEhELNjkTloDmlgIm
-YD0AAPZDRBWkzB0A4+4KC54CgAADwwKTkROWeS7inwhmEJaWA+4B45b5HraCgAAG7gIWlgYD7gL/
-IOYVoe4xAK5mJmCAHpYCBoYMDncC55YEJVAFAADmlgUlgHGAABaW7IkVBqYClpArIhWKKZgdqLuo
-qpopKyYVDPkRpJkslp0rIBYnCv93sQcqIAeMHVgsVy4SFC3iES/iFOhSCCboBQAA7eYRJ/gFAAD/
-woYV75yVAOxUBSRgYYAAhlnAIJJbmGCJWJaRkljyoSYVoAIFANEPAAAALxYaLRYbLBYcKRYe6iQA
-DFgEgABYLIuIHSkSHisSHSwSHC0SG+8SGiVpiYAAilhlq7qNLx6Wwu5WCyLYgQAA69YAIWDhAACc
-WJ1Z+kHmFeACBQDRD8CgZb6UHpZlIyEHLBIYFpWdAwNK6+w5CZ8CgAAGMwKTkBaWLCMSEf5ACBWg
-SgUAmpOckvZgAQGwDFUA6iEaLzYCgAAMZgKWkRaWIyMynwiqEJqWBjMB5pajHtaCgAAKMwIalbAG
-MwLzIOYV4TMxAKOqKqCAE5WsCooMA+4CnpT7IKYVr/ruAAAAAP/xmA2gDAUAAC5SFgPuCi7iHGTg
-bg7ONi6WFSZSFgdmC7hm5mYABNFhAAAKDIomUhYHZgqKYA6qDJpgJlIWlhwHZgqGYCcWGe7MDAMA
-8YAAjBwHzAuDw4rCo+N+OwGxqpPD+4BGFa/2ogCGHGRhoCpSF8Dg7lYWJVAFAADqVhcjuGEAAIMZ
-/47gDeAKBQAmUhaWHIYcKhYfB24KjuD0JAYV4KoBAAOlCg7ONp5QJRIgJVIWB1UL6hYHIqghAAAF
-gIgDpQsqEiC4VQUQiiqiFgeqCoWgDlUMlaAqEiAnFhkmohYqEh+WHAdmCoZgDswMJRIg5WBIZVAF
-AACGHMprLlIXwGD2osYVoAYFAOYWDCdwBQAA7lYXI7hhAACGFy48GObjOQ57fgAAY/5MwGH2osYV
-oA4VAP4hhhWv/4oAAIwcB8wLh8ODwqfnlxZ+ewGxM5PChhb3gGYVr/iCABqVGIqo90ASWJIAnQAo
-EhLsEhYsRwKAAKSIK4Ke/WASa6IAnQAZlRAmEhIlgp0JZgomYr8GVQFkUjUclQmwq5vI+r+2UJIA
-nQBgATouEhMt4hP9wMYV7932AAAA6iQACdgEgADtMQgsYASAAFgFPGSiQYinL4kUy/GLiSggBfoi
-ZhXgNuUA9wAQlCIAnQDEkvkAEERiAJ0Aw839ABF1IgCdAPNAaB2v2B4AAAD//ywNoAsFAMDh/qLG
-Fa/5ugAAAAAAAADqJAAK2ASAAPxgaB2gjeUAWCtWwCDRDwAAHpTqihgHdwnuqggLvwKAAKp3J30K
-KnHCJnHBJ3HFCmYB9t/UuuAKFQArEhH6QGgdoAwVAPtiQBXgDQUAWC1+Y/zSiDcsiRTVMOcWFCYJ
-EYAA8wEoFe/kmgAclfSPkC4iGI0ghlD/zpAVoApVAPYgBhWgOwUAWWT6wCDRD8dv9iLmFa/jIgAA
-/+WADaAIBQAAACsSEfpAaB2gDBUA+2MAFeANxQBYLWRj/GqMImXIJYsb+kBoHaAMFQDtEhYl2GEA
-AFgtXcAg0Q+MImXIBysgQfpAaB2gDBUA+2JAFeANBQBYLVXAINEPLDAU/EwGHa/WQgAAAAAAAOok
-AAroBIAA7jILKdgEgADvMgcsYASAAFgBc8Ag0Q8A/9Q8DaAFBQDaIFuzLBKVfQumEeYiCAUDyYAA
-DOowKyKFi7Cwouy7CAlQBIAAWWZAHJWzKsKf+kAEANALFQAAuxoLqgIqxp9ZZnXAINEPxcL8QKYd
-r9byAP/gIA2gAwUAwKBZYEoalIGKqPlf7ViSAJ0A//dcDaAFBQDAUByUfMC6C6s0+4EGFe/3FgAA
-AAAA+gDiHaALFQBYJQgsIn/8UGYVoAIFANEP/CFIFaCNRQDttQgq6ASAAFkehcAg0Q8A6iQACdgE
-gAD8IUgVoI2FAFkfvcAg0Q8A/CFIFaCOVQDutQgq6ASAAFkeecAg0Q8AbBAEhifCeeZiDiGZA4AA
-yzjsRAAK6ASAAOokAAnYBIAAW8ImyqH0YAXxEChFAClhErGZKWUSKiAF+UAGXCArdQD7QAacYgCd
-ANEPbzUCbzNO/H6AgtArZQAqIAV7oenrNAAJUASAAPygaB3gDAUAW8ITZK/TLCAFd8F265VrGVAE
-gABYvuWNZ4pmsdvtu1J1cAUAAJtnnmbRDwAAAAAAAOokAAnYBIAA7EQACugEgABbwgJkr5L8aEAC
-UCiFAClhFymcASllFy8gBfn/+90iAJ0AJyQF+kBoHaGbBQBYvs7RD5tnmmbRDyphE7GqKmUT0Q/C
-tfpAph3v/g4ALGEWscwsZRbRDwAAKyQF+kBoHaBrRQBYvsHRD/pAaB2gLYUA/ECmHeGbBQBYvrvR
-DwAAAGwQCoc09ykQBaN3gQAHeAkMiBGoZitif+QwMyWBwYAAGpQQLW0CLdAALqKRKqKbDt0ICd0R
-/UAARXAMFQBZT58pbQIpnIApkHnulwd9MASAAH+fA9EPAADqNAAI2ASAAFj6RMivwKL9KkoFoDsl
-AFlkLtEPAADbcOwxCitQBIAAWPot56QABQTZgADacOxEAAHYgQAAWPkaZa+49gUiHaAuhQD+BOId
-4C1VAPSABMiQLEUA9IAIsRIAnQD0gAmpkgCdAGhEjWlFiipwBdMP/UAODCIAnQD9QA60YgCdAHri
-B/9ADXHiAJ0A91/7PSIAnQAqfGj6JAAV4Aw1AFj49WWvUSocGPrnABXgDIUAWPjx90AO4JIAnQDa
-IFj449EPAAAAKzEK+sBoHau7AQBY+SrnpAANer4AAMCi/SniBaA7JQBZY/nRDwDacPogaB3gCDUA
-bYoVLKBoJLAg/IAPDSIAnQDqrAEl2AUAACpwBcKUeaEufaFBeuI2f6IzB3oC+iBoHeAMhQDTD23K
-FS2wGCygSOqsASXYBQAA/aALVSIAnQDaIFj4wNEPAAAAAAAAAPdf9QUiAJ0A7DwmK9AEgAD8oGgd
-4AslAFv/QdEPKnAFfKEX/UAHjGIAnQD63/OrIgCdAP9f82tiAJ0A2iBY+K7RDwAAKnAFfKEIfaE6
-euIvf6Is2nD6IGgd4A01AG3aFSygaC2wIP2gCrUiAJ0A6qwBJdgFAADaIFj4n9EPAAAA91/xBSIA
-nQDacPogaB3gDjUAbeoVLKBoLbAg/aAJjSIAnQDqrAEl2AUAANpw+iBoHeAPhQBt+hUsoEgtsBj9
-oAb1IgCdAOqsASXYBQAA+uBoHaALNQD8oGgd4AwFAFv/ENEPK3xo+iQAFaAMNQBY+I1lra/aIFj4
-gNEPAAAAAADqdAAI2ASAAFj4L8muiaeJnsCBKJR+0Q/64GgdoAs1APygaB3gDAUAW/790Q/Aov0p
-EgWgOyUAWWOQ0Q8AAAAA+uBoHaALNQD8oGgd4AwFAFv+89EPAAAA/YDWDe/69QDAofdf9GCSAJ0A
-KhEB8V/0DxIAnQDsPCYr0ASAAPygaB3gCyUAW/7m0Q8AAAAAAAD1gNYNr/r1AMChZa0GY/4a/YDW
-De/69QDAofdf+QCSAJ0AAioCWPhQ0Q8AAAAAAAD9gNYN7/r1AMChZazWY/6l/YDWDe/79QDAsWS+
-zep0AAroBIAA/GTAFaALRQBb/szRDwAAAAAAAGwQFiIWIucSIivgBIAALXAH/sBoHaBKdQD+4LAV
-4EtlAPwgphWh3QEA7RYOKZAEgADr8Qx26GEAAPvgOn0iAJ0AJHEijH6dFJUZIyAVGJOMihUvIAMp
-cEEmIhOi/wmZCQpmNv8gABS/+gUA6YgIB/j9AAAK/wGK8SiCf+gWDSfYQQAA+8A1MqEzIQDA0P4h
-BhXgBQUADe8MHZNdLdJ/CcwRrNwswTf0IOYVp/31AHzbChSTmvIgxhXgAEoAJEoABMQ28iDGFe9E
-AQAck/Iswn/vAgAOGASAAPvABLqiAJ0AjRgPqgyI05wTjdKo+Jgaf4sBsd2SHO0SCi7gBIAA9sAu
-sJAPBQCSHPdALmCSAJ0AwCBtCFoKaDQDKQoISDSYkAMoCy2GAyyGAimSAAlmDAmqDA2YCOgWDyEQ
-BQAA6YsHfmgEgAAtzAHs1AAH+AUAAO0SDyEMMQAA8mMAFeACBQD2wCsgkgCdAPdAKuCSAJ0AY/+e
-nBOSHAtdCwtaCoqgidON0g+qDKn5mRt/mwfiFgwm6AUAANzQ/CFoFeAPBQD+I+YV4AIFAPbABQCS
-AJ0A/iQGFaAAzgAAACgSH+joCAKoBQAA6BYfIowxAAD7YwAV4AUFAAtcCwtaCoqgjcPswgIjDZuA
-AP9c8A3gDgUAamHHbQhOAykLAy8KCmg0CEg0CGYMCKoMmPCcki2WA+2PCAEQBQAA6PsHfmgEgAAt
-zAHs1AAHcAUAAOghDG/oBIAA8mMAFeACBQBkr3323/vQkgCdAGP/qgAALhIggxP2IYgVoAgFAJgQ
-iBUmYhMrcBYuFhz4wQALMPn1AHmxGowZ+ugwFafMAQD9n8AVoAkVAAycOVgpUmSlBy0SH+mSiRaf
-OYAAFZN9ix0ekoWNHoQXLRYS7NIRDu+CgAD4QABBfYQdAO7dCAolAoAA9IYACnarAQD8IgYV4AUF
-APQjphXiy0EA4hYULmYCgAD9RgANMA8VAOQWGCPhIQAA7BYVLEUCgADyIMgVoLs5AOQWEy3dQoAA
-+wYADHAOBQD7JSAF4AUFAPsGAAwwPVUA6xYRI9FxAAD6IsYVoAQFAOgWGiPBgQAA6BYXIRNJAADz
-4gAPMDxlAP+tAA4wAgUA/CMmFaAAPgAtEh/8oBmkYgCdAMDlDl4v5OJkYqgFAAAkTQEkTIAqcQcb
-klvyQAEGeqoBAOmTHh1XAoAAC6oCmkCPcPiARhXgSEUAmEP94AAXsAiFAAj/Ap9BjsAtCgT+6DAV
-4e4BAA7dDC4SGuwWGy/8AoAAD+4CH5MX+CKoFeHdAQAtFh4P7gIuRgQuEhj9gAgVoA8FAC9FCi5G
-Bg3MCO2TKBZg8QAALEULLUYH6QMeAkCBAAAIAmH85UQV4AoFACpENfyFph3gCwUA+obmHeAIBQAo
-RDP+heYd4AkFAPiGhh3gDgUALkQu+COoFeAOBQD+hgYdoA8FAP6GJh3gCAUA+IZGHaALBQArRDb6
-IsgV6N0dAC1ELPjq8BWvzAEACckI6RYdIlDxAAD4h2YdqIgdAPiHRh2oiB0A+IcmHaiIHQD4hwYd
-oAxFAFla5OkSFyJRAQAACSCICgSKCQCICgCKLHIcKxIf/IpmHajMHQD8ikYdqMwdAPyKJh2ozB0A
-LERQe1kz/CPIFeBOJQAudHQekyEqTEX6IGgd4d0BAP+mAA6wDpUA7nRlLu4CgAD8IAYV4Aw1AFla
-ySoSHC9xNQMrCygSGSh0V+2yAyf4BQAAL3U1LxIbHpLeLkYWjPAtRhksRheIf4nwi7IrRhiqmip2
-HI/wCWYMKhYc6P8IARAFAADvdg8hDDEAAPJjABXgAgUAGpHj+iPIFeAJVQAJWS8qRhrkuwgF4CEA
-ACxGGypwdOq0dCzulgAALRIfBd0MLdwB97/uCVIAnQAoEhQvEhMvhp0rcBYuCv9+sQgqcEEsEh1Y
-KFwtEhOMHCsSHJvLlseJcsSn6nQFJIjhgADRDy0SHy4SEtMPBd0M/aAgFeAKVQAK3TYN3RHtFhMn
-JVEAAC4SFNMP0w8u4p4PAgD9wAej4gCdACgSECQSFCiCvyRCnQhEAWRPoCkSEf6AaB2gCgUA6QAF
-Bup5gABtCA/uDAAFUAUAAP1f6eRiAJ0AY//pGpGaiqj3QAWgkgCdACsSFCuynv1gBkviAJ0AKBIQ
-JBIUKIK/JEKdCEQBZEC0G5GPsKn5YQYV7/56AACOHvwiZhXgDAUA7BYdL3cCgACp7i4WFCkSFCgS
-EyiWnStwFi8K/3+xCCpwQSwSHVgoHoocKqATyK+LHIx/i7Z8uQfEyCx0BdEPAMTWLXQF0Q8AjbMv
-Fh+MsvtgCBWv61IAAP//sA2gAgUA2nD6IIgV4AwVAFgqG9EPAP/8bA2gBAUA/CQmFeAKBQBZXTAa
-kWiKqC0SIflf+ciSAJ0A//vgDaAEBQDAQByRYcC6C6s0+4EGFe/7mgCF9KpV5eNzfWgEgAD0IEYV
-4AgFAPggJhWgBQUAiBGNEuVcASRAEQAA6BYBJCRRAAD7YwAV4AkFAPggJhXgBQUAiBGriIiArYiY
-Enjrzp8Y/d/IquIAnQD/rwAPv+RCANEPAAApcEH5IkAV4A0FAPgghhXv+FIAAAAAAAD//zgNoAUF
-AGwQCJQRJyIHJjEL+EDwFeBKhQD84oIV4ExlAPhAsBWgS1UA9tiAFaGZAQDlcgkmjEmAAPsAEU0i
-AJ0AKFASyIvpFgUj0EEAAFgg64kVhFCVEvQgZhXnRMEA9IAWmx/NBQAoEgMoggoqMF/3ABfTogCd
-AOyRIhyoBIAA5KFNYzjdAAAHRxS0d/UgCoISAJ0AGpEcDJgRqogqgp73QB/T4gCdACiCnQyaCiqi
-vwqIARWSQZgQ6BYEJBXZgAAckTgMAIdteQIIAmH0gB2LEgCdAC0wXxyRGhmRUuswXi6NfgAAw+P+
-gAscIgCdAPSACxMSAJ0AjxIv8BNk8V2EEo0vhEb8gBzlYgCdAGWxf8DwjRMo0AfuIQcv1gKAAAqI
-ApjRKCAHKyEI/0AABzCoEQDs7hENUoKAAAruAvnGAA9xiAEA6hIELEwCgAAJuQIbkTaeoI4gnKKb
-pguZAvlAhhXgCwUAm6Wbp/3AABcwC0UA6+4CBWCBAAD/QCYVoDsFAOumAy7IBIAACSCGDAJjCQCG
-DAJhHZDb6xIDLGcCgACtzCfGnYuw+vgABfA8JQB8sWXaIFgbedEPAAAA+wAF5SAFBQDA4C7gEmXu
-d2P+gS8wXmX+sP/6yA2gB0UAAAAbkMaKuPdAF2CSAJ0AHpDGDFgRrogugp73wBf74gCdACiCnQxe
-Ci7ivw6IAWSC7bCv/2EGFe/6egAmIRQjIRL+2QAN4AQFAOpSQinYBIAA/AACHaANFQBYHeMoUkPk
-TAEhmAUAAAgzLnZJ22P/ZGS+vmAAOwBkvrdgADQAAGS+r2AALAAA/R/uvCIAnQD7H+58YgCdAGP/
-PwAAAAAA/R/6JCIAnQD7H/nkYgCdAGP/JywgB4oQHpDk+kEEFeDcEQD1sAAWscwBAO7dAg5kAoAA
-DLsCnaAdkKP8QAgVoA8FAO+mBSNwYQAAnqPuEgMjIN0AAP1ARhXkRB0A7ZG4HmYCgAAMTAKcoQ27
-ApukDgSJlqedpgogiywgDOamBy5kAoAADLsC66YEK2AEgADrPFQlUKEAAFlZWo4QGZDD7JCJGkcC
-gAD5wABHMI+VAP4ghhWv94oAAIonhxHsoRUrvwKAAOc3CAVQgQAADaoBqsrqrEArwASAAPrgDpqi
-AJ0A+CBmFa/0EgAAAAAAAAAA9wBoHa/0GgAAAIwiZMGY9J/xwxIAnQCHJy55FCZSveThfWPQgQAA
-hXklUAfAsOxkAAroBIAAWB4ChyeJePjipBWvzQUA6nILI9iBAAANtAGkiOiMQC3gBIAA+UALVGIA
-nQCNES55FAzdEa2are4udRT7AAtbogCdAMozjhHvlAAHAPmAAG3pBQNAhg8CZYwnirAPAgAPAgDt
-qggGYIEAAPlADqQiAJ0AmrAt+sCHwIvDjiAowQWKEQ3CAeKICA92AoAADqoC6pYBJEEBAAD3YAg0
-YgCdAC/JBAxZEal6Cf8IL8UE+wAKQ6IAnQDJaAZjAu90AAKAmYAAbVkFA2CGDwJnKsIACaoI+UAL
-vCIAnQCawNEPiieNEcDA6qwgLtgEgABYHceaEvogZhWv8PIAAP/wSA2gCAUAdNsUjxINTgzu9gYt
-7v4AAP4RYh3v8WYAihIE2AzopgYt7lYAAP4Rgh3v8RIAAAAA+CCmFeAKBQBZW84bkAaKuIkVHJAG
-+V/n+JIAnQD/7vQNoAgFAADAgMDKDKw0/WEGFa/utgAAAAD/+hQNoAUFAOucGCvoBIAA+kBoHaAM
-FQBYKKFj/lAAAPzvAAw/+LYA+UBoHeAOBQD+4WYVr/tmAMDwn8PRDwAA6YcMAYHhgACMEQdKFO6s
-CCnABIAA7sw2DPgEgABtyQUIgIYPAmmPEac46v8MAlEBAABt+QUIoIYKAmuMJyzMIAfeDK5OLuxA
-/2AGFa/5+gDniwwDAbGAAAtKFO2sCCv4BIAA7V02C0AEgADTD23ZBQjAhg8CbQtoCOpeDAFRAQAA
-bekFCOCGCgJvC58Mry8v/ECfwNEPAAAoTED5YAYVr/iuACksQJnA0Q8AAGwQCBmQ8SmSfy2RAuuR
-BSkwBIAA/SCEFaAHBQDqkgAmkwmAAOUWBCbz/QAA7pUCJmP9AADlkOYeZwKAAOyqCA3fAoAA+08A
-DXAAygAokQXqkQQkQAUAAP0gCBWviAEAKJUF+UAPxCIAnQCwqgyqEerKCAxfAoAAC6oMCgCHB4dg
-6gAHBHMjgAAqkQUbj6LiUkItVkKAAKqIKbKG+CAmFa+IAQCYEqiYCYgRqCKNJ/6oAh2vyAUA59UU
-JuCBAADozAEF2A8AAO7VFSZhAQAA7NYIIUiBAADs1gkhUSEAAOsABQFhOQAACQJhCQJhCQJhCQJh
-CQJhCQJhK2AEnBOOYPVgDJKSAJ0AL2IWJVJC6WEiI1lFAADrFgUvxkKAAKhVjVgoUHyfLe4mDiN5
-OQAAnxAt0AQpJSL4SCYdoB7FAP+gCVQiAJ0A+q5AFeAMZQBZWE2KE/qtgBXgDGUAWVhKhRCLFfpM
-IBWgDDUAWVhG21D6S6AVoAw1AFlYQ4lpFZCU+EFmFe/IBQDnJgwkgDGAAJKckmmKJylgFi1gBy5h
-CS9hByxgDStS0iZgDC4lCS0kBykkFiYkDO8lByWwBQAA/EGmHaALZQArJAQmVtKMFOwlCCV4gQAA
-+eAEAzBM9QAsJAUloRWLqImrplXnJgIiqQEAAPsgB0xiAJ0AKKkUDEcRq3mniCilFPigBwviAJ0A
-yTHIT9mwbUkFAwCGCQJhKfIAB5kI9SAIdGIAnQCZ8I4g7RICL2YCgAAMTAIstgHskGQW0CMAACol
-NvogKBXgClUA+kEkHeA7JQBZX2DRDyeVBf/4FA2gCAUAAAAA5fQAD9gEgABYqhmKE4sVWKoYY/7e
-wKX9IKgFoDslAFlfVMAg0Q8AAAAfkAyIYC1gfC5hKS4lIi0kQegmDSNZyQAA/kHGFeAMZQBZV/OK
-E/rNgBXgDGUAWVfwiWuZK+cmDCSAMYAAkpwo+sDywWYVr/riAJer+yBoHe/9JgAAAADrWgwBgbGA
-AApOFOzsCCnABIAA7Ew2DcgEgADTD23JBQgghgkCYwo4CO5NDANJAQAAbdkFCECGCQJlCn4Mrm4u
-7ED/4AYVr/vyAChsQPngBhWv+8YAAAAAbBAS5DIEKngEgADWIA8CAPMexAWjRIEABEQJDEQRBCII
-JCJ/7jELIgWZgAAuFhQmFhMZjufqkAYRQAsAACiAACmSkSUWEiqiXumICApYBIAA7xYRLEZCgAD5
-QABFMAwVAFlKci8wMykwMC4wN+qgBy1gBIAAJTA0JjA1/GbQFeGqAQDqFhcqrgKAAAZVAuYigyHY
-4QAA6jAxLu4CgADu3QINuASAAO4xCizOAoAA6pkCAwIxgACKZ+qiDiSNEQAA/S2AAVAO5QD1IAVh
-kgCdAGiUCfUgEqKSAJ0A0Q9p8vpkb/crFhDsFgkh6OkAAPwixhXgBHoAAAD9OICA0AoFAPXgJgiS
-AJ0A6xYQL5c8AACPNg8fUu4WGSeluYAA6sQACuAEgABY+evRDwAAAAAAAPXgDQiSAJ0AafKfGI/F
-KIF+8QAP31IAnQAuMDjAmH6SiWrnhvXAJ1uSAJ0AK6EjsbsrpSMqEhMsEhHtEhIp2ASAAFkHNdEP
-APX/+viSAJ0A+f/6uVIAnQBkX0/yAoId4AQFAPoiBhXgA2oAAAAocAEHhwqkhHVLYylwAH+Z7i5w
-AihwAyphGQjuEQjuAvtgAAU77gEAeunUKC0CKIyAKIB7A4gRCOgCKGUZiBgvgRvaYOwSESnYBIAA
-7RISJ/gFAAD/A2Qd4A5lAFj4GylwAQeXCqSU9JQWDeAP5QCGactoihkqoBbqZBYjWQEAAPoiyBWg
-DGUAWPl+/14MDeAP5QCJZ/YiCBXgBAUA6ZIOIv5xgAD4IQYV7/2KANEPAAAAAPtf9D1iAJ0AHI+P
-DwIADDMBLXABB9cKpNT0gB8a4gCdACpwAGiiMP1aoIJQC7UAJiKDxu/uMwEDcpmAALR/nxSKFPrJ
-ABXgDGUAWPlhZK/Ahmllb+pj/jImIoPHi+gzAQNxUYAAsnkpFhUqEhX6yAAV4AxlAFj5VmSvlYZp
-ZW/pY/4HAAAuMDjAqH6iB/nAGnuSAJ0AwLn73++FYgCdAByPai8wQy4wQi0wQSowPZoQKTA+mRH4
-Z/AVoDslAPggRhWgCkUAWV5gKhITLBIR7RISKdgEgABY+UrRDyoSEywSEe0SEinYBIAAW/oN0Q8A
-ABiOJIozEo9CKIJ/IiJeqogJiBGoIoonK6kUZLKKi6kfjhkpEheHsOWOGB2wBIAA+yBoHaALpQD1
-IBOqF3fBAAyZEaWVKFKe/wAdq6IAnQApUp0PrQot0r8NmQHVkPCmrA3gOgUAjiJk4236/+ltIgCd
-AIknFY7+L5kUJVJ/5PNPZNCBAAArkgkmsAcFXAL8wGgd4AsFAFgbpoon2zDsEhElUIEAAFggRo0g
-LBIRiycI3RENzALspgEl0IEAAOtUAAtgBIAAWCA+0Q8ALiAHGI42Di9A7BYJL/qCgAAI/wKfUIgg
-HY34/KBGFeCJxQDpVgMsRgKAAAuIAphRenEZiictEhHAwOqsIC7YBIAAWBuI7iAHLTAEgAAbjwos
-IQj+IAAGsAcFAOdWBS7sAoAADcwCC8wCLFYEBgSJ5SAXAtChAAD6oMYV4HxFAOxWByHZUQAAWVar
-Go7uiy0qol79aAAVsAxlAOuqCAHYBwAA6hYPJVGxAADqFg0l2ykAAFlWoIof9megFeAMNQDqrEgr
-2ASAAFlWm4sfDwIADwIAi7fqjtkV2EEAAJsbW6yQHI7WHY3ujx8ejurqEgstWASAAI/wW6xFih+K
-pyqsEJoeW6wi9UARoJIAnQDbcPrDIBWgDDUAWVaHKzxB+sOgFaAMNQBZVoODHfpAaB2gBwUA+sDw
-FeAN5QDrZgEi4AcAAOzMoCtYBIAAWRHWHo7THY7TGo7TH47PDU0Cl6+Xrpetl6yXq5eql6mXqJen
-l6aXpZekl6OXopeh56YAKdgEgAD/0AQd4AhFAPnH5hWgDGUA7eY+JVApAABZVmYYjniKGSiCzRuO
-v/wAgh2gDVUAC4AA2iBYGCfRDymgULGZKaRQ0Q8A7hIULlAEgADvEhkq4ASAAFj5XdEPAAAA//XM
-DaALBQAdjXON2CkWGPegDKCSAJ0ADKkRpZUoUp7/AA2TogCdAClSnQ+uCi7ivw6ZAWSRoBiNZ7Df
-n4j1IGgd7/XOAAAAKhITLBIR7RISKdgEgABY/PDRDymhIbGZ+UQkHe/sYgBlOof2IggV4AQFAPAA
-ZA2gDbUAAIM5zzkrcAEHtwqktPSABGLgDbUALHAAfcnpZGpZiWrjlAAE/wmAAOkWBSP4JQAA7xYH
-I/AxAADuFgYjkAkAANog+m2AFeAMZQBY+Fxlr7CKF/ppABXgDDUAWPhYZa+gihb6aAAV4AxlAFj4
-VGWvkIgVc4FaKYAFwqx6mYf6YGgdoAsVAFj+JdowWP3h2jD6CiId4AwFAFj37mP/Z4tni74qsRyx
-qiq1HNEPAAD/8tANoAsFAPpAaB2gG8UA/AAiHaAN5QBYJdH/8ewNoDoFANpgWP7aY/8sAAAAAAD/
-8VwNoAkFAIoeW6uwHI4BC60R7cwIBQO5gAAN6jArwoWLsLCqmhqtu1lexRyOOY0aKsKL+6AEANAL
-FQAAuxoLqgIqxotZXvlj/YwAAAAAAPwhJhWgCgUAWVjQHY0IjBmN2B+NCPojCBWgDuUA+b/yeJAL
-pQD/+bQNoAkFAADAkB+M/wveNP/hBhWv+XIAnBz6AOIdoAsVAFgdjIkcKJJ/+TBmFa/00gBsEAgp
-MQ8rMCwfjPfsMC0svcYAABaNju6OLB3eAoAA/WYADb/6tQD3ZsYNoAc1AByOJx2OJ/1gBSQiAJ0A
-/WAXvGIAnQAYjdoZjWH5YA3cIgCdAPlgFkxiAJ0AwCDRDwAAizQo8of33WgVo5uBAO2XB3zgBIAA
-CpwBrIgJiBGoZvNgFmJSAJ0AKzA39WAoyJIAnQD9eIADUBkVAHm5vCowQiswQwiqEftGAA1wSzUA
-e6moKzBELDBFCLsR/WYADbBMRQB8uZTqJAAJ2ASAAOxEAAroBIAAWPEywCDRD4s0KTAuLDAvLTAx
-/SAAFLMrgQDsmQIJIASAAOwwMCSMMQAA+T/6u1IAnQAIzBENzAL3n/pNIgCdACUwNCgwNQhVEQhV
-AmhRB/i/+ZFSAJ0ALTBGKTBHFo1j7DBILu4CgAAJ3QLpMEku7gKAAAzdAuiN4h7uAoAACd0CBtYB
-+N/37CIAnQAYjXAZjOcI2AH5H/dkYgCdAH0nAgokASjyhyLi6w8CAKSICYgRqCLxYBWiUgCdACYx
-Cg8CAAYKS/dAFTESAJ0AGY3N+yAU2yIAnQDqJAALWASAAFjxSvwAIh2gDQUA+4IADrALBQANyzjq
-ojkF9GGAACgwNS0wRi4wRy8wSOUwNC7uAoAADt0C7jBJLu4CgADv3QIKrgKAAOhVAg7uAoAA/6YA
-DrAI+gAdjUMnMQoZjbOIMoI0KzBFLDBE+xqOBaMigQDvAgAN3AKAAPkABHziAJ0AKPJ/iTOomSji
-6wmZEamI6BYGJi0JgAANuQF6mXjNjCoxJnaiDSziFCut+P1gGwOiAJ0AwKDqFgYlb2mAACswPPV/
-7xCSAJ0A9WAiuZIAnQD1YBqakgCdAPVgIvuSAJ0AwuL/f+4EIgCdAMLz/3/ttWIAnQDqEgYp2ASA
-AOxEAAroBIAAWQ+QwCDRD+24AQYlqYAAeoGI83/sYlIAnQAajYPiKwkB4IEAAOwWBS3fAoAAq6rq
-on8r2ASAAFkTo+akAA0EJgAAHI16LzA/LjA+/GewFeAKVQDyIAYVoDslAFlcZsAg0Q8AAAAAAOok
-AAnYBIAA7EQACugEgABb/TnAINEPAOokAAnYBIAA7EQACugEgABZFMvAINEPAOsxCitQBIAAWPDh
-/AAiHeAOBQD7ogAPMAwFAA7cOOqmOQ5otgAAY/zhAADbcOwSBSHpBQAAWRNP4qQADQBuAAD2wAgV
-4AAeAACHoByNUygwQy8wQi4wQS0wPPYgJhXgClUA+CAGFaA7JQBZXD3bMOImOQpgBIAA+sBoHaP9
-9QBb/EErPDzzQGgdoBwFAOehNiVRcQAAWVTcKhwQ+GTEFeAMNQDpJTYhMXUAAOclNytYBIAAWVTV
-LyBhLiBiLmQB72QAINhBAAD8THAV4Aw1AO1kAiFRhQAAWVTM6iQACdgEgADsRAAK6ASAAFgDc8Ag
-0Q8WjIAcjSopMD6OJy8wPCgwPY7u7hYHL/4CgAAI/wLoMD8v/gKAAAn/Av/VSBWgClUA9CAmFeA7
-RQDtFgAv/gKAAOj/AgpoBIAAWVwJKzBGLDBHhRftMEgt3gKAAAy7AuwwSS3eAoAADbsCCLsR7LsC
-CtAEgABY76Bkq54qUpD1QA5REgCdAPVADhGSAJ0AKzA8LDA97TA+Ld4CgAAMuwLsMD8t3gKAAA27
-Agi7EQy7AigwNS8wNJsQJTBGJzBH7Iz8GmgEgADpMEgqrgKAAPamAArwClUA5zBJKq4CgADpVQIP
-/gKAAOj/AgquAoAA51UCC3AEgAD0ICYV4DtFAFlb3CkwNCowNQiZEQqZAvUgDbCSAJ0A+T/YCVIA
-nQAejOUtIRssMD0rMDz/oAQGu+YBAA7dAu4wPi3eAoAADLsC7DA/Ld4CgADuuwIJUASAAP1gABW/
-3QEA7LsCAeDZAABY7wDAINEPAI1gLmA5/mhQFeAKVQD9GaAFoDtFAFlbvMAg0Q8r8oYs4uuquhuM
-zAmqEarK+0AARX/ySgCMFizABcTW/Z/TpWIAnQCJFomXLZkUZNF6i5kajG6OFiywBymwFS3gaPvF
-RB2gD4UAL+Rn/8yGHeAIFQD5y4YdoA8FAC/kZu/kZSboBQAALeRo+mnQFaAo1QD8afAV4ZkhAP/G
-pB3gTxUA7+R0LVYCgADtqgIEy0kAAPvG5B2gLeUACY04LeRXKrAV+s4ADTAJNQB6kAUosBQo5GCK
-Fi4yFe8yFiroBIAAW/gqwCDRDwArMDwtMD0sUobuMD4t3gKAAA27Au0wPy3eAoAADrsCCLsRDbsC
-+5/x3WIAnQBoowInVpDApf0ZHgWgO0UAWVt5wCDRDwAAAAAAAADqEgYp2ASAAOxEAAroBIAAWQ6E
-wCDRDwDqEgYp2ASAAOxEAAroBIAAW/n3wCDRDwAvMD0sMDwtMEYoMEfuMEguZgKAAO/MAg7uAoAA
-CN0CLzBJ6DA+Lu4CgADu3QIJUASAAO4wPy5mAoAA6MwCDu4CgAD/pgAO8AslAO88Ni5mAoAA7swC
-D/AEgABY7tnAINEPAAAAAAAAAP/6DA2gCwUAACoxJg8CAA8CAHaiCCniFCit+HmDIcCg6hYGJUY5
-gADqEgYp2ASAAOxEAAroBIAAWRKRwCDRDwAr8oYs4uuquhuMUQmqEarK+0AARX//MgAdjE8u0X4s
-0kAp1X8J7gLu1X4mYAUAAP2oBhWgAgUA0Q9lj6tj/4kAbBAGJTAHHIr4For5+ZAQFeFVAQDrivYa
-1wKAAAaqCOiiniTI3QAA+qABBvSZHQDt0r8kyCEAAPkABmviAJ0AKaKdDZkB65QABIY5gAAeiw8O
-AIcJAmEJAmEJAmEJAmEJAmEYjC35F8QF4AwVAPpACBWgDgUA/iAmFaANBQD4IAYV4A8FAPggRhWg
-DjUAWBzSLDEHHYrj+xhCBerMAQDviuMeZwKAAA3MApyg+EAIFeAYBQCYo5+i65sCDM4CgAD7QIYV
-4AslAAuZAvlAJhXgCxUAK6QZDF4R98AARzANVQAt5p34YEgV4Ax1ACwkBCs0eAuZApkyj0THhwj/
-AZ9E0Q8AAAAAAAAA//zkDaAJBQCNMsjS0Q8AAC3AgO3cNynQBIAA+qMAFeTdHQD9oQAV4AwVAFgj
-WdEPbBAIHIqqJCAHjsgViqvAmvfAEmCRRAEAKFKuG4qoZIJoK7J/KlKtC6oBZKJesO6eyPdAaB2g
-BxUA7YqdFRHxgAAq0IDvipwVUN0AAP6AABW0qh0A5bsIBVBZAAD0gA2yEgCdACyynvuAFauiAJ0A
-KrKdD0wKLMK/DKoB6hYEJRDZgACMJ8CQKSR2L8kUKCAU58IJJ43hgACKcaqICAhHKCQU9QARVlIA
-nQAUi88cisArcReOc/bhSBWgDwUAL9Yy5tYzL3oCgAD/pyYV6O4dAC7WOAy7Avun5hXvu40A69Y+
-IjHhAACLFChCgioyAC5Cfy1ChC9CgylCgSkWAfwgBhXgDBUA+CBGFaANBQBYHGTqFgQiIGEAAHZJ
-yosniHQtIQf/YoIV4BkFAAmIAvjghhWq3QEA6TIAJ4j5gACDuY409EDwFa//hQAP7gGeNC8gLCsx
-F+mKohy1AoAABv8C7+4CDu8CgAD3FMYFoPQRAP5ghhWhRAEA7oqYH/qCgADv3QIKZAKAAAy7Agm7
-Ag7dAp2ghyD3QEYVoD8FAJ+j+0CGFeAIBQCYpZmm6KYHKcgEgAD84AATsAhFAOh3AgVYgQAA56YB
-JTkBAAAJIIYLAmMJAIYLAmGGMiYmHIkx8yAIGFIAnQDxMcgN4AMFAMCz+kDoFaAMBQD+gAAXsA01
-AOX/CAHwTQAA7vadJVCBAABYF9TSoNEPmhb3wAhgkgCdAAxLEaW7KLKe+wAI86IAnQAqsp0PSAoo
-gr8IqgFkoQyw6fmBBhXv+NoAAAAAAAAAAPcgaB3v+RIA//uMDaADBQDAoFlV2hyKEY7I+d/tUJAJ
-pQD/9uwNoAoFAACKImSg3/ZOxh3gAgUA0Q/AoAnuNP+BBhWv9noAAAAAiyJlv+AdigQt0IDrTBgm
-6N0AAPpAaB2k3R0A/aLAFeAMFQBYIqj2TsYd4AIFANEPAAAAAAAA6iQAC1gEgABbox/9E+oF7/cu
-AADaIOt0AAtgBIAAW6SjiTGaFeOkAA13AoAA7ncIBPdlgADrdAAJUASAAPzAaB3gDAUAW6Ro80AA
-Qf/7RgD/9VwNoAoFAMCgWVWoHInfHYngjsiKFh+J3/nf9xCSAJ0A//TUDaAKBQDAoMD6D+80/4EG
-Fe/0mgAAAAAAAAAA+kBoHaAbxQD84GgdoA0VAFgie/ZOxh3gAgUA0Q8AAABsEAqJJxuJySYgByiZ
-FBqLF/cTkgXhZgEA7rIIJBhZgACEmY9BKEEK+CDmFaAFBQAlJhn3wBnIkA2lAClyruiiFCSbIYAA
-I3KtCDMBZDNYsO6euOk0AAGZ8YAAE4m1IzCAHYm06RYFIZjdAAD+wAAWNDMdAOfMCAGYnQAA9MAV
-ghIAnQAowp7zAB7r4gCdACPCnQ1oCiiCvwgzAWQzFCkgFA+ZCAkJRykkFPUgGdZSAJ0AKgoCWROs
-5YmvHRnmAACWGfQhBhWgCgUAWROCFIrmForoHYnXG4rljxgYiuYlskf54uQV4AwFACy23o7z7IEO
-JEA/AAAogn+P+i+23+2ZAg96AoAA/3ymFejuHQAutuQptuusqvsAAEQ/mY0A6bbqLEZCgACoVSUm
-GZJYKEKCilAuQn8tQoQvQoMpQoHpFgEp2ASAAPwgBhXgDBUA+CBGFaANBQBYG3IkTBjmSc19GASA
-AB6KxSshB4kYhBkciX73IUQVqrsBAO5OAg3fAoAADLwCnKD+oAgV4A0FAJ2rnar9QMYV7/P1AJOp
-k6iepZOnHol0/0BGFaAIRQDjiZUfrgKAAAhVAuWmAS//goAAA/8C/0CGFeAjhQCTo4iZiZgvphQu
-phItphYtphctphgtphktphotphstphwtph0jphMsphAlphHliqEc5gKAAPzGAAs3mcEACYgCmKyW
-reVEAgUYBwAA5YlXEZoBAAD1QqYVoAwFAPQhCBWgJkUA/EDoFeAKBQAqJHePRC7ZFMGA+eYAD7AJ
-RQDvRgQnCNmAAI7ZiOTH2A2IAY3hJCAH6OYELn4CgAAP3QIvICyeFv3AJhXg1BEA6P8CDuqCgAAN
-vQIYiXWf5C/hF/mmAA6xRAEA7TYAKkQCgAAI/wIdiW+IIJ02lTKaNZo3Df8C/mCGFeA/BQDvNgMs
-RgKAAOmIAg9QBIAA6DYBIciBAAAKIIYJAmMKAIYJAmGF4iUmHInhIzxA8yAJyFAOBQDuFgQsisoA
-AI4U+gBiHeAMBQD6QOgVoA01AObuCAp/AoAA5/8IB3ARAADu9p0lUIEAAFgWsNKg0Q8AAAAA//Pc
-DaAEBQCWGvfACdCSAJ0ADGwRp8wowp7zAAqT4gCdACPCnQ1oCiiCvwgzAWQxQLDp+WEGFe/08gAA
-AAAAAP/7nA2gDgUA7xYLKtAEgABZVLQbiOyOuBqKO48b+d/lkJANpQD/8wgNoAMFAIoiZKENwLH6
-TuYd4AIFANEPwDAN7jT/YQYVr/KSAIwiZc/hHYjeLdCA62wYJujdAAD6QGgdpN0dAP2k4BXgDBUA
-WCGCwOH+TuYdoAIFANEPAAAA6xIFKVAEgABboflj/LsAAP0URAWgCkUA/CDoFeAr5QBZWP8rIQfA
-ZPtAAAXwjIUA/2AAFb/4TgDaIOs0AArgBIAAW6N0iRYPAgAPAgApkgHqFgQtZwKAAOwzCAT1fYAA
-6zQACVAEgAD8oGgd4AwFAFujN4sUq6v6IIYV7/pCAAD/8LwNoAMFAP4hZhXgCgUAWVR0G4isjxuO
-uB2IrIYa+d/1eJIAnQD/8CANoAMFAADAMMDKDOw0/WEGFa/v4gAA+kBoHaAbxQD8ACIdoA0VAFgh
-ScCx+k7mHeACBQDRDwBsEASGMMSC+BCCHeA35QD2+AADMDQFAPTHpg2gOjUA90EuDaA8dQDDsXtq
-CveHLg2gPVUAfWIxIiAFdyFK+EjmDaA+1QD+RAYNoI9VAP5hBB3gAhUA0Q8AIiAFdyEO+EFmDaAk
-1QB0IQPAINEPKDAw/R6gAtP79QAqMQj7QmYN4AIVACk1CNEP+GEEHeACFQDRD8Ah0Q8AAGwQBCsw
-PC8xCyYgB/xByBXvxwUA6iIAJ+MRAAD1YA1wkWYBAB6Jj/lgDftQOdUAK+Je7ohpHsZCgACou+iw
-BSe4TQAA74hkG28CgACu3fkADg1kdx0AKdKe9yAOW+IAnQAt0p0PaAoogr8I3QFl0HOJImSRQgUK
-R/lACbFSAJ0AjieM6PvCpBXvwgUA7+ILJ2iBAAAC0gGiu+jpFCXZAQAA/eAMXCIAnQAMTxGvyq+I
-KOUU+2AMC6IAnQDpxAABgMmAAMlBbUkFAwCGCQJhitAPAgAPAgCvqvtADORiAJ0AmtDRDyggBykh
-Bx6Ig/lAAATw+BEA6v8QDM8CgAAPmQIOmQIusQj+QQQdoYgBAOnWACxEAoAA6O4CDVYCgAD+QAgV
-7+kVAOnUGCZI/QAA+WPoFaSZHQAKmQLo1gsv/gKAAA9/Ap/RL7Iemdks1Q8biXXv1gomQMEAAJjT
-H4lzC+sCHogsD88Cm9T/oQYV4AsFAOvWBSbRAQAA7tYCIdlRAABZUPMeiBWLJwxtEf+gAEa/zAUA
-59adJdCBAAD9QAQFMAwFAOy1FCVRAQAAmrmauNEP0Q8AAAAA62wYK+gEgAD6QGgdoAwVAFggrWP+
-pognL4wg9+AEB/AJBQDphRQn+QEAAJ+Jn4jRDwDCgni53inhfn2X2Os0AApgBIAA/KBoHeP69QDq
-JQgpUASAAFj7HdEPAMW16yQFKVAEgABYEpTRDwAAAAAAAP/5BA2gDQUAwMCc69EPAADsuwwBgXGA
-AAtJFLie7k42CdAEgABt6QUKIIYMAmMJSAzrOQgBUQEAAG2JBQlAhgoCZQv5DKkpKZxAmdDRDwAA
-KixAmtDRDwBsEBLdcPwiRhXgCQUAmRCZESggB/SACBXgDzUA6TYAKlgEgAD2gPAV4TgBAPDeAA3n
-VcEAimD0oAuzEgCdACwgBCoVBPWAEUIQPQUALiB8LhUF/KAPvGIAnQDAwRWHvosQGYe96hIBKe8C
-gAD0YArCEgCdAKndKNKe9wAbWdIAnQAt0p0FPgou4r8O3QHuiQceqASAAOiHvBaGuYAALiEH/CKG
-FaruAQDrFhUvdwKAAAjuAp7QjiD9D24F4CgFAJhT7VYCL24CgAAP3QKdUS0gBCoWFigRBfWgDfwS
-AJ0AHoj0CIgJDIgRqO4u4X/1oAoikgCdACgiEigWES0gTC0WEB2I7A09AhiIgQzuEf6hBhWn6x0A
-CO4BDO4CLlUKHojm/KCGFeCK+QCYVg6uAf/YABc4i7kADogCKFYHGIjgLhEE7lULKfeCgAAI7gIu
-VgkoIAcIKEDzEAAUN/71AA6IAihWCww+EQnuCC/mnR6Iz+yI1BKRiYAAjyADOgnrh30dVwKAAK6p
-LZJ/7LsID/4CgAAPfwLrqggDQCEAAJjQnWOaYiiWf/6AJhXgAgUA0Q8ch6ErQSfVQP1gDCwiAJ0A
-//pgDaAMBQAeh2GO6CoWFvfAEXCSAJ0ADD0Rqd0o0p73ABJp0gCdAC3SnQU4CiiCvwjdAeiHVhaR
-2YAA4hYXJxP9AACSiPIi6BWv+g4AAADrRAAJUASAAFu0o8Dz5qQABRERgAApqRRkkTyEqfqAaB3v
-+A4AKCITKBYRLSBQ/CIGFe/6/gAAAAAAAAAAKbAY1bDzIAbX0gCdACtcHfoggBWgDDUAWVAa//e4
-DaAPNQDaEPpKIBXgDDUAWVAVtBr6ScAV4Aw1AFlQEvpKsBWgDzUA+iCkHa/3EgAfiIoYh+4tIRf6
-IgAVoAkFAJmgmaGZopmjmaSZpZmmmacogn+ZqJmpCO4M/8YAD3bNAQD+ImYVop1BAP0oABSw3TkA
-6cwCDuwCgAD9hgAOcA0VAJ0U7BYGINkBAABYECRloIociHL8IggV4ApVAP4iKBWgOyUAWVdFGYcR
-KhIWKxIVLBIU/CJoFeAPNQD/93ANoA4FAADaEPtjIBXgDDUAWU/lY/8ZACkgBCoVBPUgCSqSAJ0A
-aJQdK1xB+iCAFaAMNQBZT9z/+XANoA81AP/7BA2gBAUA2hD6SiAV4Aw1AFlP1SogVfogpB2v/zoA
-wKX9EKAFoDslAFlXJcCl/RCcBaA7JQBZVyIeiEIDOgkciEsMqhGuqayqLBIS6MM3Y1ghAAAskoGb
-wJxjmmIrloEqkoKNomTQdo4gCO4RDn4C/oAmFaACBQDRDwAAAAAA//KEDaANBQAvkoCb8Zpjn2L7
-MAYV7/8yAAAsFhT6IqYV4AoFAFlSlx6GzxmG0SoSFo7oKxIVLBIU+d/tmJAPNQD/8YANoA0FAMDQ
-wIoI7jQYhsX/AQYVr/E6ACIKiNEPK6AH+iAABfAMFQD7YwAV4A01AFgfaYwgCMwRDHwC/IAmFaAC
-BQDRD9oQ+kkAFeAMNQBZT5UtIHz8IKQd7/s6AGwQBhyIE40g/kBIFadVAQD+v8AV4AMVAP5tAA/w
-ClUA8kMIFeA7BQBZVt2KIseN6KgBBXg0gAD4QEYVoABeAADIrllUxdug+kBoHa/89QBYHHQkIAfa
-IPQgAAIwC4UA7RQACmAEgABYH8HxUDAN78YFAB2H+IwgDcwCnKAbhxGMPugSACpPAoAAq5nolgAm
-AHmAAOsyEClQBIAAC8AAiif9DfwFoAQFAP8OXAWv+PUA5KBGZXiBAAAkpRQG/wHopgAn+QEAAJ+o
-n6nkJgclWCEAAPvABROiAJ0ALsJ9HYchK+YBLaYDKcJ9KaYCKMJ/68Z9JEAFAAAoxn+ULpQvJCYQ
-JCYRJCYSJCYTJCYUJCYVJCYWJCYXJCYYJCYZJCYaJCYbJCYc/Q+YBaAKVQD6BgId4D3FAFlWmiQk
-BCQkBZQiJCQgJCQhJCQiJCQjlCmUKpQrlCwkJRokJRv6YGgdoAsFAPwAAh2gDSUAWRHtwCDRD2hS
-KMAg0Q8twoDr1gEmSAsAAJmjKMKAmKIvwoLrxoAn+AUAAP+QRhXv/YYAiycvuRSKuS68IObuAQf4
-QQAA77UUJVPBAADqtgkncQEAAH6rKiixFRyGU6qImLmcgIkg/w9GBeAMFQDvhgIszgKAAAyZAvkA
-JhXgAgUA0Q8chkmcoIsg+Q80BeAMFQDppgIt3gKAAAy7AvtAJhXgAgUA0Q8AAABsEAqMNRSHkhmH
-h/0PIAXrjEEACIgJ64YwHEcCgACtiiqif6m5qYj5QB+8IAcFAImhg6CTkI6gL6kQE4eG6eYBJWv/
-AAD3QCYV4AsVAOemACvABIAA4zLvJ4ZpgACFp4ZR/qBoFaiWHQAEmQGEUv9iAAwwDgUABL44hFAJ
-mRH4YABB92YBAPnABx4nRMEA9IAG2xIAnQArUQguOv//YAZsIgCdABmHbSiSQy6s+PuvpBXn/AEA
-6xYLJEP9AADolkMnkmmAACfVkP9DABXvyAUACP8B7IaeF/kBAAAv1kcv1kb/gC97ogCdABuHXI+2
-6vYBJfBhAAAu1kGMtizWQIm46rYGJMgFAACZuBqHVfohaBXgDAUA+1roFaANFQBYExfAINEPAACI
-c4Vy9gAiHaAJBQD4wgAMsAgFAAVoOIZxBoUUBFQBCUQRpDOEcPTgaB3nZgEA+QKgHedEwQBoRg0p
-cQgrOv/7P/ndYgCdAC6s+PmvpBXnjAEA6RYLLB7GAAD0gBUTEgCdACpRCJoSG4XyjCDs1j4hSIEA
-AO4mByFRIQAA6wAFAXE5AAAJAmEJAmEJAmEJAmEJAmEJAmEtMAQfhyfuFgkh4UUAAPWgJLqSAJ0A
-nBcpMhYv8viIMO0xIizeQoAAq/+fGivwfI/4mS3oJg4hyTkAACkWCC/wBC0lIvpIJh3gGMUA+eAR
-pCIAnQArEgr7bkAV4AxlAFlOhosaihn7bYAV4AxlAFlOgooXwMPqLGEtWASAAFlOfosY+kugFaAM
-NQBZTnuKOYkSmivnJgwlADGAAJKskjkYhwErMQcvgtYuMBYtMAfqMA0n+AUAAC+G1vhhkBWgD2UA
-LyQEKSUIKCQMKiQNKyUHLSQHlyKNIC4kFvYhaBXgTvUA7iQFLu4CgAANbQKdUSclCfSAD1MQOAUA
-+IAM1CA5NQD1JY4NoDoVAPqEjg2gO+UAKjAFJyU2+0AS5GBMJQD9QBKkIgCdAMPd/UAeVWIAnQAY
-hYgISAooghDqJAAK2ASAAPzAaB2gDSUAC4AAwCDRDxmFkoogKtY+nifpAAUBSIEAAAkCYQkCYQkC
-YQkCYQkCYQkCYSswBCwsTuwWCSFRIQAA9WAd0pIAnQAUhsYmMhYkQkYlMSLuMgArRkKAAKhEL0B8
-jUieLpYt7dAEIbFFAAD0REQd4B7FAO8kQSGpOQAA/6AINCIAnQD6jkAV4AxlAFlOKYoZ+o2AFeAM
-ZQBZTiXbYPpMIBWgDDUAWU4i21D6S6AVoAw1AFlOH4o5mivnJgwlADGAAJKskjksMQkuMQcbhqQv
-MA34YZAVoAllACkkBCgkDC8kDYgbKrLW/kDkHaP99QAtJQjsJQklUAUAACq21iowFiswB/pA5h3g
-SfUAKSQFlyIqJBboJQkpUASAAFgPzcAg0Q8bho4rsU7xf+rHUgCdACw6//wgRhWv9UoAANuQWKAS
-ihmLF1igEPog6BWv934ALTAEJyU29aAFkhIAnQDaMOtUAAlgBIAAW/x3ZK576iQACtgEgAD8wGgd
-oA0lAFkPJMAg0Q/bUFigAOoSCStYBIAAWJ/9Y/8C5yU3IpjxAADjAx4BeXEAAO8MAADQEQAA/qTE
-FaAMNQDuJTYhGXUAAOclNynYBIAAWU3ZKiBhKSBiKTQB6jQAINgRAAD4THAVoAw1AOg0AiFRhQAA
-WU3Q6iQACtgEgAD8wGgdoA0lAFv8eMAg0Q8AAAAAAAAqXBn6aiAV4Aw1AFlNxipcHfppwBXgDDUA
-WU3CY/8yAAAAAADqJAALYASAAPoQgh3gDSUA61UIKtgEgABZDvHAINEPABKGQfmyJBWvywUA6BYE
-JUhhAAALmQGZFeUiQytfAoAAC/8MqYjo/zICq/0AACUmQyXSR+/VkCRBAQAAmBbiIrwq4ASAAPig
-DeKiAJ0Ay7SIFpITrLX1AA8L4gCdAOnEAAMAqYAAbWkFCSCGAgJjJdJHL9mQpbWIFoIT+KAP5CIA
-nQAl1kdk8WcZhVz/IAwbogCdAByGHYjG6oYBJnhhAAAv1kGOxi7WQIvI6sYGJdgFAAArxgjqNAAI
-2ASAAPxAaB2gDQUA/gACHaAPJQBb/ND74AAEsI2FAH2ZGGhGFSohCCs6/3uhDNow6yQAC2AEgABZ
-D/Eahgb6IWgV4AwFAPta6BWgDRUAWBHIwCDRDwAAAB+FhIgwLTB8LjEpLiUiLSRB6CYNIdnJAAD+
-QcYV4AxlAFlNa4oZ+m2AFeAMZQBZTWiKO5or5yYMJQAxgACSrIkS8mFmFa/uxgAAAAAAAADsZAAJ
-UASAAPqgaB3giVUA+KEEHeANJQBZDpHAINEPAByF4ojJ6oYBJniRAAAv1kGOyS7WQIvL6sYJJdgF
-AAD7gWYV7+hOAAAAAB2FXiwxKSkwfI4wni0pJEHsJSIh2ckAAPxBxhXgDGUAWU1Fihn6bYAV4Axl
-AFlNQoo7mivnJgwlADGAAJKs8mFmFa/yJgCPFefVkCf5AQAAL9ZH/6jGFe/6HgCMFAxcDP2o5hWv
-+P4AH4W9i/nqtgEnyJEAACnWQYj5KNZAjvvq9gkncAUAAP/hZhWv+gIAAAyPDPhAaB3kXx0AbVkF
-DECGCQJliRWvLOVoDATJAQAAbYkFCWCGDAJnjBUPvwyvzO/ZkCZhAQAA/ajmFa/4PgCIFSiMQPmo
-5hWv+AoAAGwQBIo1CklR64Q4FInhgAD1IAvgkgCdAPUgCKESAJ0A+SAEwdIAnQAoso/1c2gV65pB
-AKmICYgRqFWIUsee+QAEBHeqAQDoVgIlArGAAP1NwAHQG2UAe6lGiVcsmRQjkglkwHMchYkvMgQt
-MQr+YUgVoBgFAPnmAA+wClUA/mCGFeAr5QBZVErqVAAJ2ASAAPxg8BWgDVUAWAJuwCDRDwDiVhkq
-0ASAAOUmCClYBIAAW/ldiyjIo4myZJBTwCDRDxqFcyqhfsDB8UGgDeADBQDaUFv6NWP/2v/+IA2g
-AwUAAAAAAAAAiVcsVHgrmRTjVhklgDGAAIOZ+qBoHaANNQDsMAcp2ASAAFgCUmP/pAAALLAH2rD8
-gGgd4bwBAPtjABXgDBUAWByYwCDRDwAAAADqJAAJ2ASAAOxEAAroBIAAW/24wCDRDwAoso/1c2gV
-65pBAKmICYgRqFWJVx6EDYw0LZkU7swBBoIBgACLmSq0G5y3LFAG7Mz/KtAEgAD8oMYdoAsVAFuf
-N8Ag0Q8AAADqJAAJ2ASAAOxEAAroBIAAWRCawCDRDwD//wgNoAsFAGwQSBuEMSUWg+MgBynIBIAA
-KpIA6BKDIjv9AAAnFoTrqgEMqASAAPowphWniAEA9QAKyREzAQApIgIqEoQrEoXsg7kckO4AAOaD
-uhVQDQAA66c5Cc8CgADqg7UT8A0AAPRgDNIQDaUABpkIK5Ke/2ASs6IAnQArkp0KPgou4r8OuwHr
-FoIlkFGAAIjI9wAQwJIAnQApYq4ag6dkkcgqon8pYq0KmwH7IA32IgCdALCNncj7IA3uIgCdAC4g
-FKTuDg5HLiQU9cAPplIAnQDoXBAiDFUAAOpM/yjIBIAAbakFCACGCQJhIhaA6xQAANALAABZSyrY
-oOoWhiUJ8YAAwKPrFAAMYASAAFlRGisShdMPDwIAybnrEoIpUASAAO10AALgIQAAWBVf+0BoHeAA
-EgDoQRdowASAAOpM/y3IBIAA0w9tqQUIAIYJAmEsEoTtUgMuZwKAAKy77FICKVAEgABYFRjdQOoi
-BynnAoAA5swIA9gNAADrxp0qWASAAPtEABWgDAUAWBEU0qDRD4YnhWj6wqQV780FAOhiCyNggQAA
-Dc0BrbvtFoEl2QEAAPUACPxiAJ0ALmkUDE0Rpdqt7i5lFPtgCdOiAJ0AyZrJSOiUAArIBIAAbUkF
-CACGCQJhKsIADwIADaoI+0ALpGIAnQCawNlQ9SBoHe/4/gAAAIjI9wAG4JIAnQAMORGmmSuSnrN+
-/2AJ26IAnQArkp0KPgou4r8OuwFksSmwj5/I6xaCLfLOAABgAFeIEBmELfwwaBXniMEACYgKKIK4
-KhKA7BAHKNgEgAALgAD4MMgVr/qGAMAg0Q8AwLANiTTpxggt8l4AAPpAaB2gG8UA/AACHaANFQBY
-G9XAINEPAAAAAAAA6zwYKVAEgAD84GAV4AwFAFgbzcAg0Q8AwKBZTuYcgx2IyPkf7vCQDaUAY/+1
-2iBbnERj/gcAAAD/9tgNoAsFAPkAaB3gCgUA+sFmFa/8YgDAoFlO2ByDD4jIGoMQ+R/4uJANpQD/
-/NANoAsFAAAAAOW7DASB0YAAC08U7vwILMAEgADuTjYK0ASAANMPbekFCACGCgJhq5gpEoHTD+9K
-DATJAQAAbakFCCCGCQJjKhKBC94MrqoqrED7gAYVr/qWAMCwDY80/4EGFe/7TgAAACgSgSiMQPmA
-BhWv+iIAAABsEAYmIHL6QLAVoAiFAPjGAAswBAUA9k5GHaAVRQD1QAdEb8YFAPcIpAXgEyUA+mY2
-DaAFtQBzoWf1QAzdkAOVAHWhefVABHSSAJ0Ac6lbiSJlkFbAqCokBfABOA2gCoUAAADaIFi1JPpA
-aB2gCwUAWBaTHILVjSAjJAUswoErcpmtzAnMEay7LbIHLNwgBswB5NUUJmEBAAAs1gmc2CS0BY0i
-0w9k0XcqIAXA6f9A9g2v8lUA0Q8A0kDRDwAAjyJl/+cCKgJbtWJlr9vAivhAph2gCqUAiSJln8/a
-IFu1O2WvxCwgBosi8kCmHeANFQDtuwIGYAUAAPxAxh2gCpUA+kBGFe/+ngAAAIknKJkUwLDunCAk
-+MEAAO2SCSQH2YAAg/DvNwwBmyEAAPZtAA3wF2UA5uMBBoNJgACI4NMPDwIAfYFaLNAA9YAGJGAZ
-VQD5gAXkYgCdAPeABaRgGIUA+YAFZCAZlQD5gAUkYBilAPmABOQiAJ0ALNAHKeEFmRDjmQgOZwKA
-AOzdCATJAQAA6ds5fuAEgADtxAAOfP4AAPFhwA3gLdUALLAAfcFhjr7AsO74DAdzIQAACOs5Zb/n
-LyBO3ED+7QAOcAEeAIwQ/a8ADj//FgAAjSJl3s3aIFu1RmWuwi8gBo4iwJz4QKYd4AgVAOjuAgf4
-BQAA/kDGHeAKxQD+QEYVr/qOAAAAAAD8TiYdr/hKAPyAaB3v/BYA+kBoHaALNQBZTjvmoLFtGASA
-ABaCYIpo90AF6JIAnQATgmArMq51s2wtcmYsMq0NywF9wGKwrp5ofcBo2iD8QSQVoA0FAP4f4h3g
-DgUAWLRy/ERkFaANBQD7QGgd4A4VAPpAaB2gDyUAWLRrJTatKCAGjyLBofpAph2gCRUA6f8CBEAF
-AAD4QMYdoBoVAP5ARhXv9+YAwLDAygysNOxmCC383gAA+kBoHaAbxQD8ACIdoA1lAFga5GP9zAAA
-AAAA+kBoHaAbxQD8ACIdoC0FAFga3WU9sWP/lcCgWU32imj5X/ngkgCdAGP/uQBsEAQag5mGPxSC
-z4k+mWD4YcgVoAcFAOKbDATLIQAAC5c59wAmFaAFBQCVP+U2DiuQBIAA40MkcbDhAAAuon0dg4uW
-4Z0/LKJ9nD4ron/mpn0l2AUAACumf9EPACiigOaGASUgCwAAlD8iooCSPi+iguamgCf4BQAA76aC
-K5AEgADRDwBsEASKIseN/0FgB5OakQAIqAGYItEPyJ5ZUCfboOwiAilQBIAAWU2L0Q8AAGwQBIkn
-+SGIFaAlNQD2BIIdoCdVAPMmABWgCwUA4okMBEMhAAD5DQAN8COVAPFj0A3gJLUAYAAQir7AsOos
-DAVTIQAADKs5yrMssABzyegtsBAqsB902d91oQV2oQJ3qdbaIFv/u/tAaB3v/3YA0Q9sEAQVgooP
-AgAjUY7oUW8hgVGAAIQgJSIHKvrA6EM8cpCBAAD6QAQFMAkFAOklBCVRAQAAmiGaINEPjCf9hAAV
-784FAP+gBAawCwUA68UUJukBAACdyZ3I0Q8AAC9ZFGT/wYVZZF+8I1AAwkp0ObQZgziIVHmJrNEP
-AAAAbBAEKCBw0w98hxQqIAf6QAgV4KoRAFkO0Min0qDRDwDAINEPKyBwLAr3DLsB6yRwLRAEgADR
-DwBsEAQVgikiUn/wQkAN4AYFACJSfYQhiSCZQIgglIGWIZYgI1J/sDPjVn8hE+EAANEPIlKAhCGJ
-IJlAiCCUgZYgliEjUoKwM+NWgiET4QAA0Q8AAABsEBKKOIc5+EDwFe8LBQD7QAQFf88FAPrgBAP3
-hQEA+QAEmVFZAQCNJ4zYK9EV5tILJvCBAAAP7wHvuwgKTwKAAOxpEHXZAQAAwDCT2/LAaB3gAZYA
-KNkUKRYTrJapiCjVFPdgEDKiAJ0A7LsMAYHhgAD3gGgdpIsdAOgWEiRAIQAA6Eg2CegEgABtiQUN
-AIYGAmEoEhILPQjoSAwHmQEAAG2JBQ0ghgMCYwudDK39LdxAneDTwI4iyOLAINEPHoGCiTQfgXEW
-gXHxIAlm0AsFABmC3i0xCysmGesxCirnAoAA6ZB/KqAEgAD0oBPSEgCdAKbMKMKe9wAsydIAnQAs
-wp0PWAoogr8IzAHogWwWBmmAAC8hBw8PSgz/EQj/Ap/AjyD6IyYV4CgFAPmAZhWgCDUA7sYCL/YC
-gAAI7gKewS4gBCkWGioWG/XAC/wSAJ0ADd8JHYKkDP8Rr90t0X/1wBJSkgCdAC4iEp4dKCBMmBwe
-gp0OXgIfgjIM2BH5gQYVp4odAA+IAQiYAijFChiCl/uBZB3g9/kAn8YIeAH/GAAUOPq5AAj/AhiC
-kZ7E78YHKv+CgAAI/wKfySggBwgoQPMQABQ3//UAD4gCmMsMTxH34ABHsAg1ACj2nWTBbIs0xs8M
-uwGbNIkiwKEKmQL4QEYV4AIFANEPHYHK8SAEpxAKhQAago4ron37UygVrHkdAKe7CbsRq6oqJhmS
-qPSgDNoQC+UADFwRpswuwp77wCUT4gCdACzCnQ9eCi7ivw7MAWTBti/Rjsj5KNFv+OAiW6IAnQDb
-IOw0AApoBIAAW/YPwCDRDwAAAAAAAOnEAAGAsYAAyE4tEhNtSQUDQIYJAmWG4K1me2k6KPxA+cAG
-Fa/4kgApIHbInesiGSlQBIAAW/ZM0qDRDysgd2SxXyzRjmTOBdogW/cn0qDRDwAAAAAAAAD3wAYV
-r/eyACwWFxqCShmCWvhC5BWgCwUAmxmbGJsXmxabFZsUmxMpko0rFgH4wAAGsOg5APnvAAzyiEEA
-6pkCDH5CgADv3QIPdAKAAA7dAvgiBhXgDhUA7hYAKNAEgADtFgIg2MEAAFgJ42SjK8Cl/QRmBaA7
-JQBZUQfApf0EYAWgOyUAWVEEiiJlrWjrXBgpUASAAPwAIh2gDTUAWBl0wCDRDxyAxikWGozIKhYb
-LBYR94AbIJIAnQAMTBGmzCjCnvcAHGHSAJ0ALMKdD0gKKIK/CMwBZMN6LxIRGIC4sP//AQYV7/WK
-AC4iE54dKCBQ+CGGFa/24gAYgLCIiCoWFigWEfcAGwCSAJ0ADFwRpswpwp77IBuz4gCdACzCnQ9e
-Ci7ivw7MAWTDZC8SERiAo7D/n4hlzkjaIOwkAALYYQAAWBEswCDRDwAoIHhkjKUZgJuJmCkWEfcg
-GjiSAJ0AK2KuZLN7HYIELGKtLdJmDcwBZMNuKBIRGYCRsIgoFhGYmGTDQB2AjifQgCd8NwdHFOwW
-DiO4HQAA9KANGhIAnQAMXBGmzCjCnvcAHJviAJ0ALMKdD10KLdK/DcwB58QABhnhgAAvIBSk/w8P
-Ry8kFPXgGqZSAJ0AKCIZ6TIEJA0JgAD7JgANvNkdAPpghhXgCQUAwPAvJHiMMC8mGfGAB6qSAJ0A
-iicoqRRkgbqEqSMgByohB49B60IELK4CgAD7AWQFqpoBAPXmAA///IUADLsBJUEXm0QsICyfQe+A
-rB7tAoAADcwC7LsCDM8CgAD6gIYV4LMRAPVwABWxMwEA65kCCcQCgAAIVQIPVQIKmQKZcIwglXSf
-dv7gRhWgOwUA+uBmFeANBQCddfzg5hXgCiUA/YAAFjANRQDtzAIKSASAAOx2ASPogQAAbaoFCWCG
-DQJnhUIlJhyJQSd8QPMgFDhSAJ0A8yoYDeAEBQDAs/pA6BWgDAUA/mAAF7ANNQDm/wgCcBEAAO72
-nSVQgQAAWA3g0qDRD4gyKCYciTHoFg8r2ASAAA8CAPMgE9BSAJ0A8ylIDeADBQDqIgcq3wKAAPdg
-AEWwDAUA47adKmgEgADqrCAqWASAAFgNzdKg0Q8ALBIR94ATsJIAnQAMXBGmzC3CnvegFEviAJ0A
-LMKdD10KLdK/DcwBZMJ3LxIRGIATsP//AQYV7/keAAAAAAAAAPwAAh3gGAUA+SYADDCJhQD4YIYV
-r/l+AAAAHIFn/CGIFeAKVQD+IagVoDslAFlQOioSGykSGisSGSwSFy4SEP/rwA2gDQUAAP/5DA2g
-BAUA/+nMDaAMBQDqdAAK2ASAAFgDfetUAAlQBIAA7IFoG+gEgABYERDAsSskeIk0x6cKmQH4YIYV
-4AIFANEPAAAAAP/tqA2gDAUAAAAtFhj6IyYV4AoFAFlLrSoSGx5/9ikSGhx/4isSGS0SGIzIH3/i
-LBYR+Z/joJIAnQD/5+QNoAwFAMDALxIRwIoI/zQYf9j/AQYV7+eSAADAoFlLnBl/0x9/1R2Ae4mY
-KhIWKRYR+T/kUJAL5QD/8qwNoAwFAMDAKxIRwOoOuzQef8n7wQYV7/JaAMCgWUuNGH/FHn/WiIgf
-f8UoFhH5H+UwkAqFAP/zAA2gDAUAiSJlmSr6QGgdoBvFAPwAIh2gDRUAWBhlwCDRD8DAKxIR/P9q
-BeAIpQAIuzQrFhH7oQYV7/ImAIkiZZjzHX+vLdCA7dw3KVAEgAD6owAV5N0dAP2g4BXgDBUAWBhT
-wCDRDwDrEg4pUASAAFuYzR5/tP/yeA2gCoUAAAD/8eQNoAwFANog63QACuAEgABbmk6JQSoWFOSk
-AA13AoAA7ncIBOs9gADrdAAJUASAAPygaB3gDAUAW5oT9UAAQj/1MgAA2iDrdAAMYASAAFuaPokx
-KhYV46QADV8CgADrewgE66WAANog/CHoFeAMBQBbmgXzQABB//V+AMCgWUtHHH9+Hn+PjMgff34s
-FhH5n+u4kAqFAP/vhA2gDAUAwMAtEhHA+g/dNB9/dP3hBhXv7zIAAAAAbBAIkxAmIAUrIAeJJ+2A
-4hr4BIAA8NawDeG7AQD7JgAVp+8BAPXADUESAJ0A9IAEAdAMFQAagNktIQjTD/VPsBXgCQUA+0+Q
-FaAGhQBtai4AUQTogNMeMAqAAOagG3TIBQAACFgKJ4H/Jo0CJmEAd9MH/MANuuIAnQCxVQUFQp4S
-mxP+IIYV4AcFAMCl/QGKBaALBQDudAAK+ASAAFlPgI8UFoC+ixOOEuVkfSuXXgAA1UAagL3rFgEt
-zwKAAPVgCUoSAJ0AHH9CDwIArJkskp71gBXb4gCdAAq8CumSnSZgEwAALMIdDJkB53+BFI4pgAAq
-IAcKJkAKZhAHZgImlgAtIgAff0LvlgIu7gKAAA1dAi2WAfSADk1iAJ0AKDAD6JYDJNBBAAD5wA+R
-UgCdAOs8EC1IBIAA6xYAIgw9AACwSm2pBQsAhgkCYcAwHICX/EAIFeAKVQD+IAgVoCuFAFlPT40R
-Hn8aDN0Rrt0l1p0sIATuIAUuAE4AAMzhZDDp0jDRD2WelSbS62RiminS6Y6RipCa4IaQ3ND+wCYV
-oA0FAJ2QnZEqwuuwqirG6+0iACTz/wAA7eY+JMvhAAD4QOYV4AwFACwkIPxEJh2v+UIAhpzAkOps
-DAMzIQAADGk5ZJ5J8AG0DaAstQAdfvaM2PeADXCSAJ0AiREWfvUMmRGmmSeSnvTgDjviAJ0AhhEK
-Zgrpkp0jMBMAACZiHQaZAWSRrrDI+aEGFa/7BgCeEvogZhXgBxUA/iCGFe/5QgAAAACNnsCQ7aYM
-BushAAAG2TlkndgmkAB8aedknc9tSQUDAIYJAmHAINEPiSf2/voF7/r1APsgBhWgCAUA6CYHJMAh
-AAD44AvD4gCdAByAQy/C6R5/dJjxnpMtwumdkivC6+jG6SXYBQAA68brKZAEgADRD4oiwG56YA2I
-J4iCZYG3x5EJqgGaImShF+okAAnYBIAA7EQAD+gEgABYEO3SoNEPHH8yH4Ay+kEEFeAoBQD5IGYV
-oAYFAPcgphWh2gEA75YGLuwCgAANuwIMuwLrlgQk0IEAAPXf8LESAJ0AjCeLzI2xj7Cf0I6wCqkC
-/cAmFeANBQDttgAmYMEAAO22ASXrYQAAbUkFDQCGCQJhFn9EJ7zI9sAH0+IAnQAZgA8uku8dgAmb
-4Z2xKpLvmrAokvHrlu8kQAUAACiW8Y/AwDDs9gwH+yEAAPftAAm/9wYA//VYDaAJBQDAU/SAQAL/
-9FYAnhKbE/4ghhXgCgUAWUpNHX6EjxSLE4zYjhIaf/v5n/GokgCdAP/0fA2gCQUAAMCQwGoGxjT3
-oQYVr/Q+AAAAAACfFOokAAXYYQAA/KBoHeAMBQBYFyD+IIgV7/s+ABt/5i6y7B1/2JjhnZMssuyc
-kiqy7ui27CVQBQAA6rbuKZAEgADRDwAp0uztkgEu0ASAAIaQltCOkP3AJhXgDAUAnJCckSai7rBm
-913GFa/1ggAZf9EukvIdf9eb4Z2xKpLymrAokvTrlvIkQAUAAPk+hhWv/CYAAACbE58UWUx226Ds
-IgIpUASAAFgUJY8UiiL6IGgV7/jOAAAAAGwQBIooiacomRTrkgkkAXGAAPlASBXgDQUALSQELSQF
-80MmFa/85QAMmQGZov1g8BWgDTUAW/yc0qDRD///SA2gCwUAbBAILiAElRL1wBqjkBeFAPfAG5Rg
-JbUAjBIMDEcsFgP1gAuREgCdACswEP7/SAXgCBUA9WAoDGAt1QD9YCqMYD4lAP9gEJQgJmUA92AV
-jCIAnQCKEykgB9MP9UAM+RGZAQCKIvxBBBXgCwUA6xYBLSHeAADl8H0iGbuAACvwfB5/kPoAAh2g
-DIUAbcotDlwK58H/KoEKgAAAhhrmsBd1UAUAAOfTD3YwCwAAJmEA/MASGuIAnQCxVQUFQvggphXg
-BwUAKgoF/P7+BaALBQDudAAK+ASAAFlOOhZ/eIkV5WR9K6Z2AADVQBp+AekWACzHAoAA9SAJKhIA
-nQAbff0LiAgsgp71gCUD4gCdACiCnQqbCiuyvwuIAWSDfCkgBx9+PA8CAAkuQAruEA/uAp6AjCAd
-ff4vEgPthgIuZgKAAAxcAiyGAfSAHH1iAJ0AJjAD5oYDJEhBAAD54B3RUgCdAOg8ECIMPQAAsEpt
-qQUIAIYJAmHAMIkQGn3eDJkRqpkllp0oIATMhyogBWWgAmQ0/NIw0Q8AAIwnhDL1gcAN57TBAB1/
-TR5/TR99+fhhABWgpiUA7OzgJ0vBAAD3YCGMIgCdAA8Ahw4CYeMGAA5QBIAA+oJoHaPk4QBt6QUI
-AIgJAIoN5hG/ZAREFObUbyIgBQAAJNRz84BoHe/4ygCGJ4psJmww91/y1CIAnQArrMhkvk/AYfYg
-JhWgCk4AHH2yi8j3YCGYkgCdAIgQHX2xDIgRrYgtgp71oCIj4gCdAI0QKIKdCt0KLdK/DYgBZIQw
-sL6eyGWOxGACPoYT+N/voVIAnQApICJkkEMqIAcbfkTAwPxERh2hqgEAC6oJK6H+qbkppf4pICJk
-lCcq8jiNK+ChBASz/QAA4GYaDHAKgADm3QgHc/0AAA7dAi0mCikgIPpAsBXgCkUACpkCKSQg+X/s
-iVIAnQAJC0P5f+w1UgCdAIonwLDrJCAlUEEAAFgNQv797gXgCBUAwMAsJBT8QKYdr/WKAMBx+CCm
-Fe/3IgAAjRP5v+ppUgCdAI4nyeDaIFv6h9ogW/uw/v3SBeAIFQAqIAXxTHAN4AmFACYgIAlpAikk
-IPlf6NlSAJ0ACQpD+V/ohVIAnQCKJ8Cw6yQgJVBBAABYDSXAgf79sgXv/jIA6iQACdgEgADsRAAK
-6ASAAFv/Etyg6iIILgLeAACNomTQUcAg0Q+PMvz9rAWgClUA/EAIFef/wQD+IIYV4DsFAFlNh4gU
-wmZ2gWV1gXrCffcABGxiAJ0AKQoyeYnE6iQACdgEgADtEgIqYASAAFkKuMAg0Q8roAf6IAAF8AwV
-AOu8GCpoBIAAWBXswCDRD4wnZMBk+EQGHeAOdQD+QKYdoA0FAPxEJh3v8TIAAAAAAADqJAAJ2ASA
-AO0SAipgBIAAWQshwCDRDwDqJAAJ2ASAAO0SAipgBIAAWQrfwCDRDwDqJAAJ2ASAAO0SAipgBIAA
-WQrHwCDRDwAcfZgmwn9kYnYqwn2OoYugm+CGoP7AJhWgDQUAnaCdoSvCf7C7K8Z/7SIAJXP/AADt
-5j4lY+EAAPxA5hWv/X4A6iQABNhhAAD8oGgd4AwFAFgVu+okAAnYBIAA7RICKmAEgABYDz2PImX+
-voYRZG65+kBoHaALBQBbmGjAINEPAIoTHH18Hn58+kEEFeAGBQD3AKYVoC8FAP8AZhXh2QEA7oYG
-LuwCgAANuwIMuwLrhgQkSIEAAPVf4nESAJ0Aiif9IGgdoAsVAOqsMCpoBIAAWAFU80BoHe/xGgAA
-AAAAAPz81gWgClUA/EAIFeArhQDvMB8p8ASAAFlNGygwH8Kz+wALJGIAnQDCxP0ACtQiAJ0ALQol
-/QAKfGIAnQD6QGgdoAslAFgCIMCB/vycBe/rNgAAAAAAAAD6QGgdoAslAFgB6sCB/vyOBe/qygAA
-AAD/7bANoAgFAMBT9IBAAv/sygAafbT2QPAVoYSBAKqKKqCA9EEEHaD5tQDpZgENV4KAAPrGAAsw
-+cUACWYBCGYC9kDmHa/u2gAkMQsPIIfuLAACU+EAAPKQaB3jqgEA50z8JVPxAADqdDgOUASAAPqS
-aB2gFgUABk42/m4ADT/35QB3oQqyr235BQhgiAkMirKmDWYRv2T/sWYdpEQdAObUbyIgBQAA9a5m
-Ha/ujgAAAPggphXgCgUAWUhoHHygi8iJFRp8oPl/3cCSAJ0A/+9oDaAIBQAAwIDAqgq6NPuBBhWv
-7yoAGH0+K4GOybItgW+MIH3LC4gnLokUyOOPiWX65togWADC0jDRD4kp+EFGFe/v1gAAAAAA6iQA
-CdgEgADtEgIqYASAAFv9E9Kg0Q8AKsKAjqGLoJvghqD+wCYVoA0FAJ2gnaErwoKwu/uQRhXv9iIA
-AAAAAGwQDh98sRh9+JMf5HyvGlgEgACNgomD7oIBIOBBAACewZnDncLoggApUASAAPmABhWgDQUA
-9CAmFaAIBQD4IAYVoA4FAPggRhWgDBUAWA5iwND+AGIdoA8FAPj6RAXgDAUA7BYBLVgEgADsFgIp
-UASAAPggBhXgDBUAWA5XKhYQFXxr5HxnHVgEgADjfIAVSCEAAOgnEQk3goAA8voUBaAIRQDodwIF
-aIEAAOh8hBVgwQAA4wAFAPCBAAD+AKgdoA8lAPjGAAswDgUAbfp6lLDntgEs+ASAAPIEChXgCAUA
-DwCK92DGFaAPFQAOjznr6BEP/gKAAA+IAu8SDyTJAQAA9WCGFeAqhQDqtgUuUASAAOj/AgZhAQAA
-4v8CB3AFAADvtgcg+EEAAO8LHg7ABIAA6EwAAPiBAADvBx4G6QEAAOosAAXZAQAAIhIQIi0BIiyA
-0Q9sEAwffFwVfFsZfFAdfaIoIAfjQgQp2ASAACzSASbSAurSAyDwQQAAKuYDCTMBJuYC/cAmFaEo
-AQD9oAgV4AwVAP3ABhXgBgUA5hYAKdAEgAD2IEYVoA0FAPQgJhXgDgUAWA4I8iHmFaAMFQD++ZIF
-oA8FAP4gJhXgDQUA7xYCLVgEgADuFgAp0ASAAP4AYh2gDwUAWA37EnwNH3y1GHwy/GAAErAGRQAG
-VQLmfCMZp4KAAPL4EgXgDQUA6EQCBUghAADmAAUA2IEAAOsMAAVggQAA+0YAFeAIJQBtinqSoOWm
-ASzwBIAA9gQKFaAIFQAOAIr1QMYVoA4FAA3oOeveEQxGAoAACO4C6BIPJMkBAADzQIYV4CeFAOem
-BS24BIAA7ogCBdkBAADviAIG6AUAAOimByDAQQAA6AseDnAEgADuTAAAwIEAAOgHHgZhAQAA5ywA
-BVEBAADALtEPAAAAbBAEiyccfD/4+OIFr/n1APlgBhXgDQUAnSfrgzZ10CEAACnCfRh8apqRmLMv
-wn2fsi7Cf+rGfSdwBQAALsZ/G3xlKrGO7LFvJQBJgACKIHyjJtEPKcKA6pYBJkALAACYsy/CgJ+y
-LsKC6saAJ3AFAAD/kEYVr/8qACkhGm6UDC0lGvAAJA2gCQUAAABok8LAwQycAgwMT+wlGi4e3AAA
-LbF6DaoMWK6P0Q8AAGwQBCsgB+x9ERlQBIAA+iAABfANBQBYDLnRDwBsEATYIImAhpEcfD7rkgAp
-kASAAOtmACoYBIAA6pIAKqAEgADifQEZLwKAAKWV90AmFaAGBQDmlgAk6yEAAOaWASKrIQAAbUkF
-BQCGAwJhFnz3fcMqKiJ9maGWkSMifZOQLyJ/6SZ9J/gFAAAvJn+OgMAg6O8MB3MhAAAP4jnRDy8i
-gOn2ASFwCwAAnpEtIoCdkCwigukmgCZgBQAALCaCi4DAIOi8DAXbIQAADLI50Q8AAABsEAYde2wc
-e20ae5kpIAeHNPj21gWgC+UA9WBAB7GZAQDpFgAstwKAAKhmLmKeCncBlxH/wAuL4gCdAC5inQyc
-CizCvwzsAefEAAYLKYAAitj3QAuYkgCdAC6CruZ7WhcISYAALIKtJmJ/5ssBBXP9AAD3gAeuIgCd
-AJ7Y94AHxiIAnQAvIBSk/w8PRy8kFPXgCq5SAJ0AG3w4H3tVihErsX/te1YctwKAAPjAAEM3VQEA
-66NWc8hBAAAuMAOfcIwg7nYDIcBBAADtdgIuZgKAAOxMAgJT/QAA7HYBIgw1AABtqQUIAIYJAmHk
-Zp0ildUAACoiB/qAaB3gDAUA6qwgKmgEgABYCNjSoNEPHHtZizTqJAAKaASAAOy7AQngBIAA6xYC
-K9gEgABb/v4jEgLqZp0ilHUAACoiB/qAaB3gDAUADwIA6qwgKmgEgABYCMbrEgApUASAAOx8mRno
-BIAAWAwywCDRDwAAwLDAygysNOzWCC34hgAA+kBoHaAbxQD8AAIdoA0VAFgTt+okAAnYBIAA7EQA
-CugEgABYDvvSoNEPAAAAAAAA//psDaAMBQAEvTeLENog+2MAFeAMBQBYE6pj/8UAAAD4IGYV4AoF
-AFlGwB16+IrYiRMYevn5X/PAkgCdAGP/j+kWAylQBIAAW5QbGHrz+CBoFe/6dgAAAGwQBIUg4lQM
-ApshAADAIAQyOdEPbBAEKiAgKwrz+0AEBXAEBQDqJCAhlJ0AAGkxGP9CoAeQ/NUADKwBLCQg2iBb
-+PotICBk0GnRDwAAAAAA/16gB9ADFQAuCv4OrgHuJCApUASAAFv5ECggBxx7eCkgIvRERh2hiAEA
-DIgJL4H+qf8vhf4pICKKKy7Ci+SQMmTr/QAAAOEE4N0aCdgKgADtqggF2/0AAAuqAvpBRhWv/j4A
-iicqrBBYCn8kJBQkJAXRD4sp+kFGFe/91gAAAABsEAQqIAXAiHqDNPFEUA3gBQUAKiAg80RAheAE
-FQADqQLpJCAhlZkAANogW/jM2iBb+K4qICAKCkFqo0PRDwAA6iQACdgEgABZB8dlr+0qIAVj/7aL
-J2SwgBp7Syyhju6hbyZ9gYAAjSB+26ZpMqMbe40qIRoLqgH6Q0Qdr/5eANogW/iPJCQF0Q8A2iBb
-+NIoIAccezopICL0REYd4YgBAAyICS+B/qn/L4X+KSAiiisuwovkkGNk6/0AAADhBODdGgpYCoAA
-7aoIBdv9AAALqgL6QUYVr/1OABt69y+yf+myfSeCCYAAipGNkJ2gjJCawZWQlZEosn+wiCi2f+8i
-ACTD/wAA74Y+JPPhAACeJyUkIPREJh3v/QoAiSn4QUYV7/wiACmygI2Rj5Cf0I6QneGVkJWRLLKC
-sMz9cEYVr/7+AABsEAwkFgglFgYpIAcnMBAqMAP6IOYVoZkBACkWCfTgFtyQDrUA/uAXHCAPBQAv
-FgUoIgIcelv69LgFoAkFAOkWBCwPngAAKxIJFXpY6xYKIngpAAD1YAkiEA2lAAy5EQWZCC6Snv/A
-HhviAJ0AJpKdCrgKKIK/CGYBZGGY+vXkBaAZpQD44AmkYgCdACsgBOjCCCWJkYAA9wAbiJIAnQAu
-Uq4aekNk4Ukqon8pUq0KmwH7IAn+IgCdALCNncj7IAn2IgCdAC4gFKTuDg5HLiQU9cAablIAnQD0
-4BKcEgCdAIgWG3pBHXo9nWCKIIwXnGPrZgItVgKAAOpKAgNIQQAA+sAmFaeIAQD5ABGZUgCdAOg8
-ECIMPQAAsEptqQUIAIYJAmHAgLBJ7jIALM8CgACpaegWCyTYQQAA88AROpANFQAqCoH64Aj0IIw1
-AJgb/OAIpCIAnQCPGu4SCC//AoAApf8u9p0tIATM28CbeXFkKiAFzKFkg2/SgNEPAIjI9wAXUJIA
-nQCJGgyZEaWZK5Keuk7/YBezogCdAI4aK5KdCu4KLuK/DrsB5rQABZdBgACwj5/IZW7EYABaAAAo
-oY5kjslgAtkpIBSkmfhChh3v/CoAAAAaepwqoY5kr5EcepmLICzBb3y7htogW/5MwCDRDwDAsA2O
-NO7GCC32VgAA+kBoHaAbxQD8AAIdoA0VAFgSkWAAHyggBIsZ7UwKKVAEgAD+ACId4AwFAOj8OAXY
-YQAAWBKIjBVkwhnqJAAJ2ASAAO0SBipgBIAAWAwIjSJl35qOFGTvlfpAaB2gCwUAW5U0wCDRDxR6
-d8Ax9iEoFaAMFQD0jkQVoAgFAPggJhWv+fUA+CAGFeANVQD2gABCMA4FAPZACBWgDwUA5hYCKlAE
-gABYC7z8AAIdoA1VAP4AAh2gBgUA9iAGFaAPBQDmFgEtWASAAOYWAipQBIAAWAuxixiJIiogBogb
-45kCBdgZAADrFgglUAUAACokBvhARhXv+ZYAAAAAAAAAAPpAaB2gCxUAW/7tYAAMAAD6QGgdoAsV
-AFv+uooWCgpH9UAIoRIAnQDAsfogphXv9BoAANogWQgGZKF+jCJkzaNj/vWNFegiByaMOYAA/SBo
-HaALFQDqjDAqaASAAFv99/lAaB2v9xYAJiAHLiAEHHnY/kAIFeCmEQAKqhAMqgLk4aNv5gKAAB95
-sR55mJqU/yDGFaA6BQD7IOYVoA5FAA7OAu6WBSTQgQAA/gAIHeAONQBt6gIKAmEZeccqIAcmIQj8
-9fYFoA8lAPXhAA+xqgEA7LYGLVQCgAAKZgLpZgIF0IEAAOa2BC1IBIAA0w9t+QUDAIYJAmH7aAAV
-4AwFAOykBiJIEQAA+CEGFe/06gAAwKBZRSwceWOIyPkf5CiQDaUAY/3d2iBbkopj/K4AAAD/8SQN
-oAYFAI0niNwt3DD9H/csYgCdAC6MyGTu2sDx/iCGFe/3rgAA6iQACdgEgADtEgYqYASAAFgNQ9Kg
-0Q8AwKBZRRQceUuIyBp5TPkf6EiQDaUA//S8DaAGBQAAAAD/9GANoAsFAA2JNPmBBhXv9GYA6iQA
-CdgEgADtEgYqYASAAFv9z9Kg0Q8qIAX5X/PUUgCdAMCy+kCmHe/5wgAA/SBoHaALFQDqjCAqaASA
-AFgG3flAaB2v8QoAHHnXLMGO6BYLJgFBgAAeedONIC7hb5gbftsWiScvmRToFgsngHGAAIqZ6BYL
-LWMWAADaIFv9VYIb0Q+alCshCOR5MBIYDQAA8iEGFeHmAQD1IMYVoAM1AOPDAg90AoAADrsC8yCm
-FeAuBQCelyQgFI4pgyuTnf8hhhWgAwUAk5nueakaIgKAAA1EApSbDrsCm5gO/gLulgok2QEAAPJC
-hh3v7uYAbBAIJyAH6CICIkv9AADpFgEiYA0AAPggRhXhdwEA6Xj/HAa2AAAWeP7tePobxwKAAKaI
-K4KeCXkKKZK//WAHw6IAnQArgp0JuQEoIATpFgMkh3mAAGSAj4jY9wASKJIAnQArYq7seO8VhUGA
-ACpirSzCfwyrAe8CAARz/QAA/UAEjiIAnQCe2P1ABKYiAJ0ALyAUpP8PD0cvJBT14BDOUgCdAPgg
-aBXnhQEA+QAFkVIAnQDoPBAiDD0AALBKbakFCACGCQJhwICKMPNACOKSAJ0A6xICK+cCgACmzOvG
-nSwQBIAA0Q8AAC0gFKTd/EKGHe/+ygAAAADqJAAJ2ASAAOxEAAroBIAAWAy30qDRDwAAwLDA6g6O
-NO7WCC37pgAA+kBoHaAbxQD8AAIdoA0VAFgRZWP/wQAA//w4DaAJBQCNEeokAAPYYQAA/gAiHeAM
-BQDo/DgG6BEAAFgRW2P/lwCNJ4jZ+aKCFe/FBQDr0RUm4IEAAAXFAZUQ5bUIClcCgADqmQwEQEEA
-AJjZCJky6dUUIqkBAAD1AAxC4gCdAGirPairK7zw+qAIu+IAnQDtEgMiDHUAALBObekFCACGDQJh
-K8IBC6sI6ckEJdvBAAD1YA6UYgCdAOvGAS3ABIAAZZ7kYAEgAAAAAC4gBC0gB4oRiRMbeNPvIgAt
-VwKAAPsgAESwrREACqoQ66oCD+YCgADreJIXCNGAAJuSmpD+8U4FoDoFAPsgZhWgD0UAD88C/yAm
-FeANNQDuAAUE0EEAAG3aAgoCYR14vy4gBywhCP7z6AXgCyUA9WEADbHuAQDvlgYvdAKAAA7MAu3M
-AgT4gQAA7JYEL9AEgADTD225BQMghgoCY4wRwNDt9AYmYBEAAAx9Eabd7NadLBAEgADRDwAAwKBZ
-RCMdeFuI2Pkf7YiSAJ0AY/5n2iBbkYFj/eIAAAhdDPogaBXk/R0AbfkFCECGCwJlixOIEA9PDK27
-6IxAJ4w9AACw/m3pBQhghgsCZ4gQL8kEDakMqYgojDDoxgEv7i4AAIoQwLDrxQQlUQEAAPuAJhWg
-CAUA+4AGFa/2pgALiAz5oSYVr/nWAAAAE3jUmpD+QQQVoCoFAJqT+yBGFeFNAQDj9QIKJAKAAATu
-AvPGAA9wAzUAA8MCk5GEKSogFIMrk5mUmJ6U9SDGFeAOFQD0ICgVoAUFAOWWBS1SAoAADqoC6pYH
-IiANAADlJBQsEASAAOoSBCuvAoAAplUkVp3RD4gQKIxA+YAmFa/4xgAAbBAEaEMGaEJCwCDRDygg
-BrCICAhH6CQGLH+GAACJIiwwAceu+yAEBLD71QDpJgIuGLAAAHvJ0fpAaB2gCwUAW5NswCDRDwAA
-AAAAAOs8EClQBIAAWQcIwCDRDwDqJAAJ2ASAAFkHGMAg0Q8AbBAEG3gGGXl//f/iHaAKFQD+YGgd
-oygFAOMzCQ8BCoAA6CgoDVAKgAAMrAOpieKSviloBIAAq4jrkr8pnwKAAAgzCCiSwAvLASuWvwjI
-ASiWwOLMAQGYIwAA7Ja+KhQCgADiNt8qeASAAOI23iIAaYAAK5K+C6sCK5a+wKT88sQFoCsFAFlI
-EsAg0Q9sEAgceV+XECgSESkSEPgghhXgKwUA6RYBKWgEgADoFgUq1gKAAOgWAip8AoAA6v8CCfAE
-gAD+xgAP8ApFAFlIARx5UP7yogWgDxUA+O+iBeANBQDwioAN7/r1AGhBB8Yq0Q8AAAAAKzogCyso
-iBSutAM+Cem7CA9PAoAAq5mLFe4SEimBCoAA4P8aBMgrAADnnIAt34KAAO6+OAQHCYAADr44LpXA
-KEK/HHk4jRUI+AIoRr8tlcXsllwihsmAAGlRnIoUixVZSTP8AQId4AwFAFlIXPwAAh2j7YUAWUhn
-7kK/KVAEgADstAAD6AsAAO3RACnYBIAAWRGXwCDRDwAAAzgJ+mAEANMnBQDnJygP4AqAAArMA650
-qXfrQr8sRwKAAKh3GHkYDLsB60a/I7grAAAodlztdcUihBmAAPi/+PDSAJ0AihSLFVlJEvwBAh3g
-DAUAWUg7/AACHaPthQBZSEfaIO5Cvy3gBIAA+mBoHeANBQBZEXfAINEPAAAoQr8K+wMLiAEoRr8t
-lcXsllwq+X4AAPjf9jjSAJ0A7kK/KVAEgADsEgQj6AsAAO3RACnYBIAAWRFnwCDRDwDJbfjf9OjS
-AJ0A7BIEKVAEgADuQr8p2ASAAFkRX8Ag0Q/aIOwSBCnYBIAAWJWYwCDRDwAAbBAGKTACZJD/aJE/
-/SDAAV/ipQDRDyIwBvjwfAWjKQUACSkdqYgogp8kMAXjMgMkBSGAAPoAgh2gKwUA7HjZGWgEgABZ
-R4PGKtEPAC8xCBR3VBl4zS4wB/xg0BXv+PUA8mQCHaAKFQDu7AkPAQqAAOLSHQ1QCoAACKgDqSkr
-kr6kIuSSvy5nAoAAoswiksAEhAEklr8CggEilsDriAEGYCMAAOiWvi/cAoAAK8bf68beJ4BpgAAo
-kr4IqAIolr7ApPzxZAWgKwUAWUdiwCDRDwAAAAD6AIIdoCsFAOx4shloBIAA7kQACfgEgABZR1lk
-QEH4n/qI0gCdAOokAAnYBIAAWQY+wCDRDyowBiswBywwAy0wBC4wBY8yiTOZECgxCZgRKTEKKRYC
-W/850qDRDwAAAADqJAAJ2ASAAFkGb8Ag0Q8AbBAEEnf/IiAEIjQIIjQJIjQK8mFmHaACBQAiNALR
-DwBsEATAINEPAGwQBCYiENMP8MMgDeAFBQAaeIsoIhHnIHglSqEAAG0IGSOSjyKihahUpDMJMxGj
-IuckFiKoBQAAdlsCY//f0Q9sEAQiIQXRD2wQBhV3CPQAAh2gBgUA/vD0BaAHBQD4YGgd4AwVAPgg
-BhXgAwUA/8/EFaAAzgAAAPzAaB2gCgUAWUh/jhKPEQszAgp3AvfgAEMwDBUA5VwBIiAFAADoSS9h
-EBEAAABABA4IG3+H5osgaLAsKlAwAKEE7hYCLkgKgAD6ICYVoJlNAHuQq8Yq0Q+LEJOx92AGFeAC
-BQDRDwAA/IBoHeAKJQD88K4FoAsFAFlG/cYq0Q8AbBAEBACHyFYCI2AEAGHRDwIjYNEPAAAAbBAI
-GnhNKBIQkhXndr8byASAAOYSBSsQBIAAmBeZFPrAAEMwACoAAGRQbM0rKmKACjwB7Enxcqv9AACN
-FGTQSvugBhWgAgUA0Q+PF2TwQAjqMBl2tCmSQcClCio3CpkoqYiYFgwCAIoXKXKCGHauCpkBCRqO
-CKgKiIQLgAAM6jCLFgy7DGux22P/ocAg0Q8A2iBZOzFj/5TeMO0SBSp4BIAA+iAGFaALhQD88EgF
-oAoVAFlGyccr0Q8AAABsEAQF6jAWdpgoYkHAlQkpNwmIKBR2jvigAEKwAFYABqgKiIQLgAAJ6jAJ
-WQxqkRMMAgAqQoIKOgEKGo5lL99pptzRD9EPAABsEAQpIQImIQSEIPRApBXgCAUA5mz/JMv9AADp
-JQIrNwKAAOZECAqvAoAA9I8ACnAAwgAAJSEFJiEEsVX0QAgVr1UBAOUlBSNL/QAA5WEnfM8CgADp
-RAgKvwKAAAdEDAQAhwhYYOQABwLzL4AAIiEFCSIRolLRDyglBf//WA2gBQUAAABsEAT079oF4ygF
-AAgoKKhVLlLCKVK8c+EByJDRD8Ck/O/OBaArBQDtJAAJ+ASAAFlGiCNWwuokAAnYBIAAWRDTFndA
-JmAE/t0QDeAEBQDaIOw0AApYBIAA/reIFaANBQBZED+xRHZJ5WP/rwBsEASIIisgBxl2Qhx2QvEK
-LA3huwEADLgRrIgtgp71oAVTogCdACiCnQm6Ciqivx12RQqIAel2RhQEmYAAjzIuIQcqIAcODkr6
-AgAFN//BAOD/EQ1SgoAA76oCD3cCgAAOqgINqgKagO4iACJT/QAADK8R/wBmFefVAQDphgIvdgKA
-AO5OAgRIQQAA7oYBLpVMAAAoPBD8gaAA0AIFAG2pBQgAhgkCYQy/Eaz/JPad0Q8AAADqJAAJ2ASA
-AOxEAAroBIAAWAoF0qDRDwDqJAAF2GEAAPyAaB3gDBUAWA63Y//RhyeCefripBWvxgUA5XkUI+iB
-AAAG1gHmowgKTwKAAOlVDAEQQQAAknkIVTLldRQhmQEAAPJABTriAJ0AaJs3opoqrPDqMz10OEEA
-AOhBHGvABIAALkz/bekFAgCGCAJhitGqmuXZBCVTwQAAc6F66tYBLRAEgABkUEwMvRGs3STWndEP
-AAI6DApPFG35BQIghgcCYw9CDOqOCANBAQAA7+wQIQxFAACwLtMPbekFCECGDwJlL9kECpIMomIi
-LDDi1gEv/b4AAMAg4tUEI0EBAACY0JjRDL0RrN0k1p3RDwoiDPLhJhWv/VoAImxA86AmFa/+GgAA
-AAAAAGwQBBN2cRZ2Php2cOIzIHEoIQAAK2J9lbGaIylifZkiKGJ/5WZ9JEAFAAAoZn/RDy9igOX2
-ASNwCwAAniMtYoCdIixiguVmgCZgBQAALGaC0Q8AAGwQBBN2XBZ3JBp3JOIzIHEo4QAAK2J9lbGa
-LylifZkuKGJ/5WZ9JEAFAAAoZn/RDy9igOX2ASNwCwAAni8tYoCdLixiguVmgCZgBQAALGaC0Q8A
-AGwQBhh2DxZ2DCiAfSpifClihiZijAmqEaqZ5mAUJHw8gAAnnQH28AAV4AAqACedAyd8gPbAB3iS
-AJ0A1GD07kgF4AMFAPABlA2gAgUAI6Q5LqAMjaD5QPAV7/j1APlCxh2gDAUALKUb/O42BaD7xQAL
-mQEJKQIppAeSEp0RkxD4sBAVoDtFAPggZhWgClUAWUW0KVCAADAECQkbf59x4iwBIZgFAADjYXxy
-IAUAABt14i9wDSqyci1wDCuyhqpM6joIDmZCgADsvAgNVkKAAKuqLKYQ/UGGHeXexQAupRovpA0p
-UIAAIAQJCxvzf/r30gCdAG0ID7EiACAECQwb85/6X9IAnQBj/+kAAAAAAAAA+gCiHaA7RQDsdvAZ
-6ASAAFlFj2P/d9EPbBAEGXZIjS4fdsYoIAT+QWgVoAQFAP39iBWgAwUA9QAHUxBVZQDqIgwvWASA
-APmgDbxiAJ0ACdgR6MwIBQOJgACeq4srZLACKrYMiieTK+MmDCVQQQAAWAUCjSf9pAAVr8YFAAbM
-AePVFCZhAQAAnNmc2CsgBR52zyMkFfVgDkRgTfUA7SQFIgYRgAAbdiUlIAcrsX7k4rspUASAAPQg
-AALyux0AWIuTZKG00Q8AjcnTD3LZau7GCS9YBIAALsAF8WBgDeBIJQCTvPnf++0iAJ0Aiclln3OK
-y2WvbvuACBXgOPUAKMQFLvLU+/3oFaANFQD/bwANsAwFAFgCSxp1F4musJn5QcYV7/0OAIv+iiD7
-X/iS4gCdAP/8KA2gBBUAjcuIynLZEJ7L+kFoFe/+QgAAAAAAAAAA8wAETSIAnQDb4P+BRhWv/d4A
-KeJCKuK9KyEJ+T/gFeAMBQD5yEYV4A0VAFgCMYsn7iICJdCBAAAGqgHjtRQlUQEAAJq56rYIJwFJ
-gAD87RgFoApVAPxACBXgOyUAWUUoiiJZQxXHz+ukAAlQBIAAWArEIyQFLSEJ/kAIFaAKVQD87QIF
-oDslAFlFHdEPLSAF9b/3jWIAnQAtITb+RuQVoApVAPzs8gWgOyUAWUUV0Q8AiC0JiBHozAgNcn4A
-AInL8yAHBSIAnQCey4sryLCTvCrABcOw+1/x1WIAnQCNy2XeMI7MZe4riM1ljib7gAgV4Ci1ACjE
-BS7y1fv+CBWgDRUA/28ADbAMBQBYAflj/gItITb+RuQVoApVAPzsuAWgOyUAWUT30Q+NJxl2WZlA
-i9iIICzRFenSCybwgQAA98AEB7AHFQDvzAgMRgKAAAeIAphB65FxdmEBAAAq2RQPAgAPAgAqrBDq
-1RQl0EEAAHrDXchKBACGCwJhKtIIKqwQ/UAEhCIAnQCa4IsiZb3j61wYKVAEgAD8ACIdoE0FAFgN
-TtEPjc1y2Qnb4P+BphWv/HYAiMzzH/idIgCdANvg/4GGFa/8JgAA86FmFe/++gDrzAwCAZGAAAxN
-FLja6no2CkgEgABtqQUJIIYLAmOsSer8QCaMSQAADXsM0w9tuQUJQIYKAmUM/Qwt3FD9wAYV7/3q
-ACj8QPnABhWv/b4AAGwQBPhACBWvyQUA6SkBAYJJgADTD20ILnOBPCowACwwB3ShMyohBemrCA5n
-AoAA7DMIBdkBAADrOxV5uASAAON0AAOAqYAAY//IAAAAAAAA+m8AC7//rgDzDwAPcA0FAA7TONIw
-0Q8AbBAEKSAHG3SwJyEI+AIABXGZAQDodP0czAKAAOl3Ag1SgoAAC6oCG3Rv+mAGFaAsBQAIdwKN
-IJsy/GBmFaAONQDo2AIO7gKAAA7dAp0xiismIBT4QSgV4AUFAJU1lzSYNpk46jYJKzICgAAGRgKW
-N+UkFCGQwQAA0Q8AAGwQBCQgIhh02/JBaBXgBRUA5EAhYjP9AAAogn8AgQTgZhoKqAqAAOYzCAKr
-/QAABTMCkyrRD4kpmSrRD2wQBPTpmgXgBBUAJVJ/hiuDKQBRBPyAAQPf+PUA5jIMA7v9AAAIdwMH
-ZgHmMwwKggqAAPKNAAkxM50AoyLRDwBsEAYoIAUrIAfTUPkABhRRuwEAjSuMKf2ABbViAJ0Ajycv
-8RTB4P/ABTviAJ0AF3QgDLoRp6ooop7sdBwdyASAAPcABZnSAJ0AKqKdDL0KLdK/DaoBwGHxSlAN
-4AUFABt0IyggBx10qh50Wv5BBBXgyBEA9ZAAFjGIAQDuzAIMRAKAAAj/Ag3/Apyg+EAIFaAuBQCe
-o/tARhXgDjUA7Y0CDEYCgAAOiAKYoYwpKCAUiyubqZyonaafpOWmBSxCAoAABogCmKclJBQMnxGn
-/y72nQMJR2mSA8Ag0Q+KJ/qAaB3gDAUA6qwgKmgEgABYAZrSoNEPAAAAAP/9ZA2gCgUAjCJkwIoD
-DUdp0m2JJy6ZFC2cIO4WACcDiYAAipkUdX3xSCAN78cFAPAAHA2gI6UAZKByi9Dn3gEFAZmAAHqx
-Ky+gAHPxJS/RBSmgB+74CAzPAoAA6aoIBEEBAADoqyB9YASAAOrEAA5+rgAACrwMDFo4y6COonTp
-tsAg0Q8AAAD/TwAOf/+CAP/+RA2gCgUA6iQABdhhAAD8wGgdoA01AFgMbWP/XosQitHn3wEF2EEA
-AOvVBCVTwQAA6tYBJ/kBAAB/qyIs0QUec8uqyprRnqCNIOSmAi7uAoAABt0C/UAmFeACBQDRDx5z
-w56gjSDkpgIu7gKAAAbdAv1AJhXgAgUA0Q9sEAgoIAUmIAf0IIYVoBk1AA8CAPkACmVhZgEAiCLx
-FawN4AoFABNzoQxuEaPuK+KeF3ObH3Od92AQS1IAnQAk4p0PaAoogr8IRAFkQfX6QGgdoAslAFk/
-a2aiB4x494ANGJIAnQApMq4adSr3IA37UgCdACsyrS2i4Q23Af1gDYZiAJ0AH3OGsM6e+GRxhNtA
-/AAiHaANBQD4QSgVoB6lAPpACBWuDwUA+EGGFaAJBQD4ICYV6IgBAO8WACxFwoAA+CBGFaAPBQBY
-BXLodRIdWASAAPpACBWgCQUAmRAogHQsCgH+59IF4A0FAOkWAixAQoAA+CAmFaAe5QBYBWXARuok
-AAvYBIAA9kEkFeANFQD+wAAUsA4FAPMgAETw//UA5JadK+AEgABYpX78QrAV4A4FAP5Chh2gSwUA
-66QDK+YCgADupAAu6QKAAP2GAA5wDRUADcwCnKH0daYVoBpFACokBQUPR2jyDCggOsCf+QAIZGIA
-nQDAINEPAAULR2my9IknJ5kU5HBxZPCBAACLmRV04fFvwA3vxgUA98AEB7AkpQCM4Mq9e8ErLbAA
-KbAHdNEiI+EF7zgIDM8CgADpuwgEQQEAAOi7KX3oBIAA69QADv6uAAALzQwNqzhksLOPsnXxkebv
-AQ393gAAYACjAAAAAPNvAA7//14A//5EDaALBQAAwKBZPu6MePmf8rCSAJ0A+kBoHaAbxQD8ACId
-oA1lAFgLy//9RA2gCgUAwHAZcxvAigjINPkhBhWv+T4AAAAA6iQAA1hhAAD8ACIdoA1lAFgLv//8
-hA2gCgUAAAAAAAD6QGgdoBvFAPwAIh2gLQUAWAu3//wEDaAKBQCKJ40UwMDqrCAu2ASAAFgAsdKg
-0Q+K4St8ECvlBObrAQVTwQAA6uYBJdkBAAB7qyQs4QWqyprhHnMOnqCNIMDh5aYCLu4CgAAO3QL9
-QCYV4AIFANEPHnMHnqCNIMDh5aYCLu4CgAAO3QL9QCYV4AIFANEPAABsEAQoICIlIAcXc44DiAz4
-REYdoVUBAAdVCSRR/qNEJFX+IyAiiSv88WgVoAoVAOQwHmHb/QAAAMEE4LsaDVAKgADrmQgFU/0A
-AAqZApkq0Q+NKZ0q0Q8AbBAEKCAG6Iz/KVAEgAD4QMYdoAsVAFuOM8Ag0Q8AAABsEAQpIQSHIP8g
-ABS1gx0A6XcIDEeCgAD47wALsAoVAPb/gBXkkwEA5nIALIEKgAD9QAEFX/j1AAioA+aqAQyCCoAA
-+yAEANE6nQDoZgEKQAqAAAhmAuZ2ACKA0YAAJSECzUPqIQMi2AUAAAsLTyslAnuhD9Iw0Q+wXOwl
-AimQBIAA0Q/A0O0lBSmQBIAA0Q9sEAT0QIQV5UMdAOIiACongoAADFURpSIEIgwiLf/yR+gVpEMB
-APqABADQBRUAAFUa5SIBCgIKgAACAhnRDwAAbBAEJyEEiCDTD/b/4BWvkzkA6SUFKy8CgADlhQgM
-7wKAAA1dDA0AhyohA/oAIh3mwwEADDtgCgpG/GJgR1AMBQAMnRENXQwNIIcMO2JvPhf4wT4N7/31
-AMihc6EqCZIRojLRDwAAAADnIQQkyAUAAAkJTyklBXeRUbB2DGUR9QAAQv/+/gAAAAmUEaQ0/uAA
-FzWUHQDuiAgMz4KAAAmIDPkfgBWkRAEA7oIAKgEKgADpIQUtsAqAAA1vAw/uAQ5mApaA+EAIFa/+
-hgAsJQX//pwNoAkFAAAAbBAEiDMPAgAIiFdvhASJImWQJ4on5TIEKlgEgADjMgUqaASAAPtEABWg
-DAUAWAAE6iQACdgEgAALUADAINEPAGwQBPhAaB2vzAUADIwB64kEKZAEgADiVAwKGASAAO2CASqv
-AoAABbsM6LsyCVcCgACq0i2BBZKBK4UErNnqWgwEyQEAAHkrOcqgqiV1kz3ITm1JBQIAhgMCYYWB
-K4kEqlV5UWjlhgEqkASAAMiw0Q8mzECWgfcABhWgAgUAIoUE0Q8NIgzzACYVr/7+AAKXDAdLFOtE
-DAmoBIAA0w9tuQUCAIYFAmHnMwgGEQEAAG1JBQIghgMCYy2JBAeiDKLCIixA4oYBLv1GAABj/6Ii
-zEDzACYVr/5iAGwQBhNzu/IgBhWgBQUA+iAIFeAJBQD053AFoAdFAPjnagWgDBUA4LEEDbbCgADk
-ZAgOUAqAAPogJhWgAgUA+MAAQzAAmgAAAAAAAAAAAMIa5mwgIqgFAADnfP8iIIEAAORw7WGYCQAA
-KDG+LUJi4FEEDCNsAADqclkW/rGAAC5CXiJCYCqif4jh6+IAJ3v/AAAv8j6bgIvg6RYCL/5CgACv
-qii2AenmASET/QAA6eYAJtv9AADrRmInc/8AAOJGYCdz8QAA6eWBJYERgAD6oAQA0AIVAOsSASkQ
-CoAAW41JiRL//agNoAwVAAAtYH4u3OgODkfpZH8nMGOAABhyhvnAAQQ///UAL4a7L4bDLWB+6RYC
-LPgEgAAP5BYBAgAYcdgogoIA0QTgmxoOgQqAAP2AAQbf/vUADt0DDYgBC4gCG3HQKLaCD+QW/CBo
-Fe/+AgAJ5BYBAgAbccoqsoKNEcfvDt0DjhDA8eLyOQ8BCoAA7aoBCWAKgAAMqgIqtoIJ5BbRDwBs
-EAQpITkoITgqIAf5AQYN4aoBAMAg0Q8ecbcVcbgu4IAMqxGlu+2ynidw3QAADk4U7HGxF3ANAADv
-AgANGASAAP+gBDuiAJ0AKbKdDKoKKqK/CpkBCZQC65QABIPBgAAsIHVkwB0CKgLsIhws2ASAAFuM
-U+yrEQ0wBIAA+oAARfAAGgDAYCwgdMrHHHJJ7SIcKVAEgABbjBmmru1xzxn/AoAApf8u9p38Q4YV
-4AIFANEPAADocckZzwKAAKWZJpad+EOGFaACBQDRDwD//hQNoAkFAMck0Q9sEAgqIAeIIuxzJhlI
-BIAA+iAABTAPRQDqqwoMBUYAAA67Eay8Lc0CLtECJ9ED/8EAD3AEBQDuFgMnBVGAABZzGhNzGJwS
-EnF+mhGZEKKyIhYEAnIL4hYFIRBXAADyXoAVoAsVAIgVJSK/o4h4UViLUYxQnLCMUCr6gApaAfuA
-JhXgCQUAmVCZUVv/p/FF6A3gCxUAiRQLeAMJiAumji/ifo0To4iV8JhQn1Hl5n4iIAUAAH1JrisS
-Aiu9Aue1Ay0CIgAAwCDRD4IUC3cDAnIL4hYFIRBXAAAiLPQlIr9j/40AAAD3oGQd4AIFANEPiBUp
-Ir+jiJWRmVCYUfRX5hXv/t4AAB1xRi3QgIsR6hIAJujdAAD8jgAO8AwVAO3cAiXYYQAAWAnpwCDR
-DwBsEAQacdwbcdwZcdn5UBAVr/71AOsrCgkBCoAA9zAQFeAMFQDkSDkOMAqAAPlQBh2nRgEA50UB
-CeuCgADlxTkJ08KAAONRJ3vABIAADaoCDk4D7ncBCegKgAANdwL7c+YVp3cBAOeUgCQAeYAAyX/R
-DwAAAAAAAADvccIT/5mAAC7y0scuAu4BDs4CLvbS0Q8VcbwjUtLHjggzASNW0tEPbBAIG3K3GXK3
-0w8osh385WwF4AoFAOyQACRz/QAAbYkbDM8KDf8KL/G+5fASZVAFAACxzAzsAQwMRyyUANEPAB1x
-CC/SkCqy4qz/Cf8Rr6qPoimgB8Aw8fDcDeGZAQAecp0JnAricpweX4KAAK675XKbFfALAADo4QIm
-u5sAAAfHCvfAZBWgD0UAD4g26BYDJAW5gACaEJsSlxQHZwvnFgUjuFcAAOkWASO70QAAiRUkcr+i
-mXlBdIxBi0CbwC1CACr6gApKAf2gJhWgCwUAK0YAK0YBW/8h6BIELQTKAADA8Q9vAwj/C6X9LtJ+
-jBOi/5Tgn0CeQeTWfiGYBQAAfDmriBLpcncUQAsAAOaFAy0D0gAAGnJ0KZIdK6AA6Zz/JdgFAAAL
-mQEppADRD4cUwIEIZgMHZwvnFgUjuFcAACd89CRyv2P/bxlyZhpyZiblAymSHSugAOu8ASTL/QAA
-C5kBKaQA0Q8AG3JfscoK6gEqtADRD4sVLHK/oruUwZxAm0H09+YVr/3yAB1wsS3QgIsR6hIAJujd
-AAD8jgAO8AwVAO3cAiXYYQAAWAlVHnJMH3JNLuIdKPAA6IwBJ3P9AAAI7gEu9ADRDwAAAGwQBBJw
-qSIikwLCUNEPAABsEAQacJ7TDy2ihCiihymih/lgAAQ7mYEAeYkUCeowGnCeK6JBw8IMuyirmSmm
-zNEPDAIALqKCf+/hItAHbivbwKX84h4FoAsFAP5AABcw/wUAWUC+IizxyiL0AeId4HMVAMChWTUZ
-BSQ2BDMM+mBoHeAKBQBZHEgEIgxlL+PAoVk1EvoOIh3gCgUAWRxDCeowGnCBK6JBw8IMuyirmSmm
-zNEPAGwQBBRxFBtxEhVyGCNAgP7iKAWv/+UA/f/iHeAMFQDkMA1iujEAALAyIkSA0Q8AAPQAAh2g
-CEUADwIA0w9timrpUfwi0AsAACqhACiwgPqABADQBhUA+yDWDaADFQDAYADJGgkJRwiSAeIyOQxQ
-BIAA5iEsexuCgAANkgPiiAELE8KAAOMiAgsYCoAAA4gC8vPmFaeIAQDotIAlAKmAAMmIsUTnfAQi
-qAkAANEPAAAA/x7QDeADFQBgAAHAMCji0g+IAQg4AvnaRhWv/14AAABsEASFI4ggFnBJ/OCKBaFV
-AQDkgGdq1sKAAKamKWJ/J2J+HXBA8yX+DaALBQByeS8rZn8rZn6EIYggmECFICNifZRRmyDrJgEh
-m/0AACNmfdEPAAAAAAAA8uAEBCIAnQBykRyKIZigjCApYn2awZsh6yYAJMv9AAApZn3RD9EPAKze
-rq5+gTDoZn8qga4AAM6NL2J9avIoI2J7I2Z/hSGJIJlQiCCVgZsg6yYBJ6P9AAAkZn3RDwAA62Z/
-Iv6pgACFIYkgmVCIICRifZWBmyDrJgEiI/0AACRmfdEPjiGs36+vD+8MD744/s/GFa/90gBsEAQj
-IQQVcAn0YAQB9kM5AAQzAiMlBNEPAAAAbBAEGnBV6CIDIVv7AAArsnwqon/HnOmIAQ3eQoAAC6oI
-C4AA0qDRD2wQBIkwFnBKh0CKkSZif4yQnKCLkIgy+2AmFaALBQCbkeuWACRD/QAAmDKFJwl3Eedj
-CAKr/QAAlSfrRQMigEmAANIw0Q8AJCAaJkzo+kNmHedmAQD8wmATX/n1ABhwgghoCimGuymGwyQg
-GuI0AA3QBIAACuQWAQIAHW/WLNKC+oAEANAPFQDgvhoKAQqAAAD/Ggn/Aw/MAQ7MAizWggrkFtEP
-bBAEJCELJEz4BARDIkz8sDgCgzjSMNEPbBAIGHFRkhTmEgQrEASAAPjAAEMwACIAylnNJypigAo5
-AelJ8nKr/QAA8OEwDeACBQBgAAfaIFk0TGP/3ppw0Q/AINEP3jDtEgQqeASAAPogBhWgC4UA/OJ6
-BaAKFQBZP+LHK9EPAABsEAYab6sVcVD1/8IdoAcFANMPI1KuAAIAKaLQ0w8EmQEpptAYcEUnhlxY
-g8dZOohZQV2SEBZxRR1v0QgsEAw8Ag3MAixWrhtxQtMPJ7aEKmIg9OKCBeADBQDnb5cVAnmAABRx
-PBJxIitylSpi36s7CbsRq6ouQoAtIIAAMAT1wAQHcN2dAO5GgCb8OIAALKIbyMPAsVkY3i1iILEz
-7TPHciCDAADyIAgVr/TlAB9xKy7yggTuAe72giEsLQAAWIOg0Q8AAFkcFhhxJi+CyBlxJQn/Af8Z
-BhXv/5oAbBAE6iQACdgEgAD8ACIdoE0FAFgIGtEPbBAEwEAE5BYBAgAWb2wlYoL6QAQA0AgVAOA3
-GgkBCoAA/QABBF/59QAJiAMIVQEHVQIlZoIE5BbRDwAAbBAEE3ENIzF+ojLRDwAAAGwQBokiJDID
-DwIA8ThMDedEwQD0gAlSUgCdABVvVeZvUxpPAoAA9IAJ0hIAnQClmSiSnvcAC8tSAJ0AK5KdBkwK
-LMK/DLsBZLFNHXD4iiAt0n/9QATT4gCdABZw8/wAIh2gDUUA9s/EFaAOBQD6IEYVr/j1APggBhWg
-DwUA9MAAQzAIBQDoFgErUASAAFgBMvwAAh2gDUUA/gACHaAIBQD4IAYVoA8FAOgWAS1YBIAA6BYC
-K1AEgABYASfAlgxOEaXuKeadLSAGiyL64bIFoAwVAOy7AgboBQAALSQGmyL6YEYVoAIFANEPAAAA
-AAAAAPwAAh2gCQUA+CAGFeANRQD4ICYV4A4FAPggRhXgDwUAWAERwJMMThGl7inmnS0gBosi+uGG
-BaAMFQDsuwIG6AUAAC0kBpsi+mBGFaACBQDRDysgBv7hdgXgChUACpgC6CYCJdgFAAArJAb+YEYV
-4AIFANEPF28AinhqoUsMSRGlmSySnm7GUiuSnQZMCizCvwy7AeSwRWVr/QAAnXhlvrlgAATAINEP
-AOtMGClQBIAA/AAiHaANZQBYB5vAINEPAP/6TA2gCwUAwKBZOrKKeGuhqf//HA2gCwUAwLDA6g6u
-NP7hBhWv/uIAAAAAbBAGjCfucJQa0ASAAPWBKBXvywUA6ckUJkCBAAALiAHrbu4Sq4EAAOXGCSTI
-gQAA6cUUJEEBAADoWwt5ygKAAC3BFaXVlcmbUI8g+qCmFaAIJQDpVgMv/gKAAAj/Ap9RiSL0oIYV
-pzMBAO5WAiyMXgAA9GAJClIAnQAUbsbmbsQZzwKAAPRgCXoSAJ0ApJkskp73gAszUgCdACuSnQY8
-CizCvwy7AWSxOh1waYog0w8t0n8PAgD9QAST4gCdABZwY/wAIh2gDUUA9s/EFaAOBQD6IEYVr/j1
-APggBhWgDwUA8sAAQ3AIBQDoFgErUASAAFgAovwAAh2gDUUA/gACHaAIBQD4IAYVoA8FAOgWAS1Y
-BIAA6BYCK1AEgABYAJfA1gw+EaTuLeadLCAGiiL44JIF4AsVAOuqAgZgBQAALCQGmiKZUtEPAAAA
-AAD8AAIdoAgFAPggBhWgDUUA+CAmFaAOBQD4IEYVoA8FAFgAg8DTDD4RpO4t5p0sIAaKIvjgagXg
-CxUA66oCBmAFAAAsJAaaIplS0Q8rIAb+4FwF4AoVAAqYAugmAiXYBQAAKyQGn1LRDwAAAAAXbnSK
-eGqhQww5EaSZLJKebsZKK5KdBjwKLMK/DLsB5LA9ZWv9AACdeGW+xOs8GClQBIAA/AAiHaANZQBY
-BxHRD9EPAP/6mA2gCwUAwKBZOiiKeGuhsf//PA2gCwUAwLDA6g6uNP7hBhWv/wIAAAAAbBAEKyAH
-Fm5oGW7P/N1ABeDLEQDqIQguYoKAAP2GAA5xuwEA7DYALdwCgAALqgIJqgKHIJk2lDiVOfZgRhWg
-IgUA8mBmFaAIBQCYOpg7mjT84AATsAg1AAh3Auc2ASGQwQAA0Q8AAABsEAQsIAfrIgAp0ASAAPwA
-Ih3gDkUA/AIABjA/BQBZO7Adbl8YboEeb+ntAAUNSASAAAkCYQkCYQkCYSkgBy8hCAkJQe6mAizM
-AoAA+eYAD/ALBQDo/wIFEMEAAO+mACVIQQAABCCGCQJjBACGCQJhK6QW0Q8AAABsEAQoIAcabmkI
-KEAKiRAKmQKZMIcgHW4sFm4z6m9KG74CgAAHVwKXMeYAFQG4IQAABwCKKyEI7TYELGQCgADsuwIK
-zwKAAOq7AgTjoQAAnDX6YMYV4A4FAJ43BACJ6jYIJMtBAACZOeMhFwGQwQAA0Q8AAGwQBJc2GW4R
-HG4Q/NwkBeAehQD+YGYVoAs1AO02AirGwoAA7DYAKnhCgADo/wIJVgKAAAuqAhhvqw9vApoxixqb
-OYoZCSkCmTSaOIkYCP8CGG4JmTefNegAFQGQoQAAAgCKIjww0Q8AbBAEGG9YJYJ/wJDmgn0iggmA
-AIphjGCcoItgmrGZYJlhJ4J/sHcnhn+OIZbgnmGSYOYmASMzIQAA4jQACxgEgABtSQUCAIYDAmHS
-YNEPAAAmgoCFYYpgmlCHYJVxmWGZYC+CgrD//xBGFe/+/gAAAGwQBAUGR2liSBhvOoUnKoJ/9KYA
-FeAJBQDign0lAdmAAIchiyCbcIogl6GZIJkhJoJ/sGYmhn+NUZLQLSYBJSYA4lYBIWMhAABtSQUD
-AIYMAmHAINEPAAAigoCPIYcgl/CGIJ9hmSGZIC6CgrDu/xBGFa//FgAAAGwQBIgg+kCkFa/MBQDi
-IgMpOASAAAx8AeyqCApfAoAA6CE4dVEBAAAteQSouavdLXUEeaMtyTfJReI0AAwYBIAAbUkFAgCG
-AwJhKXIAC5kI6pFZfBAEgACZcNEPwKCac9EPAAipDOm6DAGBoYAACUsU7bwIKZAEgADtTTYMMASA
-AG3ZBQIAhgYCYQkyCOtODAYZAQAAbekFAiCGAwJjqs8v/EDvdgAsEASAANEPIsxA4nYALBAEgADR
-DwAAbBAMkhuUF5UZlhgoIgcpMAPrMAIp8ASAAOcWDCRAgQAA6BYNKrgEgAD1YByhEgCdACIKAvsh
-4BWgHAUA/CCGFaSqHQDlEgwlYAUAAOYSDS5vAoAA7e0ICUcCgACoVfLApBXvyAUACGYBlhqmNuZs
-QC7QBIAA96AjGqIAnQDfoOy0AA5PwoAA+WAV9WIAnQCIoYmgmVAIeDYIdwzoVgElSCEAAOkGAAKY
-IQAAAwCKjaGD8oqjCN0MnfGqinirAiM8AZrzk/L0IAYV4AkVAP0tAA7wCAUA7Zg4BkgJAADomzkE
-FlmAAIUQ5HLBYphBAACEF+9EEQXQBQAA9UAVeqIAnQAYbWnA0OgWBSRAQQAA+CDGFaAPBQBtCBcA
-ATAAADEgDAkgDQEAATEAAgAAAjAgDAGMHYkaLMEFDrYLqcnpnEArUASAAPjAB9riAJ0AjKAD2Qvj
-1goEyCEAAOx4NgYC0YAACHcM6GYAJWAhAAAMIIgJBIqGo4mgjKKmhgiZDJmglqPoawZ3+AUAALHM
-7KYCI4ihgABk0LToEgYhmGEAAPBgBY8QDQUA6AAVCcgEgAAJAIoJAIoJAIqMoex5NgYDYYAACXcM
-A9gLA9YK6WYAJWBBAADsRgAEQCEAAAgIioaliKEsogQGlggJiAwopgEmpgXpawd3+AUAACzMAeym
-BCOFIYAAZNBk6BIGIZhhAADtEgUh8YSAAOgAFQnIBIAACQCKCQCKCQCKwNCJoGSQVORwcWXQBQAA
-dKtpY/7YAAAAAAAAAPzPAA0//BYA//2gDaANFQCMFewABQnIBIAA+ACoHeAAygAAAAAAAAD//ugN
-oA0VAO0ABQnIBIAA+ACoHeAAcgCJobO4+QIADf/+jgAAAAAA+ACoHe/8ggD4AKgd7/4iAP/gAIHw
-CPUACDMK+8BGHeQzHQDjIggH+AUAAO9VASEQBQAAgxsZboSMFCQxBx5toBhs2vohiBXqRAEA7Wza
-GicCgAAIRAKUsIMwD+05nLPttgIp1gKAAAoqApqxKZJ/8yANF9IAnQCIGGaBmI0bH25zGWzy/aNE
-FeHIMQCvzCzAgOi2By7qAoAAnbbrEgkt0ASAAAk5ApmkDLsMm6XRDwAAAAAAAJsShBeTEZUQ70QR
-BdAFAAD1SvINoA0FAOsWAi0YBIAA7xYDLagEgABtCCruvAsN+ASAAObLIn5QBIAAjKBlwJiMobHd
-5cDIYZgNAACz++Q7GX2oBIAAY//OihH7jwANP/9yAP/70A2gDwUAixIN3An9YABFv/SiAL+a8THQ
-DeSqHQCDHOLsECGYgQAAbakFAgCGAwJhhxkLqwnzQEAVoAMVAOl3DATAQQAA6BYEI4CpgAAsEgcP
-zBH9bwAOMAkFAAyTOf4AIh3gDQUAA/04Zdwp//qkDaAPBQCNEAx4Ngh3DOjWASV4IQAA72YABugh
-AAANDIqMo4mgg6KsjAiZDJmgeMsBsTOco/NARhXgANYAjRAMfzYPdwzv1gElGEEAAOOGAAboIQAA
-DRCKjKWIoYOkrPwPiAyYoX/LAbEznKWTpIMTGG01gzAIMwGIEJOAj6Bl/EeJobNY+QIADf/xAgCN
-GRxsjYscjxgUbgv/YOYV4AoFAPtgxhWh7zEApO4u4IAMPAKctA7dDJ210Q8AAAAAAADzrwANf+52
-APIAQh2gGAUA+CCGFa/tUgBsEASEKYMsBDMMAwNIIyUfIyUh0Q8AAABsEASJJyqSDPkighWgAgUA
-5ZwgJKDBAADkqwwFUyEAAOuiOQQE4YAAKpIJ8UUQDeAG1QAnCjzNNiugAHexQWi1K3a5CyygEGjB
-NXa5AmjCLy2gB8DA6lQADtgEgABb+dIrWQSKUci/Za/LYAASLKAQacjNYAAJAAD//6wNoAoFAPBB
-wA3gI9UALSAAc9EZji7AIO5PDAdzIQAAD+I5ZS/nwCDRDwAAAADrJAAKUASAAFvp5uKkAA1+jgAA
-Y//hAAD//ZwNoAoFAGwQBAUGR2liUosniLj5YqQV780FAOeyCyXQgQAADa0B7ZkICmcCgADocTR0
-yQEAAC65FKyFrO4utRR1kyrIP8hNbUkFAwCGCAJhJaIADFUI+KsGDeACBQCVoNEPwCDRD8AgkrvR
-DwAA6JUMAYFxgAAFRxS4duZGNgmQBIAAbWkFAgCGCAJhBTII50gMBpkBAABtiQUCIIYDAmMFyQyp
-2SmcQPlABhXgAgUA0Q8r3ED7QAYV4AIFANEPAAAAbBAELiAHH2wlDi5A7WvrH3KCgAAP7gKeMOgi
-ACpQBIAA9Nf6BaALRQD8YEYV4DwFAOw2AyxGAoAAC4gCG2wZ6DYBKcgEgADkAAUBmEEAAAMCYQMC
-YQMCYSwgByghCPwgAAYwBCUA5UQ2DmQCgAD9BgAMMNZNAOuIAgvkAoAA68wCBJEBAADslgYkqIEA
-AOiWBCqYBIAAbUkFCgCGAwJhLVQG0Q9sEAQWbSErIAX0AWId4AyFAPYAIh3gEyUA+mXWDeAEBQBz
-sWf1YAYdkAOVAHWxdvVgBFySAJ0Ac7lZiCJlgFTbwPxAph2gAT4AAADaIFid8PpAaB2gCwUAW/9f
-GmuhiyAjJAUqooEpYpmrqgmqEaqZi5f7ZAAVr8wFAAyqAeS1FCVRAQAAmrmauCSUBYsiZLCOKyAF
-wMn9YNYNr/JVANEP0kDRDwAAjSJl3+gCKgJbni5lr9zA6v5Aph2gC6UAjyJl/9DaIFueB2WvxSkg
-BogiIyQF54gCBMgFAAD4QMYd4AuVAPhARhWv/rYAiSJln6PaIFueR2WvmCwgBooiwLwrJAXnqgIG
-YAUAAPxAxh2gC8UA+kBGFa/9+gAAAAAAAAD6QGgdoAs1AFk3QeagqW0YBIAAHmtmiuj3QAW4kgCd
-ABNrZiwyrnXDZy1iZiwyrQ3LAX3AXbCvn+h9wGPaIPxBJBWgDQUA/h/iHeAOBQBYnXj8RGQVoA0F
-APtAaB3gDhUA+kBoHaAPJQBYnXElNq0pIAaIIsGhKiQF54gCBMgFAAD4QMYd4BsVAPhARhWv+54A
-wLDAygysNOzmCC39BgAA+kBoHaAbxQD8ACIdoA1lAFgD62P+ugAA+kBoHaAbxQD8ACIdoC0FAFgD
-5WU+omP/nQAAwKBZNv0eazWK6Plf+fiSAJ0AY/+3bBAE4iBwKSAEgADiOAIBAEmAAChEcNEP+oBo
-HaALBQBb/usqQHAMOREJOQIKmQIpRHDRDwAAAABsEAYmIAcqIgcFCEf4IAYVoWYBAOeiDiwVrAAA
-9IALmRIAnQAYbNMPAgDzAAhT4gCdACmpFOqiCSSAeYAAKyAG9WAMIJIAnQD6QGgdoAtFAFv/3cij
-wCDRDwCLMyohCQsLQ+SqEQ3ewoAA+0YADXAbBQALqgKacCwgBW7IeC0gcn7fctogW/9OZaCMLiAF
-6CICL0GQAAAvIHJ+/1nrav4cA8YAAOlq/RtXAoAA9MAFWhIAnQCpqiyingtrCiuyv/eACupSAJ0A
-LKKdC8sBZLE33HD6QGgdoA0lAP4AAh2gDyUAW/8OHmrsDG0R/6AARrAMRQAs1p2PEGjyNIon+oBo
-HeAMBQDqrCAqaASAAFv4jNKg0Q8AAAAA6iQACdgEgADsRAAK6ASAAFv+zdKg0Q8AwCDRDwAAAAD6
-QGgdoAslAFv/oWWvDiw8EOwDHgvYBIAA+gCoHe/8igAAAB1qzIzY94AGIJIAnQAMahGpqi6invfA
-BqJSAJ0ALqKdC2sKK7K/C+sBZLDCsM6e2GW/QWAAdgAAjzL++AAH8Dh1APn/9B0iAJ0A+kBoHaAL
-hQBb/4ZlrqEpPBDpBx4LwASAAPgEqB2v+tYAAABkrnyMoPz4AAYwLaUA/Z/zfWIAnQAeazKNov+/
-8xUiAJ0AiCKwuvpAxh2v+eUACYgB+EBGFa/5LgAAAAAAAAAA6iQAA1hhAAD8ACIdoA1FAFgDSWP+
-+QAA//qkDaALBQDAoFk2YB1ql4zYGWqZG2qX+Z/5YJIAnQD//RwNoAsFAMCwwPoPzzT/oQYV7/zi
-AABsEAgbbEabEPhACBWgCQUAmRKZE5MU5BYFKVAEgAD0IMYV4AwlAOYWByxGAoAA/QYADDANJQDo
-FgEo2ASAAFv/WtEPAGwQBMAg0Q8AbBAGlhEsIDuGJ+MWAiPZAQAA9CAGFe/IBQD0xAAV4+wBAOhV
-AQ93AoAA/mAARTANFQD7RQAVoACuAAAALCA7sd2xzCwkOy5hFeXoCAV4QQAA6IxAL9AEgAD54Ab6
-ogCdAImh6U82BP7RgADvRAwNSASAAOkmAA3gBIAADASKCQCIDACKLqIDI6ICL7YBKaIBDv4ILqYD
-D5kM6aYBJdhBAADv6wd54ASAACw8AeymAiIOMwAAjhAvISKFERpsBiQhB4kSIyEJ+kDwFepEAQDp
-kgAqIwKAAAQzAiQhJPsgBASwuxEA6mqxHdqCgAD7JgAM84UBAOtqVxxCAoAACEQCGGv2CpkCmXCM
-IJ51k3MSakmUdJV24v8CDmYCgADvdgImkBEAAAwsApxx6wAVA6jBAAAFAIoI2AKYftEPAP/vAA0/
-/IYAbBAE/tRkBeAYFQDjiwl53sKAAMGVc5tjr7+IIvxA6BXv/vUADkkDCYgBitMp0QOM0pyg/aBI
-FaCZcQAJmQkPmQqawfzXqgWgDwUAn9Of0ugmAiTIUwAAIpLK7LgIARP9AAAilsoqgmCwqvsMBhWg
-AhUA79UDJQCpgADRD9sw7CICKVAEgABZNZPRDy3NAa27KbB+KpzoCgpHb6YOGGqqCKgKLoa7LobD
-KbB+2vAK5BYBAgAcaf8rwoIAkQTg/RoMgQqAAAAoGg6IAwi7AQ27AivGggrkFtEPbBAEKyAHHmn0
-/kDkFeG7AQDsafAdzwKAAK6Z+TPIFar/AQDsvQoN0ASAAO3Svy//AoAA9wAFilIAnQApkp0NmQHs
-lAAEhVmAABhp8ikgBxRqKi0xEPggAALwmREA62onHMqCgADp/wIKrAKAAAXdAgvdAgT/Ap/AjyCd
-xPmARhWgNAUA9YBmFaAJBQCZxfmA5hXgBUUA68YGL/4CgADl/wIGWIEAAO/GASHIQQAACSCGCwJj
-CQCGCwJh+EDoFaALNQD/QAAUsAwFAP8gAESwDTUA5ZadJFCBAABb92nSoNEPAAAAAAAAAP/9VA2g
-CQUAiiLIosAg0Q/rvBgpUASAAPwAAh2gDUUAWAJdwCDRDwBsEAQoIQWHIfRAghXvyQUA6SkBClcC
-gAAKdwwKVQglJQTnJgEk2QEAAHt7BQh3CCcmAaiS5DAaYREBAACnpXUjFuI0AAuYBIAAbUkFAgCG
-AwJh0nDRDwAABykMCUgU6owIK7AEgADqSjYJkASAAG2pBQIAhgYCYQOSCAhMDG3JBQIghgsCY9Jw
-0Q8AAGwQBIsnhrn5YoIV78oFAOyxFSXAgQAA6ogBAzNBAADmtgkkyMEAAPlihB3gDzUA6WmUFEEB
-AAD4wTINoA0lAKbGJrYJGGs5mWCOIPygABUwCyUAC6oC6GYCL3YCgAAP7gLuZgEjSEEAAG3aBQQA
-hgkCYepmBSGBCYAAiTiNOfEhAA3gDAUAnDuZ0I44neGcOJw52jBZN5zqJAALWASAAPwAYh2gDTUA
-W/9v0Q9sEAT61HgFoywFAAwsKB1qParKKKK++mAEANALFQDvaWMd2AqAAHuIRh5qNwg4EOhIAglP
-AoAArpmYkC6ivymiwH6wKAm5AimmwA7qMAM4Ce/JCAxHAoAAqJmtmSiSfy6WfgSIDOiWfywBggAA
-0Q8AAz0J78sIDu8CgACtuyu9CSu8fCu9AiqxA/VPAA0wDQUADao1KrUD0Q8uosEOvgLupsEpUASA
-AFuwvdEPbBAE9tQiBaMoBQAIKCimhiRivvpgBADQCRUAAJcad0gyFGoKDCIRpCKCICpivwJyAfMt
-AAkwCAUA+uDghaAJFQDRDwAqYsEKegEKmDgIIgHRDwAAHWkrAzwJ7Y0IDmcCgACtzCzNCi3BwivB
-wSzBxQ27AXy7A8Ag0Q/SkNEPAABsEAQqICIpICMeaaj7LwAMsA8VAOSQXGcjQQAALCAHDAxBBMwJ
-K8H+Cb02DbsMK8X+KiAijCmtqvpBaBXnqgEA6iQiJQJBgAAo4n/ggQQFS/0AAOCZGg/ACoAA6bsI
-BEP9AAAIuwKbKgy5DHOTKsAg0Q8AACogBWihdYsiwMIMuwL6QEYV7/JFANEPAIspmyr9YGgdr/9S
-AAArIAcNrAz8REYdobsBAAS5CSiR/q2IKJX+KiAiy6ss4n+NK+DBBAVL/QAA4JkaD8AKgADp3QgE
-Q/0AAAjdAp0q67wfKVAEgAD8ACIdoA0FAFgBiMck0Q/HJNEPjSn8QUYV7/9+AAAAbBAOKiIQKKAF
-KQqV+QAtrGIAnQCMImXF6y0iEv7RzgWh3UEA5mjQHv6CgADvFgUu74KAAK7d/CDGFeAJ5gAAAAAA
-AAD7YAQFMAgFAAqYOIoYCKoBZKU8LVQn9iIGFaAJBQApVCH4pGYd6G0dAPakxh2gC1UA+qQGHehm
-HQD2pKYdoAsFAPqkRh3oZh0A5lQkIlDhAADqBgACwKEAAAgAioY+9qZmHahmHQD2pkYdqGYdAPam
-Jh2oZh0AJlQw+mGoFaAGBQAmVDkrVDoqVDf4p2Yd6KodAPqmxh2oqh0A+qamHaiqHQD6poYdoAoF
-ACpUOCkiFitUQitUTiZUTSZUQSpUTCpUQPin5h3gCgUAKlRD+qnmHaiZHQD4p8Yd6JkdAPinph3o
-mR0AKVQ8JjIVsWgoNhX2qOYdqGYdAPaoxh2oZh0A9qimHahmHQAmVEQqMhMrMhSqu/qpZh3oux0A
-+qlGHei7HQD6qSYd6LsdACtUSCkyEiYSEAqZDPmiHg3gCwUAKFAhKQqACYgCKFQhKkIZKUxo5KIr
-YsFhAAArNhcrNhYK2jYqVhUJIIgIBIouMhOq7i42EytCGQreDC1CGgq7DOtGGSWUKYAALkIbrq56
-6wGx3S5GG/yDRhXgDQUAKSEHG2hs/aAAhHqZAQDqIRoszwKAAAuZAplQ7iIALEeCgAAojG/+0lIF
-5IgdAO9WAi9+AoAAD48Cn1EfaXf60eIF4EkFAOlWAybIBQAAD5kCH2iBC3sKK7KfD+4CH2jqD7sB
-jxUL/wIbaWueVB5oeQv/Ag9rQavu7uCALVICgACaVilWFA7ODO9WBydwwQAAnlWLKSoiFay77KoI
-BdjBAADrJgklUMEAAComFQx5EaaZKJadKyAWLwr/f7EHKiAHjBpb/swrMhMqMhL7QBNEYgCdACcg
-BwcHQehoKRvXAoAApqosop4IeAr5F+gVoBvlAPuAFrviAJ0AJaKdjBYIVQHkUsdi2YEAAIgqLzIX
-LjITLTISLMKQiTcO3QwuIhcqmRSbF/+hAA6wBAUA7cwIBRAhgACEmYkpD/8JBP8L6YgMBkjBAADp
-Fgou8ASAAOmDbXf5wQAAKCAWKiAH+CFmFaD59QD5H+h8YysFAJoZC6odG2jdiRuaFKuqKKK++yAE
-ANALFQAAuxr7AA+Q4gCdAIkZGGjWDJkRqJmJkPlgBATwCBUACYk5KKK/mRgqosH5f+WIoAkVAPoh
-CBWv8uYAnByfHZ0enR/qJAAM2ASAAFv+1I0fjh6PHewSDCV70YAAwCDRDyoyFg+qCoqgZKB8Cto2
-KlYVKzIWD7sLuLvrRgACyWEAAAkIiiQyFigyEw9ECqqIKDYTjkAK7gyeQCQyFg9LCouw6t4MBYEZ
-gAAPTguP443ir6+f43r7AbHdneL/9vQNoA0FAAAAAAAA8JJADeAJBQAoMhfTDw8CAOk2FiRABQAA
-6DYXJ/hhAADxzsAN4AkFAPRiyBWguQEAiBcPSgqKoAi0CgrqNppALTIWD90L6LgLBughAADtZgAE
-QCEAAAgMiiQyFigyEw9ECqqIKDYTjUAK3QydQCQyFg9ICoiACu4M5YBUZOgFAADqEgciAeGAACgy
-F//jABXgCQUA6TYWJEAFAAD4YuYVoAQFAOisGC7IBIAA+w0ADXC5AQDqFgcve84AAGAAUwAA9AAi
-HaAJFQD4YsYV7/9eAA9OC4Tjj+KkpJTjeksBsf//wEYV7/NCAGP9/ok4ypmLOcCgmjuZsIw4m8Ga
-OPphJhWvmJUA+GCmHaACBQDRDwDAkP0gaB3v8noALfqZ/GCmHeACBQDRDwDAgfhixhWv+8oACZsJ
-KBIEGWeHDwIA6YgIDd8CgAAIuwgrvQorvIgqsf7psf0l2AsAACuxAQqZAfs/1iLgChUA63wSKVAE
-gAD8ACIdoA0FAFgAGcAg0Q8A63wYKVAEgAD8ACIdoB3lAFgAE8Ag0Q8AABxpI40gLiIYiDCPoP/O
-kBWgOwUA+CAGFaAKVQBZN5SJOGSd1oI5mSCIOPMAJhWgDwUAnzifOf5hZhXgAgUA0Q/AINEPAAAA
-bBAE+NIeBeAYFQDzAAQr4AYVAAs7Eam6LKJgKZ0B0w/puQgGBPmAAAROCR9nUuJNEQnmAoAADcwC
-r78P7grtIgcnQFMAACeCyQxcAu7tFyb4IQAA73YAJ3CBAACe0pfTHmd2J4LKL4bJDswC7NUDI7gF
-AAAnhsovomDukH4n+AUAAC+mYIwiAOEEAG0aDcwCnCLRD8Hl89/7y+IAnQAYaOsIOAoogn/aMPpA
-aB3gDAUAC4AAiSIAMQQAahoKmQKZItEPLJB+9S/mHeAHBQAnlHznlH0rwASAAAjkFgECAB1nHi7S
-ggDBBPzAAQZf//UAD88DD+4BDswCLNaCCOQWLzzoDw9H9f/4+1IAnQAdZ7cN/Qon1rv3uGYV7/w6
-AAAAbBAEiCcbZzP1AoIV78cFAOKCCSkwBIAA6YEVJCCBAADnRAECqQEAAOWFFCETAQAA4oYJIiEB
-AAD0QRINoApFAKKSkokLAIftZw0ZKASAANMPbaoCBQJhnSCMYMDU4yYCLmYCgAANzAKcIdEPbBAE
-yDDRD4gnJokUg4n1BAAV78cFAOdVAQMwQQAA5oUUIZvBAADjhgkiqQEAAHU7HiqBFRtm96Oqmomb
-oIkgwLHkpgIszgKAAAuZApmh0Q8cZvCcMIsgwMHkNgIt3gKAAAy7Apsx0Q9sEARkILZkMLNkULAo
-IgL4zagF52QBAA8CAOdm0hwE/gAA7TwfIyV5AAAMaBEHiAgqgp4Jawr7d+gV5N0dAP1ABJPiAJ0A
-KoKdC6oBZKBxHGbsHmbT7AAFDUAEgABt2QIIAmEYZsyYoI8gnVCTo+6mAi/+AoAAD98C76YBJRBB
-AADRDwAfZrWO+GrhTwxoEaeIKoKe6WsKAeh9AAD7d+gV5N0dAH2jViqCnQuqAeSgT2dj/QAAnPhl
-r5RgAAPAINEP2iD6gwAV4AwFAFv/UMAg0Q8AAP/90A2gCgUAwKBZMmYfZp2O+OlmnhcOiwAA/GPg
-FeAKBQD//vQNpN0dAMCgwIoI6DT54QYVr/66AAAAAAAAAABsEATAUQMkLAMiLgJSOaQi0Q8AAAEQ
-GAEAAQAAARAYAQAEAAAgBDhbIAQ4vSAEOEggBDi9IAQ4SCAEOL0gBDhfIAQ4XyAEOKUgBDiNIAQ4
-dgAAAAAgBD+XIAQ/lyAEPasgBD+XIAQ9qyAEP3QgBD9NIAQ9qyAEPoEgBD2rIAQ9qyAEPnggBD2r
-IAQ/lyAEPasgBD2rIAQ/lyAEPbQAAAAAAAAAAAMBAAIAAAAAAAAAAAAAAAAgBMUAIATGjiAEx7Mg
-BMUAIATHqyAEx5YgBMUAIATFACAExQAgBMUAIATFACAExQAgBMUAIATFACAExQAgBMUAIATHhiAE
-x3YgBMUAIATFACAExQAgBMUAIATFACAExQAgBMUAIATFACAExQAgBMUAIATFACAExQAgBMUAIATF
-ACAExnkgBMUAIATGcyAExnMgBMUAIATGcyAExnMgBMdZIATGcwAAAAAAAAAAAAAAACAE6oYgBOqG
-IATpOiAE6oYgBOX1IATqfCAE6lggBOX1IATl9SAE5fUgBOX1IATl9SAE6R4gBOqGIATl9SAE6R4g
-BOqGAAAAAAAAAAAAAAAAIAT6UyAE+NwgBPzDIAT8gyAE/EsgBPwNIAT76yAE+TAgBPvHIAT7iyAE
-+zMgBPrdIAT6kyAE+msAAAAAAAAAAAEQGAEAAgAAARAYAQACAAAgBZPvIAWPhCAFk8MgBZOXIAWT
-aiAFk1UgBY+rIAWPwiAFkzwgBY/3IAWP4yAFj6sgBY/3IAWPqyAFj6sgBY+rIAWT7wAAAAAAAAAA
-AAAAAAAAAAAgBeMgIAXdaCAF3RQgBdrIIAXXMAAAAAAAAAAAIAXdUSAF3U0gBd1NIAXdTSAF3VEg
-Bd1NIAXdTSAF3U0gBd1NIAXdTSAF3U0gBd1NIAXdUSAF3U0gBd1NIAXdTSAF3U0gBd1NIAXdTSAF
-3U0gBd1NIAXdTSAF3U0gBd1NIAXdTSAF3U0gBd1NIAXdTSAF3U0gBd1NIAXdTSAF3U0gBd1NIAXd
-TSAF3U0gBd1NIAXdTSAF3U0gBd1NIAXdTSAF3U0gBd1NIAXdTSAF3U0gBd1NIAXdTSAF3U0gBd1N
-IAXdTSAF3U0gBd1NIAXdTSAF3U0gBd1NIAXdTSAF3U0gBd1NIAXdTSAF3U0gBd1NIAXdUSAF3U0g
-Bd1NIAXdTSAF3VEgBd1NIAXdTSAF3U0gBd1RIAXdTSAF3U0gBd1NIAXdUSAF3U0gBd1NIAXdTSAF
-3VEgBd1NIAXdTSAF3U0gBd1RIAXdTSAF3U0gBd1NIAXdUSAF3U0gBd1NIAXdTSAF3VEgBd1NIAXd
-TSAF3U0gBd1RIAXdTSAF3U0gBd1NIAXdUSAF3U0gBd1NIAXdTSAF3VEgBd1NIAXdTSAF3U0gBd1R
-IAXdTSAF3U0gBd1NIAXdUSAF3U0gBd1NIAXdTSAF3VEgBd1NIAXdTSAF3U0gBd1RIAXdTSAF3U0g
-Bd1NIAXdUSAF3U0gBd1NIAXdTSAF3U0gBd1NIAXdTSAF3U0gBd1NIAXdTSAF3U0gBd1NIAXdTSAF
-3U0gBd1NIAXdTSAF3U0gBd1NIAXdTSAF3U0gBd1RIAXdTSAF3U0gBd1NIAXdTSAF3U0gBd1NIAXd
-TSAF3U0gBd1NIAXdTSAF3U0gBd1RIAXdTSAF3U0gBd1NIAXdTSAF3U0gBd1NIAXdTSAF3U0gBd1N
-IAXdTSAF3U0gBd1NIAXdTSAF3U0gBd1NIAXdTSAF3U0gBd1NIAXdTSAF3U0gBd1NIAXdTSAF3U0g
-Bd1RIAXdTSAF3U0gBd1NIAXdUSAF3U0gBd1NIAXdTSAF3VEgBd1NIAXdTSAF3U0gBd1NIAXdTSAF
-3U0gBd1NIAXdTSAF3U0gBd1NIAXdTSAF3U0gBd1NIAXdTSAF3U0gBd1NIAXdTSAF3U0gBd1NIAXd
-TSAF3U0gBd1NIAXdTSAF3U0gBd1NIAXdTSAF3U0gBd1NIAXdTSAF3U0gBd1NIAXdTSAF3U0gBd1N
-IAXdTSAF3U0gBd1NIAXdTSAF3U0gBd1NIAXdTSAF3U0gBd1NIAXdTSAF3U0gBd1NIAXdTSAF3U0g
-Bd1NIAXdTSAF3U0gBd1NIAXdTSAF3U0gBd1NIAXdUQAAAAAAAAAAAAAAACAF3Z0gBd71IAXgqyAF
-4J0gBeCIIAXgeiAF4GUgBeBXIAXgQiAF4DUgBeAiIAXgFSAF4AIgBd/1IAXf4iAF3ZYgBd/OIAXf
-wSAF364gBd+gIAXfiyAF34IgBd9zIAXfgiAF33MgBd9lIAXfUCAF3ZYgBd2WIAXdliAF3ZYgBd9D
-IAXdtiAF3ZYgBd2WIAXdliAF3yYgBd8NIAXfAyAF3uQgBd2WIAXe0SAF3rcgBd6kIAXeiiAF3ncg
-Bd5fIAXeTCAF3jkgBd3TAAAAAAAAAAAgBeNpIAXjcyAF5OogBeTBIAXkuiAF5LMgBeSsIAXkpSAF
-5J4gBeSXIAXkkCAF5IYgBeR8IAXkZCAF5D0gBeQSIAXkCSAF4+4gBePkIAXj2iAF48ogBePDIAXj
-sCAF46kgBeNXIAXjgAAAAAAAAAAAIAZ4uCAGdgwgBnSkIAZyPCAGb9ggBms4IAZt0CAGboAgBmnU
-IAZwpAMPCBKDjpOSUlYAABAAAABjb25maWd1cmF0aW9uIGZpbGUgcGFyc2VyIGZvdW5kIGFkZGl0
-aW9uYWwgY29uZmlndXJhdGlvbiBhZnRlciBbZmluaV0KAAAwAAAAZmNvZQAAAAB2bmljX2lkAHZs
-YW4AAAAAdG9zAGV0aGVydHlwZQAAAG1hY21hdGNoAAAAAG1wc2hpdHR5cGUAAGZyYWdtZW50YXRp
-b24AAABiYXNpY3ZpcnR1YWwAAAAAc3lubWFwZW4AAAAAc3luNHR1cGVuaXB2NgAAAHN5bjJ0dXBl
-bmlwdjYAAABzeW40dHVwZW5pcHY0AAAAc3luMnR1cGVuaXB2NAAAAG9mZG1hcGVuAAAAAHRubG1h
-cGVuAAAAAHRubGFsbGxrcAAAAGhhc2h0b2VwbGl0egAAAABsYW4Ad2FuAGNsdXN0ZXIAbWFudWFs
-AAB0cF9waW8AAHRwX3RtX3BpbwAAAG5pY192bQAAbmljX3VtAABuaWNfdW1faXNnbABuaWNfaGFz
-aGZpbHRlcgAAb2ZsZAAAAAByZGRwAAAAAHJkbWFjAAAAaXNjc2lfaW5pdGlhdG9yX3BkdQBpc2Nz
-aV90YXJnZXRfcGR1AAAAAGlzY3NpX2luaXRpYXRvcl9mb2ZsZAAAAGlzY3NpX3RhcmdldF9mb2Zs
-ZAAAZmNvZV9pbml0aWF0b3IAAGZjb2VfdGFyZ2V0AHBvZmNvZV9pbml0aWF0b3IAAAAAcG9mY29l
-X3RhcmdldAAAAGlzY3NpX3QxMGRpZgAAAABpc2NzaV9pbml0aWF0b3JfY21kb2ZsZABpc2NzaV90
-YXJnZXRfY21kb2ZsZAAAAAB0bHNrZXlzAHBwcABkY2J4AAAAAGIyYgBzb2NrZXRudW0AAABjZWUA
-aWVlZQAAAABhdXRvAAAAAGFuX2RpcwAAcGRsaXRlX2RpcwAAIAMUgAAEAAAAAAQAAAQAAAAAAAAA
-AAAAAAAAAAAAAAAgBmmYAAAAACAGaPAgBmaQIAZlaCAGRYAgBenIIAXWiCAF1XAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAgBF+sIARsKCAEbCggBGwoIAR8SCAEkpAgBKE4IASqdCAEXLAgBFogIAQS
-hCAEw9ggBBA0IAQM+CAF1UQgBdQcIAXNYCAEbCggBcyIIAXLLCAFymAgBq8YIANrgCADwcwgBoMM
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBDXMIAQgmCAEL5AgBC34IAQsfAAAAAAg
-BCocIAQ1BAAAAAAgBAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAgBrbMIAadQCAGtrwgBp1QIAadZCAG
-nHAgBp4MIAacBP8YMGBgAAAAAAECAwAAAAAgBnlgIAReECAAZeQAAAAAAAAAgQAAAAAAAAAAAAAA
-ACAD3KQgA94wIAPdzCAD3kQgA9zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAD3VQAAAAA
-AAAAAAAAAAAwMTIzNDU2Nzg5YWJjZGVmQUJDREVGAAAAAAAAAAAAAEFCQ0RFRkdISUpLTE1OT1BR
-UlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8AAAAAAAAAAAAA
-AAAAAAAAIAAgjAABAAAgACBsAAUAASAAIFAAAwAFIAAgMAAHAABjglNjAAAAAP///////wAAAAAA
-CAAAAAUAAAAHAAAAAAAAAIgAAACFAAAAhwAAAAAAAABAAAABAAAAAoAAAAAAAAQECAAEBAgABAQI
-AAAAAAAAAAAAAACAAAACAAAAAoAAB0MAAAAAAAAAAAAAAAAA/////////////////////wAhAAkA
-gQBBACEACQAhAAkAgQBBAIEAQQCBAEEAgQBBACEACQCBAEEAIQAJACEAEQCBAEEAgQBBACEACQCB
-AEEAIQAJACEACQEBAEEAgQAhAIEAIQAQEGEBAQCBAQEAgQMCAQAAAAAAAAAAAAAAAAAAAACAAAAB
-AAAAAgAAAAQAAAAIAAAAEAAAAAAAAAAAACADB/AAAAAAIAMOeAAAAAAgAwf0AAAAASADDuQAAAAC
-IAMH/AAAAAQgAwgEAAAACCADCAwAAAAQIAMO7AAAACAgAwgQAAAAQCADCBwAAACAIAMIKAAAAQAg
-Awg0AAACAAAAAAUAAAADAAAAAQAAAAIgBnzAIAZ8fCAGe2wgBnosIAZ57CAGecAgBnoUAAAAAAAA
-AgAAAAQAAAAIAFllcwAwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoAAAAAbm9u
-ZQAAAABhbGwAKgAAAGRpc2FibGVkAAAAAGVuYWJsZWQAMHgAAE5BAABWMAAAVjEAAFYyAABWMwAA
-VjQAAFY1AABWNgAAVjcAAFY4AABWOQAAVkEAAFZCAABWQwAAVkQAAFZFAABWRgAAcG9ydAAAAABw
-cm90b2NvbAAAAABnbG9iYWwAAGZ1bmN0aW9uAAAAAGZpbmkAAAAAcmVnAGZpbHRlck1vZGUAAGZp
-bHRlck1hc2sAAHJzc19nbGJfY29uZmlnX21vZGUAcnNzX2dsYl9jb25maWdfb3B0aW9ucwAAc2dl
-X3RpbWVyX3ZhbHVlAHRwX3BtcngAdHBfcG1yeF9wYWdlc2l6ZQAAAAB0cF9wbXJ4X2ZsYWdzAAAA
-dHBfbnJ4Y2gAAAAAdHBfcG10eAB0cF9wbXR4X3BhZ2VzaXplAAAAAHRwX250eGNoAAAAAHRwX210
-dXMAdHBfdGNwdHVuaW5nAAAAAHRwX3RpbWVycmVzAHRwX3RpbWVydmFscwAAAAB0cF9iYWNrb2Zm
-dmFscwAAc2NoZWRfaW9xdHhfYnBfcHJpb3JpdHkAbnZmAHd4X2NhcHMAcl9jYXBzAABuaXFmbGlu
-dAAAAABuZXEAbmV0aGN0cmwAAAAAbnZpAHJzc252aQAAbmV4YWN0ZgBucmF3ZgAAAGNtYXNrAAAA
-cG1hc2sAAABuZXRob2ZsZAAAAABucm91dGUAAG5jbGlwAAAAbmZpbHRlcgBuc2VydmVyAG5oYXNo
-AAAAdHBfbDJ0AAB0cF9kZHAAAHRwX2RkcF9pc2NzaQAAAAB0cF9zdGFnAHRwX3BibAAAdHBfcnEA
-AABpc2NzaV9udGFzawBpc2NzaV9uc2VzcwBpc2NzaV9uY29ubl9wZXJfc2Vzc2lvbgBpc2NzaV9u
-aW5pdGlhdG9yX2luc3RhbmNlAAAAaXNjc2lfbWF4X3NnZQAAAHBwbV9tYXhfem9uZXMAAABwcG1f
-em9uZV9yYW5nZTAAcHBtX3pvbmVfcmFuZ2UxAHBwbV96b25lX3JhbmdlMgBwcG1fem9uZV9yYW5n
-ZTMAZmNvZV9uZmNmAAAAZmNvZV9udm5wAAAAZmNvZV9uc3NuAAAAZmNvZV9uZmNiAAAAZGNiAGRj
-Yl9hcHBfdGx2AGRjYl9kY2J4X3Byb3RvY29sAAAAYmdfbWVtAABscGJrX21lbQAAAABod20AbHdt
-AGR3bQBkZWJvdW5jZXRpbWUAAAAAdmVyc2lvbgBjaGVja3N1bQAAAABTZXNzaW9uVHlwZQBPRk1h
-cmtlcgAAAABJRk1hcmtlcgAAAABEYXRhRGlnZXN0AABIZWFkZXJEaWdlc3QAAAAARXJyb3JSZWNv
-dmVyeUxldmVsAABJbW1lZGlhdGVEYXRhAAAARGF0YVBEVUluT3JkZXIAAERhdGFTZXF1ZW5jZUlu
-T3JkZXIASW5pdGlhbFIyVAAATWF4Q29ubmVjdGlvbnMAAE1heFJlY3ZEYXRhU2VnbWVudExlbmd0
-aAAAAABJbml0aWF0b3JOYW1lAAAASW5pdGlhdG9yQWxpYXMAAERlZmF1bHRUaW1lMldhaXQAAAAA
-RGVmYXVsdFRpbWUyUmV0YWluAABNYXhCdXJzdExlbmd0aAAARmlyc3RCdXJzdExlbmd0aAAAAABN
-YXhPdXRzdGFuZGluZ1IyVAAAAFRhcmdldE5hbWUAAFRhcmdldEFsaWFzAFRhcmdldEFkZHJlc3MA
-AABUYXJnZXRQb3J0YWxHcm91cFRhZwAAAABBdXRoTWV0aG9kAABTZW5kVGFyZ2V0cz1BbGwAQ0hB
-UF9BAABDSEFQX0kAAENIQVBfQwAAQ0hBUF9OAABDSEFQX1IAAERpc2NvdmVyeQAAAE5vcm1hbAAA
-Tm9uZQAAAABDUkMzMkMAAENSQzMyQyxOb25lAE5vbmUsQ1JDMzJDAENIQVAAAAAAQ0hBUCxOb25l
-AAAATm9uZSxDSEFQAAAATm90VW5kZXJzdG9vZAAAAElycmVsZXZhbnQAAFJlamVjdAAATm8AADUA
-AABDSE5ldCAxLjAwAAAAAAAMAAAAAAEAAXwADAEAAAAAEAAAABQgBs8AAAADFQ5AAAAf/AAAH/wA
-AB//tMAf/7TAIAbXICAG2uAgCSbQIAkm0CAKAAAgCoAAIAqAACAK5oAAAEAAAACAAAAACADhAY4A
-AAGRDIAAAAAgC2aAIAtmMCALZrD///P/IAtmYCALAWAAAEAOH/+TQAAAQBogCwGQAAAQAAAA/+kA
-AP/gAABQAAAA//gAAEANAAD/9wAAD/8AAA9CAAD/9QAAIEAAACAAAADEEAAAwAEAAMggIAsB8CAL
-AhAAAMQAAADIAAAAxDAAAMQxAAIQCOD//gAgCwIw///3/wAA6AAgCwJQAADIEAAAxEUAABABAAAg
-fAAAMgAAAMwAAAJJ7wAA//8AAknw4QBeAOEALgAgC2oAIAtqYAgAAAAf/OB0IANE2B//rZQgCwMg
-IAsEUB//rUAgCwNQDzwAACALA+AgA68gIAOxACALBLAPAAAAIAsFEB//hxAf/4VAH/+IACALBYAf
-/7BAIAsFwCALBgAgAwegIAMMMCADC7AgC2vwIAMLkCALbCAgC2rQIAtrMCALa5Af/630H/+TxAEA
-AAAoAAAA4AAAAAAPQkAgACCsAAIAAB//rwQA////IAtsQCALBpAgCwbwIAsHQCALBsAgA4z0AAgA
-ACADkdggCwjQIAbVUAAP/AAf/5lIH/+ajAAAMAAgCwkQIAsJoCALCkBVAAAAEAAAAA4AAAAgC2zg
-IAMMqAAACAYgCwrQAAAP/iADbWwCAAAAIANyPB//rmQgCwsgH/+t4B//qlggCwvgIAttACALC4Ag
-A15gIANoNCALDEAgCwywH/+tnCALDQAgC22QQAAAAAAA8AAgCw1AAB6EgCALDbAgCw4QIAsOgCAG
-2qAgBtdgIAsPACALD0Dv////IAsPoCALD/D9////4QAAACALEsAgCxBQIAsQwCALESAgA3S0IAsR
-gCALEeAgCxIwIAsScCALbdAgAwygH/zeAB//q9QgAwxgBAAACIEAAAAMAAAAH/+HcB//iHAgAw5Q
-H/+HUD/////P////IAsTIB//iCwgCxNgIAsToCALbfAgCxQgf///q///LlwAANGk///QTQAAnE4g
-CxSgIAsUYCALE+Af/4dsAABIACADDGQf/4doH/+H0CALFOAgA5WEIAsVkB//raggC26AIAtuECAL
-bmAgA5hUA//QAABAAAAAUAf/AAEAACALb5Af/5oMIAtvACADXjggC2/AIAsWIB//rZj//f//IAsW
-YB//reggCxdwIAsWsABMS0AgA5VAIAsXACALF7AEAQAIACAAACADdzQgCxfgIAsYMCALGJAgC2yg
-IAOn5CALbHAgCxwQAACOAiALHIAgCxzQIAsdICALHEAgCx1wA4AAAB//sFAgCx3AIAseEP/3//8g
-Cx8AIAOi8CALH8AgCyCAIAtwUB//rBAgC3AgIAtwgCADpiggC3CgIAOm9CADoQggA5WgIAtw0CAL
-cRAgC3FQIAsgwCALIQAAABdwIAMJ9CALcrAgC3JgIAtyQAAAJxAgA8NkIAtyECALcpAgAwnUAAHi
-gCALIeAf/62M4QIWAOECGgD//8j///8X////H/8AAhkcAAIZfAACGZwAAhn8H/+tpP//8f8AAhkA
-wAAAAAACGiQAAhqkAAIaKAACGqgAAho0AAIatAACGjAAAhqw4QIOAAAAE4cgAwrEIAMKtAQAAAHh
-AhIAAAAhwSALIjAAAhDg//+//wACHCDhAHoAIAsiYB//rDAgCyKAIAsisCALItAf/6sEIAsjAB//
-qiDhAH4AH/+sQAAA8/8EAAAAFAAAACoAAAAgA+OEH/+v8BoAAAAgCyQAg/+3AIP/tiAgC3PQH/+u
-NCAEPWgf/7E0AA///yALJFAf/6/0H/+uCCALdGAf/62EOAAAAAAAH0AwAAB0AAAQNv//7/8f/7EY
-MAAAEB//lQjgAAkkAJwAACALJJAgCyVwIAslQCALdgAgCyUQH/+eGCALJNAAAgTA4QICAOEAjgAf
-/5U8AACWgAAAlkAgBtcgAACWoAAAlmDhAgAs//8AAAAB4ADhAZIAAAHjAB//rbAgCyWgIAsl0B//
-spQgCyYgIAsmgB//rCgf/5VU4QGWACAG2iAXkAAAFLAAAAAAYAAgBtlggAAABCAG2ioAAB/aAACD
-/xWgAAAgAwAAIAbaYCADAAgWoAAACFABACCgAAA/8AAAI6AAAAP/AB8AwAAEIAaqSCAEJdQgBqoM
-3q2+/x//spgawAAAIAbZKAAA/+ogBtowAAAIFAAAiAAAEAAAH/+r/B//rrwf/6wEIAPuFCADABAg
-C3QQIAt0MP8///8gAwBAIAsmsDAAAAgwAAAMNAAACNAAAAAAAIkUOwAACDSQAAAFXUqAIARDrAAY
-AAD/B///ADgAAAAwAAAgC3bgBgAAACAEUmT4AAAAAf//5wABwAAgAACABAAQAB//qjDhAZoA4QGa
-QOEBmjzhAZo44QGaNOEBmjAf/66QgAAAA4AAAAL//P//4QEOAB//raB/////H/+U7B//lWwgBF+s
-IAt6YCALeqAgC3rQIAt7ECALe0AgC3uAIAt7sCALe/AP///w//AAACALfJAf/7FAH/+aZCALfFAf
-/6lEIARsKCALfZAgC33AIAt9MCALfNAf/5oIH/+cIAAA/4Af/5PAAAAjKCALJ6AgCyfQAAQAAP/7
-///hAeLAH/+qtOEB/gCQAADw/P+AwAIAACD+/4DAIAsoICALKGAAAPgAAAIBCAACAQyP////H/+s
-NOEBmAAgCyiwIAspACALKTAgCylw4QDeAAACAwgAAgIA///wAOEA7gD//3//AAD8AB//rbgAAOAA
-AAAMAAACAwQAAREcAAERGCALfpAAEAgAgAAIAAACAQT//8AAAAD//gAAJYAAAgMAH/+sLOD/4sAg
-C33wH/+rKCALfuAgC38QIAt/MCALfsAgAwCQAAD/8yALf1AgC39wAAAqMCALf5AAAP+PAABStQAA
-SAoAAI+CAACPhgAAOAAAAI+KAADjPwAAg64AAP/xIAspwP//z78AABBAIAt/sCALf+AAABIAIAsp
-8CADDPAAAhkEIAsqECADAKAgCypwIAsqQACAAAAf/54UIAuAMCALgMAAAhYIfz///wAA/v8AAP/A
-AAD/PwAA+f8gC4BgIAuBYCALgRAgCysgIAsq4CALKrAgCytA7gAAAAHAgAAQAAUNCQAAAB//sdQf
-/67MIAMBUAAAgwAgCy4QAACCACALLTAgCy2AIAstwBAABwIAAMAAIAtzECALctAAAAy8AACJBiAL
-L7AiIiIiH/+ZiCADAaAgCzAQIAsv4CALMwAgCzLAIAsygCALMkAgCzIAIAsxwCALMXAgCzEwIAsw
-4CALMJAgCzBQIAuEQCALhHAgC4SgIAuE4CALhSAgC4VQIAs0MCALM+AgCzNAIAszgAAAgMIAABsh
-IAs0YCALhYAgC4XAIAs0gCAG11AA/8AAEgAAACAFF1AgCzUwIAs08B//rcggCzXQIAs2ECALNXAg
-CzZwIAuF4CALN5AgAwwgIAs2wCALN7AgCzcgH/+ynB//sSgAAAhQIAs38CALOEAgCzggAP///DIA
-AAAf/7MaIAMB4DOQAAAgC3TAIAt1ICALdQAgC3VgIAs4YCAETmwgAwHoIAs5EAAAgAUAAIAHIAs5
-QIGAAADerb7vIAs5gB//rYgAAIP9MAAAHDAAAAQwAAAUAAD/7//+//8A//AAACgAACALObAAAAhA
-IAs54AD///ogCzowMAAAADAAADQAAIABIAMB8AAAgAIgBWOoIAuHEBAABRCZAAAANAAAACALhsAg
-CzpwABkAACALOsAgAw0AAAASDyALOzAf/6mgH/+qOB//sNwFAAAAg/8AGwMVAAAgCzvgIAW6SP//
-QAAgC4iwIAs8sCALPTAgCz2A4QGRrAABkay/////3////yALPbALAAAAIAXAzCALPiAgCz6QIAs/
-ACALPzAgC4mAIAuKAB//lUwgBKxIIAMJtB//nIwAATiA4AAGAAACJxAgC4qgf///Dx//rQgf/6xc
-/AD//+EAlgDhAJoAAAAJ/wAAsAAf/64oIAMCQCALQDDhAA4AAwAAAOEAEgATAAAAEQAAAB/8AAAf
-/610IAtAcCALi8AAAZSPAAGUzyADAmAf/510H/+rpCADBjAgC0CwIAbTsCALQOAf/6pQH/+rzCAD
-BwAf/5P0H/+ceB//mwgf/5VEIAtGkCALRuAgC0dAIAtH0B//q1gAP///H/+bIAAA/5cAAP/9AAD+
-1f//q5PCAAAOBdwBAAP/AADAAAABIAtIMCALSHAgC0jAIAtJACALSVAgC0mQH///8B//rnQCAAAQ
-H/+TYB//nUAf/5V4AAL//wAAnEAgC3WgIAtL0CALTEAf/6wUIAtNACALc1AgC02QIAtN0CALThAg
-C05QAAD+ACALk9AABQACGwAAADrAAAAgC07QIAtOoCAGArAgC5SQIAuUICALlGAgBgk4IAuUAAAA
-wBAAAmJaAADDMCAAAADwAMNwEBAAACAQAAAAEAdg/+/4nx7+AADhAhgMIAtPIB//lUAf/65gIAuQ
-cAABkPggC5Cw//z4fyALkSAgBtTYH/+T3CALT1AAAwACIAtP0CALT4AgC1AAIAuAAAABhqAAABgg
-H/+rJAAmJaAAmJaAAmJaAAX14QAgC5TQ9////wEw+MAgC1BgIAtQQP4AAAAAX/anALI3x2IAAAAd
-////IAuVECALUOAgC1EgIAtQgCALULAgC5VwIAuV8CALlbAgBi1IIAMK1AAAGQAAAhwYHf/w7wAA
-CgDhAgAEAAQF7gAAkCAAAJAQ4QIBBOEB4gAf/5UQAFAAAACgAAAAAHYAH/+dYB//nWQf/5q84QBy
-ACAIAAAf/51wIAguoCAIBmAgCG7wIAgFUCAIBEAgCAMwIAgCICAIARAf/64sH/+bXB//qfAgBtVU
-H/+oOB//qzAgAcXU4QB2AP//8A8gAwoAH/+tOCALV4Af/6w8H/+qoCAG2mogC1oQFJAAAEAAAAQg
-C1qAIAtasCALWIAgA20IIAtYwCALWSAAAI/+IAtZcCMoFQAgC1nQIAubACALm4AgBtmoH/+zuB//
-syj/6A//ABCAACALXAAgBmegIAMHcAHIQAbhAZngAAB+UAAAfkAAAH4YIAZ2DB//rAAgAw6AIAMO
-hCADDnggAw6IIAMOlCADDpwAUCAG4QGaDB//rbQf/51UAHAgBh//nkD/4AAAAAIgBiALXhDhAZoE
-4QGaCAAEIAYgC15AH/+T0CADB5ggC15wIAte0CALXqAf/6ssAAD+5SALXwAgC5VQIAtfcB//rKgA
-BJPg//tsIP/he4AgC5wAH/+Y3OAAAQDf//4AH/zAAAAAYoAAA/8AwAAABSAGoEgf/6w4IAtf4P/v
-//8gC5wwH/+trOEAVgDhAZTQIAtgECALYFAdAAAAH/+uXB//rFQgBtVkIAMMJCALnTAgC53gIAuc
-YCALnKAgC55gIAudgCALnOAgBtRkH/+rXCALYNAgBqNQH/+vQB//tHQf/7SMH/+0pB//sQAf/7R4
-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
-L6DUJSRGJSRHKKDaKaDbLaDXLKDWL6TsLyGMLiGIKyGKLiWULqDfLaTvLKTuLaDeLCGOKyWWK6Dj
-KaTzKKTyKaDiLyWYLaT2LqT3LCWaKaT6K6T79knmHe/50gAAAAAAABNDwygymCMym/0AAERwCkUA
-7Ea8HEZCgAD4YABBsCtFAFgxdyUkJiUkACggLyckAZUh5SYCJAJ5gAAlJDAlJDEpIhYsIFYtIFUu
-IFTuJIghWXEAAO0kiSFQBwAA7CSKJVJBAAD4RGYV4AyFAFgqDussZCFQBwAA+1MAFaAMhQBYKgkn
-JDkrIDrTD+ggRSWBKYAAJSQ7JSQ8JyRELCDzLSDyLiDxLyDwLyT5LiT6LST7LCT8ZIBbJSRG5SRH
-IVDhAAAvoNQooNopoNstoNcsoNYvpOwvIYwuIYgrIYouJZQuoN8spO4tpO8sIY4toN4rJZYroOMp
-pPMopPIpoOIvJZgtpPYupPcsJZoppPorpPsnJE/qNAAJWASAAFu+lOo0AAlYBIAAW76R6jQACVgE
-gAD8ReAVoA0FAOwWASE4BwAA5XyEI7rhAADuVAAL+ASAAFu8JeUWACUBQYAAwFDfcOo0AAKoBQAA
-7BIBKVgEgAD+IAgVoA0FAFu8G8ihalbd+mBoHaAFBQD6QGgd4A0VAO4tASFg6QAA7BYCLzgEgADu
-7PUju/kAAO4WAyv4BIAAW7wNyqHfcOo0AAKoBQAA7BICKVgEgAD+IGgVoA0VAFu8BmSgAmpW3Ppg
-aB2gBQUA+kBoHeANJQDuLQEhYRUAAOwWBC84BIAA7uwgI7jhAADuFgUr+ASAAFu798qh2jDlXAEr
-+ASAAOwSBClYBIAA/iCoFaANJQBbu/BkoAJqVtzA8P5FJh3v8NoAAAAAAAAA9J/iCJIAnQD/8xAN
-oAQVAPU/4vGSAJ0A9T/is5IAnQD0n+EJEgCdAP/2VA2gBCUAbBAEFEOxiCApQn4jQn0JiAz0kCgV
-p4gBAKgzCTMRo0ODNwmICOMyDixGQoAACEQIJEIHKDECKzEcJEIO6bQABANBgAAtMgfqMg0lgGmA
-ACm8/wkJTyk1HP5j5BXgDBUA/aDAQtAOFQDAwA+vLu/sOAWAMYAAy5fJw/pAaB2gCwUA/AACHaAN
-JQBb/juKPRtDIuxGARVABQAA6DYNKVAEgABYLCfAINEPwCDRDwAAAAD6AIIdoCtFAOxF+RJoBwAA
-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
-ABD///////8AAAAyAAAD6AAAACgAAE4gAAAAAAAD0JAAmJaAAA9CQACYloAAABwgAAAASwA9CQAA
-A9CQAJiWgAEBAAADAwICBQUEBAcHBgYAAAAyAAAD6AAAAGQAAMNQAAAAAAAD0JAD0JAAAExLQAPQ
-kAAAABwgAAAASwA9CQAAD0JAI8NGAAMCAQAHBgUECwoJCA8ODQwAAAAyAAAD6AAAAAoAAAH0AAAA
-AAAAA+gAmJaAAA9CQACYloAAABwgAAAASwA9CQAAA9CQAJiWgAMCAQAHBgUECQkICAsLCgoAAAAA
-AAAAAAAKABQAjACCAGQAWgCgAJYAeABuAFAARgA8ADIAKAAeAAoEzgSSCc4JkgKyBFYE4gSmA7YE
-GgeyCVYGXgJ2CeIJpgdOAjoItgkaCBYGIgLGBGoAlgN6AXIHdgC+A94E9gS6BEIDogJiBzoGDgCC
-A8oELgBuAFoDKgE2AeoDPgfGCWoBSgcSBZYIegbCAf4GcgKKA1IF5gW+CN4BmgfaCfYJugl+B54J
-QgiiCQYBXgdiAk4HJgMWASIFgghmBaoIygkuCI4BDgVuBVoFRgbWCCoGNgISAcIG6gg+AOYGhgLa
-BH4CngQGBkoCJggCA2YAqgOOBfoARgHWBv4GrgXSAYYHigjyAwIIUgD6BTIBrgDSA/IH7gAyBpoC
-7gUeAB4FCgAACcQJiATYBJwHqAlMCdgJnAisCRACvARgAWgHbATsBLACWAcwA8AEJAMgASwHvAlg
-BYwIcAZoAoAFtAjUCewJsAk4CJgHWAJEARgFeAjACSQFZAVQCCAGLAbgCDQC0AR0BkACHACgA4QB
-zAb0AXwHgAhIAPAAyAPoBpAC5AUABMQEiAKoBEwDrAQQBlQCbAdEAjAIDAYYAIwDcAC0A9QEOAOY
-BgQAeABkAFAB4AM0AUAHCAa4AfQDSAXcAZAH0Al0B5QI/AFUBxwDDAhcBaAIhAEEBTwGzAIIAbgA
-3AZ8ApQD/Af4A1wF8AA8BqQFyAjoAvgFKAGkB+QAKAUUABQAAATJBI0JyQmNAq0EUQTdBKEDsQQV
-B60JUQZZAnEJ3QmhB0kCNQixCRUIEQYdAsEEZQCRA3UBbQdxALkD2QTxBLUEPQOdAl0HNQYJAH0D
-xQQpAGkAVQMlATEB5QM5B8EJZQFFBw0FkQh1Br0B+QZtAoUDTQXhBbkI2QGVB9UJ8Qm1CXkHmQk9
-CJ0JAQFZB10CSQchAxEBHQV9CGEFpQjFCSkIiQEJBWkFVQVBBtEIJQYxAg0BvQblCDkA4QaBAtUE
-eQKZBAEGRQIhB/0DYQClA4kF9QBBAdEG+QapBc0BgQeFCO0C/QhNAPUFLQGpAM0D7QfpAC0GlQLp
-BRkAGQUFAAAJvwmDBNMElwejCUcJ0wmXCKcJCwK3BFsBYwdnBOcEqwJTBysDuwQfAxsBJwe3CVsF
-hwhrBmMCewWvCM8J5wmrCTMIkwdTAj8BEwVzCLsJHwVfBUsIGwYnBtsILwLLBG8GOwIXAJsDfwHH
-Bu8Bdwd7CEMA6wDDA+MGiwLfBPsEvwSDAqMERwOnBAsGTwJnBz8CKwgHBhMAhwNrAK8DzwQzA5MF
-/wBzAF8ASwHbAy8BOwcDBrMB7wNDBdcBiwfLCW8Hjwj3AU8HFwMHCFcFmwh/AP8FNwbHAgMBswDX
-BncCjwP3B/MDVwXrADcGnwXDCOMC8wUjAZ8H3wAjBQ8AAAAKAIwAbgCWAHgAPABQAKAAggBkADIA
-RgBaACgAHgAUAAAAhwBpAJEAcwA3AEsAmwB9AF8ALQBBAFUAIwAZAAAAADAEAAAwEAAAWQgAAFmk
-AAGUMAAAECQAABAwAAAQPAAAENwAAHssAAB7NAAB4owAAeaMAAHqjAAB7owAAfKMAAH2jAAB+owA
-Af6MAACNzAAAfnQAAI/cAAGRWAAAj/wAAHUcAAB1GAAAdRAAAHfgAAB35AAAd/QAAZw8AAEQdAAB
-EIQAAJQIAACYXAAAlgwAAJYUAACWIAAAliwAANAoAACQCAACENwAAjDcAAJQ3AACcNwAAZBUAABg
-HAABoNgAAZCQAAB34AAAd+QAAHf0AAB5eAAAefgAAZQEAAHjwAAB58AAAevAAAHvwAAB88AAAffA
-AAH7wAAB/8AAAZQMAAAwAD///8AAADAIP///wAAAWRCsgAAAAABZrH4lAAAAAZQQH////wABlDQA
-AAARAAGUCB////8AAZQ4AAAAEQAAECh/////AAAQLH////8AABA0f////wAAEDh/////AAAQQA9E
-AAAAAHsoAB//4gAAezA//+7/AAB7OAAAAAEAAHtAP//u/wAAfCQAH//iAAHiiAAIAAAAAeaIAAgA
-AAAB6ogACAAAAAHuiAAIAAAAAfKIAAgAAAAB9ogACAAAAAH6iAAIAAAAAf6IAAgAAAAAjcj/////
-AACN0P////8AAH5wf7///wAAfnh/v///AAB+AALAAAAAAZFUAf///wABkZwB////AACP2AB///0A
-AI/4/////QAAdRQAAAAHAAB1DAAAAAsAAHfcAAAAAwAAd/D/////AAGcOAABgEAAAZz4AAAAAwAA
-kAQAAAA+AAEQeAD///8AARB8AP///wABEIgAAAAAAACUBAAA//8AAJQQAAD//wAAmFQAAAH/AACY
-WAAAAf8AAJYIAAAAAAAAlhAAH///AACWGAAf//8AAJYcAA///wAAliQAD///AACWKAD///8AAJYw
-AP///wAA0CAAAAAHAADQJAAAAAcAAhDYAAAAAwACMNgAAAADAAJQ2AAAAAMAAnDYAAAAAwABkFAA
-AAAvAAGg1AAAAYMAAZCMADgAAAABkJgAOAAAAAB5dAAAAC8AAHlwAAAABQAAefQAAAAvAAB58AAA
-AAUgAw8UIAjUFCADDxggCON4IAMPJCAI4qAgAw8wIAjiUCADD0QgCOGgIAMPXCAI4DggAw9sIAjf
-ICADD3QgCN74IAMPiCAI3tAgAw+YIAjeoCADD6QgCN2EIAMPrCAI3VwgAw/AIAjdKCADD8wgCNu8
-IAMP1CAI2xQgAw/kIAjaECADD/AgCNkAIAMQACAI1/ggAxAQIAjWzAAAAAAAAAAAIAMQKCAI09wg
-AxAsIAjTYCADEDQgCNMoIAMQPCAI0vAgAxBIIAjSuCADEEwgCNKAIAMQWCAI0kggAxBcIAjTmCAD
-EGQgCNIQIAMQbCAI0dggAxB0IAjRoCADEHwgCM7QIAMQhCAI0VAgAxCQIAjRSCADEJggCNEQIAMQ
-oCAI0NggAxCoIAjQoCADELAgCNBoIAMO7CAIzPggAxC4IAjMwCADEMAgCMyIIAMQyCAIzFAgAxDY
-IAjMGCADEOAgCMvgIAMQ6CAIy6ggAxDwIAjLgCADEPwgCMtYIAMRCCAIyyggAxEgIAjLACADETwg
-CMrYIAMRTCAIyrAgAxFcIAjKiCADEWwgCMpgIAMRfCAIyjggAxGMIAjKECADEZwgCMnoIAMRqCAI
-ycAgAxG0IAjJmCADEcAgCMlwAAAAAAAAAAAgAxHMIAjIUCADEdAgCMaEIAMR3CAIxaAgAxHwIAjF
-cCADEfggCMVAIAMSBCAIxRAgAxIIIAjE4CADEgwgCMSwIAMSECAIxIQgAw+QIAjDkCADEiAgCMNo
-IAMSKCAIw0AgAw74IAjmaCADDwAgCOWYIAMO5CAI5OggAw8MIAjkQAAAECEgQjBjQIRQpWDGcOeB
-CJEpoUqxa8GM0a3hzvHvEjECEDJzIlJStUKUcvdi1pM5gxize6Na073DnPP/494kYjRDBCAUAWTm
-dMdEpFSFpWq1S4UolQnl7vXPxazVjTZTJnIWEQYwdtdm9laVRrS3W6d6lxmHOPff5/7Xnce8SMRY
-5WiGeKcIQBhhKAI4I8nM2e3pjvmviUiZaakKuSta9UrUerdqlhpxClA6MyoS2/3L3Pu/656beYtY
-uzurGmymfIdM5FzFLCI8AwxgHEHtrv2Pzezdza0qvQuNaJ1Jfpdutl7VTvQ+Ey4yHlEOcP+f777f
-3c/8vxuvOp9Zj3iRiIGpscqh69EMwS3xTuFvEIAAoTDCIONQBEAlcEZgZ4O5k5ij+7Pawz3THON/
-814CsRKQIvMy0kI1UhRid3JWteqly5WohYn1buVP1SzFDTTiJMMUoASBdGZkR1QkRAWn27f6h5mX
-uOdf937HHdc8JtM28gaRFrBmV3Z2RhVWNNlMyW35DukvmciJ6bmKqatYREhleAZoJxjACOE4giij
-y33bXOs/+x6L+ZvYq7u7mkp1WlRqN3oWCvEa0CqzOpL9Lu0P3WzNTb2qrYud6I3JfCZsB1xkTEU8
-oiyDHOAMwe8f/z7PXd98r5u/uo/Zn/huF342TlVedC6TPrIO0R7wIAsAAB//lUAf/6q0AAATiB//
-lAwAAAu4AABADSALAJAgCwAgIAsAcCALALAf/5U8AABBHgAA8AMAAEEOAABAQAAAoAAAAKAgAABB
-iAAAf/8AAEGGAACAAAAAQYEAAKgZAACoGgAAwwAAAKgbAACoHAAAqBcAAP//AAAQBAAA5Z8AAB8R
-AADuCQAA//4AAOr/IAsA4AAA/wAgCwEg4QBeAAAPAA8gUAAAAAAw1AAA/+nhAg4AAABAAAAIAAgA
-AOQAAADEMAAAxDEgCwKQAAmJaAAAxFAgCwLAIAsC4CALAwAAACAAAADEUQAAwAEAAMRSIE//gCAI
-C1QgC2cgIAtngCALZtAAAMAGAAgAAiALZ8AAAIDXAAMHgAAAxIIAAECCAACEAyALaLAgC2mwAACA
-pgAAgD0gC2gQAACAQCALaRAgC2lgIAtoYCALQTAf/5ysIAtBUOEAcgDhAGIAAABiSAAEACmGEAAA
-AABiQIAAAACAFAADgBYAA4ASAEOAEdIDgBAABR//nDQgBtdgH/+t9CALjKDgAAAA4QB2ACALjBAg
-C4xQIAtBcB//k0AAD0JA4QB6ACALQgAgC0JQIAtCsAAAD/8/////IAtDECALQ4AgC0PAIAtEACAL
-REAgC0SAIAtEwCALRQAgC0VAIAtFgB//nDAgAw2AIAMNIB//k8Qf/5yg4QGaAP/A//8AEAAAH/+u
-BAAACAAABggAH/+edAABngzhAZ4AAAGedAABnqwAAZ7UAAGe7AABnxQgC0XAIAtGICALjjAgC43A
-IAuM4CALjSAgC41w4QAuACADDZAAAJAAH/+VZAAsFACAAACA4QBaAIHw4IAgAAAA4QBWAAwAAAD/
-84AAAAw4AEYAAAA/P///gIAAAPP/////4P//AAEAACAIAAAgCAo0AAALMCAIAQDhAZIAH/+uLB//
-m+ThAA4AAAIAAAB/AEAAAwAAAIAAgADBAMD//yP/AADIABAgASDhAIoA4QB+AOEAjgA8AAAA//+/
-/1Bo6Ef4////BAAAAJIAAADwAPAAn7//+yAAAAQf/5PAf/f//4AAAgD//+////+A///3/38ABgAA
-///wAP8AAAAASSSSAAB+GAgBCAEQARABAAB+QCABIAEVFRUVhCGEIRAQEBDhAY4AAAD+fwQEAYDh
-AM4ARERERMzMzMyIiIiI4QCOBOEAjgjhAI4M4P/+AIAAAQAgCATEAACQCAAACMCAAcQRxBHEEQD/
-AP8AQABA//8//yALjuAgC48QH/+cLP8P//8gC46gCAgICMyIRAAgC49A//D/AAACADMqKhUVH/+r
-mB//mOgf/61AH/+dVB//m1gf/54UH/+bIAAA//0f/6sU4wACAOL//wAgC0eQIAjkQCALkDAAUAAA
-AKAAACCgAADQAAAAIAuPcCALkAAAABAAIAMHqB//sEAf/6woH/+AsB//rEAgC5HgIAtJ0CALSlAg
-C0rAIAuRkCALkVAgC5GwIAtLUAAAKAAAAD//AADAAAAEAAAf/4DgH/+BIB//gWAf/5qMH/+qoB//
-lUThAZYA4QH+AOECXgDhAj4A4QIeAOEB4gDhAQ4A4QCSAAgAAAD///D/H/+pQB//nBThAQ4E4QEO
-COEBDgwf/51A//AAAAACgAYf/64w//v//yALUXAgC1HQH/+B4B//nAgf/5sIH/+uKBAAAAD/8P//
-IAMLIB//mUAAAH5MAPAA8AAA8AAgC1JAIAtSoCALUwDhAC4I4QAuEOEALhgf/5WogACAAB//sUAf
-/5yMH/+VeB/84gAAAHtgH/zeAOEBmAAf/64IH/+qCB//q/wgC1NAIAtTwCALmHAgC1NwH/+sGB//
-nUggC1RAIAtUACALlvAf/5tAIAtUsCALVPAAKAAAIAuZYCALmMDfsAAAIAuZAB//rDQf/6vk/4AA
-AP//4AAgC1UwIAtVYCALlqAgAwssIAbVVB//gfAf/6n8///H/yALmcAf/51gIAuaAB//rfggC1Wg
-H/+y3B//sxAf/6vUBAAACBIAAAAgC5NgH/+xzIEAAAAAADAAIAuTkCADCygf/7EsH/+z6B//r0Af
-/7MoSQAAACALkrAgC5LwIAuSACALkmAADwP/AxEAAAMVAAAf/674IAbTsCALVeAf/6tAH/+aIB//
-rCQf/50sH/+eoB//n6QgAKfgH//uzB//7hwf/+/MH/+tpB//qyQCAIIQAgACEAIAABABAAAAABoA
-AAD6xogAIAAAH/+sLCAG1KwgBtQEH/+CICALVmAgC1YwIAtWACALVpAf/51YH/+r9B//mzggC5Yw
-4QA2AB//q7gAAPgA4QBGAB//mawf/62cABBBBAAIAAAgCAXEIAbU8B//mtwgC5ggIAuXwCALmsAf
-/5t8IAtXMCALmmAgC5owIAtWwCALmpAgC5dQH/+beB//m3Af/5t0H/+pmB//qZQf/4KgH/+rLB//
-nCQf/5wgH/+cGB//gsAf/6soIAMIECADCjAf/4LgH/+uJB//qlQf/6pIH/+qTB//qlAf/6qIH/+q
-hB//qoAf/6p8H/+qeB//qnAf/6pgH/+qZB//qmgf/4MQH/+p0B//g8Af/65EIAtcIB//nGQgC1xw
-H/+cOCALXKAgC1zQH/+D0B//m6gAACWAIAtdACALXUAf/5tUH/+D8B//m1Af/5nkH/+ZPB//g/j/
-/wAAA+f8GCALXXAf/4QAH/+rECADCEQf/6sMD////yADDbAgC13QIAgKJP//9OAgCAnU///1MCAI
-CJQgCAnM///2cCAIB/QgCAiM///3EOEAagAAAICA//8I+gAAQwQAAH0z///D/wCAAAD/AP8AH/+E
-UAEBAQEAAGQMH/+EcFWqVaoAAKqqWlpaWqWlpaUzIhEAABEiM4gSAAMgAw4Q4QBmAAAAahj//39/
-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
-bEIZ4VqpqSuSgGewDG0IBSqSgGegA2P/8wApIpkmVrcvImYc4XYb4XYrVrL6toYV4AolACpWuixW
-uwn/CC9Ws6v09LamFaANBQDkVrkn+P0AAPPgBAfwDhUAW2vziRQrImYpnD8DmQHpVqwloeGAAC5S
-qy9SrtMPCe4MD+4Mse0O7Tse4boNHRIO3TRm1HsvCmQP3yz/4AEH8ApVAOzhtB/3AoAA7hYIL/+C
-gAD+IMYV4AsFAFuP6ltsFRPhdyZWfyQyxSgyxCkywyoywisywSwywC4yvi8yvS0yvy9WgK/uLzLJ
-LlaBrt0tVoKtzC4yxixWg6y7LTLIK1aEq6osMscqVoWqmSsy0ilWhqmIKjLTKFaHqEQpMtQkVoik
-/ygy1S9Wia/uJDLWLlaKrt0vMtctVoutzC4y2CxWjKy7LTLZK1aNq6osMtoqVo6qmSsy3ClWj6mI
-KjLdKFaQqEQpMuAkVpGk/y9Wkigy4a/uLlaTJDLirt0tVpStzCxWlay7K1aWq6oqVpeqmSlWmKmI
-KFaZqEQkVppbiYIqFhBbiYApUq4kUq8tUqv5L+AV744FAO6ZAQIAaYAAL1KsD90MDU02KFKpyI8J
-qBGomHjTCPi1xhWgAB4AAMCQ6RYPJJbRgACMH2TDOCxWmy0y1yRSkypSkShSkutSmiomQoAA5MQI
-DVZCgADqyQgMRkKAAOjICA3eQoAAq8ubGugWCS7uQoAA+CJIFaStHQBtqQUIAIYJAmH6IkgVpr0d
-AFtrrS0y2OkSCS7uQoAA+CJoFaStHQBtqQUIAIYJAmH6ImgVpr0dAFtroy0y2dMPCd0R+CKIFaSt
-HQBtqQUIAIYEAmH6IogVpr0dAFtrmi0y3tMP6RIKLu5CgAD44GgdpK0dAG2pBQgAhgkCYfrgaB2m
-vR0AW2uQJ1KrKlKvmhvqdwwLIASAAATkFgECANtwW5EDBOQWKgoBW2uDlxAU4SiPG/3CSgWgC4UA
-+iImFaANFQDk/wgNcASAAP4hhhXgClUAW49Y2WAY4JoqEhGLHKioKBYVK4aBJ4aCJoaDCeQWmR0B
-AgAogoME6jArGgJba2kI6jApEhUpkojpFg4kgKmAAATqMPoiKBWhCyUAW2thCOowih0K5BYEigxb
-a1bYoI4e/iKoFeAKVQDs4QUbp0KAAAhELP/xCBXgC4UA9CAGFaANFQBbjzcoMr0pUqsmVq8qUqwm
-VqwW4Pv7LwAMv8cFAOlWqyQKuYAALFH1wLN8sA/0AEId4C0FAPwg5hXgADoAwOD+IOYVoAVlAIQW
-KhIQH+DuixgvNqnvNqon+DEAAC82rC82rVv7GosXKmIABbsI66ooClgEgABb+p/moKFtGASAAFv6
-Gyxi9mTAQCpi/Sxi/iRi9R7g3Sti/B3g3S9i+K67DbsBK2b3K2b7C/8MBLQM9YAARjAOFQDsZv4n
-+P0AAPfgBAfwDQUAW2r4LyJmZPCZwIApYuzMl/AA9A2gCAUAACpi8yli8CVi8Sti7aiYqFXsYvQi
-qP0AAAdVAfqvAA/wDQUA5WbuJ/j9AAD34AQH8A4VAFtq5dhQihUopgBbiaRbkHnSMNEPACsimWW7
-wf/vdA2gDQUAAAApUrksUrMJqxELmQzumQEGAMGAAC1SuCxStA3cOXyTB/i3JhXgABoAwJD4IeYV
-7/PyAC8imWX/X/m/3gWv/XoA+iIIFaALBQBb+tL/++QNoAMFAMCl/cFABaALZQBbjtL9v8oF7+3O
-AP1IABawC2UA/cEOBaAKBQBbjssc4Jj0IegVoAoVAPSzZhWgC2UAW47GxyTRDwAAAGwQBltrExbg
-fiZhfwamN1tq/hvfLBfgjBzgjRjfzRTgWApvN/kPxBWgDiUA/egAF7ANFQD+gyYV4AUFAOWAHWYz
-0QAAGt/DL6F/6KGAL4B+AADpoYEsAD4AAGSRqltq5vu+dgXkDAUA+4AJM6A+9QD5gGgd4AoVAAmd
-D/+gAga/zgUADt0BLUYXHN9vKUIX+54mFaAPJQDs3wscilIAABngayiQfCqQfSzAgAhYNwqINyqQ
-fimQfwwNQPsAQAQw7BEA+QBABHAKFQD5ACAVoJwJAP1NAAxwzBkA+e0ADHANNQD/rQAMMAlFAAyY
-OSqM/QqYOBrgVy5Ayy+gfCmgfiygfQ9fNyWgfwz/Nwn/NwX/N+VAyif4BQAAD+43L0Js+KBAArfu
-AQD+mWYdp1UBAOVEyieEKYAAjEyKTabvDDgsCi0sL/CAqNsGWgj7UBAVoBKFAALZLAKOLAuqCAr/
-CALyLA/uCO6ZCAvgBIAA+EAAQXALZQD8UAARMApVAOIWACxwBIAAW45i8oPmFaACBQDRDxzfy+rD
-D35IBIAA//tcDaAKJQAAAADqsyZ9yASAAP/7EA2gCjUAKEKfik2MTGWPeAq6Ngy8NppN/IGGFa/9
-tgAc31nqwxB+SASAAP/6XA2gCkUA0pDRDxzfxurDDH5IBIAA//oADaAKVQAZ3yr/+dQNoAoFAAAp
-oX16nwUvoYJk8PUowHwpwH0qwH4IWDcJiDcpwH8vsIAKiDf5AEAEcAI1APkAIBWgrwEA+60ADDAL
-RQD7wAYFoJ8JAPnNAAxwPxEA8k0ADHDfGQANuDnjQMokY/UAAAy4OCmgfCygfQgzN/tP0BXnMwEA
-pjIJWTcqoH8lQMsMmTcLmTcKmTfiIIAkyAUAAAlVN/KZRh3nVQEA5l8ICW1CgAD/8BAV690dAPSZ
-Zh3gFYUABdgs6t77H/VCgAD6gaYVq+4dAAXpLK3joyIC/wgF9SwPmQjpiAgL4ASAAPigAEKwC2UA
-6kYMKq6CgAD0IAYV4ApVAFuOBPSD5hXgAgUA0Q/SUNEPAABsEAwU3xEc388S3mAT33qOx4XGhsWI
-xCnAAuvBACDQQQAAK6UA6aQCIPiBAACY8JbxJfYC/+BmFaANNQAX38MuIizmQqQmYIEAAOjAAiDY
-wQAAKLQC/YAEFaAKFQDstQAgyEEAAPLABAXxZnEA+MAARPAFBQD7QgAK8AiFAOUkqSDggQAA+SAQ
-FeAKdQDpJKgqgQqAAG2KDyvBByslVe67CHZj+QAAsKrHr+ze5R3wCoAALiYtLkKkGd+lK8F/LyCp
-LCFV6e4BDUVCgADo7gIPgQqAAO5GpC5gCoAALCYt+6ANEOIAnQAvIkYtcnQLPznvJkYmkbmAAPWg
-EsCSAJ0A9aAT4RIAnQD1oBTpkgCdAPWgFfISAJ0A9aAW+pIAnQD1oBgDEgCdAPWgGSOSAJ0A+GFg
-FaAKRQD7AAQA0AMVAPxgAQHQC2UA7N+CGfAEgABbjav6SMgVoDj1AO7edRD4wQAA/sAAR/GTHQDq
-kzkKggqAAPnVyBXhM50A6uKrIYXhgAAqIisDqixbi4sX3ysocqMOiBH7AAQA0AX1AOCrGgqoCoAA
-LEKE+kXIFa/49QAIVQMMXAEMuwIrRoQDqixbi34tcqMO3REA0QQAqxosQr3p3lcQ0MEAAKpqKqAA
-DFwBLZKrDLsCK0a9LJKuKZKtDd0J/YAAhjA79QDqmSgO7oKAAPxuAA7/ygUA65kLBuj9AADq3QEO
-ZoKAAPxIBhXjzB0A6pkBBmD9AAAKzAEsJkL4SIYV4AIFANEPL/AALuKtCZkJ6qoJDM6CgAD9UAAV
-M5kdAPkn4BXjqh0A/8MAD3/PBQDvmQEFUP0AAA+qASomQCkmQgjuCw/uAf5IhhWgAgUA0Q8rIi76
-RWgVpAwFAAy7NysmLguqN1tpterfLh0oBIAAJSYrKaJBJSYuJXZw5XZyJI4pgAAroX8JnAkPzBH7
-u4wFoswdAKy7q1sLqjYqJisqJi5baaYuIi4c3x/8RWgV4AtlAOXoDA14BIAA+CAGFaAKRQBbjUIq
-IitbaZzqIi4tSASAACkmK1tpmSomLhveSwWtDCwiKy12cyuxfwXKDPruJhWv9wIAJUKDKgp49GAA
-AvALZQD0oUAV4Bz1AFuH1u1ydC0YBIAA/kjIFe/3ggAlQoMqCpgPAgD0ZAAC8AulAPShQBXgHPUA
-W4fL7XJ0LRgEgAD+SMgV7/bSACVCgyoKuPRoAALwC+UA9KFAFeAc9QBbh8HtcnQtGASAAP5IyBXv
-9i4AJUKDKgrY9GwAAvAbJQD0oUAV4Bz1AFuHt+1ydC0YBIAA/kjIFe/1igAlQoMqCvj0cAAC8Btl
-APShQBXgHPUAW4es7XJ0LRgEgAD+SMgV7/TmACVCgyoaDPR0AALwG7UA9KFAFeAc9QBbh6LtcnQt
-GASAAP5IyBXv9EIAJUKDKhokDwIA9HgAAvALBQD0oUAV4Bz1AFuHl+1ydC0YBIAA/kjIFe/zkgAl
-QoMqGjj0fAAC8AtVAPShQBXgHPUAW4eN7XJ0LRgEgAD+SMgV7/LuACpyjgWqCSomK/pFxhWv+UIA
-AABsEAYZ3aDi3rIZOASAACiSEuYicyQA+YAAIgoA3WD+wQgVoApVAP29VgWgOwUAW4zR0Q8AJiKL
-KyKF+FDIFe8oBQD4wABDP/oFAOpmAQWAuYAAKyKKC7k5eWMJ9lFmFaAAIgAAAMBgZGBj5hYBIwUx
-gADaYPwcAh2gCwUAW4VyjREa3fD8TmYV4UsFAFt2qOoSAS1wBIAA23DsNAAKaASAAO6mCCrwBIAA
-W/IO+UBoHeALFQDquTkNEASAAOkWACUDYYAAwPAJvzhl/0/RDyYigCsigSgifukifSMwPQAA6mYB
-BYUJgAAImAwIuzYpInsqbQHkkBVlU4EAAHqzDfpQBhWv/aIAAAAAAAAA//1oDaAGBQD9uxoFoAoF
-APwcAh3gC2UAW4yTxyTRDwCKEet0AAngBIAA7UQACvAEgABb8M0d3VD+IAgV4AsFAPNAaB2gDhUA
-7NISKUgEgADzzQAMsAoVAA+rOALsOOzWEiX68YAAwIAJqDhljqFj/04AAAAAAAAA+yBoHe/9lgBs
-EAwZ3eorIAwY3TsqktspktHogg0ltLEAABvdVOuwfSzOQoAAqakjnQHjPIAl/ByAAGAAAiOdA/EB
-gA3gAgUA0Q+pswkzEfNAAEH//7YAAAAAAAAb3dbTD+uyAynQBIAAW1WRHd3S69ICLWAEgADs1uAp
-0ASAAFtVjB/dzOvyAS1wBIAA7vbfKdAEgABbVYYY3ccZ3cYrgvkqht4ogvP7egAl7/wFAAy7Aeq0
-AAQA2YAALJL4KZL0DMk5ebMKHN27+58mFeAAGgDAoOKkAAUKiYAA7d06EQzJgAAV3hziVj0p0ASA
-AFtvauKkAAnQBIAAW29qAq4Mser1wBBwEgCdAB/dpxjeE58b/gAIHeAJxQBtmgIIAmEW3hEX3QUq
-VSMqVTsqVVMb3O0c3g4S3gr5vBgFoA8FAP6mhh3v/vUALlQ2LlRmLlSW/rjGHaAJNQApVDcpVGcp
-VJcpVMcpVMSYHPIhxhWgjQUA/CFGFeAEFQD0rIYdoA0lAC1UlBTdzRLd9urF8yRDQQAA+CEmFa+a
-AQALmQIpFg0oQp6LHvcAJilQBQUAKUKdK7K/jBsLnQH7ICWWYgCdAOwABQ7IBIAACQJhCQJhjBwe
-3eeIHRrd5pLQ/mAIFeAZBQCZ05bUJ9UMmtKY1f3gABewCCUA+eYAD7A7JQD/oCYV4ApVAP/VZBWg
-DQUAW4v4wLL6k6YV4AoFAGVfguKkAAUDeYAA0Q8AGd1jKpLuK5Lvx8DpkuslUD0AAOyqAQWOiYAA
-HN1cLMLsDJwMDLs2Hd1ZLdLpyN8srTB8swoe3VX93cYVoAAaAMCg80BoHa/5tgAAAAAAAAD6AAId
-oAtlAO3dvR7gBIAAW4vZY/5UAAAY3UmIg8EgCCI26jQACVgEgABbVQMZ3JbqlgstAEYAAMck0Q8b
-3UAqsvkrsvMCLRH9TwANf/wFAOyqAQWA+YAAHN05LsL4LML0Duw5fKMLHt01+98mFaAAHgAAwKDk
-pAAFCTmAAGShah/cgvn+gh3gAgUABJI45PYMIQFBgADRDwAAAMCj/bswBaA7JQD/uQwFoA0VAFuL
-sv/3dA2gChUAAAAX3ZIS3ZIW3ZUU3ZMc3ZHsFggjKCEAACpCHyYmfy2hAiYmgCUmgeUmgiaFeYAA
-WkTuGNz9KIKEL0IbqogJiBGo/ynwB/rwEBWg+8UAC5kB+bsGBaeZAQAKmQIp9AeYFI7wivf+UGYV
-4AwVAP3AABcwDxUA7+4CANhBAADuFgUlUIEAAFpNqIkYsXfiLDAjMMEAAOlpgXKowQAA2jBbbrrr
-pAAJ0ASAAFtUtRvdZA8CAA8CAOq2CSnQBIAAW26y/UBoHeA7JQD9us4FoApVAFuLexzdWozJZcBn
-xyTRDwD7IGgd7/juABnc5yqS7iuS78fA6ZLrJVA9AADsqgEFhEmAABzc4CzC7AycDAy7Nh7c3S7i
-6cngqt5+swwf3Nr//cYVoAAiAAAAwKDkpAANdM4AAMCg/biuBaALZQBbi2Bj/oQb3NDrsgQp0ASA
-AFtUjB3czB/dOv26iAWgOyUA7dIELXAEgAD/8GYVoApVAFuLVB/dMi/yg//+gh2gAgUAD+I4yCvR
-DwD7IGgd7/4OAAAAFdyEIlLb5VLcKdAEgABbVHQY3Sbqhkkp0ASAAFtUbBzdIsCQKcZNLcJJKsZK
-LcZLDasM868ADra7HQD7gOYV5t0dAO3GTCnQBIAAW1RoHt0X6uYGLQBeAADHJNEPAAAAHN0e7eJJ
-KXgEgAD/yUgVoApVAPQgBhXgaAUA+CAmFaA7JQBbiyof3Qkc3RUt8kz/6WgVoApVAP/g6BXgOyUA
-W4sjwCD7uKwFoUsFAFt1Dxjc/iqGgvu4pAWhSxUAW3ULLBoADKwC+7icBaFLFQBbdQr+B+IdrAwF
-APoAwh2gCQUAGNvXKUazKUayKUa0KUa5KUa4KUa+KUbAKUbFKUbEKUbGKUbKKUbMKUbXKUbWKUbc
-KUbeLEbRLEbT/JsmFaAPFQAvRsIqRscqRt0uRtD+mkYVr/31APyWphXgCzUAK0a8/JdmFeALBQD6
-m0YV4Bu1APqZBhXgHQUALUbUHttzn40a3OEqRsv+l0YVoB+lAC9Gth3cbP25tgWgGOUAKEaw/Jgm
-FaAYFQAoRs4tRr/9t2wF4//1AP6bBhXgDvUALkbfLdLCGdzRKUbN0Q+OGtMP/9/gFaAPFQDuFgon
-KAUAAAX1Ofnf3IhSAJ0A+gCiHaA7JQD8ISgVoA0FAFuK1P/t2A2gGgUAbBAEFduVKFIV8QCwDeAC
-BQDRDwAAAAAA+7gABaFLFQBbdLgT3Lkd3Ln+Y4QVoAIFAPmtKBXhDwUA6tv3HWAEgAD/hgAOcO4h
-AP5NAAywFAUA+a0mFeFLFQBbdK4kNuYc3KwY3KYZ3DUb2zcd3KYiNuwe3KMuNt38e+YV7AIFACI2
-4yI25fJ9ZhWv//UALzbH/nmmFeA69QAqNuIqNuQrNswpNtH4emYVo/n1APh9RhXgCPUA+H4mFaAb
-FQD6fAYV4AoFACo2xSo2xCo2xio2yyo2yio20Co20io21yo21io22Co23Co23io26So26Co27vp+
-BhWgD2UA/nsmFeAr5QD+feYV4BLlAPJ4RhWgAhUA8nqGFaAfpQD+eQYV4B+1AP57RhXgCjUA+nnG
-FaAKRQBbioXyoqYVoAIFANEPAABsEATzuOgF4frFABTbuAoLPylC3wlZFCk2HChC4QhoFCg2HSRC
-4wRUFCQ2HhLbRSIi3gICQPJyBh2gAgUA0Q8AbBAE9bjKBaACBQAiRkUiRkQiRkMiRkIjQksjRXwj
-RX0jRX7yj+Qd4zMdACNFgCNFgSNFgiNFg9EPAAAAbBAGFdxaG9rgFNxX87isBeAGBQD7uKYFoB0F
-AOoWACI4DwAA4kwIKkgEgADoNAAJUASAABzcT9MPbdog7IZhJEDBAAArhbQphlHphlIkyMEAACqG
-U+qGVCVQwQAA/biMBaALBQArVn/r3EMTUEkAAFtTkevaxRMwBQAA/CAIFaAdBQDiLQMiIA8AAOM9
-AyO4DwAA5V0DI7iBAADlXCAhmIEAAORMICEQgQAA6iQACkgEgADvAgAJwASAAPy/+60iAJ0AEtwq
-F9wtFtsR+EHAJaADBQD1E4AV4yQFACtSli5gfSqCgqs76WIgLd5CgADrqggHfEyAABzaigycKPxQ
-hhWgADoAAC0KfQ2dKC0mhNtwW4V+jhAY3BqkIu4pvXGYBQAAwCDRDwBsEAQU3BYqQnnztcgFoAkF
-APp8AAU0CAUAbYoKDJsQ6yb7JMgFAABkoFFpoU4jQnoqQmJbZmhbh/nq2vEdKASAAFuH9v5nIAXQ
-LQUAHNwFG9wFA35A0w/uyzkB5CiAAB/akA+7Ano3BRjamQi7Ans3EhnbaPlmAA3wADIAwCDRDwAb
-2/n+YYAHEAyFAB7bCdMPDrsC/mRAB1AJRQAf2/TTDw8CAO+7AgH4SIAAKEB9DwIA0w9/jwINuwJ/
-NwIJuwIMuwIrJvwFpgwEYxAjJv0a2+gKOgIqJv4jJv8pLQSJkBrbFRvb5f23xgWvPfUADZkB65kC
-AWgTAAD5oAYV4DuFAFtzy+rbDBtDAoAA5G8RC2cCgADsbAILdgKAAO/uAgtqAoAA7T0CC3wCgAAI
-/wIP3QIO3QL9hgAOcDuVAFtzvChCXvagABMwMwUA0w/xApAN4AUFABjagNMPDwIACGYC3GDq2vQZ
-2ASAAFtzsSlCXrFV6VPqcZgFAADAMPpgaB2gCwUA/AACHaANBQBbUxWxM2k+5yMKANowW1MEsTNp
-O/UqIsEb21QLqgL6WCYVoAIFANEPbBAEwCDRDwBsEAgW268V2g4oYiHztGoFoAQFAPu3WAWgDQUA
-8xJADeAMFQAqFgEtFgUd26fsFgQlUVEAACoWAu0WAybxUQAALhYAF9rzJ3KVI2Lgp0cJdxEHMwgn
-Mgcncg4rYh/66gAVoAwFAFuC3PpjJhWgDAUA62IfI9HBAABbgtf6Y0YVoAkFACl2JCl2JSdi2sHh
-LjQEp0eXMCdQgPoAIh3gHQUA/gCiHe/89QD2wAAEderlAP0CgCZU5wEA+GSGHeAY9QD4ZCYdoAA+
-ACs0JP5kJh2l6uUAGNt+JDQiLlBQKTUcKzQtLDRLKTQgKTUdKTUeKTUgKTRFKTQqKTQrKTRJKTYb
-KjUZKTQ0LzQpKTQsKTQ1KTRDKTUm+GpmHeTuAQAI6AqIgC00UCs0Ue40IywAIoAAAAAZ2074Y2YV
-4M8FAP5jxB3gGAUA+GQEHaDKBQBbY+4rMR4KugL6Y8QdoARyAAAAAG9DCywiuB3aNw3MAiwmuPqA
-aB2gCwUAW2ONYAFx+bZ2BaAPhQD+ZAQd4M4FAC41HvhjZhWgygUAW2PbKTEeCpkC+GPEHeADQgAu
-UIiLEv3DQAHQCoUA+gBCHaAbhQDs20QaaASAAFuJOGABIis2G/pkBB2gAooALlCIjRH9w0AC0AyF
-APoAQh2gG4UA7Ns5GmgEgABbiSxgAPQtNhv8ZAQdoAHSAAAAAI4UyO1bY4TqFgUtCeoAAMDwnxQu
-UIiIEP3DYARQCSUA+gBCHaAbhQDs2ykaaASAAFuJG2AAsAAoNhv4ZAQd4AC+AAAAAAAAjBP8Y2YV
-oMoFAPpjxB2gC4UA+mQEHeDKBQBbY6ctMR4K3QItNR7aMFtjRwoKTSo1HFtjoS4xHAruAi41HP5j
-pB2v7gEA7jUfKdAEgABbYzjqFgUtBWoAACwxINpA+mRwFeXMAQBbYrbqFgUtBKoAAPpgaB2gCxUA
-W2Ib6hYFLQQSAAADOgJbYRQpMRx7nzB8nz1+l2/6gGgdoAslAFtjMC1iISItIOVcASIgBQAA/J/q
-C+IAnQBgAD4AAAAAAAAA+oBoHaAbBQBbYyVj/9EAAPqAaB2gC4UAW2MhY//B+gBCHaAbhQDs2uka
-aASAAFuI2mP/q8DgnhUf2bkv8H17/weCFdEPxirRD1tg0IIV0Q9sEBQf2uAV2uAc2t0r8isq8iop
-8iwtwX4uwXwoUiKYE54SnREswYAtUhguUhaeFC0WFpwQL/LTLxYXq6osUhwsFhUKmQgrUh76IoYV
-4AcFAPqkCBWgAgUA6hYTJJ5pgAD4IKYV78YFAPu1kgWgCAUA+CJGFa/y9QD6IwYVoAsFABjaDBza
-wCiCkYoUJMLuqHjswhEsRkKAAKhEg0cpEhf/tXIFoA0FAOMyDiYBaYAAHdmNLEEwnDOZMqnJL+IQ
-6RYXJUj9AAAGmQF/0xT+YIYV4ABaAAAAAAD8hgQd7/9OAAAvQhqfNJk1KFCc6BYcJAMxgAArUhcq
-QGyaHpsfW4nm/COIFeAMBQBbiR0CqgH8ACId4AwFAAzcOQraOQyqAua+AQUBKYAALBIYLRIP/iHI
-FaAKJQD+I4gV4AsFAFuIgvAAMA2v66UA/mDGFaALBQBmstGJNSoSFog2DwIA6YgIBVD9AAAGqgEq
-NgfvUJ0kQP0AAAaIASgWBO8WGyeDQYAAK1IZKkBtKhYMKxYNW4nC/CNoFeAMBQBbiPkCrAH+ACId
-oA0FAA3tOQzsOQ3MAua/AQYBKYAALBIYLRIN/iGIFaAKJQD+I2gV4AsFAFuIXvAAMA2v66UA/mEG
-FeALBQBmskGKNykSFYw4DwIA6swIBMj9AAAGmQEpNgvoUJ8mYP0AAAbMASwWFugWGiQDQYAAK1Id
-KkBvKhYKKxYLW4me/CNIFeAMBQBbiNUCqgH8ACId4AwFAAzcOQraOQyqAua9AQUBKYAALBIYLRIL
-/iFIFaAKJQD+I0gV4AsFAFuIOvAAMA2v66UA/GGGFeALBQBmsbGJOy4SFIg8DwIA6YgIB3D9AAAG
-7gEuNg3vUKAkQP0AAAaIASgWFe8WGSeDSYAAK1IfKkBwKhYIKxYJW4l6/CMoFeAMBQBbiLECrwH4
-ACId4AgFAAiYOQ+fOQj/Aua5AQeBKYAALBIYLRIJ/iEIFaAKJQD+IygV4AsFAFuIFvAAMA2v66UA
-+GHGFeALBQBmsSEuMg2NPioSE48Srt3uEgElUP0AAAaqASo2DyxQoOoWHSbo/QAABt0B7RYUJgQ5
-gAAsUKErUiEqQHEqFgYrFgcsFhBbiVT8IggV4AwFAFuIiwKtAf4AIh3gDgUADv45Df05Dt0C6hId
-JoF5gAAsEhgtEgf+IMgVoAolAP4iCBXgCwUAW4fwij/+YggV7+ulAP4iJhXgAEoABrgBKBYR+GIG
-FaALBQCNEI4RjxL8IGgVoAA6AI0QjBMpMhApFhEpQTosNhEoQHMvNSwpNhQoNhKsjCgSEpwTKDYT
-qJgoFhIpQTEuNS4pNS0oQTKvn58SLTUwKDUvKUEzro6eESk1MSgSEa2dnRCoqOkSBSRA/QAABogB
-6BYTI7gFAAD4/+L9YgCdANKw0Q/RDwBsEAYa2K35s64FoAl1AA8CAG2qB+mGwCRAEQAAG9nTK7I5
-FtnSF9nP8WE8DeADBQBgAHAAG9nNK7I5sTN7O2QU2RES2ckkQpEiIv2kNAlEEaQiJSEHJCETKiAM
-+kGwFeNVYQBbgZUpIQcoIRIGmQH1JgAMsAsFAOklByR9yYAA50wKCu4CgAANqgJtCBIuIRLqxsAl
-2AUAAO67mHZgEQAAY//mAMDw7xYAJYapgAAY2R74IEYVoACKABvZqyuyOYwQjRKxzOwWACboBQAA
-nRL7gAVi4gCdAIgQGdjqjhIf2aIpkpEu4H0v8v2piAmIEfngAEewCgUA7xYBLwDOAABj/7yLEtMP
-DwIAK7B96zupedAEgADqEgElGAUAANMP6qAMKdgEgABbhM0loQfkoRMtEASAACsgDftBkBWjVWEA
-W4FeKSEHKCESBpkB+IYADPALBQDpJQckfVmAAOdMCgruAoAADaoCbQgSLiES6sbAJdgFAADuu4p2
-YBEAAGP/5h/Zeo/y4tj8F4OhgAAd2PLt0qMm4BMAACzCkSsiX63M5NlyHmZCgACsuyOxB4RDKrAM
-+2GwFeMzYQBbgT8d2WuN0vGjcA3gCwUA50wKCfYCgAD/RgANN/31AG0IGnTTHB/ZYirGwI/y5EwB
-JdgFAADvuwl2YBEAAGP/3gAAKCF+b4QB0Q8a2VvAlSmmv9EPAABsEAZb8W7modptEASAAFvw+Oah
-z20QBIAAE9lSFdhZ0w8oMkyYUQ8CAFvwEuahtG0QBIAALTKy+7DcBa/+9QDTDw7dCfeykgWm3R0A
-LKLZCt0R0w/6dogV5cwBAA3MAiym2Slideum5SzOAoAAK6KQCwtHC5kCKaaQW+7l5qFkbRAEgABb
-7b7moVltEASAABjX5i8ySw8CAAj/CBjYFC+Gq1vtkPOxmAXgAgUA/f6CHeCIBQD0AAIdoAc1ACky
-nixiTQ8CAPcgB5nSAJ0AKjKdDKsB/UAHLiIAnQD6AAIdoAwVAPwAAh3gCQUA+CAmFeAOBQD4IEYV
-4AgVAPggBhWgDwUAWkjIJzad6dfOGQa+AAAe2Bod2RYt5i0rUnnHxwy7AStWeS2S0x7YPxrZERjZ
-EfuwcgXv//UA+6YADrBMBQDtltMkU/8AAG3KESmif6ud/yAEPCIAnQAv1oC0qikKRm2aD+mCfyRA
-IQAAKoJ+q5kqloAa2A3TDyqggP1CwEFQDCUALVJ2DN0CLVZ2K1J+DLsCK1Z+KmKxxr/7QAQFcBsF
-AAuqAipmsVuIjR3X6izSgsDhDswCLNaC0Q+wiP8AIBXgChUA7685BEgFAADp0jgP91YAAGP/LwAA
-APWwBhWv/fIA0Q8AAGwQBB3YNyzSHsvLKMz/CMoB6MAaflgEgABtCAywqemqAQ1YBIAAebACY//s
-D7sRHtjYL8wf+8+GHeX/HQD/z6Yd4AoFACrkfvm8KBWgigUACAA/W4SiCgE/0Q8AbBAiW/ix5qSI
-bRAEgAAV2DwnUuImUuEoUuCnZidS3SlS3Kh3KFLaKlLZqYgpUtgrUteqmSpS1ixS1auqK1LULVLT
-rLssUtIuUsitzC1Sxy9Sya7dLlLGIlLFr+4vUsQjUsOi/yJSwiRSwKMiI1LBo0QjUr4lUr2jVRPY
-ISMyv6UzpDOjIhTYHhPYrKL/r+6u3SVC3q3MLTKqrLsvMnerqqqZqYiod6dm5lUIAiOvAAD0p+AV
-78cFAPagBALwCQUA5TYBLrAEgAD14MAN4AWFACgw9WTUCfEBnA3jLx0AJTGB3ZD2oAASsA8FAPUh
-AArwAnoALDD8KzD9LTD4LjD5LzD7KjD/remvmZoSmxGcEKyZq5kc2CyqmfglhhXgC2UA+CBmFeAK
-VQBbhmcqEizMq8Sg8ADgDaAPBQAAAADAsfolZhXgC4UAW4e0LjD1LRIs/6AARrAMBQBbhukoEiv5
-YEAHsIhNAPngBAewSgUAKDGB+IAwFeANhQAP3QwNJSjqmQIMQwKAAAhVNilEAQ8oKPoAoh2r5aEA
-/bDSBauIoQD4IAYVoAtlAFuGRwYyFOokAAlYBIAAWk98KzD0KTGA/IAwFaAOhQD7zwAOsI4FAOS3
-k2zLAoAADSsoCbs21rAOzAIsRAH9sKwFq4KhAPogJhWgDwUA+gCiHavroQD+IAYV4AtlAPggRhWg
-DwUAW4Yu6mQACtgEgABb92fmonNtEASAAFtieSky4u8ydyVo/QAAB90B7TZpJIBRgAAMnhEuNuUV
-175k9zQsUX8mMiopQoQa1umIMStCgiqixgmICClCgAuqCSsyJAqZCAmICCoy5QtmCAhmCArSCOYi
-CAZoKIAACyIMCiIM+gCiHaALZQDs2C0ZaASAAFuGC+ocIClYBIAAW/XN5qHobRAEgAAc19QW16UY
-1syJGBrYIyUydx/Xn+iZCAVT0QAA6RYIIrXpgAAo8X/xAA3+kgCdAC9Chu6UAAeAsYAAr57/3+AV
-oI9NAAjuAS5Gha/uKEKIK0KELUKCKTD27kKAJ3j9AAAH/wEvRn+v7qaZKZCAjzEuRoGu3S1Gg627
-K0aHLjJpq4iviC0yGC0WNyg2aKjunjANmSgpFi6v7vsgWbASAJ0AKTYmreX8v+AV4P1NAA/dAe02
-JSyoBIAALzD3JDIXpv8v8ICtXgT5KJkZ+yBZcBIAnQApNigvFhuk7v/f4BWghE0ACO4B7jYnLOgE
-gAAvEhsoMhgqMPb/oABEsBuFAATeLAvtLO42GSSg/QAAB0QBpqoIWCwoNhoqoIALiSyuhapVpf8L
-9Syv3a2Z+KAAQvAKVQD8sAASsAtlAOUWACxoBIAAW4W1JDYpJTYqKjIkKzLlpFwsNuSsu/tv4BXv
-jAUADLsBKzYjq6pbYYnRD6Xt/b/gFeDFTQANzQF/22YoMkF/j2AY1wueGC0w9w7+DAjuNqbdLdCA
-Dv4Mrl7pMignc/0AAA7OAQXdKC42J/0gTtLiAJ0Arl7tNignc/0AAA7OAS42JyhAAcCk/a9qBaAp
-BQD5BgAMcAtlAOhEAS/oBIAAW4WO0Q8AAAAA7TKqIr05gADp1AAGvPmAACgw9fglphXj1R0A7RY1
-LAaOAAAoMYH6AAId4A8FAPcAABQwCgUA+UEADTAFSgAAAObUAAa1OYAABvs3CzsU6xYoLdAEgABa
-Tq4sMPwrMP0tMPguMPkvMPspMP+t6K+ImRKbEZwQrIgLiAgc1yzpiAgNEASAAPgkRhWgClUA+CBm
-FaALZQBbhWYpMPUCWwzmMPQt6ASAAPsgSOASAJ0AKRYfKhIi+MAARvAMBQAsFiHtrQgN8ASAAO0W
-IC0qLgAA/yBoHeAKBQD6JGYVoAgVAPglZhWv+PUA+CSmFaAVbgAAKzD9LDD8LTD4LjD5LzD7KjD/
-remvmZoSmxGcEKyZq5kc1weqmfglJhXgC2UA+CBmFeAKVQBbhUIqEinMpvAA0A2gDwUAwLH6JWYV
-4AuFAFuGkC4w9S0SKdMP/6AARrAMBQBbhcUoEivTD/lgQAewiE0ACP8BLDGBLkAB/CaoFeALhQD/
-bwAN8EgFAAjuAgvaKO5EAS5jAoAADKo2HNdGKhY2/6MADHvqoQD9YGgd4AtlAPgiBhWriKEA+CAG
-FaAKVQBbhR8pEjZklTwe1oQpNiguNieunikSEC0SLe/WthSAUYAALjYrKTYsK/J6KvJ7C6oM+iZm
-FaO9HQArFipaTkguMPQpMYD8JmgVoA2FAArdDOTk+mzLAoAALhIqDe4oCe42L0ABKAqACP8CL0QB
-wPD6ICYVoAkFAP4h5hWrvKEA/a46BavuoQD6IEYV4ApVAPggBhXgC2UAW4T5iR/ImRzWXyk2Jqxc
-LDYlLTIlZNCoLTInZNCiLRY0HNcT/mUIFaAKVQD+JMYVoAtlAFuE7C8w9ygyIiUyF6b/L/CALhIm
-LRI0Bf8oCO4M/8Ak8uIAnQAvNiil3v/f4BWghU0ACO4B7jYnL+gEgAAc1wCu3y82IS0yJS4yJv4m
-RhWgClUA/CTmFeALZQBbhNUvMPYlMhim/y/wgC4SMgX/KP/AI5LiAJ0AKBInLzYmpYj5H+AVoJVN
-AAmIASg2JSoyK8ikKzIsW/P1L0KG5RIIJ4CxgACvVfS/4BXgj00ACFUBJUaFr1UoQn8lXD/nVQEE
-HsmAAChCgylCgiVGgeWVCAQesYAAKUKIyJQqQodko9QrMiWIMZUwLDJppYUlNmjlxQgFg+GAACky
-J2SQcRzWey8yFy4yKCkw9igyGC0yJqaZKZCACN0sD+4sLjYZLzD3rtipiKb///AQFeAZhQAJ6ywJ
-2iyo/wn5LK+7C6oICpkI7TYaLM6CgAD4JIYV4AtlAPggBhXgClUAW4SWKBIk6DYqIqj9AAAHVQEl
-NimoVSsy5SU25CoyJKW7+2/gFe+MBQAMuwErNiOrqioWOFtgZi8yJ+4SOCffOYAAJTIX///bKqIA
-nQAkMPemRCRAgJ4YLDIoBU0oLjYn/YAaWuIAnQAtNigvFhil6Pkf4BWglU0ACYgBKDYnKTIYKDIm
-LDIpKjD2Bd4s/mMmFaAbhQAL7SymquzWPhYo/QAAKqCACYgsB1UBKDYaC4ksro+q/69PC/QsD90I
-DZkI+IAAQnAKVQD8kAASMAtlAOQWACxoBIAAW4RgJTYpJDYqLRIY/mToFaAKRQD9rP4FoAtlAFuE
-WdEPwGAJZjb1oCcsEgCdANtg/+GYDaANBQAoMqpliMT/5FANoAIFACgyqukWCyxKBgAAHtWz7ZQA
-DJAEgADs1m4cqASAAPnPAA9wClUA/iHGFaALZQBbhEMvQobJ8K8l9L/gFeCPTQAIVQElRoWvVSky
-Iioy5SsyaYwxLUKILkKEL0KC5UKAIsD9AAAHiAEoRn+oVSgw9CVGgaX/L0aDr+4uRoclMiSu3Z0w
-rcwsNmisuys25KuqKjYhqpn5L+AV74oFAAqZASk2I+lVCAwAVgAAKTD1ZJZklRwrMP0sMPwtMPgu
-MPkvMPsqMP+t6a+ZmhKbEZwQrJmrmRzV2aqZ+CGmFeALZQD4IGYV4ApVAFuEFSIw9iUyGCow9KYi
-IiCAKhYR5SIoDSWeAAD2R+AN4A8FACIWLigw9fgj5hWgE6YAAAAAAPojphXgCRUA+CVmFe/59QAp
-FiVbhVctEiAsEiFbhI4sEivTDwy8NysSJS4SHS8SHwy7ASsWI+0SIy/QBIAA7RYeL1gEgABbhUot
-EiAsEiFbhIIsEh4tEiMvEisoEiWtLQ+/Nwj/Aa39DV0MKTGA5GNObMsCgAAqEigK2igJqjbWoCsy
-d2Sy8C5AASgKQAjuAi5EASkSKCgxgZITnBH/IwAK++qhAP0jAA2wClUA/awEBauZoQDpFgQsQwKA
-APihAAq7u6EA+iBGFeuVoQD4IAYV4AtlAFuD0mP2jBXVOBbVN2P2gwAAAAD/qmoFr+sqAMDgCe42
-9aAaPBIAnQD/7AgNoA0FAC9CgCVGf/XgAEL/8IYAKEKEJUaD9QAAQv/wkgAlRof4oABC//CSABrV
-5C42KO02JyrgBIAA66wEL+gEgABbX4UtMij+ZOgVr+16AAAAGtXb7jYmKuAEgADpEicv6ASAAOk2
-JSVYEQAAW196Y/uGABrV0i8WGC42J+usBCrgBIAAW190JDD3JTIXLTIopkT0kBAVr/KyACzyeiry
-ew1bNws7FCsWGgyqDCoWFVpM0yww/Csw/S0w+C4w+SoWHC8w+yow/63pr5maEpsRnBCsmauZHNVR
-+yAARLALZQD4JeYV4ApVAOkWAyYpgQAAW4OLLxIvLjD0LBIcKjD1+iPmFaALhQAMuwzttAAFEwmA
-APvAAESwCAUAKBYX75kIDegEgADpFhYvgUYAAP4iJhWgCwUA+iMmFeAKFQD6JWYVr/r1APokphWg
-AQYAAAAAACsWEv4iJhWgDBUA/CVmFa/89QDsFiUv0ASAAFuEwC0SFiwSF1uD+C8SKy4SJS0SEg+/
-Nw/uAS4WGSoSHygSGegWEy7YBIAAW4S1LRIWLBIXW4PtKRIZKBIcLxIrqYgpEiUuEhEPvzcJ/wH5
-4ABEMA2FAAjdDCkxgCsSE+Thr2zLAoAALhIaDt4oCe42KDJ3ZIFuKUABKgpACpkCKUQBLhYUKhIa
-KDGBmxHrpSgK4ASAAOgSHCxbAoAAD6oomBMLqjYqFjH6IqgV66qhAPogBhWrpaEA+iBGFavuoQD7
-dAAF8ApVAPoghhXgC2UAW4M4KRIxZJEAKTYoHtScJRYwLjYnrp4tEjDpEhQmgGGAAC02LC42K67e
-ZJjfLjYl+GTGFe/jZgAAACgyqmSNFClAASsKgAuZAviAJh3v9CIAABrVSy8WGOusBCrgBIAAW17u
-LxIY/mToFa/YigDbYP/OLA2gDQUAwPD/8rwNoAwFAMBgCWY29aASfBIAnQDaYP/yuA2gDQUAAC42
-JRvVOv2gaB2gCAUA6DYmLOgEgABbXtoc1NklMib8ZKgV79MOAAAAABrVLu42JypgBIAA/CEoFeAJ
-BQDpNiglWBEAAFtezhzUziQyFy0yKCow9y4yJyUyJqaqKqCA+iNmFa/S4gAA/98sDaANBQAe1F30
-JgYV7/waACwyqmTOlihAASkKgAmIAviAJh2v+ioAAAAAAAAA/gACHeAKBQD6ImYVr/kuAMDgCe42
-9aAOvBIAnQD/+TQNoA0FAIsejRwsEgsvMPX+I+YV4AgVACgWKw3MDAy7CFuELy8SHy4SEY0dr+7/
-oABGsAwFAFuDZCgSKyIWLvlgQAewiE0ACP8B8+AMWqIAnQCNHCISLvWgAEbw5U0A4jYmJuv9AAAO
-3QEtNiUvMPcuEh8lMhem/y/wgC8WG+X/KA8ApgAA8fCQDeAMBQD8QABG8AEyAJ8ZKhIfix6MG/xA
-AEbwDhUALhYrnRoNzAysu1uECy4SH40d/6AARrAMBQBbg0EuEiuNGo8Z/2BABjDuTQAOzAH/gAXa
-4gCdAC82KKXe/9/gFaCFTQAI7gHuNicv6ASAABzUdC8SGygyGCow9v+gAESwG4UABd4sC+0s7jYZ
-JKj9AAAHVQGmqggoLCg2GiqggAuJLK6CqiKi/wvyLA/dCA2ZCPhAAEFwClUA/FAAETALZQDiFgAs
-aASAAFuCkCU2KSI2Kowbix6lKgrMDKy7W/G51aAd0/B12wouQAHC8A/uAi5EARjT7PUfntLgAgUA
-xyTRD9pg/+nUDaANBQCtLRrUpi02J+w2KC/oBIAA66wEKuAEgABbXkclMhctMigpMPcuMiciMiam
-mSmQgPgjZhXv/MIAAAAAAAAAAP/yMA2gDQUAihwqNiUa1JTsVAAJaASAAO82JiVYEQAAW141IjIm
-LTIlKzD1+iPmFe/5sgAAAAAAbBAG2iD6IGgd4DzVAFtuZxjUiIkQIoJ/CpI74oZ/LRAEgADRDwAA
-AGwQBtog+iBoHeA81QBbbl0Y1H+JECKCfwqSO+KGfy0QBIAA0Q8AAABsEAof1HmL9Ij24vIHKVAE
-gACJ9YzzjfKO8Z4RnRIsFgMpFgUiFgcoFgYrFgTv8gAqGASAAP4gBhXgO9UAW2+a5aQABQHxgAAo
-oADp1GgUA9mAACYcIPIhBhXgBAUA0hCDIAM6Altvnus0AA04BIAA6lQAC+AEgABbfLvIp7gidind
-xirRD6V8K8AAwtztsQp+UASAAGW/5GAAAbHK6SIBJX8JgAAuoADVoOSUAg99hgAALwr/f0knGdRN
-iBj5AABEcAIFACKEgNEPkxj4YABFcAQFAPVQBh2gAgUA0Q8AABvUQ4oYq6r1UAYdoAIFANEPAAAA
-bBAG2iD6IGgd4DzVAFtuFujUCx0AkgAAghCoSOKEgC0QBIAA0Q/SoNEPAABsEAbaIPogaB3gPNUA
-W24L6dQwHQCqAACCEARICamI4oR+LRAEgADRD9Kg0Q8AAABsEAbaIPogaB3gPNUAW23/6dQkHQCq
-AACCEARICamI4oR9LRAEgADRD9Kg0Q8AAABsEAbaIPogaB3gPNUAW23z6dQZHQCqAACCEARICamI
-4oSALRAEgADRD9Kg0Q8AAABsEAbaIPogaB3gPNUAW23n6dQOHQCqAACCEARICamI4oR9LRAEgADR
-D9Kg0Q8AAABsEAbaIPogaB3gPNUAW23b6dNhHQCqAACCEARICamI4oSALRAEgADRD9Kg0Q8AAABs
-EAoe0/qL44jlieSM4i3iAS0WASwWAikWBCgWBesWAylQBIAA7uIAKhgEgAD+IAYVoDvVAFtvGOWk
-AAUEaYAAL6AAZPCG9iMAFeAEBQDyIQYV4AFOALgidyFtgyAPAgAPAgDaMFtvGus0AA0wBIAA6lQA
-C2AEgABbfDdlr9elbCvAAMKc6bEnflAEgABlv8XpIgElAamAACugANWg5JQCBYC5gADyIGgdr/7K
-AAAAAPuAIBWv/3IAHdPOjBitzPWQBh2gAgUA0Q/GKtEPH9PI/oAAR/AOBQD/8AYdoAIFANEPAABs
-EAgmCgAmFgDmFgEpUASAAPYgRhWgW7UAW27m46QABQghgADAsP4iABWgWtUA9cBoHeAItQBtihyj
-vyzwAOrBHH3oBIAA5MAvZdgFAADs5AAncAUAAP5hYBXgDbUA6hwQJ5gFAADl2QgI2ASAAPcgBh2g
-DAUAW218ihAPAgAPAgD1QAT6UgCdAPpgaB2gO9UAW27I46QABQRhgAAe0sQo4pXu4psg4EEAAPUA
-AEIwDQUA/IgAEjAqxQD1wABCMAu1AG26F6PfK/AAerEX5LDxZugFAADrxAAmYAUAAP5hYBXgDbUA
-4/wBINBBAADl3wgA2BEAAPfgBh2gDAUAW21aZqDEEtODAioCW2643KDrJAAJ0ASAAFt718yr8ACM
-DaAHBQAAxirRDxLTe9ogW26v3KDrJAAJ0ASAAFt7zmWv48Bx+mBoHaArxQBbbpr/XTAN4A0FAPgi
-ABXgCLUAbYoVK6AA5LARZVAFAAArlADt3AEkyAUAAMDbKhwQ5dkIANghAAD3IAYdoAwFAFttN+4S
-Ai0BsgAAixGMEPvABADQDRUA4H4RDugKgADkzAoO6gKAAA7dAg27AuvGFS0QBIAA0Q/GqtKg0Q/S
-oNEPbBAMH9NSi/SI9uLyCSlQBIAA5PIIKhgEgACF94n1jPON8o7xnhGdEpwTmRWVFyQWCCIWCSgW
-BisWBC/yAP4gBhXgO9UAW25o5qQABQIxgAAooADAkOrSZRQFOYAACZQC4xYMIJChAADTEIUwDwIA
-DwIABVoCW25q61QADTgEgADqZAAL4ASAAFt7h8inuDNyOdfGKtEPpnwrwADC3O2xCn5QBIAAZb/k
-YAABscrpMgElfwmAAC6gANag5JQCD31WAAAb0kqKHPtAAEVw//UAf0E+GdMfJKSA/oGgB9AKFQAs
-kX8KzAIslX9+RyAtkX/A5A7dAv0v5B3gAgUA0Q8AAPpgAEewAgUAIvSA0Q/AINEPwCDzUAYdoAIF
-ANEPAAAAbBAG2iD6IGgd4DzVAFts2xjTCYkQIoJ/CpI74oZ/LRAEgADRDwAAAGwQBtog+iBoHeA8
-1QBbbNEY0wCJECKCfwqSO+KGfy0QBIAA0Q8AAABsEAbaIPogaB3gPNUAW2zHGNL3iRAign8Kkjvi
-hn8tEASAANEPAAAAbBAG2iD6IGgd4DzVAFtsvRjS7okQIoJ/CpI74oZ/LRAEgADRDwAAAGwQBtog
-+iBoHeA81QBbbLMY0uWJECKCfwqSO+KGfy0QBIAA0Q8AAABsEAbaIPogaB3gPNUAW2ypGNLciRAi
-gn8Kkjvihn8tEASAANEPAAAAbBAG2iD6IGgd4DzVAFtsnxjS04kQIoJ/CpI74oZ/LRAEgADRDwAA
-AGwQBtog+iBoHeA81QBbbJUY0sqJECKCfwqSO+KGfy0QBIAA0Q8AAABsEAbaIPogaB3gPNUAW2yL
-GNLBiRAign8Kkjvihn8tEASAANEPAAAAbBAG2iD6IGgd4DzVAFtsgRjSuIkQIoJ/CpI74oZ/LRAE
-gADRDwAAAGwQBtog+iBoHeA81QBbbHcY0q+JECKCfwqSO+KGfy0QBIAA0Q8AAABsEAbaIPogaB3g
-PNUAW2xt6NKlHQCyAACJECKCgAkiKOKGfi0QBIAA0Q/SoNEPAABsEAbaIPogaB3gPNUAW2xhGNKa
-iRAign8Kkjvihn8tEASAANEPAAAAbBAG2iD6IGgd4DzVAFtsVxjSkYkQIoJ/CpI74oZ/LRAEgADR
-DwAAAGwQBtog+iBoHeA81QBbbE3moB9tEASAAOo0AApYBIAA/KBoHaB9FQD+IAgV4A4VAFgWS9EP
-AAAAbBAG2iD6IGgd4DzVAFtsP+agH20QBIAA6jQAClgEgAD8oGgdoH0FAP4gCBXgDhUAWBY90Q8A
-AABsEAbaIPogaB3gPNUAW2wx5qAfbRAEgADqNAAKWASAAPygaB2gbfUA/iAIFeAOFQBYFi/RDwAA
-AGwQBtog+iBoHeA81QBbbCPmoB9tEASAAOo0AApYBIAA/KBoHaBt1QD+IAgV4A4VAFgWIdEPAAAA
-bBAG2iD6IGgd4DzVAFtsFeagH20QBIAA6jQAClgEgAD8oGgdoG3FAP4gCBXgDhUAWBYT0Q8AAABs
-EAbaIPogaB3gPNUAW2wH5qAfbRAEgADqNAAKWASAAPygaB2gfUUA/iAIFeAOJQBYFgXRDwAAAGwQ
-HBvSN/ogaB2grIUAW3ia+kBoHaA71QBbbUnipAAFDXGAACigACMWLiUWLeQWLCQEOYAA9C/gFaAl
-xQD0hSAVoAkFAPgl5hXgAW4AuGb0wAvcIgCdACdiAAd6AlttRut0AA0YBIAA6iQACeAEgABbemNl
-r9aiNy1wAOXRMXvwBIAAZd/G6WIBJwohgAAqEi8o4ADqmgIPEASAAOoWLyQA6YAA9iBoHa/+vgAA
-AAAA/uAgFa//SgDAsCsWLyoSLiwSLfoliBXgXYUA/iXoFeAORQBYFc8sEi/5oi4F4A4lAA8CAP+B
-oAfQDRUAL5HzDv8CL5XzKBIv/wGgB1AKhQArkfMKuwIrlfMsEi//gaAHEBMFAC+R8wP/Ai+V8ygS
-L9MP0w//AaAGkCIFACqR8wKqAiqV8ysSL9MP0w95tw0skfTTDw8CAA3MAiyV9C8SL9MP0w949w0o
-kfXTDw8CAA2IAiiV9SoSL3enCCuR9Q67AiuV9RjR3CoSLCwSLy+CfysagAvLAQuvOe+GfyZYNIAA
-LJH2DcwCLJX2LRIvddcIL5H2Dv8CL5X2KBIvdIcIKpH2A6oCKpX2KxIvc7cTLJH2AswC/T7EHaAC
-BQDRD8Yq0Q/AINEPAABsEAraIPogaB3gPNUAW2uD5qC9bRAEgAAbz+UrsID8IgAVoA8VAPoAAAPw
-DkUA9iEGFeAJJQD5YAQD8A2FAPFgBLfQBiUAnxTxYAWnkgCdANrwnxQMrwqW8O62AQVQBQAA7rAO
-d/gRAACxqu72ACf4EQAADbwBfbAH7fYAJVAFAABkoEyJEP8iQAfQDwUAixiIFMDx+wIAD/AAEgB+
-lwrw69AN4AglAAj/An2XBWRgxw7/AnyXBWTAdg3/Atow60QACuAEgAD8C6Id4A4VAFgVWtEPAAAA
-AAD/YYAHkAoFAGP/bgAAAAAA7rYBBfSwgADfwP/9zA2gCgUAAAAAAAAA7rYBBfUQgADa8P4igBXv
-/W4AAAAAAAAA7bwBBfLUgAAvHBD//UgNoAoFAAAAAAAA+iIAFeAJNQAKmS4LmQqJkP8mAA///eIA
-7bwBBfEQgADa8P4igBXv/I4AAAAAAAAA+CIAFaALFQAKuy4IuwqLsP9mAA///NoA+CIAFaAOJQAK
-7i4I7gqO4P/GAA///J4A++BoHa/7wgBsEAbaIPogaB3gPNUAW2sd5qAfbRAEgADqNAAKWASAAPyg
-aB2gbYUA/iAIFeAORQBYFRvRDwAAAGwQBtog+iBoHeA81QBbaw/moB9tEASAAOo0AApYBIAA/KBo
-HaBtZQD+IAgV4A4lAFgVDdEPAAAAbBAG2iD6IGgd4DzVAFtrAeagH20QBIAA6jQAClgEgAD8oGgd
-oG1FAP4gCBXgDiUAWBT/0Q8AAABsEAbaIPogaB3gPNUAW2rz5qAfbRAEgADqNAAKWASAAPygaB2g
-bSUA/iAIFeAOJQBYFPHRDwAAAGwQBMAg0Q8AbBAG2iD6IGgd4DzVAFtq4+agN20QBIAA6jQAClgE
-gAD8oGgdoG0FAP4gCBXgDiUAWBThiBAa0G3xAPAN4EsFACmhfwuZAimlf9EP0Q8AAABsEAbaIPog
-aB3gPNUAW2rP5qAfbRAEgADqNAAKWASAAPygaB2gXcUA/iAIFeAOFQBYFM3RDwAAAGwQBtog+iBo
-HeA81QBbasHmoB9tEASAAOo0AApYBIAA/KBoHaB9tQD+IAgV4A4VAFgUv9EPAAAAbBAG2iD6IGgd
-4DzVAFtqs+agH20QBIAA6jQAClgEgAD8oGgdoF1FAP4gCBXgDiUAWBSx0Q8AAABsEAbaIPogaB3g
-PNUAW2ql5qAfbRAEgADqNAAKWASAAPygaB2gXQUA/iAIFeAOFQBYFKPRDwAAAGwQBtog+iBoHeA8
-1QBbapfmoB9tEASAAOo0AApYBIAA/KBoHaBNBQD+IAgV4A5FAFgUldEPAAAAbBAG2iD6IGgd4DzV
-AFtqieagH20QBIAA6jQAClgEgAD8oGgdoC3FAP4gCBXgDkUAWBSH0Q8AAABsEAbaIPogaB3gPNUA
-W2p75qAfbRAEgADqNAAKWASAAPygaB2gLUUA/iAIFeAOJQBYFHnRDwAAAGwQBtog+iBoHeA81QBb
-am3moB9tEASAAOo0AApYBIAA/KBoHaAtFQD+IAgV4A4VAFgUa9EPAAAAbBAG2iD6IGgd4DzVAFtq
-X+agH20QBIAA6jQAClgEgAD8oGgdoC0FAP4gCBXgDhUAWBRd0Q8AAABsEAbaIPogaB3gPNUAW2pR
-5qAfbRAEgADqNAAKWASAAPygaB2gXeUA/iAIFeAOFQBYFE8Z0D0okH3AoQqIAiiUfdEPAGwQBmgx
-A8Yq0Q/aIPogaB3gPNUAW2o+6M+4HQDKAACJEKhIIoB9CSI24oR9LRAEgADRDwDSoNEPbBAMHNBy
-x9+dFIvBiMOJwikWAigWAysWAezCAClQBIAA/CAGFaBbtQBba37ipAAFCtGAACqgAC4KYHrrbC8K
-enrzZtMQ9CIAFeA3pQCEMNpAW2uC60QADTAEgADqJAALYASAAFt4n8qjuDN1Od7yAAIdoAMFAPgA
-Ih3gCgUA8yIADTAIBQAKmDjNj2AA+6JsK8AA2sD3YA9cYgCdAGW/yGAB4gAAAAAAAADAMPwAAh2g
-XdUA+iQAFeAEBQD1YGgd4A61ANMPbeoXos4q4AB9oRfkoC9mYAUAAOq0ACXYBQAA/kFgFaAMtQDq
-HCAnEAUAAOXPCADYwQAA9eAGHaAMBQBbafX6QGgdoDvVAFtrReKkAAUDuYAAK6AA8WHADeAt9QAK
-rAJtCA19sWIrwAHksAhmYAUAAGP/6wCIFGSAUMDA+CQAFeAKtQBtqhUqIADkoBFhEAUAACqUAOzM
-ASTIBQAAwMuly/okABWgDAUA5LQAINjRAABbadgK/lD8ACId4AwFAA7cOGXAqsYq0Q+UFMDA+iQA
-FaAPtQBt+heizivgAH2xF+Swm2ZgBQAA66QAJVAFAAD+QWAVoAy1AOocICcQBQAA5cgIANjRAAD1
-AAYdoAwFAFtpwPFMiA3gavkAwMD4JAAV4Aq1AG2qFSogAOSgEWEQBQAAKpQA7MwBJMgFAADAy6XL
-+iQAFaAMBQDktAAg2EEAAFtpsPoAIh3gDAUABrw4/5YQDeCa+QDA0Am9OGTfVMkzaDtVweF+MTTA
-INEPAP/+QA2v6qUAGM7dghyoIigigIkU/iGoFe/69QAKmQMJiAEI/wL+UAYV4AIFANEPABrOwYsc
-jBSNHVtpjcAg0Q+xytKg8mAoFe/3qgAazr2LHIwUjR1baYbAINEPAAAAAPoAIh2gCQUABqk4ZZ+C
-Y/7UAAAAbBAK+kBoHaA71QBbatjjpAAFCHmAAPYgaB2gBQUA8iIAFaAHBQD0BYIdoAoFAP4iABWg
-CLUAbYoco6wrwADksRx9aASAAOSwYmVQBQAA6+QAJ3AFAAD8YWAVoA21AOocECDYgQAA4tkIBhgF
-AAD3IAYd4AwFAFtpamagL+oSCCKoBQAA6mQAIzAFAAD8s8CBUAoFABzPoSsQAS0QAC3EfPuPph3g
-AgUA0Q8AAPhgaB3gCgUA+iIAFeAOtQDTD23qHC6QAN2g6qwBLOAEgADk4BRkyAUAAO60ACXYBQAA
-/GFgFaANtQDqHBAg2IEAAOLfCAYYBQAA9+AGHeAMBQBbaUhmoCD0v/ugkgCdALFd/Z8GBaAKRQD6
-ACId4A4lAFt9N8Yq0Q/SoNEPAAAAbBAG+kBoHaA71QBbao3jpAAFB5GAAPWe7gXgBgUA8iBoHaAH
-BQD0BYIdoAi1APwgaB2gCgUAbYoco60r0ADksRx9cASAAOSwlmVQBQAA68QAJmAFAAD8YWAV4A61
-AOoUAAaYBQAA4ukICtgEgAD3IAYd4AwFAFtpH/FE5A3gDgUA2RD8YGgd4Aq1ANMPbaoUKtAAyabq
-lAAncAUAAO3cASTIBQAA/GFgFeAOtQDj3AEo0ASAAOLtCArYBIAA96AGHeAMBQBbaQtmoBzlXAQj
-MAUAAPjf+rpQCLUA0qDRDwD//lQNr+qlAGhk791g/Z6EBaAKJQD6ACId4A5FAFt89MYq0Q/AINEP
-bBAG+kBoHaA71QBbakvjpAAFB9GAABXPN/IgaB2gBgUA9gACHeAkxQDwAFgNoAm1ALRV9sAgFaAI
-tQD4wAZMIAm1AP4gaB2gCgUAbZoco6wrwADksRx9aASAAOSwoWVQBQAA6+QAJ3AFAAD8YWAVoA21
-AOoUAArYBIAA4t0IBhgFAAD3oAYd4AwFAFto2P9Z9A3gDQUAAzwC+CBoHeAOtQBt6hQqwADJpuqU
-ACboBQAA7MwBJMgFAAD8YWAVoA21AOoUAArYBIAA4t8IBhgFAAD34AYd4AwFAFtoxGevUcCLeGEj
-3WD9nggFoAolAPoAIh3gDrUAW3y0xirRDwAAAP/+KA2v6qUA0qDRD8Ag0Q9sEAb6QGgdoDvVAFtq
-B+OkAAUHcYAA9ZvuBeAGBQDyIGgdoAcFAPQFgh2gCLUA/CBoHaAKBQBtihyjrSvQAOSxHH1wBIAA
-5LCWZVAFAADrxAAmYAUAAPxhYBXgDrUA6hQABpgFAADi6QgK2ASAAPcgBh3gDAUAW2iZ8UTkDeAO
-BQDZEPxgaB3gCrUA0w9tqhQq0ADJpuqUACdwBQAA7dwBJMgFAAD8YWAV4A61AOPcASjQBIAA4u0I
-CtgEgAD3oAYd4AwFAFtohWagHOVcBCMwBQAA+N/6udAItQDSoNEPAP/+VA2v6qUAaGPv3WD9nX4F
-oAolAPoAIh3gDjUAW3xuxirRD2wQCB/Ouov0iPbi8gcpUASAAIn1jPON8o7xnhEtFgIsFgMpFgUi
-FgcoFgYrFgQv8gD+IAYV4DvVAFtpuuSkAAUBsYAAwnziFAAAqIEAAIMgDwIADwIAAzoCW2nA6zQA
-DTAEgADqRAALYASAAFt23cinuCJ1KdfGKtEPpGwrwADnsQp+UASAAGW/5mAAAbHK6M6YFX8ZgACJ
-IcAgCpI58xAGHaACBQDRD2wQDPpAaB2gO9UAW2mc5KQABQh5gAD2IGgdoAMFAPedFgXgAgUA9AWC
-HeAKBQDwALANoAu1AACOHMWn/0AHaqIAnQD+4AcroAoFAC5lAOM8ASMwCQAA9GAHZZALtQAtHCBt
-uhykrCvAAOWxHH1wBIAA5LAyZVAFAADr1AAm6AUAAPyBYBWgDrUA6xwwINCBAADq7QgGIAUAAPOg
-Bh2gDAUAW2gjZ6+P+IBoHeAKBQD6JAAV4A61ANMPbeocLZAA3qDqrAEs4ASAAOTQFGTIBQAA7bQA
-JdgFAAD8gWAVoA61AOscMCDQgQAA6u8IBiAFAADz4AYdoAwFAFtoDfFGiA3gCPUA+H/5fCIAnQCx
-Pf2coAWgCkUA+gAiHeAeBQBbe/vGKtEPAAAAAAAAAPoAgh2gCxUA7M5IGegEgABbe/PGKtEPAAAA
-Gs1y+CBoHaAZBQBtmg/pgQAlUAkAAOmlvSRACQAAwCDRD9Kg0Q9sEAbaIPogaB3gPNUAW2ft5qAX
-bRAEgACIEBvONAgJR+i0fiSoJ4AAaJMB0Q/GKtEPAAAAbBAG2iD6IGgd4DzVAFtn4BjNeIkQIoJ/
-CpI74oZ/LRAEgADRDwAAAGwQCBnOJA8CAA8CAIiRKBYB6ZIAKVAEgAD4IAYV4DvVAFtpJOOkAAUH
-gYAAwFDnFAAAkEEAAPYAAh2gJMUA8AA8DaALtQAAsVX0oAW5UAu1APwiABWgCgUAbboco60r0ADk
-sRx9cASAAOSwj2VQBQAA68QAJmAFAAD8YWAV4A61AOdbCgaYBQAA4u0IANBBAAD3oAYdoAwFAFtn
-s/9adA3gDgUAKRwQ/GBoHeAPtQDTD236FCrQAMmm6pQAJ3AFAADt3AEkyAUAAPxhYBXgDrUA51sK
-BpgFAADi6AgA0EEAAPcABh2gDAUAW2ef/1V0DeAFJQDSoNEPAAAAAP/+cA2v6qUAG83liRGMECy0
-gOm1Ri0QBIAA0Q/GKtEPbBAG2iD6IGgd4DzVAFtnj+agFG0QBIAAiRAbzdYJCEfptH8kGBuAANEP
-xirRDwAAbBAG2iD6IGgd4DzVAFtngxjN0IkQIoJ/CpI74oZ/LRAEgADRDwAAAGwQBtog+iBoHeA8
-1QBbZ3kYzceJECKCfwqSO+KGfy0QBIAA0Q8AAABsEAgZzcEPAgCIkZgR6ZIAKVAEgAD4IAYV4DvV
-AFtovuOkAAUHgYAAwFDnFAAAkEEAAPYAAh2gJMUA8AA8DaALtQAAsVX0oAW5UAu1APwiABWgCgUA
-bboco60r0ADksRx9cASAAOSwj2VQBQAA68QAJmAFAAD8YWAV4A61AOdbCgaYBQAA4u0IANBBAAD3
-oAYdoAwFAFtnTf9adA3gDgUAKRwQ/GBoHeAPtQDTD236FCrQAMmm6pQAJ3AFAADt3AEkyAUAAPxh
-YBXgDrUA51sKBpgFAADi6AgA0EEAAPcABh2gDAUAW2c5/1V0DeAFJQDSoNEPAAAAAP/+cA2v6qUA
-G819iRGMECy0fem1RS0QBIAA0Q/GKtEPbBAI+kBoHaA71QBbaH3jpAAFComAABfMMPeXOAWgBAUA
-9AWCHeAKBQD4AWId4AwFAPwgphWgANoAABnLlAQfFAf/Ci3yrsfvDpgDCN0B/WYADvAKBQDt9q4i
-IAUAAPSAB/tQCbUAiBVlgPXdEG2aHKOuK+AA5bEcfXgEgADksLdlUAUAAOvUACboBQAA/mFgFaAP
-tQDaEOPsASDYQQAA8eAAR3ANBQD9wAYd4AwFAFtnAdKg5yBYafAEgADZEP4AAh3gCLUAbYoUK+AA
-ybbrlAAn+AUAAO7sASTIBQAA/mFgFaAPtQCx4+scECjQBIAA8eAARvAJBQD5oAYd4AwFAFtm7Oag
-Wm0QBIAAwOEuFgUazI6OFCqifw6rKCw66Ay7LHtjG/Kf+JfSAJ0AGc0y+WAAFb/8KgAA//3gDa/i
-pQAfzS79mlwFoAsVAAr/LPyAaB3gCkUAW3rO+5aYBe//HgDRD9EPAAAAbBAOG80l+iBoHaBMhQBb
-c3D6QGgdoDvVAFtoH+KkAAUEAYAAKKAADwIADwIAZIBv9ikAFaAHBQDyIGgd4AA2AAAAAAC4M3Yx
-VoQw2kBbaCDrRAANKASAAOokAArgBIAAW3U9Za/dolwqwADC3O2hN35YBIAAZa/L6TIBJYEhgAAu
-sADSsOeXAg99fgAALxoMf3AMEs0C9k/mFeACBQDRD8Yq0Q8AAAAA+4AgFe//MgBsEAT6QGgdoDvV
-AFtn9+KkAAUA2YAAE8z22jBbaAHcoOs0AAlQBIAAW3UfyKLGKtEPGMzwGszxIoJ/GcwtCiIBCSIC
-8w/mFaACBQDRDwAAAGwQEhvM6vogaB2gbAUAW3Mw+kBoHaA71QBbZ9/kpAAFA4GAACigAA8CAA8C
-AGSAmfYsABWgBwUA8iBoHaAANgAAAAAAuCJ2IUaDINowW2fg6zQADSgEgADqRAAK4ASAAFt0/WWv
-3aRcKsAAwtztoU9+WASAAGWvy+kiASWAoYAALrAA1LDnlwIPfX4AAGAAO8YqZiAyGswALRIYL6F+
-ffwGLaV/0Q8AAP9P5BWgCxUA/ZmABaAKRQBbelvGKtEPAPuAIBXv/tIA0Q/AcCcWGP/+/A2gAgUA
-AGwQEBvMtPogaB2gbAUAW3L6+kBoHaA71QBbZ6nkpAAFA9GAACigAA8CAA8CAGSAh/YsABWgBwUA
-8iBoHaAANgAAAAAAuCJ2IVCDINowW2eq6zQADSgEgADqRAAK4ASAAFt0x2Wv3aRcKsAAwtztoT9+
-WASAAGWvy+kiASWA8YAALrAA1LDnlwIPfX4AABLLzPZPxB3gAgUA0Q8Zy8kokX75L8Qdr+KlANEP
-AAAAAAAA+4AgFe//EgAby8LAoPtvxB2gAgUA0Q8AbBAGLSAA6zQACmAEgAD6oGgdoD/VAP+lJg3g
-BgUAxTtz0R/eIG0IFeTQSGMwBQAALeAB79EMd3AFAABz0QRj/+MAABfMdJsS/CAmFaADBQDqFgAj
-oEEAACVyf9sg7GQACtAEgABbdJTIrLh35HnocZghAADGKtEP2lBbZ212qekayxAYzGWqOnih6OsS
-AiVALwAAiImMEe0SAClQBIAAC4AA0qDRDwAAbBAG3EDqIAAq6ASAAPIgZhWgBwUA/mBoHaA/1QDv
-oSp5GASAAMUrcqEgAzsCbQgV5KBIY7gFAAAqsAHvoQx12AUAAHKhBGP/4wAAFsxKnhL8ICYVoAIF
-AO0WACMpQQAAJGJ/2zDsdAAKUASAAFt0aMisuGblaehxECEAAMYq0Q/aQFtnQXep6RrK5BjMO6oq
-eKHo6xICJUArAAAogjWMEe0SACnQBIAAC4AA0qDRDwBsEAbcQOogACroBIAA/mBoHaA/1QDiFgMp
-GASAAP9FBg3gAgUAxUt0oR4DOwJtCBXkoJhhEAUAACqwAe+hCnXYBQAAdKECY//jFcwhnRKcEfeY
-PgWgBwUA/iAGFaAAOgC4ZuVhZnO4IQAAJGJ/2zDsJAAKUASAAFt0OmWv4tpAW2cWcqnaGsq4GMwT
-DwIAqnp4oTiLEGmxFywSAS06/33JDh7LJS/igC7ifw/uCC4WAesSACVAJwAAKIIljBHtEgIp0ASA
-AAuAANKg0Q/GKtEPbBAG3EDqIAAq6ASAAP5gaB2gP9UA4hYDKRgEgAD/RSYN4AIFAMVLdKEfAzsC
-bQgV5KBEYRAFAAAqsAHvoQt12AUAAHShA2P/4wAVy/CeEhbL7pwR/CAGFeAHBQAkYn/bMOwkAApQ
-BIAAW3QJyK24ZuVp6HO4IQAAxirRDwDaQFtm4nKp6BrKhBjL4qp6eKHn6xICJUAjAAAogj2MEe0S
-ACnQBIAAC4AA0qDRDwAAAABsEATAINEPAGwQBCMgBvRA8BWgChUAWAS785Q6Ba/1tQD1QAc8YAYF
-ABrLzgNJDCYmguQ7HXnGAoAA+wAARDAa9QBtmQ0pgkAKmQLphkAkQAcAACwiwB3LxA3MAiwmwCki
-xxvLwhrLwguZAQqZAvhY5hXgBAUAwKFbba0kTAFpSfT+WOgVoAQFAMChW22psURpSfUUy7gkJsov
-Ck7+RoYV4AQFAMChW22isURpSfX4RogVoAQFAMChW22dsURpSfUpGgD4SOYV4AQFAMChW22YsURp
-SfX6SOgVoAIFAMChW22UsSJpKfXAo1gEhnWhHPmXOgWgAgUA0w9tOQ0mhkAmhnzmhn4kQAcAANEP
-xyXRD2wQBBPJ3xnLkwgoEamIKYJBKIJRJDKCFcuU5UQBCRWCgAAEIgLycEYVoAIVANEPAGwQGBzJ
-04omJiAGKCAH+CRGFaALFQApwoILmQIpxoL4wCpqogCdABTLfycSIghtEaTdBncMbXkiLtJBLNJD
-DugJfIsTDu4RfOsI/48ADLAAHgAAwJAp1kMt3QH6IwYVoAMFAKY12lBb/9pkoNTiWwkK5gKAAKTM
-LcJRLbUewKAqxlEqtScqtTDqtTkhmAUAAHc5zxjLai8SGMDALBYZ+eAEB7AOFQD+IoYV4A0FAA/t
-OC0WFR7Jpy3igiMSGR/LXisSIqYz790BCf2CgAAP3QLt5oIrUASAAFgC6cCg/ZawBaALBQBYAXBm
-oFbrEiIrUASAAFgC48Cg/ZRQBaALBQBYAWlmoDsjFhNYAUhkpKUayiL8ImgVoAsFAPokZhXgAwUA
-+iQmFaAJBQDpFiAuZoKAAPWAAQYwBQUA/CPmFaAAjgDHK9EPsVUuEiMtEiAPAgDu7AEhmEEAAO4W
-Iy6D3gAAKRIf5ZZSJPARAADl5lIk6CEAAOXWUiTgMQAA5cZSJNhBAADltlIk0FEAAOWmUiTAYQAA
-5YZSJPhxAAAl9lLrEiIrUASAAFgCtiwSIcf/78wDCdAEgADsFiEp2ASAAFgBOmavfFgBGWWvesCR
-+CQGFe/93gAAAADjEiEvXwKAACsWHisWEvwiaBXgCQUA+COmFeAPBQD+IWYV4A4FAP4i5hWgBQUA
-9CNmFeAOBQAuFhoC2AnoFhYu7gKAAPWgAEawDAUA/CIGFeAFBQD9qiYVoADeAAAAAAD0oAVhkgCd
-ACsKAesWGyKoBQAALhIcLRIdLBIaLuwQ7hYeJsgFAADpFh0uBLYAAPokSBXv//UA7zMDC1AEgABY
-AoIrEh7cMOsWHC3QBIAAWAEIZq60WADnZa+kihsPAgAPAgD1X/Ud0gCdAC0SGysSFrGsDco5K7Ee
-LBIX6hYLLd/CgAD9YBdDogCdALHMLBYXLhIQLRIWKxIiLOZR7NUnK1AEgABYAmj//ZwNoAUFACkS
-HSsSFioSF+q1JyTIBQAAH8rSjfKO8Yv0iPCM84r1mhWcE5gQmxSeEfwgRhXgDgUAnh4tEhMrEhKI
-9ugWBiznAoAA7LsIDu6CgAAE3QotFh+P958X07DrEiIrUASAAFgCTdow7Mq8GdgEgABYANRmreby
-IaYV4AyFAPmVbgXgCwUA+iImFeAKBQDqFg8p6ASAAOkWIS6YBIAA7RIfKPAEgADTD23KIi/SUigK
-f/n/7UQiAJ0AieAJCUDp+QgHcBEAAOnWUiboEQAA6xIiK1AEgABYAjEsEiHyIYYV7/r1AOrMAwnY
-BIAA7BYhKdAEgABYALPtEh8taxIAAPIgaB3gBQUAizDTD/VgDGCSAJ0A4zwEIqgFAADpWOhm6BEA
-AI0Q+CEAFaAOBQD+ACId4AwFAP3iAA5wCTUA/CAoFeDMAQAPAgBtmiD5AAgV4AoFAA3+OO2CASRA
-IQAADOsB+eIADXAOBQALrAEN/jiNHHzgCv4hxhXgDhUALhYPLhIRiR/9ogAV4AyFAO7sAS6YBIAA
-7hYRJPgxgACDHY8eDOgRqDPrNAAH9YGAACsSIikSFekWCCtQBIAAWAH3JRIhx4/oVQMJ0ASAAOs0
-AArgBIAAWAB75RYkLWQaAAAlEhYpEhQPAgAlUR7kkGViq8EAAJMaIxIkKBIQKxIi5YZRK1AEgABY
-AeWLGvohJhXv+fUACTMD7DQADdAEgABYAGlmrDlYAEhkoLEsEhYswR7vzBECqAUAAPWABQPiAJ0A
-jhmNGOMWJCdwQQAA7hYKJv1BgADrEiIrUASAAFgBzykSFg8CACqROSiRJ6qICBgSKhIQLxIZKKZR
-6JUwJ/gFAAAvFhn3/9pFYgCdAOsSIitQBIAAWAHBwCDRDwDtFiUq0ASAAFgAEO0SJS1zTgAAwOCe
-MCvSUrC8C8s4+6pGFe/5VgAAIhIW/ETkHa/ytQDRDxPI+P/wkA2gCwUAKBIW9QckHe/9xgAAbBAE
-6MoeEUFDgADAYOXIXRkBCoAA/QABAVADRQBtOhgpUoQJKQEqUonqKgEDMBEAAOqZInKoEQAAHMhS
-KsIl+kAEBTALBQD7hKYV56oBAPFAkA3gAhUAwCDRDwDRDwAAbBAEG8hI17AmsojHjwhmA/fgAAMw
-AgUAKHKE+kCAFaAFBQD48SgV4AxFANMPbcolACAEBg0Z79cacRAFAAAAUAT4nwAPcfidAP7gAAf3
-7gEAf+kfuFUnfATpq7ttEASAACKyJfLgAAEwAwUA47YlIQBBgADAINEPwCHRD2wQBBnIKdMPJJaE
-JJaFJJaGJJaHIpaAI5aBKJKD+5PCBaAMBQD6ACId4+2FAPsGAAxwDhUA+TBmFaAPBQBaN2j4AAId
-7/JVAAqSO9EPAAAAbBAUJCAHJSAGIhYadFs5GcnHAloJ5UwMCsYCgAD5AABEcAsFAG3JGymCQSml
-QuuGQSVQCQAA66VKJEAHAAArpVMrpVwJCk+aEBnIA8DBK5KCDLsCK5aC9KAlaqAKBQAiEgAqFg8F
-TwwvFhcZx/sokoIjEg8aybMFMwjqiAEJ1YKAAOqIAgpYBIAA6JaCKtAEgABYAT3AoP2TWAWgCwUA
-W//EZqSi6lQAClgEgABYATbAoP2Q9gWgCwUAW/+9ZqSH2lDjFhEqWASAAFgBLygSGikSEQ8CAA8C
-AAiYCSgWGyiBQsCgKhYdGsmR48htHM4CgAAPAgAKmQj4I4YV4AoFAPojBhWgBgUA+SgmFaAHBQDq
-VAAKWASAAFgBG8ef6TMDC1AEgADrZAAJ4ASAAFv/oGakFFv/gOwSGyUgkYAALMFCDwIAD8wRLMwQ
-84Af06IAnQCxIi4SHS8SHC0SGPbCABWgBwUA4vZBJ0gFAADpFh0m/PmAACcKAPghhhXgBgUA5hYZ
-LLcCgADqVAAKWASAAFgA/ceP6DMDC1AEgADrZAAJ4ASAAFv/gmajnFv/YuSjZmO4BQAALBIcKxIb
-LRIZLMJBK7Fd9sIAFaAaBQDsuwwG6AUAAPtAG3viAJ0A7RYZK8KcAAApEhseyVwilV2I4Irki+OM
-4u3iASD4QQAAnfGc8pvzmvSY8InlmfWI5pj27uIHKtAEgADu9gcqWASAAFgA2YgcJxIZqHfsyUwb
-nwKAAOo0AAnYBIAAW/9dZqMHIhIcIiJPsSKXHRrHg/mSiAXgCwUAKxYW+VEGFeAGBQDqVAAKWASA
-AFgAxxnHe9ow/ZAYBaAIBQDologp2ASAAFv/S2aiwepUAApYBIAAWAC+HsdxHMkt7ckzGdAEgADt
-5ogp2ASAAFv/Qmaimlv/IdegGcdpHMf66MksGdAEgADologp2ASAAFv/OWaieVv/GfdAFJ5iAJ0A
-sSIsEhYtEhyxaeaUAAGYQQAA4tZPJnuJgAAdx+udHiwSHMCAKMZPLxIR/iGoFaAKBQAqFhMax1Ku
-ni4WEPlRBhWgCwUA6MkDH3cCgADrFhIncEEAAO4WFC/+goAACP8K/iKmFeAPhQDpEhUg8EEAAG36
-Ii+SRygKf/ngD5QiAJ0AiuAKCkDq+ggHcBEAAOqWRyTIEQAA6lQAClgEgABYAISDHiv6/wszAysS
-FOw0AA3QBIAAW/8I4xYOLQ2iAAAjHBD2IqgV4AYFAIwwDwIA9YAMEJIAnQDnfAQjMAUAAOlo52GY
-EQAAKBwQiYD+AAIdoA8VAP0AKBXgDAUA6fw4BEAhAAD8AAAGMAk1AG2aIPkACBXgCgUADf447YIB
-JEAhAAAM6wH54gANcA4FAAusASsSFCoSEg3+OAztAf4iaBWgDBUA/Y0ADXAPhQDqFhIl2EEAAOsW
-FCdwBQAA7hYTJXhBgAAvEhz6oGgdoAYFAOL2TypYBIAAWABNJxIQIxITpzMnEg4MMxHyYgAV7/j1
-AOh3AwnQBIAA6zQAC+AEgABb/s0jFh7mFh8tBioAAOJkAAmwBIAAIxIcIzJBIzzwKBIc2lDjhkEq
-WASAAFgAOMef6XcDC1AEgADrZAAL4ASAAFv+vWagh1v+nGSgsbAzZDCs5C/JYzBBAAApEhsPAgAP
-AgApkUssEhsiwV2pIgISEi0SHIofKxIXItZB4sVUJVAFAAAqFg/7X9s9YgCdAOpUAApYBIAAWAAd
-wCDRDwApEhwokkH5H+AVoAcFAPkoJhWv8jIA2mBb/mhlrnnAoJowKXJHsJn46OYV7/m2AADHJdEP
-LBIcKRIdKxIb4sZBJMgFAADza6Qdr/BeAAAAAOlsASFT/QAA800ACT/1/gArEhsDCU/5aWQd7/12
-AAAAbBAE5MhoGUYCgADyQ3IN7fr1AAI5DASICG2ZDSmCfAqZAemGfCRABwAAwKFbalDiOQwJRgKA
-APUAAEQyCgUA0w9tmg0pgnwKmQLphnwkQAcAACoKAVtqRsAg0Q9sEArmIAYpIASAAPZA8BXgCjUA
-WAE1xyvzQAiUIgCdAPONKgXgChUA9eACHeANBQAtNoItNogoMoIKiAIoNoL2wAv64gCdABzIRZ0V
-JBYCBn4MnhYvMoKFFSkSAgz/AQZVCOlZCAqtgoAA9eYAD/AEBQD+cEYV4AUFAJkRJZQhiBH1BUYd
-oAoVAFgBF/NABPQiAJ0AKTIkDEoR+qYADT8LBQALmQEKmQL4ZIYV4Ao1AFgBDXKhd+pkAAvYBIAA
-W/+5zVrNSMDQLTaALTaBHMguLDaEG8guKzaFLDaGKzaHKDKDGsgj+gAiHeAMBQD4ACId4+2FAPkG
-AAxwDhUA+HBmFaAPBQBaNalmoCIqMiXipyByIAUAAPif+y3SAJ0A6RIBIqgFAAD4v/qCUAQFAMcl
-0Q+LFY0W7MgJFdgFAACbFf1/+IViAJ0Ajhb4IEgVoA8VAP4gZhXgBRUAJRYE+MAARDAKBQD4IAYV
-rwUFAG3pQIQSpqmklCtAKi9AIav+Dg5HLkQzeWseKEAgKUApD4QMiBT7LwAM8A8FAAn4OYkTmBQE
-+TmZE2SgrQy8Ng3tN7GqiRRkkNWKE9MP5BICJQZxgACnagoaEqpKLKAqKqAhKzIkDMwRDKwCBbsB
-DLsCKzYk9GSIFaAKFQBYAL/zX/n0IgCdAMDDLjIkwPD0IAAFs4QhAOXuAQRD/QAA6P81BdgJAADs
-uzQP/wKAAA+/Ag/uAi42JCwyOi0yOw3MDPtgQBWgzAEADKoDCgpAqrqyqio2OCkySP1kIEFSmQEA
-qbr7X+AVoABmAI0QLNAq/aZwFe/9PgAAAAAAAADakCo2SMDg/nBGFaAKNQBYAJvzX/V0IgCdAMAg
-0Q8AAAAA/a8ADT/8/gBsEA4Yx6wjIAbkIAco0ASAAPZAcBXgCwUA/ECoFeAMNQDzi94FoAmVAG2a
-DimCQZmg64ZBJEAHAAC0qhnHsBjHsMCgKiYjjoOFguaCASD4wQAAlvGV8p7ziICY8A1aQeyqNgDY
-wQAAC6oKiqAN9VD+uAASsGoJAPzQABMwigEA/xAAFDCqEQDoVQINVcKAAApmAvamAAqwiAUACFgC
-DIgRCYgC+EIGFaAGBQDAoVtpdLFmaWn1+kIIFeAGBQDAoVtpcLFmaWn1GsXKG8XK/H0CHeAMBQD+
-KAAV4A4VAFo1DvFSGA3gHAUA/ERmFaAGBQDAoVtpYyZsAWlp9PxEaBXgBgUAwKFbaV6xZmlp9cCh
-W2lcFsd8GMdn0w8PAgCIgBrHevmOyAXgDEUA+gCCHePthQD7BgAMcA4VAPkgBhWgDwUAWjT1ZqC5
-5Dseec4CgAAbx1kDSgwLmQhtqQ0skmEpnQHzgAT+0gCdAC5tBI7gx4vo7gEDeBMAAJ7wwND8RGYV
-4AoVAFtpPhPHXQxfEQP/Av5CBhXgAwUAwKFbaTmxM2k59fhCCBWgAwUAwKFbaTSxM2k59RrFjhvF
-j/x9Ah3gDAUA/igAFeAOFQBaNNNmoDP7jnAFoAmFAOkmIyjABIAA8gACHaAJlQDTD9MPbZoP6YIA
-JEARAADppkElUAcAANEPZX9CxyvRDwAAAGwQBCMgByQgBhjHJxnFcuQzDAouAoAA+KAAQT/kBQDT
-D206DSMiQAQzAeMmQCEQBwAAKJLAGscyCogB+TgGFaACBQDRDwAAAGwQBBTFYsIwKkICDwIACgpC
-yKdooQVoowJppRfzRsYNr/W1AGQgkWghMWgjX2klGGAA9ACwM2Qw6sChW2j8Y//GZDDfwKFbaPmL
-QgsLQusp73Gb/QAAwCDRDwAA9UAFupIAnQDAwfyAJhWgBQUAwKFbaO6xVWlZ9fyAKBXgBQUAwKFb
-aOqxVWlZ9WP/u2mlU8Dk/oAmFaAFBQDAoVto47FVaVn1/oAoFeAFBQDAoVto37FVaVn1Y/+PwKFb
-/9F1oWLAUJVBwKFbaNmxVWlZ9fiAKBWgBQUAwKFbaNSxVWlZ9WP/ZMChW//GdaE3KQoC+IAmFeAF
-BQDAoVtozLFVaVn1+oAoFaAFBQDAoVtoyLFVaVn1Y/8yAMCjW/+59V/6JWIAnQDHK9EPwKNb/7V1
-ofPAs/qAJhXgBQUAwKFbaLuxVWlZ9fyAKBWgBQUAwKFbaLexVWlZ9WP+7wAAAGwQBhbFC+hZEApD
-woAA6YgCCc8CgAAJiAIZxtEIKAIJiAL4wgYVoAIFAMChW2iosSJpKfX6wggVoAIFAMChW2iksSJp
-KfX7if4F4AwFAP4AIh2j7YUA6sT6GPgEgABaNEL6AAId7/K1AAqyO9EPAABsEAobxryCJYizibKK
-sZoRmRIoFgP7YAgV4AxVAOsWACFcHIAALBYDAo1RAd0KjdD7jWQFoAM1APwgAAZy3R0A590RDmZC
-gAD9hgAOc4sFAFgBqhTE28BQJUYjK0I7K7z782CABfAKNQD6QAAF8AwlAP9oABWwDaUAW//FyKjH
-K9EPAAAAAAAA+gBiHaALBQD8AGIdoA2lAFv/vWWv3/2NIAWh8ikA4/82AMhBAAAJ/wqLwYrCiMOY
-k5qSm5GMwJyQL/IAAv1QD90R/gEAB3AKNQD90AAXML8BAP9wABWw/xEA7bsCD/3CgAD/xgAPcAwV
-AP9mAA2wDaUAW/+lZa998gACHaAG9QDAoVtoVbEidin1wIgnQjoqQkF6i0D/R6AH0JoBAJoZmRj9
-QEAVoBoFAAyqNPqIJhWgAgUAwKFbaEixImkp9fyIKBXgAgUAwKFbaEOxImkp9YsZihirqsDIesMP
-Kqz78AAwDaKqAQAAAAAAAAoaQuxCICPr8QAA+gBiHaLqAQD72AAXMr0BAP9gABWw3RkA7rsCDu+C
-gAD9ZgAN8MyJAPuAABYwDaUA/WYADbEMBQD9ZgANsAwFAFv/dGWuucAgwKFbaCUiLAF2KfT6AKId
-oAsFAPwAAh2gDQUAW/9rZa6WwCDAoVtoHSIsAXYp9PSGhhXgAgUAwKFbaBixImkp9f6GiBXgAgUA
-wKFbaBOxImkp9RLGOfKY5hWgAgUAwKFbaA4iLAFpKfT4mOgVoAIFAMChW2gJsSJpKfXAoVv+/Meb
-eaE4FcRcKlLBA6oC+rgmFaACBQDAoVtoALEiaSn1+rgoFeACBQDAoVtn/LEiaSn1wMj8hGYVoAIF
-ANEPxyXRDwBsEBiGJIcmhSUdxhwaxhsbxhyI04nSjNGcEZkSmBON0J0QWAGLBZpB9UAhQVIAnQD6
-AAIdoAsFAAXMR1tn3tKg+4wiBaELBQBYAYH7jB4FoAsVAFgBf/uIcgWgCzUA/H0CHeAMNQD+ACId
-oA8FAFozgGaj6PuMDAWgKwUAWAF0H8XjwOAq8h4r6gf7QAQFcfsFAAuqAir2HojxKerbCYgBmPGe
-8i72AxrF+v/ghhWgC3UAWAFnG8QfGcX3K7LJgpKNlI+T6JIBIPBBAACY4Z/j7eYEIOBBAADzwEYV
-orsxAAy7ComQ6eYAKxfCgADrsgApUASAAFo8kOrF6B1YBIAAWAFTG8RjB3pDC6oJKqEwB4tRKxYk
-Cmoo4bsKDaeCgADrsgAtV4KAAFo8g+hfFH0YBIAACglA+AAiHaADBQAJgziqM+rF1hnYBIAAWAFB
-fzcBsTPqxdMZ2ASAAFgBPerF0RnYBIAAWAE6IxIk+4ueBaALBQBYATYcxc3/i5oFoAt1APoAoh2g
-BWUABsws7OsHeugEgAAKrQIuelL9wPINpd+1AA3bAsDY/eDSDaToFQDdsP0A0g2gC5UA29Aaxb5Y
-ASQcxb2NwY7C78IDINjBAACfs56ynbGMwJywq0vrsgApUASAAFo8VO+nBn1YBIAAsasaxbJYARb9
-i2QF4LdxAOs7CQDhAQAADLsKjtaP14rVidSI05jDmcSaxZ/HnsaP0o7RLsYBL8YCLdIAncDrsgAp
-UASAAFo8QBbDv9MPK2I8LGI3GsWgrLtYAQEcxZ+NwY7C78IDINmBAACfs56ynbEswgAstgALSwjr
-sgApUASAAFo8McA0A6k375cHfNAEgAAqnAHAfgerNBrFkFgA8OvFkBlQBIAAWjwnA6k375cGfNAE
-gACxmgWrNBrFilgA6OvFiRlQBIAAWjwf06AmYjv+wSAP0JYBAH+nAbGjyJN/PwGxM/uLAgWgGwUA
-A7s0WADbwDPrxX4ZUASAAFo8EgarAwsLQKurGsV7WADV+4r0BaILBQBYANIcxXiNwY7C78IDINnB
-AACfsy62Ai22ASzCACy2AKtL67IAKVAEgABaPAEDqTfvlwZ80ASAALGaBas0GsVrWADC68VqGVAE
-gABaO/kpCgoJqTfvlwd80ASAACqcAcO+C6s0GsVjWAC4+4rGBaBLBQBYALX7isIFoAslAFgAs8Bl
-68VfGVAEgABaO+kGqTfvlwZ80ASAALGaB6M06sVZGdgEgABYAKnqxVcZ2ASAAFgAphzFVY3B7sIC
-INn9AADvwgMl2AUAAJ+znrKdsYzAnLALSwjrsgApUASAAFo71cCTCak375cGfNAEgACxmgWrNBrF
-R1gAlevFNhlQBIAAWjvMwJwJqTfvlwZ80ASAALGaB6s0GsU/WACM68U+GVAEgABaO8PvpwZ9WASA
-ALGrGsU6WACF+4p0BaILBQBYAIIaxTgbxThYAIDAINEPaKIIaKMPY/va0Q8AwKD/70gNoAsVAMCh
-/+8gDaALFQBsEAQVw7ulJShSgCn6/wk5AwmIAQhIAviwBhWgAgUAwKFbZtCxImkp9fiwCBWgAgUA
-wKFbZsyxImkp9dEPAAAAbBAEKyIEGsUdWjueFMTT80BoHeDWBQD2g0YVoAIFAMChW2bAIiwBaSn0
-+INIFaACBQDAoVtmu7EiaSn1wKFbZrkaxN76AIId4AxFAFv/3Ckq0fiDRhXgAgUAwKFbZrEiLAFp
-KfT6g0gVoAIFAMChW2atsSJpKfXyAAIdoFUFAMChW2aoIiwBdSn0KwrX+oNGFeACBQDAoVtmoyIs
-AWkp9PyDSBWgAgUAwKFbZp6xImkp9cAgwKFbZpsiLAFpJfQtCtX8g0YV4AIFAMChW2aVIiwBaSn0
-/oNIFaACBQDAoVtmkbEiaSn1wKFbZo72g0YVoAIFAMChW2aLsSJpKfX+g0gV4AIFAMChW2aGsSJp
-KfXAoVtmhCIK0fKDRhWgAgUAwKFbZoCxImkp9fiDSBWgAgUAwKFbZnuxImkp9fQMgh3gAgUAwKFb
-ZnexInUp9RrEzPoYQh3gjCUAW/+ZZDAMIgoAwKFbZm+xInMp9fOFjAXgAgUA8AA4DaA1JQDAqltm
-abEidSERiUZ/l/B8l+0pMhJ+l+fAINEPxyXRD2wQBBTDRAQkCPKQBhXgAgUAwKFbZl2xImkp9fiQ
-CBWgAgUAwKFbZlixImkp9dEPAGwQBhPDiBTCq+MyVCHj2wAALMJWHcL//ECmFaIzHQDyQIYV5MwB
-AA3MCozAnCYaxKIZxKL4mSgVoAuVACskB4mQ+CAGFeKICQAoJAMBiAgogAD4QMYdoAs1AFv/3cCh
-W2Y++4kuBaAbBQBb/9nqxJAZ2ASAAFo7EBvEkws7LOrEkhXYCQAAW//S9YRwBeACBQDAoVtmMbEi
-dSn1LAoB/JAGFaACBQDAoVtmKyIsAWkp9PyQCBXgAgUAwKFbZiexImkp9fQMgh3gAgUAwKFbZiKx
-InUp9cBg0mAmRoDAoVtmHrEiaSn1/pAIFaACBQDAoVtmGbEiaSn19YjqBeACBQDAoVtmFbEidSn1
-+4jiBaELBQD8IAIdo+2FAP4AIh2gDwUAWjGz8U74DeACBQAlOujAoVtmCbEidSn1wPL+mAYV4AIF
-AMChW2YEsSJpKfX4mAgVoAIFAMChW2X/IiwBaSn0wCDAoVtl/CIsAWkl9CkKA/iYBhXgAgUAwKFb
-ZfciLAFpKfT6mAgVoAIFAMChW2XysSJpKfXAIMChW2XvsSJpKfUdw/qP0SLq2wL/AZ/RltIm1gOW
-1IzV+n0CHe7OlQD/gAQGMSMdAOzWBSlQBIAAWjq5f6cBsar7iH4Fr7oBAFv/e+vELhlQBIAAWjqz
-f6cBsar7iHIFr7oBAFv/dfuIbgWgy4UAW/9y+4hqBaH7RQBb/2/AINEPxyXRDwAAAABsEAQdwjQb
-wjQNLQj/oGgd4AIVACqydn+nFSyycPeAABYwCQUA7ctbfvgEgAAM3wz/RMAHkA4lACyycQzMEH/L
-TOz/DAV0YoAAwKH9hEgFoAsFAFtxWcYq0Q99p+sosnIICF8MiBB/g9+eMJ9A/mAIFaAKVQD9hDQF
-oAsFAFtxTsAg0Q+ZMPyABhXv/44AkjD+gAYV7/9mAGwQBBzCDPxD4BXv7gUADt0BKsKC6MJ8Idh9
-AAAOuwH9TwANcLtNAOqyAQQAgYAAL8KBLsJ9D/45fisQwCDAoP2D/AWgC2UAW3E20Q8ixoJ6uPdj
-/+cAAABsEAQZw/TmTBEJ2UKAAOy7AgrWwoAACnoCCSkLC6oCKpZAKBwgiIAAahEKiAIolkHRDwAA
-bBAGW2upFcGG84VIBaAJBQD/QGgdoAMVAPqwBh2gCIUAbYoSAJAEDgob76cHdNgFAAArJn+xmfWH
-tgWgBrUA88AH79AH1QDAMPPAC1+SAJ0A88AO51IAnQDzwBJnEgCdAPPAFdbSAJ0A88AYJpIAnQDz
-wBqOUgCdAHjnUioaMP2DCAWgC7UAW2uq6kXQLWAEgAD6YAAEt7oBAPdhRg3gDuUAfrECab4LL0AB
-KAoICP8CL0QB9yDmDaOsAQBpqgwrQAHBwNMPDLsCK0QBLlCAHMO2LSJ/IyaAKVCBK1CCKlCDKFCE
-4LsRDMoCgADrmQINVgKAAAqIAgmIApgQKlCFL1CGK1CHKVCI4P8RDVICgADvqgIN3gKAAAuZAgqZ
-AukWASn4BIAA+LIwFaALBQD4IEYVoApFAFtw19EPAAAAAAAqCnD9gqYFoAvFAFtreRzBUP1AaB3g
-GyUA/JkkHeCKRQBba3MqVIErQckjVJHzQGgd4AgFAPixJh2nqwEA90GGDeczAQDAnnmhAmmuDipA
-ASwKCA8CAAyqAipEAf6wEBWjqwEA90ATDCIAnQD1QBLNEgCdAGP+kQAqCpD9gmoFoBsFAFtrWxzB
-Mv1AaB3gG2UA/JlEHeCqRQBba1UqVIIrQcrysUYd4A8lAP6yJh3n6gEA/mAAQberAQB3oQfAjnih
-AmmuCilAAcCoCpkCKUQBCwpD90AQFCIAnQD1QA/VEgCdAP6wEBWv+KoAAAAAAAAAKgqw/YIuBaAb
-RQBbazwcwRT9QGgd4BulAPyZZB3gykUAW2s3KlSDK0HL8rFmHef6AQD+YABB8A41AP6yJh2nqwEA
-d6EHwI54oQJprgopQAHAqAqZAilEAQsKQ/dADMwiAJ0A9UAMjRIAnQAuUIDTD/Hf7ecSAJ0AKgrQ
-/YHyBaAbhQBbax4cwPb9QGgd4BvlAPyZhB3g6kUAW2sZKlSEK0HM8rGGHeAPRQD+siYd5+oBAP5g
-AEG3qwEAd6EHwI54oQJprgopQAHAqAqZAilEAQsKQ/dACYwiAJ0A9UAJTRIAnQAuUIDx3+p20gCd
-ACoK8P2BtgWgG8UAW2sB+pmkHae6AQDnsQx9YASAAMDefbECab4KLkABwPgP7gIuRAEKCEP3AAeU
-IgCdAAwJQ/UgBz0SAJ0ALlCA8d/oJpIAnQAqGgj9gY4FoAsVAFtq7PqZxB2nugEA57EMfWAEgADA
-3n2xAmm+DS5AAcD4DwIAD+4CLkQBCghD9wAFbCIAnQAMCUP1IAUVEgCdAC5QgPHf5b5SAJ0AKhoc
-/YFiBaALZQBbatf6meQdp7oBAOexDH1gBIAAwN59sQJpvgouQAHA+A/uAi5EAQoIQ3aBawwJQ2ia
-ZS5QgGP8bypAAcGwC6oC+oAmHa/2fgAsQAHB0A3MAvyAJh2v9/oALkABwfAP7gL+gCYdr/meAChA
-AcGQCYgC+IAmHa/7PgAqQAHBsAuqAvqAJh2v/EYALEABwdANzAL8gCYdr/1aAC5AAcHwD+4C/oAm
-Ha/+OgAAAABsEAoZwGjAIOccASiYBIAA6pCAILAJAAD1gfAF4AQFAAAgBAoIG3+HUPpAaB2gCwUA
-W2ngmhjrNAAL4ASAAPzAaB3gDgUAW2nIKzAAihgtMAEsMQEFqgvo3RAN2QKAAO27Ag5NAoAACUkC
-C5kCKabAGcBNscysRCqQgLQz5mwEIRAFAADpKJhjuBEAAPNABm/f8jUA80AIF5IAnQDzQAmvUgCd
-APNAC1cSAJ0A80AM7tIAnQDzQA6WkgCdAPNAEC5SAJ0A80AR1hIAnQAawVUqon/xSEAN4AcFABbB
-UvAhJhXgAwUALGB98YVADeACFQDqdAAJWASAAFtprtigjhkp4AAq4AEu4QEFiAvoqhAMyQKAAOqZ
-Ag99AoAAD08CCf8CL4bALWB9LuwB7kQIAZgFAADtM7pxEAUAABrBOSqif4sZ5mwBJdgRAADrFgkj
-uAUAAPrx9g2gAwUA0Q8AKgp8/B/iHaAbRQBbalLtwnEVY/0AAO6vEQ5ngoAACvw4LtKQGcAI0w8C
-7gEqkIAOzAIs1pDxX/g3kgCdACoKnPwf4h2gG4UAW2pD7sElFWv9AADuqBEO74KAAAqNOC/ikBm/
-+QL/ASqQgA/dAi3mkPFf9p9SAJ0AKgq8/B/iHaAbxQBbajTvwlQVc/0AAO6pEQ93goAACp44KPKQ
-Gb/q0w8CiAEqkIAI7gIu9pDxX/T3EgCdACoK4Pwf4h2gCwUAW2ol6MJGFXv9AADurBEP/4KAAArP
-OCuCkBm/2wK7ASqQgAv/Ai+GkPFf817SAJ0AKhoA/B/iHaALRQBbahbrwjgVQ/0AAO6tEQxHgoAA
-Ctg4LLKQGb/M0w8CzAEqkIAMiAIotpDxX/G2kgCdACoaFPwf4h2gC5UAW2oH7MIqFVv9AADurhEN
-34KAAArrOC3CkBm/vQLdASqQgA27AivGkPFf8B5SAJ0AKhoo/B/iHaAL5QBbafjtwhwVY/0AAO6r
-EQ5ngoAACrw4LtKQGr+u0w8C7gEqoIAOzAIs1pDxX+52EgCdACoaPPwf4h2gGzUAW2np7sIOFWv9
-AADuqBEO74KAAAqNOC/ikAL/AQ/dAv3SBhXv9nIAbBAEGMAZFb/AE8AC+Q+wFaAGFQD5hAIF7/f1
-APoBoh3gEhUA8wALL9AEBQD1I+YVoBp1APUjxhWgHDUA9TAGHaABGgAAAAAAAGvWAmvUFGjYEWjZ
-DmjaPn0iAnvaBX2iGnzSFy5ShABBBABtGgDdEQffAw/uAQ7dAi1WhLFE6EsqYZgJAAAtMZDTDw09
-RGjR0mvUtGrSsdpAW2mE+gLiHaAL1QD//1ANoBw1APN/tAWgAwUA9gKCHeAmdQDwALwNoBQFAAAK
-OkRoolBoqnl3oQJpoQr6YGgdoAsVAFtpQ+M8ASIj/QAA5ECGYRAJAAAqIZB2qc8Yv9wogloZwA0I
-6FEBiBEJiAIpUpYcwcQMmQEJiAL4ssYVr/8iAADaMFtpXGWvui8hkB3BvP2wEBWi/wEA++AEANAO
-FQAA7hoOzAL9sAYdr/5uANowW2lRZa+OKiGQG8GzCgpCq6srsIALC0RbaS4dwa3Az/2wBh2v/coA
-W2onW2odH8GoKvYeK/YfLlKH/rDmFaACBQDRD8Ag0Q8AAABsEAYawFQbwAEcv58UwDMVwDHzf9YF
-4AgFAPSYRBWgGQUAbZoVC4kCKcb56cL5JVAJAACxiAkJTSmlvefBlRolwoAApUT0IAYVoAUFAItC
-ikErNjuJQCo2PCk2PRrBjvoAIh3gDBUA/rgAEzANpQD2xgAMcA4FAPhnRhWgDwUAWi665qBKbRAE
-gAAcwYP7gwIFoAsVAPwBQh3gDgUA/MYADjAPBQD8Z0YVoAwVAFouruagHG0QBIAAsVXpXo9iIDEA
-AI0QDwIADwIALd0GLRYA7cFzGRaiAAAXwXL0IAgVoAUFAItCikErNjuJQCo2PCk2PRrBaPoAIh3g
-DBUA/rgAEzANpQD2xgAMcA4FAPhnRhWgDwUAWi6U5qIsbRAEgAAcwWH7grgFoAsVAPwBQh3gDgUA
-/MYADjAPBQD8Z0YVoAwVAFouieah/m0QBIAAsVXpXo9iIDEAAI0Q94KmBeAFBQDmvzgW6BsAAO0W
-AC0O0gAADdQCjUQsQgMtNjsrQgIsNjwqQgErNj0pQgAqNj4pNj8awUD6ACId4AwVAP64ABQwDaUA
-9wYADDAOBQD4Z0YVoA8FAFoubOahpG0QBIAAsVXkTBQq9rwAAIQQ939KBaAFBQAtTQqN1CxNCozD
-LTY7K00Ki7IsNjwqTQqKoSs2PSlNComQKjY+KTY/GsEm+gAiHeAMFQD+uAAUMA2lAPcGAAwwDgUA
-+GdGFaAPBQBaLlLmoVJtEASAACVcAeRMFCrmjAAAJBIA937eBaAFBQAtTQwt0iQsTQwswiMtNjsr
-TQwrsiIsNjwqTQwqoiErNj0pTQwpkiAqNj4pNj8awQn6ACId4AwVAP64ABQwDaUA9wYADDAOBQD4
-Z0YVoA8FAFouNeag+W0QBIAAsVXkTBQq5nwAAB6/Cy7gfX/nQxi+9imC4C+C4PuB+gXjqSEA+0Ag
-FaPJ4QD9gCAVo5lBAOmcAS5hAoAA6/8BDM4CgADsmQINVwKAAAr/Agn/Ai+G4NEPG77lKrLgLbLg
-+nAABzPKQQDszAIncAkAAODuEQ5mAoAA/4YADjP6IQDuwOUX+AkAAAz/Ef+GAA5zqgEA7t0BBVAJ
-AAANqgIMqgIqtuDRDwAAAAAAAAD6AAIdoAuFAOzA0xloBIAAW2390Q8AAAD6AAIdoAuFAOx0AAlo
-BIAAW2330Q8AAAD6AAIdoAuFAOx0AAloBIAAW23x0Q8AAAD6AAIdoAuFAOx0AAloBIAAW23r0Q8A
-AAD6AAIdoAuFAOzUAAloBIAAW23l0Q8AAABsEAQUwLwTv1D1gXYF4AgVAPiQBhWgAgUA2iBbaF4K
-CUFpkSPqKREFcIKAAAMAh6WZCQJhCQJhCQJhCQJh+kBoHaALBQBbaE+xImkoyypCgBvAqwuqAvqQ
-BhWgAgUA0Q9sEARb/KYavsIsooUdwKX9gAQGcC0FAA3MAiymhSmilxu/MAuZAimmlxi+6B++vyiA
-gP//4h2gCQUA+VdmFe/61QD9AwARUAmFABjAf22aDSmCkAqZAemGkCRAEwAALvYgLvYhLvYiLvYj
-LvYkLvYlLvYm/+TmFaACBQDRDwAAAGwQCAIqAltJypQQHL9u/EBoHeALhQDvNAANMASAAP7AaB2g
-ClUAW22iwIAVvuSlZSNWgSRWgihWgwjkFpgUAQIAI1KDA+ow+sBoHaELJQBbSbQK6jAnUojIfNpg
-A+owKxoCW0mvCuowiBQI5BYDqgxbSaPYoO0kAAvwBIAA/X6mBaAKVQDvUogqT0KAAAiZLPggBhXg
-C4UAW22FwCDRDwBsEAQTwGD9e94FoA0VAPpgaB2gGBUAbYoKK6AFeyACf7divKoawEouwIApoIAt
-pHj/UDAV4BvlAHmzBQ3uAi7EgC2ggv9htg3gCSUAKMCACYgCKMSAKKCD/WG2DeAPRQAuwIAP7gIu
-xID5YpYNoAqFACnAgAqZAvmQBh3gAgUA0Q/AINEPjqAcwED9wBAV4AuFAP/AMBWgCiUAW21d2TD+
-AiId4PrlANMPbfoNKJAFCogB6JQFJMgxAADHK9EPAABsEAYoIAD6QGgdoIklAOmBCHEQEwAAxy7R
-DyasFvLAB7qiAJ0AFMAqE8ApkxHzgFIF4IUFAPogBhWgAbIAvDN0MVUoMAUFiAHpMAQsd8QAAHeZ
-6dpg+mAIFeAMJQBbZ8j8AAIdr+ulAArLOGa/zo0RLDEDiDLacO3MCANYDQAAC4AA8UqoDeAPFQAu
-MAXTDw/uAi40BSdgAuPADxPADQAAqGZya3LbMPrAaB2gDCUAW2e048AEFQBpgAD2wFAV7/4SAACJ
-ELRqeptdCWkMtJn/IgAH0AoFAIsQ6rAAJdgFAACbEAkbFMq4iBAtgADsgAEly/0AAOrdCARACQAA
-bZkOKYAArcrsgAEkQAkAAKqdDcoIHr/xKuR9KgqAW/+J0qDRDwAAAAAAAP//mA2gCgUAjjAcv+r9
-wBAV4AolAP/AMBWgC4UAW20CY/9JAGwQBBm/5CqSfymSgAmrEauZ+yAGFaAYtQAolARbZqLAoFtm
-m1tmlltmXMAg0Q8AAGwQBPN+dgXgqaUA9ADCHaAFBQAFCT8FBj8FBz8FCj8ECD8JBD8FBT/4a0gV
-oIoFAAgAP9MPW2rVGL/OG7/LCgE/7b/KGvAEgAD+A+Id4AoVAPtvph2gDIUA5bR+JtGhAADstHwm
-ydEAAPwBoh2gCwUAbco+7oZhJeBZAADphmAkQIEAAOmGVybogQAA7oZWJdgFAADqhlUkyIEAAOqG
-VCVQgQAALtRgLtRhLtYZD8w2LNRi9G+GHaANJQAtNH1bZnIYvZAfv6wev6wIAIcPAmEPAmEOAmEO
-AmHRDwBsEAQYviwigh3A+Pt6dAWgDQUA8FOQDe/+9QDW0PYAAh3gBAUA+gAiHeAJ1QBtCEMsgtcl
-guGsbAnCEaJVLlR4KlUpl1wkVRMmVCIrVCArVCEtVA0mVAwvVAWcUClUBCxREoVbI4IdrETldwgD
-MAUAAHNrA2P/tQAigh5kII0Vv4j1/+IdoAkFAPAA5A2gBgUAAACCyyTEDCvEDSbEIpfMKsUp/48G
-Ha+DBQAjxCAjxCEjgh6wmeJ3CAMwBQAA42tKddgFAAAjgtgsguGjYwkyEaLM84AGFeAC5QAixATv
-xAUs/Y4AAClQfvSAIBWgCxUA5Z+eYqgFAABtCAwpUH6xROWfjmKoBQAAY//sKYIfy5f1emwF4AYF
-APgA4h3gB/UAbQgiLILZK4LhrGwJzhGuu5ywJbYWLbQNKbQMJ7QEKoIfsWZ6awJj/9bAINEPAAD3
-oGgd7/ySAGwQBBK9zxy/VBO/UBu/Uh+/UC828fp+BhXgChUAKjb4KzbyKzb2LDb58n5mFaAOFQDy
-fuYVoAIFAOI29SloBIAAW0hJIjbHizyMO406jjmPOIk2ijWINyo2yKqZij0pNsmpiCg2yqj/KTIR
-LzbLr+6IPi42zK7dLzIQLTbNrcyOPyw2zqy7LTIaKzbPq6osMhsqNtCqmSsyHCk20amIKjIdKDbS
-qP8pMh4vNtOv7igyHy421K7dLzIgLTbVrcwuMiEsNtasuy0yIis216uqLDIkKjbYqpkrMiUpNtmp
-iCoyKCg22qj/LzbbKTIpr+4uNtwoMiqu3S023a3MLDberLsrNt8LqggqNuAKmQgpNuEJiAgoNuJb
-ZfLsMvEtaASAAOoy9y7uQoAA/aPgFe/uBQAO3QH9TwANf4sFAOuiAQYAkYAALzL2LjLy0w8P/jl+
-KxrAIMCg/XmwBaALZQBbbBDJIfJ8ZhWgAgUA0Q8iNvd7qO9j/90iNuP9ffIFoAoFAPoAAh3v/UUA
-W2wFxyTRDwBsEAQavvMWvMYSvGUdvfIYvvHyT+gVoAuVAPV9mAXgDOUA6YxUJDqxAABtKRokUIDT
-D9MPBAREa0IVZkASJ2ac5VwBIzBRAADAINEPAAAAAOJQuCIVEQAA71C4Ihy9AADuULgiJHEAAGtH
-AmtFCHtBBXTCy2pKyPzThhXv/xYAAGnjvPrThhWv/uYAafWx+NOGFe/+ugAAAGkopPjThhWv/oYA
-AGwQBBW9NRO+yxq8Yfd5QAWgBAUAJKaBJKaDJKaAJKaCKDBxwZDppookfM6AAC1STf95OAWg31UA
-D90oH74lDt0sKGLAD4gBCNgCKGbALmLgD+4BDt0CLWbgLGLgG76y/X1sBaAKBQBb/hXAof16TAWg
-CwUAW/4RW/3x5qG2bRAEgAAZvMkqCggrko/6bgYd47sBACs0cCiSihu+qBy+dwqIAiiWivgRAh3g
-CAUAbZoNDIkLK5ZA5JZBJEAFAAAESgJb/cbmoWxtEASAAFv80+ahYW0QBIAALDBxf8cR9K9EHaQK
-BQD6rwQdoAA+AAAAJFV6Grw4KlV4JFV6JFV79LDkHaLqHQD+ryQdoC0FAC1VfVv8XeahHG0QBIAA
-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
-BQAAckOZY//DLKKRKbKEo8zpzBECIAUAAOyZCAMMbQAAaGIdaGQk8p/7q6IAnQBj/5pln0tj/5Sl
-mPcABh3v/6YApZr3QAQd7/9+AKWb92AGFe//VgClnCfEANEPpZ0n1QDRD9EPAAAgAw6gDMAABiAG
-sCwgAw6kCMAADCAGsCwgAw6oIMAAECAGr7QgAw6sBsAAOCAGsZAgAw6wCMAAPCAGsCwgAw60AsAA
-QCAGsZAgAw64CMAARCAGsCwgAw68CIAASCAGsLwgAw7AGIAAXCAGsLwgAw7EGIAAbCAGsLwgAw7I
-GIAAfCAGsLwgAw7MGIAAjCAGsLwgAw7QGIAA3CAGsLwgAw7UGIAA6CAGsLwgAw7YGIAA9CAGsLwg
-Aw7cGIABACAGsLwgAw7gCIABPCAGsLxod19iY204NDM0X2NoZWNrcmFtOiBTdGFydAoAAAAAAFBI
-WSBwcm9jZXNzb3Igbm90IHJ1bm5pbmcsIHN0aWxsIGluIHJlc2V0IGZvciA1bXMsIHBvcnRfYml0
-X21hcD0ldSAKAAAAAAAAAAAAAAAAUEhZIEZXIGhhcyBiYWQgQ1JDLCBva19jcmM9JXUKAABQSFkg
-ZmlybXdhcmUgbG9hZCBzdWNjZXNzZnVsIQoAAGh3X2JjbTg0ODM0X2xvYWRzZXF1ZW5jZTogU3Rh
-cnRlZAoAAAAAAAAAAAAAAAAAAGh3X2JjbTg0ODM0X2xvYWRzZXF1ZW5jZTogVXBsb2FkIGltYWdl
-IHRvIFBIWSBvbi1jaGlwIG1lbW9yCgAAAABod19iY204NDgzNF9sb2Fkc2VxdWVuY2U6IGRvbmUg
-bG9hZGluZyBpbWFnZSAoaSA9ICV1KQoAAAAAAAAAAAAAaHdfYmNtODQzNF9sb3dwb3dlclsldV06
-IGVuYWJsZT0lZAoAAAAAAAAAAAAAAAAAaHdfYmNtODQzNF9sb3dwb3dlclsldV0sIGZhaWxlZCB0
-byBzZXQgMzAuMHg0MDFBYml0IDcgc2luY2UgMzAuMHg0MDBFIGJpdD0xIGFmdGVyIDVtcywJcmVn
-PSV4CgAAaHdfY2w0NV9pbml0WyV1XSBhY2FwcyAlI3gKAAAAAABod19jbDQ1X3VwZF9zcGRfYWR2
-ICUjeAoAAAAAAAAAAGh3X2FxMTIwMl9saW5rX3VwWyV1XSB1cAoAAAAAAAAAcFsldV0gUEhZIE9W
-RVJIRUFURUQgLSBmb3JjZWQgcG93ZXIgZG93biAodGVtcD0lZCkKAAAAAAAAAAAAAAAAAEZMQVNI
-IG5vdCByZWFkeTogaSAldSBudnJSZWcgJSN4CgAAAAAAAAAAAAAAAAAAAEFRX0ZMQVNIX1JlYWR5
-IC0gVGltZW91dCAoMSkKAAAAQVFfRkxBU0hfUmVhZHkgLSBUaW1lb3V0ICgyKQoAAAAJQVFfUmV0
-dXJuQ29udHJvbE9mRkxBU0gKAAAAAAAAAGdhdGhlcl90YXNrc190b190eF9saXN0OiB0YXNrIGlu
-IHVzZSBbJXVdCgAAAAAAAGdhdGhlcl90YXNrc190b190eF9saXN0OiBpZHggWyV1XSwgdGFzayBm
-aWQgWzB4JXhdLCB0YXNrIHN0YXRlIFsweCV4XSwgdGFzayBjb25uIFsweCV4XSwgdGFzayBmZmxh
-Z3MgWzB4JXhdLCBjb25uIGZpZCBbMHgleF0sIGRkcCBbJWRdCgAAAAAAAAAAAGdhdGhlcl90YXNr
-c190b190eF9saXN0OiB0YXNrIFsweCV4XSwgc3RhdGUgWzB4JXhdIG9uIGNvbm4gWzB4JXhdIG5v
-dCB2YWxpZCB0byBnYXRoZXIsIHNraXBwaW5nCgAAAAAAAAAAAAAAAAAAAABnYXRoZXJfdGFza3Nf
-dG9fdHhfbGlzdDogdGFzayBbMHgleF0sIHN0aWxsIHF1ZXVlZCBvbiB0eCBwZW5kaW5nIGxpc3Qu
-IFJlbW92aW5nIGl0LgoAAAAAAAAAAAAAAABnYXRoZXJfdGFza3NfdG9fdHhfbGlzdDogY29ubl9m
-Yy0+Zmxvd2NfZmxhZ3MgWzB4JXhdLCBsaXN0X2VtcHR5IFsweCV4XSwgYWRkX3Rhc2tfY291bnQg
-WzB4JXhdCgB0b190eF9saXN0OiBubyB0YXNrIHRvIGNsb3NlIGZvciBjb25uIFsweCV4XSwgYmFp
-bGluZyB0byByZWNvdmVyeSBzdGF0ZSBbMHgleF0KAHNldF9kaWdlc3Q6IHVwbHN1Ym1vZGU6JXgK
-AAAAAAAAYXV0aGVudGljYXRlX3RhcmdldDogS0VZX0NIQVBfUkVTUCAtIFsweCV4JXgleCV4JXgl
-eCV4JXhdCgAAAAAAAGF1dGhlbnRpY2F0ZV90YXJnZXQ6IEtFWV9DSEFQX1JFU1AgLSBbMHgleCV4
-JXgleCV4JXgleCV4XQoAAAAAAABhdXRoZW50aWNhdGVfdGFyZ2V0OiBJbmNvcnJlY3QgcGFzc3dv
-cmQKAAAAAAAAAABDSEFQX0M6IGRpZ2VzdCBleHBhbnNpb24gZXJyb3IKAENIQVBfTjogVGFyZ2V0
-IHVzZXJpZCBtaXNtYXRjaAoAQ0hBUF9SOiBkaWdlc3QgZXhwYW5zaW9uIGVycm9yCgBpU0NTSSBT
-ZWMtcGFyYW1zIHJlY2VpdmVkIGhhdmUgZXJyb3JzISEKAAAAAAAAAABUYXJnZXQgbW92ZWQgdGVt
-cC4gY29ubiAleCwgc2VzcyAleAoAAAAAAAAAAAAAAABMb2dpbiBGYWlsZWQhIS4gY29ubl9mYyBb
-MHgleF0sIHNlc3NfZmMgWzB4JXhdLCBzdGF0dXNfY2xhc3MgWzB4JXhdCgAAAAAAAAAAAAAAAFBy
-b3RvY29sIEVycm9yIGNiaXQgJWQgdGJpdCAlZCBjc2cgJWQgbnNnICVkCgAAAHJlY3Zfbm9waW46
-IGN0cmwgdGFzayBhbHJlYWR5IHBlbmRpbmcKAAAAAAAAAAAAAG9mbGRfcnhfZGF0YTogYWllZSwg
-aXNjc2kgY29ubiBbMHgleF0gZm9yIHNlc3MgWzB4JXhdLCB0eXBlIFsweCV4XSB0cmFuc2l0ZWQg
-aW4gdG9lIG1vZGUuIEtpY2tpbmcgcmVjb3ZlcnkgCgAAAABvZmxkX3J4X2RhdGE6IGNvbm4gdGlk
-IFsweCV4XSwgcnhfZGF0YS0+c2VxIFsweCV4XSwgcnhfZGF0YS0+bGVuIFsweCV4XSwgcnhfZGF0
-YS0+c3RhdHVzIFsweCV4XQoAAAAAAAAAAAAAAAAAAAAAb2ZsZF9yeF9kYXRhOiBjc2sgeyBpZCBb
-MHgleF0sIGNzb2NrX29mZnNldCBbMHgleF0sIGRsZW4gWzB4JXhdIH0KAAAAAAAAAAAAAAAAAABh
-Y3RfZXN0OiB0Y2JfZmMgWzB4JXhdLCBmbG93Y19pY29ubl9mbGFncyBbMHgleF0KAAAAAAAAAAAA
-AAAAAAAAYWN0X2VzdGFiOiB0Y2JfZmMtPmZsb3djX2J1ZiBbMHgleF0sIHRjYl9mYy0+Zmxvd2Nf
-dHlwZSBbMHgleF0gdGNiX2ZjLT5mbG93Y19zdGF0ZSBbMHgleF0sIG5wYWdlcyBbMHgleF0sIGZs
-b3djX3RwX3NuZF9tYXggWzB4JXhdCgAAAAAAAAAAAAAAAAAAYWN0X2VzdGFiOiBhdGlkIFsweCV4
-XSwgdGlkIFsweCV4XSwgb3AgWzB4JXhdLCByY3ZfaXNuIFsweCV4XSwgc25kX2lzbiBbMHgleF0s
-IGNzb2NrLT5mbG93Y19zdGF0ZSBbMHgleF0sIHRjcF9vcHQgWzB4JXhdLCB0Y2JfZmMtPmZsb3dj
-X2lkIFsweCV4XSAKAAAAAAAAAAAAAAAAAGNza19mYy0+Zmxvd2NfY3NvY2tfY29va2llIFsweCV4
-XSAKAAAAAAAAAAAAAAAAAGNobmV0X3F1ZXVlX3htaXQ6IGZjLT5mbG93Y19pZCBbMHgleF0sIGJ1
-Zl9sZW4gWzB4JXhdLCBidWZmZXJlZCBbMHgleF0sIGZpZm8ubnVtX2J5dGVzIFslMHhdCgAAAG5l
-dGlmX2RvX2RoY3A6IHdyLT5wYXJhbS52bGFuaWQgWyV1XSwgbDJkZXZfZmMtPmZsb3djX25ldF9s
-MmRldl92bGFuZGV2IFsweCV4XQoAbDNpbjRfZGV2X2NvbmZpZzogd3ItPnBhcmFtLnZsYW5pZCBb
-JXVdLCBsMmRldl9mYy0+Zmxvd2NfbmV0X2wyZGV2X3ZsYW5kZXYgWzB4JXhdCgAAAAAAAAAAAAAA
-AAAAbmV0X2wzaW40X2Rldl9jb25maWc6IGwyZGV2X2ZjLT5mbG93Y19pZCBbMHgleF0sIGFkZHJl
-c3MgYWxyZWFkeSB1c2VkIGJ5IHBvcnQgJWQKAAAAAAAAAAAAAAAAAAAAbmV0X2wzaW40X2Rldl9j
-b25maWc6ICBhZGRyIFsweCV4XSwgbWFzayBbMHgleF0sIGd3IFsweCV4XSwgcmVmX2NudCBbMHgl
-eF0gaW4gdXNlCgAAAAAAAAAAAAAAAAAAd3JoX2NobmV0X2lmY29uZjogbDJkZXZfZmMtPmZsb3dj
-X2lkIFsweCV4XSwgbDJkZXZfZmMtPmZsb3djX3R5cGUgWyUweF0sIGlmY29uZl93ci0+c3Vib3Ag
-WzB4JXhdCgAAAAAAAAAAAAAAAAAAAHdyaF9jaG5ldF9pZmNvbmY6IGwyZGV2X2ZjLT5mbG93Y19p
-ZCBbMHgleF0sIHVua25vd24gc3Vib3AgWzB4JXhdCgAAAAAAAAAAAAAAAAAAd3JoX2NobmV0X2lm
-Y29uZjogbDJkZXZfZmMtPmZsb3djX2lkIFsweCV4XSwgcmMgJWQKAAAAAAAAAAAAAAAAAG5ldGlm
-X2lwX2NvbmZsaWN0X3RpbWVyX2NiOiBsMmRldl9mYy0+Zmxvd2NfaWQgWzB4JXhdLCBpbmRldmN0
-eHQtPnN0YXRlIFslZF0sIGluZGV2Y3R4dC0+cmV0cnlfY250IFslZF0KAAAAAAAAAABuZXRpZl9p
-cF9jb25mbGljdF90aW1lcl9jYjogbDJkZXZfZmMtPmZsb3djX2lkIFsweCV4XSwgaW5kZXZjdHh0
-IFsweCV4XSwgaW4gZnJlZSBzdGF0ZQoAAAAAAAAAAABjbWRoX2NobmV0X2lmYWNlOiBmYyBbMHgl
-eF0sIGZjLT5mbG93Y19pZCBbMHgleF0sIGZjLT5mbG93Y190eXBlIFsweCV4XSwgcCBbMHgleF0s
-IGxlbjE2IFsldV0sIGxvYyBbMHgleF0KAAAAAAAAY21kaF9jaG5ldF9pZmFjZTpsMmRldl9mYyBb
-MHgleF0sIGwyZGV2X2ZjLT5mbG93Y19pZCBbMHgleF0sIGwyZGV2LT5mbG93Y190eXBlIFsldV0s
-IGwyZGV2X2ZjLT5mbG93Y19uZXRfbDJkZXZfZmxhZ3MgWyUweF0KAAAAAABjbWRoX2NobmV0X2lm
-YWNlOiByMlswXToldSByMlsxXToldSwgc3Vib3A6MHgleAoAAAAAAAAAAAAAAAAAAAAAY21kaF9j
-aG5ldF9pZmFjZTogbDJkZXZfZmMtPmZsb3djX25ldF9sMmRldl9mbGFncyBjaGFuZ2VkIGZyb20g
-WyUweF0gdG8gWyUweF0sIHJjIFslZF0KAAAAAAAAAAAAY2huZXRfbDJkZXZfdXBfbWJfY2I6IHJj
-IFslZF0sIHBvcnQgWyV1XSwgc3RhdGUgWyV1XSwgY29va2llIFsweCV4XQoAAAAAAAAAAAAAAABk
-aGNwX3Byb2Nlc3NfY2I6IGwyZGV2X2ZjLT5mbG93Y19pZCBbMHgleF0sIGRoY3R4dC0+c3RhdGUg
-WyUweF0sIGRoY3R4dC0+cnRyeV9jbnQgWyV1XQoAAAAAAAAAAABkaGNwX3RpbWVyX2NiOiBESENQ
-RElTQ09WRVIgc2VudCwgYnV0IG5vIHJlcGx5IGZyb20gYW55IHBvc3NpYmxlIHNlcnZlciBvbiB0
-aGUgbmV0d29yay4gUmV0cnlpbmcgYWdhaW4KAAAAAAAAAAAAZGhjcF90aW1lcl9jYjogbDJkZXZf
-ZmMtPmZsb3djX2lkIFsweCV4XSwgc2VuZGluZyBESENQRElTQ09WRVIgZm9yIGRoY3R4dCBbMHgl
-eF0gb24gcGlkIFslZF0KAAAAZGhjcF90aW1lcl9jYjogbDJkZXZfZmMtPmZsb3djX2lkIFsweCV4
-XSwgREhDUE9GRkVSIHJlY2VpdmVkIGZvciBkaGN0eHQgWyV4XSBwaWQgWyVkXQoAAAAAAAAAAAAA
-ZGhjcF90aW1lcl9jYjogbDJkZXZfZmMtPmZsb3djX2lkIFsweCV4XSwgIERIQ1BBQ0sgcmVjZWl2
-ZWQgZm9yIGRoY3R4dCBbJXhdLCBwaWQgWyVkXQoAAAAAAAAAAAAAZGhjcF90aW1lcl9jYjogbDJk
-ZXZfZmMtPmZsb3djX2lkIFsweCV4XSwgZGhjdHh0LT5pcGFkZHIgWzB4JXhdCgAAAAAAAAAAAAAA
-AAAAAABkaGNwX3RpbWVyX2NiOiBzdGFydGluZyB0aW1lciBmb3IgbGVhc2UgWyV1XSBzZWNvbmRz
-CgAAAAAAAAAAAAAAZGhjcF90aW1lcl9jYjogbGVhc2UgdGltZSBvZiBbJXVdIHNlY29uZHMgZXhw
-aXJlZCwgc2VuZGluZyByZW5ldyByZXF1ZXN0CgAAAAAAAABkaGNwX3RpbWVyX2NiOiBsMmRldl9m
-Yy0+Zmxvd2NfaWQgWzB4JXhdLCBubyByZXBseSBmcm9tIGRoY3Agc2VydmVyLCB0aW1pbmcgb3V0
-CgAAAAAAAAAAAAAAAAAAAABhdXRoX25lZ29fc2VjdXJpdHk6IHNlbmRfZmxhZyBbMHgleF0sIGF1
-dGhfcG9saWN5IFsweCV4XQoAAAAAAAAAYXV0aF9uZWdvX3NlY3VyaXR5OiBLRVlfQ0hBUF9SRVNQ
-IC0gaGFzaFsweCV4JXgleCV4JXgleCV4JXhdCgAAAGF1dGhfbmVnb19zZWN1cml0eTogS0VZX0NI
-QVBfUkVTUCAtIGhhc2hbMHgleCV4JXgleCV4JXgleCV4XQoAAABhdXRoX25lZ29fc2VjdXJpdHk6
-IEtFWV9DSEFQX1JFU1AgLSBlcnJvciBlbmNvZGluZyB0byBoZXgKAAAAAAAAYXV0aF9uZWdvX3Nl
-Y3VyaXR5OiBLRVlfQ0hBUF9SRVNQIC0gZWxlbiBbMHgleF0KAAAAAAAAAAAAAAAAAAAAAGF1dGhf
-bmVnb19zZWN1cml0eTogS0VZX0NIQVBfQ0hBTCAtIGVycm9yIGVuY29kaW5nIHRvIGhleAoAAAAA
-AABhdXRoX25lZ29fc2VjdXJpdHk6IEtFWV9DSEFQX0NIQUwgLSBlbGVuIFsweCV4XQoAAAAAAAAA
-AAAAAAAAAAAAbG9nb3V0X3RpbWVkb3V0OiBsb2dvdXQgcmVxdWVzdCB0aW1lZG91dCwgcG9zc2li
-bGUgbmV0d29yayBpc3N1ZXMuIEZvcmNlZnVsbHkgYnJlYWtpbmcgcGF0aCBmb3Igc2VzcyBbMHgl
-eF0KAAAAAHBpbmdfdGFyZ2V0OiBwaW5nIHRpbWVvdXQsIGtpY2tpbmcgcmVjb3ZlcnkgZm9yIHNl
-c3MgWzB4JXhdCgAAAABjc29ja19mYWlsZWQ6IGNza19mYy0+Zmxvd2NfaWQgWzB4JXhdLCBjc2tf
-ZmMtPmZsb3djX3N0YXRlIFsweCV4XSwgc2Vzc19mYy0+Zmxvd2NfaWQgWzB4JXhdLCBzZXNzX2Zj
-LT5mbG93Y19zdGF0ZSBbMHgleF0sIGV2dCBbMHgleF0KAAAAAAAAAAAAAAByYyBbJWRdLCBjc2tf
-ZmMgWzB4JXhdLCBjc2tfZmMtPmZsb3djX2lkIFsweCV4XQoAAAAAAAAAAAAAAAAAAAAAcmVjb3Zl
-cnlfdGltZW91dDogc2VzcyBpZCBbMHgleF0gc3RhdGUgWzB4JXhdLCByY291bnQgWyVkXSwgZmxh
-Z3MgWzB4JXhdCgAAAAAAAAByZWNvdmVyeV90aW1lb3V0OiBzZXNzIGlkIFsweCV4XSBpbiBsb2dv
-dXQsIGFib3J0IHRoZSBjb25uZWN0aW9uCgAAAAAAAAAAAAAAAAAAAHJlY292ZXJ5X3RpbWVvdXQ6
-IHNlc3NfZmMtPmZsb3djX2ZvaXNjc2lfc2Vzc19mbGFncyBbMHgleF0sIGNvbm5lY3Rpb24gcmVx
-dWVzdCBwZW5kaW5nLCBiYWlsaW5nIG91dAoAAAAAAAAAAAAAAABmb2lzY3NpOiBSZWNvdmVyeSB0
-aW1lZCBvdXQgYWZ0ZXIgWyV1XSByZXRyeSwgYmFpbGluZyBvdXQKAAAAAAAAVENQIGNvbm4gZXN0
-YWJsaXNobWVudCBmYWlsZWQgJWQKAAAAAAAAAAAAAAAAAAAAZGlzY292ZXJ5X2RhdGE6IHNlc3Mg
-eyBpZCBbMHgleF0sIGZsYWdzIFsweCV4XSwgYnVmZmVyZWQgWyV1XS4gfQoAAAAAAAAAAAAAAAAA
-AABkaXNjb3ZlcnlfZGF0YTogc2VzcyB7IGlkIFsweCV4XSB9LCB1bHB0eGNoIFsldV0gbm8gY3Jl
-ZGl0cyBhdmFpbGFibGUsIHJlc2NoZWR1bGluZyByZXF1ZXN0LgoAAABJbnZhbGlkIG9wY29kZSAw
-eCV4IGluIGN0cmwgcGF0aAoAAAAAAAAAAAAAAAAAAABERFAgZXJyb3IgWzB4JXhdLCBhYm9ydGlu
-ZyBjb25ubiBbMHgleF0KAAAAAAAAAAByeF9kYXRhX2RkcDogUmVzcG9uY2UgcmVjaWV2ZWQgZm9y
-IHRhc2sgWzB4JXhdIHdoaWxlIGludmFsaWQgdGFzayBvciBjb25uZWN0aW9uIHN0YXRlLiB0YXNr
-IHN0YXRlIFsweCV4XSwgY29ubiBzdGF0ZSBbMHgleF0sIGNvbm4gZmxhZ3MgWzB4JXhdCgBpaGRy
-OiBSZXNwb25jZSByZWNpZXZlZCBmb3IgdGFzayBbMHgleF0gd2hpbGUgaW52YWxpZCB0YXNrIG9y
-IGNvbm5lY3Rpb24gc3RhdGUuIHRhc2sgc3RhdGUgWzB4JXhdLCBjb25uIHN0YXRlIFsweCV4XSwg
-Y29ubiBmbGFncyBbMHgleF0KAAAAAAAAAABpaGRyOiBJbnZhbGlkIHRhc2sgc3RhdGUgMHgleCBm
-b3IgdGFzayAweCV4LCBpdHQgWzB4JXhdLCBvcGMgWzB4JXhdCgAAAAAAAAAAAAAAAHByb2Nlc3Nf
-dG1mX3Jlc3BvbnNlOiBidWZmZXJlZCBbMHgleF0sIGlzdGFza19mYy0+Zmxvd2NfYnVmLT5zY2hl
-ZF9ub2RlLm5leHQgWzB4JXhdLCBpc3Rhc2tfZmMgWzB4JXhdLCBpc3Rhc2tfZmMtPmZsb3djX2lk
-IFsweCV4XQoAAAAAAAAAAAAAAAAAAHByb2Nlc3NfdG1mX3Jlc3BvbnNlOiB3ciBvcCBbMHgleF0s
-IHRtZiBvcCBbMHgleF0KAAAAAAAAAAAAAAAAAAB0bWZfcmVzcDogZmxvd2M6MHgleCwgaWQ6MHgl
-eCwgc3RhdGU6MHgleCwgeWllbGQ6MHgleAoAAAAAAAAAAAAAdG1mX3Jlc3A6IHRfdGFzazoweCV4
-IGZyZWVkLgoAAABzY3NpX2NtZF9yZXNwOiBmbG93YzoweCV4LCBpZDoweCV4LCBzdGF0ZToweCV4
-LCB5aWVsZDoweCV4CgAAAAAAZGF0YV9pbl9yZXNwOiBmbG93YzoweCV4LCBpZDoweCV4LCBzdGF0
-ZToweCV4LCB5aWVsZDoweCV4CgAAAAAAAHJldHVybl9wZW5kaW5nX3Rhc2s6IGNvb2tpZSBbMHgl
-MDh4XSwgWzB4JTA4eF0KAHJldHVybl9wZW5kaW5nX3Rhc2s6IGRlbGF5IHByb2Nlc3NpbmcsIGNv
-bm4gZmxhZ3MgWzB4JXhdCgAAAAAAAAByZXR1cm5fcGVuZGluZ190YXNrOiBEb25lIHNlbmRpbmcg
-dGFzayBlcnJvciB0byBob3N0LCB1bHB0eGxlbjE2IFsldV0KAAAAAAAAAAAAAHJldHVybl9wZW5k
-aW5nX3Rhc2s6IGRlcXVldWUgdGFzayBbMHgleF0sIHN0YXRlIFsweCV4XSBmcm9tIHR4X2xpc3QK
-AAAAAAAAAAAAAAAAcmV0dXJuX3BlbmRpbmdfdGFzazogYWxsIHRhc2tzIHJldHVybmVkLCByZWNv
-dmVyeSBzdGF0ZSB0cmFucyB0byBbMHgleF0KAAAAAAAAAABjbGVhcl9kZHBfbWFwOiBpc3Rhc2tf
-ZmMgWzB4JXhdLCBpc3Rhc2tfZmMtPmZsb3djX2lkIFsweCV4XSBidWZmZXJlZCAldQoAAAAAAAAA
-AGNsZWFyX2RkcF9tYXA6IGlzdGFza19mYy0+Zmxvd2NfaXRhc2tfbnBwb2QgJXUsIG5wcG9kICV1
-LCBwcGRhZGRyIFsweCV4XQoAAAAAAAAAY2xlYXJfZGRwX21hcDogYWxsIHJldHVybmVkIHRhc2tz
-IGRkcCBjbGVhcmVkLCByZWNvdmVyeSBzdGF0ZSB0cmFucyB0byBbMHgleF0KAAB3cmhfZm9pc2Nz
-aV9ub2RlOiBub2RlX3dyLT5mbG93aWRfbGVuMTYgMiBbJXhdCgB3cmhfZm9pc2NzaV9jaGFwOiBp
-ZF9sZW4gWyV4XSwgc2VjX2xlbiBbJXhdCgAAAAB3cmhfZm9pc2NzaV9jaGFwOiB0Z3RfaWRfbGVu
-IFsleF0sIHRndF9zZWNfbGVuIFsleF0KAAAAAAAAAAAAAAAAc2Vzc2lvbl9ibG9jazogc2Vzc19m
-Yy0+Zmxvd2NfaWQgWzB4JXhdLCBzZXNzX2ZjLT5mbG93Y19zdGF0ZSBbMHgleF0sIGNvbm5fZmMt
-PmZsb3djX2lkIFsweCV4XSwgY29ubl9mYy0+Zmxvd2Nfc3RhdGUgWzB4JXhdLCBjc2tfZmMtPmZs
-b3djX2lkIFsweCV4XSwgY3NrX2ZjLT5mbG93Y19zdGF0ZSBbMHgleF0KAAAAAAAAAAAAAAAAAAAA
-c2Vzc2lvbl91bmJsb2NrOiBzZXNzX2ZjLT5mbG93Y19pZCBbMHgleF0sIHNlc3NfZmMtPmZsb3dj
-X3N0YXRlIFsweCV4XSwgY29ubl9mYy0+Zmxvd2NfaWQgWzB4JXhdLCBjb25uX2ZjLT5mbG93Y19z
-dGF0ZSBbMHgleF0sIGNza19mYy0+Zmxvd2NfaWQgWzB4JXhdLCBjc2tfZmMtPmZsb3djX3N0YXRl
-IFsweCV4XQoAAAAAAAAAAAAAAAAAc3RhcnRfbG9nb3V0OiBTZXNzLWlkIFsweCV4XSBhbHJlYWR5
-IGxvZ2dpbiBvdXQuCgAAAAAAAAAAAAAAAAAAAHBlZXJfY29uOiBjc2tfZmMgPT4gZmxvd2lkIFsw
-eCV4XSwgZmxvd2NfYnVmIFsweCV4XQoAAAAAAAAAAAAAAABhbGxvY19zZXNzOiBsb2dpbl9yZXRy
-eSBbJWRdLCByZWNvdl90aW1lb3V0IFslZF0KAAAAAAAAAAAAAAAAAAAAZm9pc2NzaV9jdHJsOiBz
-dWJvcCBbMHgleF0sIHNlc3NfdHlwZV90b19lcmwgWzB4JXhdLCBzZXNzX3R5cGUgWzB4JXhdCgAA
-AAAAAAAAAABmb2lzY3NpX2N0cmw6IHJlY2VpdmVkIGJsb2NrZWQgZnJvbSBkcml2ZXIsIHRyaWdn
-ZXJpbmcgcmV0dXJuIHRhc2tzIG5vdy4KAAAAAAAAAFdBVENIRE9HX2Rpc3BhdGNoIGNhc2UgdG8g
-YXZvaWQ6IENvdW50ZXJfd2F0Y2hkb2cgJXUgQ291bnRlcl9zY2hlZCAldSAKAAAAAAAAAAAAeGdt
-YWNbJXVdIHNldHRpbmcvdW5zZXR0aW5nIGhzcyByZXN5bmMgYml0CgAAAAAAV0FUQ0hET0c6IGRl
-dmljZSBzaHV0ZG93bgoAAAAAAABXQVRDSERPRzogcG9ydFsldV0gcGF1c2Ugd2F0Y2hkb2cgdGlt
-ZW91dAoAAAAAAABXQVRDSERPRzogYnlwYXNzIHRpbWVvdXQKAAAAAAAAAFdBVENIRE9HOiBGTFIg
-LSBub3QgaW1wbGVtZW50ZWQgeWV0CgAAAAAAAAAAAAAAAFdBVENIRE9HOiB0ZW1wZXJhdHVyZSBv
-ZiAlZEMgZXhjZWVkcyB0aHJlc2hvbGQgb2YgJWRDCgAAAAAAAAAAAABmaWx0ZXI6IHBvcmdyYW1t
-aW5nIHRpZCAldSAobGUgdGNhbSBpbmRleCAldSkuLi4KAAAAAAAAAAAAAAAAAAAAZmlsdGVyOiBy
-ZXF1ZXN0aW5nIGNvbXBsZXRpb24uLi4KAAAAAAAAAAAAAAAAAAAAbDJkZXZfc2VuZF9wb3J0X2V2
-ZW50OiB3ciBbMHgleF0gcGVuZGluZyBvbiBwb3J0IFslZF0sIGN1cnJlbnQgdHJ5IFslZF0KAAAA
-AAAAAABGQ09FIEZyZWU6IHN0aWxsIHlpZWxkZWQgd2hlbiBmcmVlaW5nLi4uZmxvd2NfaWQgJXgg
-Zmxvd2NfZmxhZ3MgJXggCgAAAAAAAAAAAAAAAEZDT0UgQlAgV1IgRVJSOiBXUiB3aXRoIGNvb2tp
-ZSAleCV4IGVycm9yZWQgYmFjayAKAAAAAAAAAAAAAAAAAABkY2J4X2llZWVfY21kaFsldV0gd3Jp
-dGUgb25seSBwZXJtaXR0ZWQgb24gbG9jYWwgY29uZgoAAAAAAAAAAAAAZGNieF9pZWVlX2NtZGhb
-JXVdIGNhbm5vdCB3cml0ZSAldSBhcHBzIChNQVg6ICV1KQoAAAAAAAAAAAAAAAAAAGRjYnhfaWVl
-ZV9jbWRoWyV1XSByZXF1ZXN0aW5nIERDQl9JRUVFX0NNRAoAAAAAAGRjYnhfaWVlZV9jbWRoWyV1
-XSB1bmtub3duIGZlYXR1cmUgd3JpdGU6ICV1CgAAAGRjYnhfaWVlZV9jbWRoWyV1XSB1bmtub3du
-IGZlYXR1cmUgcmVhZDogJXUKAAAAAEZDb0UgRERQIGZhaWxlZCA6IG94X2lkIDB4JXggcnhfaWQg
-MHgleAoAAAAAAAAAAEZDb0UgRERQIGZhaWxlZCA6IERkcFJlcG9ydCAweCV4IERkcFZhbGlkIDB4
-JXgKAEZDIHhjaGcgYWxsb2MgZmFpbGVkOiBhdmFpbCAlZAoAZmNvZSBub3RpZnkgOiBVcGRhdGUg
-bmV3IERDQlggdmFsdWVzIFZJIHN0YXRlIDB4JXggcHJpIDB4JXggc2NoZWRjbCAweCV4IGRjYnhf
-ZG9uZSAweCV4CgAAAAAAAAAAZmNvZSBub3RpZnkgOiBGQ0YgZmxvd2lkIDB4JXgsIHVscGNoIDB4
-JXggCgAAAAAAUFJMSSBSc3AgdGltZWRvdXQgOiBmbG93Y19pZCAweCV4IG94X2lkIDB4JXggcnhf
-aWQgMHgleCAKAAAAAAAAAGNhbm5vdCBhbGxvY2F0ZSBvZmZsb2FkZWQgZmlsdGVyIGNvbm5lY3Rp
-b24KAAAAAGNhbm5vdCBhbGxvY2F0ZSBvZmZsb2FkZWQgZmlsdGVyIElQdjYgY29ubmVjdGlvbgoA
-AAAAAAAAAAAAAAAAAABkaXNwYXRjaF9kZWZlcnJlZF9jbGFzc19jbGFzc19zaGFwaW5nWyV1OiV1
-XTogbGlzdF9lbXB0eQoAAAAAAAAAbG9vcGJhY2sgYnVmZmVyIGdyb3VwWyV1XSBpcyBkaXNhYmxl
-ZAoAAAAAAAAAAAAAaW52YWxpZCBidWZmZXIgZ3JvdXBbJXVdIGNvbmZpZ3VyYXRpb246IG10dSAl
-dSBsd20gJXUgaHdtICV1IGR3bSAldQoAAAAAAAAAAAAAAABmYyAldSB2ZiAldSBnb3QgaXZmPTB4
-JXgscmFuZ2U6ICUjeC0lI3ggKCV1LyV1IHVzZWQpCgAAAAAAAAAAAAAAVkkgJXUgY2Fubm90IGdl
-dCBSU1Mgc2xpY2U6IE5vIG1vcmUgc2xpY2VzIGF2YWlsYWJsZSAodXNlZCAldS8ldSkKAAAAAAAA
-AAAAAAAAAABwZm4gJXUgdmZuICV1IHdpdGggcG9ydCBtYXNrIDB4JXggY2Fubm90IGFjY2VzcyBw
-b3J0ICV1LCByZXQgJWQKAAAAAAAAAAAAAAAAAAAAAHBmbiAldSB2Zm4gJXUgY291bGQgbm90IGFs
-bG9jYXRlIHZpaWQsIHJldCAlZAoAAHBmbiAldSB2Zm4gJXUgY291bGQgbWFwIHZpaWQgIDB4JXgg
-dG8gZmxvd2MsIHJldCAlZAoAAAAAAAAAAAAAAABwZm4gJXUgdmZuICV1IGNvdWxkIG5vdCBhbGxv
-Y2F0ZSB1d2lyZSBmdW5jICVkIG1hYyBhZGRyLCByZXQgJWQKAAAAAAAAAAAAAAAAAAAAAG1paV9m
-b3JjZV9zcGVlZFsldV06IHJjYXBzIDB4JXgKAAAAAAAAAAAAAAAAAAAAAG1paV9wZG93blsldV06
-IHBvd2VyZG93biBlbiAldQoAcG9ydF9jbWRfaGFuZGxlcjogdW5rbm93biB1LmRjYi50eXBlIDB4
-JXgKAAAAAAAAcG9ydFsldToweCUwMng6MHglMDJ4XTogdW5rbm93biBhY3Rpb24gMHgleAoAAAAA
-cG9ydFsldToweCUwMng6MHglMDJ4XTogdW5rbm93biByZWFkIGFjdGlvbiAweCV4CgAAAAAAAAAA
-AAAAAAAAAGNwbF9lcnJfbm90aWZ5OiB0aWQgJXUgY3BsIDB4JTA4eCUwOHgKAAAAAAAAAAAAAGNw
-bF9lcnJfbm90aWZ5OiB0aWQgJXUgY3BsIDB4JTA4eCUwOHggMHglMDh4JTA4eAoAAAAAAAAAAAAA
-AAAAAABjcGxfZXJyX25vdGlmeTogdGlkICV1IGxlbiAldQoAAEZDT0UgRnJlZTogc3RpbGwgeWll
-bGRlZCB3aGVuIGZyZWVpbmcuLi5mbG93Y19pZCAleCBmbG93Y19mbGFncyAleCAKAAAAAAAAAAAA
-AAAAc2NzaV9hYm9ydDogRW50ZXJpbmcgQWJvcnRfdGFzaywgYnVmZmVyZWQgWyV1XQoAc2NzaV9h
-Ym9ydDogcmMgWzB4JXhdIHJlZiB0YXNrIG5vdCBvdXRzdGFuZGluZwoAc2NzaV9hYm9ydDogaWRh
-dGEtPm9wIFsweCV4XSwgZmxhZ3MgWzB4JXhdLCBmdW5jIFsweCV4XSwgbHVuX2lkeCBbMHgleF0K
-AAAAAAAAAABzY3NpX2Fib3J0OiB3ci0+aXFpZCBbMHgleF0sIGlzdGFza19mYy0+Zmxvd2Nfc2dl
-X2lxaWQgWzB4JXhdLCBpc3Rhc2tfZmMgdGFzayBmbGFncyBbMHgleF0KAAAAAABzY3NpX2FicnQ6
-dGFzayBmbG93Y1sweCV4XSwgdG1mX2xpc3RfZW1wdHk6CgAAAABzY3NpX2Fib3J0OiBjb25uIFsw
-eCV4XSwgY21kc24gWzB4JXhdLCBzZW50X2NtZHNuIFsweCV4XSwgbWF4X2NtZHNuIFsweCV4XSwg
-aXR0IFsweCV4XQoAAAAAAAAAAABhYm9ydC9jbG9zZSBXUiB3aXRoIGNvb2tpZSAweCVseCB3YXMg
-aXNzdWVkIG9uIHNzbiAweCV4IGluIHdyb25nIHN0YXRlIDB4JXgKAAAAAGFib3J0IFdSIG9uIHNz
-biAweCV4IGRpZCBub3QgZmluZCBXUiB3aXRoIGNvb2tpZSAweCV4JXgKAAAAAAAAAABjbG9zZSBX
-UiB3aXRoIGNvb2tpZSAweCVseCBvbiBzc24gMHgleDtkaWQgbm90IGZpbmQgV1Igd2l0aCBjb29r
-aWUgMHglbHgKAAAAAAAAAGFib3J0IFdSIG9uIHNzbiAweCV4IHdhcyBpc3N1ZWQgb24geGNoZyAw
-eCV4IHdpdGggcnhfaWQgMHgleCBpbiB3cm9uZyBzdGF0ZSAweCV4CgAAAAAAAAAAAAAAAAAAAHNj
-c2lfbHVyOiBFbnRlcmluZyBMVVIgaGFuZGxlciwgYnVmZmVyZWQgWyV1XQoAAHNjc2lfbHVyOiBp
-ZGF0YS0+b3AgWzB4JXhdLCBmbGFncyBbMHgleF0sIGZ1bmMgWzB4JXhdLCBsdW5faWR4IFsweCV4
-XQoAAAAAAAAAAAAAc2NzaV9sdXI6IHdyLT5pcWlkIFsweCV4XSwgaXN0YXNrX2ZjLT5mbG93Y19z
-Z2VfaXFpZCBbMHgleF0sIGlzdGFza19mYyB0YXNrIGZsYWdzIFsweCV4XQoAAAAAAAAAc2NzaV9s
-dXI6IGNvbm4gWzB4JXhdLCBjbWRzbiBbMHgleF0sIHNlbnRfY21kc24gWzB4JXhdLCBtYXhfY21k
-c24gWzB4JXhdLCBpdHQgWzB4JXhdCgAAAAAAAAAAAAAAZGNieF9hcHBseV9hcHBfY2ZnWyV1XU5F
-VyBBUFAgVExWIAoAAAAAAAAAAAAAAAAAZGNieF9jZWVfZmVhX3NtWyV1XSBGZWF0dXJlWyV1XSBG
-RUFUVVJFX0xJTktVUAoAZGNieF9jZWVfZmVhX3NtWyV1XSBGZWF0dXJlWyV1XSBTRVRfTE9DQUxf
-UEFSQU1FVEVSUwoAAAAAAAAAAAAAAGRjYnhfY2VlX2ZlYV9zbVsldV0gRmVhdHVyZVsldV0gRkVB
-VFVSRV9OT19BRFZFUlRJU0UKAAAAAAAAAAAAAABkY2J4X2NlZV9mZWFfc21bJXVdIEZlYXR1cmVb
-JXVdIEZFQVRVUkVfUEVFUl9OT1RfQURWRVJUSVNFX0RDQlgKAAAAAAAAAAAAAAAAAAAAAGRjYnhf
-Y2VlX2ZlYV9zbVsldV0gRmVhdHVyZVsldV0gRkVBVFVSRV9QRUVSX05PVF9BRFZFUlRJU0VfRkVB
-VFVSRQoAAAAAAAAAAAAAAAAAZGNieF9jZWVfZmVhX3NtWyV1XSBGZWF0dXJlWyV1XSBGRUFUVVJF
-X1VQREFURV9PUEVSX1ZFUlNJT04KAAAAAGRjYnhfY2VlX2ZlYV9zbVsldV0gRmVhdHVyZVsldV0g
-RkVBVFVSRV9QRUVSX1VQREFURV9PUEVSX1ZFUlNJT04KAAAAAAAAAAAAAAAAAAAAZGNieF9jZWVf
-ZmVhX3NtWyV1XSBGZWF0dXJlWyV1XSBGRUFUVVJFX0dFVF9QRUVSX0NGRwoAAAAAAAAAAAAAAGRj
-YnhfY2VlX2ZlYV9zbVsldV0gRmVhdHVyZVsldV0gRkVBVFVSRV9DRkdfTk9UX0NPTVBBVElCTEUK
-AAAAAABkY2J4X2NlZV9mZWFfc21bJXVdIEZlYXR1cmVbJXVdIEZFQVRVUkVfVVNFX0xPQ0FMX0NG
-RwoAAAAAAAAAAAAAZGNieF9jZWVfZmVhX3NtWyV1XSBGZWF0dXJlWyV1XSBGRUFUVVJFX1VTRV9Q
-RUVSX0NGRwoAAAAAAAAAAAAAAGRjYnhfY2VlX2ZlYV9zbVsldV0gRmVhdHVyZVsldV0gRkVBVFVS
-RV9GRUFUVVJFX0RJU0FCTEVECgAAAAAAAABkY2J4X2NlZV9mZWFfc21bJXVdIEZlYXR1cmVbJXVd
-IEZFQVRVUkVfRVJST1JfQ0hBTkdFCgAAAAAAAAAAAAAAZGNieF9pZWVlX3Byb2Nlc3NbJXVdIHJl
-Y2VpdmVkIEJXcyBkbyBub3QgYWRkIHVwIHRvIDEwMCEKAAAAAAAAAFdBUk5JTkc6IHJlY2VpdmVk
-IEFwcCBUTFYgY29udGFpbnMgbW9yZSB0aGFuRlcgY2FuIGhhbmRsZSAobWF4OiAldTsgdGx2IGNv
-bnRhaW5zOiAldQoAAAAAAAAAAAAAAGRjYnhfaWVlZV9wcm9jZXNzWyV1XSBzdWJ0eXBlICUjeCBy
-ZW1fZnRfY2hhbmdlZCAldSBzbV9jaGFuZ2UgJXUKAAAAAAAAAAAAAAAAAAAAZGNieF9pZWVlX3By
-b2Nlc3NbJXVdIHN1YnR5cGUgdW5rbm93bgoAAAAAAAAAAAAAZGNieF9wYXJzZV9wa3RbJXVdIGVy
-cm9yICVkCgAAAABjaG5ldF9sMnRfdXBkYXRlOiBsMmRldl9mYyBbMHgleF0sIGwyZGV2X2ZjLT5m
-bG93Y19pZCBbJXVdIGwyZGV2X2ZjLT5mbG93Y19mbGFncyBbMHgleF0sIGludGYgWzB4JXhdCgAA
-AAAAAAAAAAAAY2huZXRfbDJ0X3VwZGF0ZTogbDJkZXZfZmMtPmZsb3djX2lkIFsldV0gYWxyZWFk
-eSBzY2hlZHVsZWQKAAAAAGNobmV0X2wydF91cGRhdGU6IGluIGRlbGF5ZWRfcHJvY2Vzc2luZywg
-bDJ0ZW50IFslMDh4XQoAAAAAAAAAAABjaG5ldF9hcnBfdXBkYXRlX2NhY2hlOiBhcnAgaXA0IGVu
-dHJ5IGZvdW5kIAoAAABjaG5ldF9hcnBfdXBkYXRlX2NhY2hlOiBhcnAgaXA2IGVudHJ5IGZvdW5k
-IAoAAABjaG5ldF9hcnBfdXBkYXRlX2NhY2hlOiBib3RoIGlwNCBhbmQgaXA2IGFkZHIgY2Fubm90
-IGJlIG51bGwKAAAAY2huZXRfbDJ0X3VwZGF0ZTogbDJ0X3VwZGF0ZSByZXF1ZXN0IHNlbnQgbDJ0
-ZW50IFslMDh4XSwgbDJ0ZW50LT5pZHggWyVkXSwgbDJ0ZW50LT52bGFuIFslZF0KAAAAbmV0aWZf
-cHJvY2Vzc19kaGNwOiBsMmRldl9mYy0+Zmxvd2NfaWQgWzB4JXhdLCBwcm9jZXNzaW5nLCBvcHRf
-bGVuICV1CgAAAAAAAAAAAABjaG5ldF9kaGNwX3JlY3Y6IHZsYW5pZCBbJXVdLCBsMmRldl9waWRf
-ZmMtPmZsb3djX25ldF9sMmRldl92bGFuZGV2IFsweCV4XSwgbDJkZXZfZmMgWzB4JXhdCgAAAABj
-aG5ldF9kaGNwX3JlY3Y6IGwyZGV2X2ZjLT5mbG93Y19pZCBbMHgleF0sIGRoY3R4dC0+c3RhdGUg
-WyVkXSwgbWFsYWNpb3VzIGRoY3AgcmVjdiBmb3Igbm8gcmVxdWVzdAoAAAAAAAAAAAAAAAAAZGhj
-dHh0LT5zdGF0ZSA6ICVkCgAAAAAAAAAAAAAAAABsMmRldl9mYy0+Zmxvd2NfaWQgWzB4JXhdLCBC
-YWQgREhDUCBjb29raWUgcmVjaWV2ZWQsIGFib3J0aW5nCgAAQ291bGQgbm8gYWxsb2NhdGUgcGNi
-ISEgRnJlZWluZyBmY2YgISEhCgAAAAAAAAAAdm5fcGFyc2UgdW5rbm93biBzdWJjb2RlICV1CgAA
-AAB2bl9wYXJzZSB1bmtub3duIGR0eXBlICV1CgAAAAAAAGlnbm9yaW5nIGZpcCByZWN2IGZvciBw
-Y2IgZmxvdzoleCBpbiBvZmZsaW5lIHN0YXRlCgAAAAAAAAAAAAAAAABmaXBfdm4ydm5fcmVjdl9l
-cnIgCgAAAAAAAAAAAAAAAENvdWxkIG5vdCBhbGxvY2F0ZSBmbG93YyEhISEKAAAAQ291bGQgbm90
-IGFsbG9jYXRlIFNDQiBmbG93YyEhISEKAAAAAAAAAAAAAAAAAAAAQ291bGQgbm90IGZpbmQgcmln
-aHQgc2NiIGZvciBsb2dvCgAAAAAAAAAAAAAAAAAAaWdub3JpbmcgZmlwIHJlY3YgZm9yIGZjZiBm
-bG93OiV4IGluIG9mZmxpbmUgc3RhdGUKAAAAAAAAAAAAAAAAAENvdWxkIG5vdCBmaW5kIHJpZ2h0
-IHNjYiBmb3IgZmxvZ2kKAAAAAAAAAAAAAAAAAHBvcnQgMHgleCwgc3RhdGUgMHgleCwgcmV0cnkg
-bm90IHN1cHBvcnRlZAoAAAAAAEZsb2dpIHJlc3AgcmN2IHdpdGggdW5rbm93biB4Y2hnIG94X2lk
-JXggc2lkICUyeCUyeCUyeCBkaWQgJTJ4JTJ4JTJ4CgAAAAAAAAAAAAAATl9QT1JUIDB4JXgleCV4
-IHJlamVjdGVkIFBMT0dJIHdpdGggcmVhc29uIGNvZGUgJXgKAAAAAAAAAAAAAAAAAEFCVFMgd2hp
-bGUgYXdhaXRpbmcgUFJMSSBSc3A6IGZsb3djX2lkIDB4JXggb3hfaWQgMHgleCByeF9pZCAweCV4
-IAoAAAAAAAAAAAAAAAAAQUJUUyBmYWtlIFJzcDogbG9jIDB4JXggb3hfaWQgMHgleCByeF9pZCAw
-eCV4CgAARkMgZmNiIGFsbG9jIGZhaWxlZDogYXZhaWwgJWQKAABGQyBmY2IgYWxsb2MgeGlkOiVk
-IGZsb3dpZCAlZAoAAGxsZHBfcnhfcGt0X2hhbmRsZXJbJXVdIGRyb3AgcHJlLWluaXQgKGNvdW50
-ID0gJXUpCgAAAAAAAAAAAAAAAAAleCV4JXggUmVjaWV2ZWQgTE9HTyBmcm9tICV4JXgleCAKAAAA
-AAAAAAAAAAAAAABjYW5ub3QgYWxsb2NhdGUgUE9GQ09FIGZpbHRlciBjb25uZWN0aW9uIGZvciB4
-X2lkICV4IAoAAAAAAAAAAAAARmFpbGVkIHRvIHBvc3QgeGNoZyBlcnI6IHNzbmkgMHgleCBjb29r
-aWUgMHglbHggcnZhbCAleCAKAAAAAAAAAHRjcF9yZWxlYXNlX3RpZDogdGlkIFsweCV4XSwgZmxv
-d2MgZmxhZ3MgWzB4JXhdLCBidWZmZXJlZCBbMHgleF0KAAAAAAAAAAAAAAAAAAAAdGNwX3JlbGVh
-c2VfdGlkOiBzaXplb2YodGNiX2ZjLT5mbG93Y19pY29ubikgWyV1XSwgYnl0ZXMKAAAAAAAAAGFj
-dF9vcGVuX3JwbDogYXRpZCBbMHgleF0sIHRpZCBbMHgleF0sIHRjYl9mYy0+eyBpZCBbMHgleF0s
-IHN0YXRlIFsweCV4XSwgdHlwZSBbMHgleF0gfSwgY3BsX29wIFsweCV4XSwgc3RhdHVzIFsweCV4
-XQoAAAAAAAAAAAAAYWN0X29wZW5fcnBsOiBjc2tfZmMtPnsgaWQgWzB4JXhdLCBzdGF0ZSBbMHgl
-eF0sIGNzb2NrX2ZsYWdzIFsweCV4XSB9IAoAAAAAAAAAAABhY3Rfb3Blbl9ycGw6IHJlY3ZkIG5l
-ZyBhZHZpY2UgWzB4JXhdCgAAAAAAAAAAAABzZW5kX2Fib3J0X3JwbDogY3NrX2ZjLT5mbG93Y190
-eXBlIFsweCV4XSwgY3NrX2ZjLT5mbG93Y19pZCBbMHgleF0sIHRpZCBbMHgleF0sIHVscHR4Y2gg
-WyV1XSwgYnVmZmVyZWQgWyV1XQoAAAAAd3JoX29mbGRfdGNwX2Nsb3NlX2Nvbl9yZXBseTogdGNi
-X2ZjLT5mbG93Y19pZCBbMHgleF0sIHRjYl9mYy0+Zmxvd2NfdHlwZSBbMHgleF0sIGxlbjE2IFsl
-dV0sIGxvYyBbJXVdCgAAAAAAAAAAAHdyaF9vZmxkX3RjcF9jbG9zZV9jb25fcmVwbHk6IHJwbC0+
-b3BfVGlkIFsweCV4XSwgcnBsPnN0YXR1cyBbMHgleF0sIHJwbC0+c25kX254dCBbMHgleF0sIHJw
-bC0+cmN2X254dCBbMHgleF0KAAB0Y3BfYWJvcnRfcnBsX3JzczogdGlkIFsweCV4XSwgc3RhdHVz
-IFsweCV4XQoAAAB0Y3BfYWJvcnRfcmVxX3JzczogdGlkIFsweCV4XSwgc3RhdHVzIFsweCV4XQoA
-AABvZmxkX2Fib3J0X3JlcV9uZWdhZHZbJXVdOiB3ciAweCUwOHggY3BsX2Fib3J0X3JlcSBERUxJ
-VkVSRUQKAAAAaG9zdF93clsldV06IHdyIDB4JTA4eCBjcGxfYWJvcnRfcmVxIHN0YXR1cyAweCV4
-CgAAAAAAAAAAAAAAAAAAAHBrdHNjaGVkX2NsX3JsWyV1OiV1XTogbW9kZSB8IHVuaXQgfCByYXRl
-IDB4JTA2eCBtaW4gJXUgbWF4ICV1IHBrdHNpemUgJXUKAAAAAAAAcGFyYW1fY2huZXRbMHgleDow
-eCV4XTogY2huZXQgMHgleCByZWFkICV1IHBmICV1IHJldCAlZAoAAAAAAAAAAHBhcmFtX2RtYXFb
-MHgleDoweCV4XTogZG1hcSAweCV4IHJlYWQgJXUgcGYgJXUgcmV0ICVkCgAAAAAAAAAAAABNQ1sl
-dV0gaW5pdF9zdGF0ZV9tYWNoaW5lIDB4JTAyeAoAAAAAAAAAAAAAAAAAAABNQyBpbml0aWFsaXph
-dGlvbiBub3QgY29tcGxldGluZywgTUMgY3VycmVudCBpbml0IHN0YXRlIGlzIDB4JTAyeAoAAAAA
-AAAAAAAAAAAAAE1DWyV1XSBfaHdfbWNfaW5pdF9tYwoAAAAAAAAAAAAAX2h3X21jX2luaXRfbWM6
-IGVycm9yLCByZXQgJWQKAABwaHk6IGZhaWxlZCB0byBhbGxvY2F0ZWQgbWVtb3J5IGZvciBwaHkg
-ZncgZmlsZSwgcmV0ICVkCgAAAAAAAAAAaHdfbGVfZmlsdGVyX2N0dXBsZTogdHVwbGUgJXUgbm90
-IHNwZWNpZmllZCBidXQgcmVxdWlyZWQgZm9yIG1hc2sgMHgleAoAAAAAAAAAAABod190cF90Y3Bf
-c2V0dGluZ3NfdzogdGltZXJfcnMgJXV1cyB0aW1lc3RhbXBfcmVzICV1dXMgZGVsYXllZGFja19y
-ZXMgJXV1cwoAAAAAAGh3X3RwX3RjcF9zZXR0aW5nc193OiBkYWNrX3RpbWVyICV1dXMgbXNsICV1
-dXMgcnh0X21pbixtYXggJXUsJXV1cyBwZXJzX21pbixtYXggJXUsJXV1cwoAAAAAAAAAAGh3X3Rw
-X3RjcF9zZXR0aW5nc193OiBrZWVwX2lkbGUsaW50dmwgJXUsJXVzIG1heHJ0dCAldXVzIGluaXRz
-cnR0ICV1dXMgZmlud2FpdDJfdGltZXIgJXV1cwoAAAAAAGh3X3RwX3RjcF9zZXR0aW5nc193OiBj
-YXBwaW5nIGRhY2tfdGltZXIgZnJvbSAldSB0byAldQAAAAAAAAAAAABod190cF90Y3Bfc2V0dGlu
-Z3NfdzogY2FwcGluZyBtc2wgZnJvbSAldSB0byAldQBod190cF90Y3Bfc2V0dGluZ3NfdzogY2Fw
-cGluZyByeHRfbWluIGZyb20gJXUgdG8gJXUAAAAAAAAAAAAAAAAAaHdfdHBfdGNwX3NldHRpbmdz
-X3c6IGNhcHBpbmcgcnh0X21heCBmcm9tICV1IHRvICV1AAAAAAAAAAAAAAAAAGh3X3RwX3RjcF9z
-ZXR0aW5nc193OiBjYXBwaW5nIHBlcnNfbWluIGZyb20gJXUgdG8gJXUAAAAAAAAAAAAAAABod190
-cF90Y3Bfc2V0dGluZ3NfdzogY2FwcGluZyBwZXJzX21heCBmcm9tICV1IHRvICV1AAAAAAAAAAAA
-AAAAaHdfdHBfdGNwX3NldHRpbmdzX3c6IGNhcHBpbmcga2VlcF9pZGxlIGZyb20gJXUgdG8gJXUA
-AAAAAAAAAAAAAGh3X3RwX3RjcF9zZXR0aW5nc193OiBjYXBwaW5nIGtlZXBfaW50dmwgZnJvbSAl
-dSB0byAldQAAAAAAAAAAAABod190cF90Y3Bfc2V0dGluZ3NfdzogY2FwcGluZyBpbml0X3NydHRf
-bWF4cnR0IGZyb20gJXUgdG8gJXUAAAAAaHdfdHBfdGNwX3NldHRpbmdzX3c6IGNhcHBpbmcgaW5p
-dF9zcnR0X2luaXRzcnR0IGZyb20gJXUgdG8gJXUAAGh3X3RwX3RjcF9zZXR0aW5nc193OiBjYXBw
-aW5nIGZpbndhaXQyX3RpbWVyIGZyb20gJXUgdG8gJXUAAAAAAABsZSBjb25maWd1cmF0aW9uOiBu
-ZW50cmllcyAldSByb3V0ZSAldSBjbGlwICV1IGZpbHRlciAldSBhY3RpdmUgJXUgc2VydmVyICV1
-IGhhc2ggJXUKAAAAAAAAAAAAAABsZSBjb25maWd1cmF0aW9uOiBuZW50cmllcyAldSByb3V0ZSAl
-dSBjbGlwICV1IGZpbHRlciAldSBzZXJ2ZXIgJXUgYWN0aXZlICV1IGhhc2ggJXUgbnNlcnZlcnNy
-YW0gJXUKAAAAAAAAAAAAAAAAaHdfc2dlX3F1ZXVlX2Jhc2VfbWFwWyV1XTogZXhjZWVkZWQgbnVt
-YmVyIG9mIGVncmVzcyBxdWV1ZXMsICV1CgAAAAAAAAAAAAAAAAAAAABod19zZ2VfcXVldWVfYmFz
-ZV9tYXBbJXVdOiBleGNlZWRlZCBudW1iZXIgb2YgaW5ncmVzcyBxdWV1ZXMgd2l0aCBmcmVlbGlz
-dCBhbmQgaW50ZXJydXB0LCAldQoAAABod19zZ2VfcXVldWVfYmFzZV9tYXBbJXVdOiBleGNlZWRl
-ZCBudW1iZXIgb2YgaW5ncmVzcyBxdWV1ZXMsICV1CgAAAAAAAAAAAAAAAAAAAGNmX3BhcnNlOiBm
-aWxlIG1lbXR5cGUgMHgleCBtZW1hZGRyIDB4JXggbWFwcGVkIEAgJXA6CgAAAAAAAAAAAABjb25m
-aWd1cmVkIHdpdGggY2FwcyBuYm18bGluayAweCUwOHggc3dpdGNofG5pYyAweCUwOHggdG9lfHJk
-bWEgMHglMDh4IGlzY3NpfGZjb2UgMHglMDh4CgAAAAAAAABuZXQgVkkgYWxsb2NhdGlvbiBmYWls
-ZWQgZm9yIGZjX2lkICV1IHdpdGggZXJyb3IgJWQKAAAAAAAAAAAAAAAAbmV0IFZJIG1hYyBhZGRy
-ZXNzIHByb2dyYW1taW5nIGZhaWxlZCBmb3IgZmNfaWQgJXUgd2l0aCBlcnJvciAlZAoAAAAAAAAA
-AAAAAAAAAABuZXQgVkkgcnhtb2RlIHByb2dyYW1taW5nIGZhaWxlZCBmb3IgZmNfaWQgJXUgd2l0
-aCBlcnJvciAlZAoAAAAAbmV0IFZJIHJzcyBpbmRpcmVjdGlvbiB0YWJsZSBwcm9ncmFtbWluZyBm
-b3IgZmNfaWQgJXUgZmFpbGVkIHdpdGggZXJyb3IgJWQKAAAAAABuZXQgVkkgcnNzIGNvbmZpZyBj
-b21tYW5kIGZhaWxlZCBmb3IgZmNfaWQgJXUgd2l0aCBlcnJvciAlZAoAAAAAbmV0IFZJIGNvbW1h
-bmQgZmFpbGVkIGZvciBmY19pZCAldSB3aXRoIGVycm9yICVkCgAAAAAAAAAAAAAAAAAAAHByb2dy
-YW1tZWQgSFcgdGFnbSBbMHglMDh4XSwgSFcgcGdzeiBmYWN0b3IgWzB4JTA4eF0sIEZPaVNDU0kg
-dGFnbSBbMHglMDh4XSwgcnRhZ20gWzB4JTA4eF0sIG1heHN6X2JpdHMgWyV1XSwgc3pfYml0cyBb
-JXVdLgoAAAAAYmFzZSBbIDB4JTA4eF0sIGxsaW1pdCBbMHglMDh4XSwgdWxpbWl0IFsweCUwOHhd
-LCBzaXplIFsldV0sIG1heF90eHN6IFsldV0sIG1heF9yeHN6IFsldV0sIGlvc2l6ZSBbJXVdCgAA
-AAAAAAAAAG5wcG9kcyBbJXVdLCBpZHhfbWFzayBbMHglMDh4XSwgaWR4X2ZpcnN0IFsldV0sIGlk
-eF9sYXN0IFsldV0sIHNjc2lfcGxkX3NpemUgWyV1XSwgQUxJR04oc2NzaV9wbGRfc2l6ZSwgMTYp
-IFsldV0sIHBwZF96b25lcyBbJXVdLgoAAAAAAAAAAAAAAAAAAGZvaXNjc2lfaW5pdDogaW5pdF9k
-b25lOiV1LCBmb2lzY3NpX250YXNrczoldSwgZm9pc2NzaV9uc2VzczoldSwgbmNzb2NrOiV1LCBu
-c3BvcnRzOiV1LCBmb2lzY3NpX25pbml0OiV1LCByYzolZAoAAAAAAAAAAAAAAAAAAAAAY2hfY2xf
-cmF0ZVsldS8ldV06IGNhcHBlZCBjbGFzcyByYXRlIGZyb20gcmVxdWVzdGVkICV1IHRvIGNvbmZp
-Z3VyZWQgKGVmZmVjdGl2ZSkgY2hhbm5lbCByYXRlICV1CgAAAAAAAAAAAAAAAAAAAGNoX2NsX3Jh
-dGVbJXUvJXVdOiBpbmNyZWFzZWQgZGVmaWNpdF9pbmNyIGZyb20gcmVxdWVzdGVkICV1IHRvIHJl
-cXVpcmVkIG1pbiBvZiAldTsgcmF0ZSAldSAoZWZmICV1KSBkZWZpY2l0X21heCAldQoAAAAAAAAA
-AAAAAAAAcGt0c2NoZWQgY2hhbm5lbCAldSBzZXRzIHNwZWVkIChmcm9tICV1KSB0byAldSBrYnBz
-CgAAAAAAAAAAAAAAAG5ldF9sMmRldl9ub3RpZnk6IGwyZGV2X2ZjLT5mbG93Y19pZCBbMHgleF0s
-IHBvcnQgWyVkXSwgZXZlbnQgWzB4JXhdLCB1bHB0eGNoIFsldV0sIGNsYXNzIFsweCV4XSwgdnBy
-aW8gWzB4JXhdLCB2aWQgWzB4JXhdLCB2aV9yZWFkeSBbJXVdCgAAAAAAAG5ldF9sMmRldl9ub3Rp
-Znk6IHBnaWQgWzB4JXhdLCBwcmlvIFsweCV4XSwgY2ggWzB4JXhdCgAAAAAAAAAAAABmY29lIG5v
-dGlmeSA6IEZDb0UgTElOS1VQOiBwb3J0IDB4JXgsIGV2ZW50IDB4JXgKAAAAAAAAAAAAAAAAAAAA
-ZmNvZSBub3RpZnkgOiBGQ29FIExJTktET1dOOiBwb3J0IDB4JXgsIGV2ZW50IDB4JXgKAAAAAAAA
-AAAAAAAAAGZjb2Ugbm90aWZ5IDogRENCWCA6IHBvcnQgMHgleCwgcHJpb3JpdHkgMHgleCB1bHB0
-eGNoIDB4JXggY2xhc3MgMHgleAoAAAAAAAAAAAAAWyV1XSB1bmFibGUgdG8gZXhlY3V0ZSBpbnRl
-cm5hbCBEQ0JfSUVFRV9DTUQKAAAAZGNieCB1cGRhdGVbJXVdIHNlbnQgdG8gZHJpdmVyICh0eXBl
-ICUjeCBzdWJ0eXBlICUjeCBsb2NhdGlvbiAldSBmbG93Y2lkICV1KQoAAABwb3J0WyV1XSBsaW5r
-IGRvd24gKCV1KSAobHN0YXR1cyAlI3gpCgAAAAAAAAAAAABpMmMgZXJyb3IgY2F1c2VkIGJ5IG1v
-ZHVsZSB1bnBsdWcKAAAAAAAAAAAAAAAAAABzZW5kdG8gcGVuZGluZzogd3JfcGVuZCAlcCBmb3Ig
-cG9ydCAldSwgd2FudCB0byBzZW5kIHRvIHBvcnQgJXUKAAAAAAAAAAAAAAAAAAAAAHBvcnRbJXVd
-IHVwZGF0ZSAoZmxvd2NpZCAldSByYyAldSkKAAAAAAAAAAAAAAAAAHBvcnRfc2V0X2xvb3BiYWNr
-IHBvcnQgJSN4IGN1cnJlbnQgJSN4IG1vZGUgJSN4CgAAAAAAAAAAAAAAAAAAAABwb3J0WyV1XSBz
-cGVlZCB1cGRhdGU6ICUjeAoAAAAAAHBvcnRbJXVdIGJlZ2lubmluZyBkZWJvdW5jZQoAAAAAcG9y
-dF9saW5rX3N0YXRlX2hhbmRsZXJbJXVdIHBvd2VyaW5nIGRvd24KAAAAAAAAcG9ydF9saW5rX3N0
-YXRlX2hhbmRsZXJbJXVdIHBvd2VyaW5nIHVwCgAAAAAAAAAAcG9ydF9saW5rX3N0YXRlX2hhbmRs
-ZXJbJXVdIHVua25vd24gc3RhdGUgKHN0YXRlID0gJSN4KQoAAAAAAAAAAHBvcnRfbGlua19zdGF0
-ZV9oYW5kbGVyOiBTb21ldGhpbmcgd2VudCB0ZXJyaWJseSB3cm9uZy4gcmV0ID0gJWQKAAAAAAAA
-AAAAAAAAAAAAbGUgaW5pdGlhbGl6YXRpb246IG5lbnRyaWVzICV1IHJvdXRlICV1IGNsaXAgJXUg
-ZmlsdGVyICV1IGFjdGl2ZSAldSBzZXJ2ZXIgJXUgaGFzaCAldQoAAAAAAAAAAAAAbGUgaW5pdGlh
-bGl6YXRpb246IG5lbnRyaWVzICV1IHJvdXRlICV1IGNsaXAgJXUgZmlsdGVyICV1IHNlcnZlciAl
-dSBhY3RpdmUgJXUgaGFzaCAldSBuc2VydmVyc3JhbSAldQoAAAAAAAAAAAAAAGh3X3RwX2luaXQ6
-IHRjYiByZWdpb24gKHN0YXJ0IDB4JTA4cyBzaXplICV1KSBtdXN0IGJlIGluIGZpcnN0IDI1Nk1C
-IG9mIE1BIG1lbW9yeQoAAAAAAAAAAAAAAAAAAGh3X3RwX2luaXQ6IHBnbW5ndCByZWdpb24gKHN0
-YXJ0IDB4JTA4cyBzaXplICV1KSBtdXN0IGJlIGluIGZpcnN0IDI1Nk1CIG9mIE1BIG1lbW9yeQoA
-AAAAAAAAAAAAAGh3X3RwX2luaXQ6IFRQIHBnbW5ndCBpbml0aWFsaXphdGlvbiBkaWQgbm90IGNv
-bXBsZXRlCgAAAAAAAAAAAABidWZtX2luaXQ6IG4gJXUgYnVmbGw2NGludF9zaXplIDB4JXgKAAAA
-AAAAAAAAAABidWZtX2luaXQ6IG5vdCBlbm91Z2ggbWVtb3J5IHRvIGFsbG9jYXRlIGludGVybmFs
-IGJ1ZmxsNjQgYnVmZmVycwoAAAAAAAAAAAAAAAAAAGJ1Zm1faW5pdDogbm90IGVub3VnaCBtZW1v
-cnkgdG8gYWxsb2NhdGUgYnVmbGw2NCBidWZmZXJzCgAAAAAAAABtZW1faW5pdF9idWY6IG5vdCBl
-bm91Z2ggbWVtb3J5IHRvIGFsbG9jYXRlIGZsb3cgYnVmZmVycwoAAAAAAAAAbWVtX2luaXRfYnVm
-OiBub3QgZW5vdWdoIG1lbW9yeSB0byBhbGxvY2F0ZSB0Y2JfY2FjaGUgKG9mZmVyZWQgJXUgdHJ5
-aW5nIHRvIHVzZSAldSBhdmFpbGFibGUgJXUpCgAAAAAAAAAAAAAAAAAAAG1wYXJ0aXRpb25fb3Ro
-ZXJzOiBzdGFydCAweCUwOHggc2l6ZSAldSAodW51c2VkICV1KQoAAAAAAAAAAAAAAABtcGFydGl0
-aW9uX290aGVyczogc3RhcnQgMHglMDh4IHNpemUgJXUgKHVudXNlZCAldSkKAAAAAAAAAAAAAAAA
-bWVtX2luaXQ6IEVEQyBvdmVyY29tbWl0dGVkIGJ5ICVkIGJ5dGVzCgAAAAAAAAAAbWVtX2luaXQ6
-IG5vdCBlbm91Z2ggbWVtb3J5IHRvIGFsbG9jYXRlIGZsb3cgdGFibGUKAAAAAAAAAAAAAAAAAGN4
-Y25pY19kZXZpY2VfaW5pdDogY3hjbmljIFsweCUweF0sIGN4Y25pYy0+ZmlsdGVyIFslMHhdCgAA
-AAAAAABwb2Zjb2UgaW5pdCBkb25lCgAAAAAAAAAAAAAAAAAAAFBvcnRbJXVdOiBVbmtub3duIFNH
-TUlJIHN1Yi10eXBlICUjeAoAAAAAAAAAAAAAAFBvcnRbJXVdOiBVbmtub3duIEJUX1hGSSBzdWIt
-dHlwZSAlI3gKAAAAAAAAAAAAAFBvcnRbJXVdOiBVbmtub3duIEJUX1hBVUkgc3ViLXR5cGUgJSN4
-CgAAAAAAAAAAAHBvcnRfaW5pdFsldV06IHBvcnQgdHlwZSAweCV4IGlzIG5vdCBzdXBwb3J0ZWQK
-AG1wYXJ0aXRpb25faW5pdDogbW92ZWQgcG1yeF9zdGFydCBmcm9tIDB4JTA4eCB0byAweCUwOHgg
-dG8gbWFrZSByb29tIGZvciBMRSBIQVNIIGFuZC9vciBUUCBUQ0JzCgAAAAAAAAAAAAAAAAAAAABt
-cGFydGl0aW9uX2luaXQ6IG1vdmVkIHBtcnhfc3RhcnQgZnJvbSAweCUwOHggdG8gMHglMDh4IChF
-RFJBTSkKAAAAAAAAAAAAAAAAAAAAAEVRIHBmbiAldSB2Zm4gJXU6IGRlc3Ryb3lpbmcgZXFpZCAl
-dSB3aXRoIHBlbmRpbmcgV1IocykgKG51bV9ieXRlcyAldSBhbmQgZmxhZ3MgMHglMDh4CgAAAAAA
-AAAAAGwyZGV2X2ZjLT5mbG93Y19pZCBbJXVdLCBsMmRjLT5wZm4gWyV1XSwgbDJkYy0+dmZuIFsl
-dV0sIGwyZGMtPmxwb3J0IFsldV0sIGwyZGV2X2ZjLT5mbG93aWQgWyV1XSBsMmRjLT50eF9jaCBb
-JXVdLCBkZXYudnBkLnBvcnR2ZWMgWyV4XQoAAAAAAAAAAHBvcnR2ZWMgWyV1XQoAAABsMmRldl92
-aV9mc206IG1iIFsweCV4XSwgZGVmZXJyZWQsIHN0YXRlIFsweCV4XSwgcG9ydCBbMHgleF0KAAAA
-bDJkZXZfdmlfZnNtOiB2aWlkIFsweCV4XSBwb3J0IFsweCV4XSwgbWFjLWlkIFslMDJ4OiUwMng6
-JTAyeDolMDJ4OiUwMng6JTAyeF0uIAoAAAAAAAAAAAAAAAAAAAAAbDJkZXZfdmlfZnNtOiBzZ2Vf
-ZXFpZCBbMHgleF0sIHNnZV9pcWlkIFsweCV4XSwgc2dlX2VxY3IgWzB4JXhdLCByc3Nfc3ogWzB4
-JXhdCgBsMmRldl92aV9mc206IGwyZGV2X2ZjLT5mbG93Y19uZXRfbDJkZXZfbXR1IFsldV0sIG1i
-X3NjcmF0Y2ggWzB4JXhdLCBwb3J0IFsweCV4XQoAAAAAAAAAAAAAAAAAAABsMmRldl92aV9mc206
-IHZpaWQgWyVkXSwgdmlfZmMtPmZsb3djX3ZpX2ZsYWdzIFsweCV4XQoAAAAAAAAAAAAAbDJkZXZf
-dmlfZnNtOiBwZm4gWzB4JXhdLCB2Zm4gWzB4JXhdLCBsMmRldl9mYy0+Zmxvd2NfaWQgWzB4JXhd
-LCBscG9ydCBbMHgleF0sIHZpaWQgWzB4JXhdLCBmbGFncyBbMHgleF0KAAAAAAAAAGwyZGV2X3Zp
-X2ZzbTogRXJyb3IgZnJlZWluZyBWSSwgcmMgWzB4JXhdCgAAAAAAAGwyZGV2X3ZpX2ZzbTogcGlk
-IFsweCV4XSwgdmlpZCBbMHgleF0sIG1iX2xvYyBbMHgleF0sIG1iX29yaWdbMHgleF0sIGwyZGV2
-X2ZsYWdzIFsweCV4XSwgcmMgWzB4JXhdCgAAAAAAAAAAAAAAAABBaCBoYS4uLmRvdWJsZSBmcmVl
-IG94X2lkIDB4JXgsIHJ4X2lkIDB4JXgKAAAAAABIb3N0IFBSTEkgUmVzcG9uc2UgdGltZWRvdXQ6
-IG94X2lkIDB4JXggcnhfaWQgMHgleAoAAAAAAAAAAAAAAAAARkNPRSBGcmVlOiBzdGlsbCB5aWVs
-ZGVkIHdoZW4gZnJlZWluZy4uLmZsb3djX2lkICV4IGZsb3djX2ZsYWdzICV4IAoAAAAAAAAAAAAA
-AABGQyB4Y2hnIGZyZWUgeGlkOiVkIGZsb3dpZCAlZAoAAHBmbiAldSB2Zm4gJXUgdmlhIGNvbW1h
-bmQKAAAAAAAAc2NoZWRfaW9xdHhfYnBfcHJpb3JpdHk6IGhhcyAldSBlbnRyaWVzIG9ubHksIHJl
-cXVpcmVzICV1IGVudHJpZXMKAAAAAAAAAAAAAAAAAAB0cF9iYWNrb2ZmOiBwYXJzZWQgJWQgaW5z
-dGVhZCBvZiAldSBlbnRyaWVzCgAAAAB0cF90aW1lcnZhbHM6IHBhcnNlZCAlZCBpbnN0ZWFkIG9m
-ICV1IGVudHJpZXMKAAB0cF90aW1lcnJlczogcGFyc2VkICVkIGluc3RlYWQgb2YgJXUgZW50cmll
-cwoAAAB0cF9tdHVzIGhhcyAldSBlbnRyaWVzIG9ubHksIHJlcXVpcmVzICV1IGVudHJpZXMKAAAA
-AAAAAAAAAAAAAAAAdHBfbXR1c1sldV0gaXMgJXUgYnl0ZXMgd2hpY2ggaXMgbm90IHN1cHBvcnRl
-ZAoAY29uZmlndXJhdGlvbiBmaWxlIHBhcnNlcjogc2dlIHRpbWVyIHZhbHVlWyVkXSBpcyB0b28g
-bGFyZ2UsIGNoYW5naW5nIGZyb20gJXUgdG8gJXV1c2VjcwoAAAAAAAAAZmlsdGVybWFzayAweCV4
-IGlzIG5vdCBlcXVhbC9zdWJzZXQgdG8vb2YgZmlsdGVybW9kZQoAAAAAAAAAAAAAAGh3X2xlX2Ns
-aXBfaGFuZGxlcjogcmVtb3ZlZCBwb3M9JXUgKD1pZHggJXUpCgAAAGh3X2xlX2NsaXBfaGFuZGxl
-cjogYWRkaW5nIHRvIHBvcz0ldSAoPWlkeCAldSkKAG1vZHVsZVsldV06IHBvcnQgbW9kdWxlIGlu
-c2VydGVkIGFuZCByZWFkeQoAAAAAAG1vZHVsZVsldV06IHBvcnQgbW9kdWxlIHJlbW92ZWQKAAAA
-AAAAAAAAAAAAAAAAAG1vZHVsZVsldV06IHVua25vd24gbW9kdWxlIGlkZW50aWZpZXIgMHglMDJ4
-CgAAAG1vZHVsZVsldV06IGdwaW8gJXUgdHJhbnMgMTBHIDB4JTAyeCAxRyAweCUwMnggKGxlbmd0
-aCAldSkgY2FibGUgMHglMDJ4IChsZW5ndGggJXUpIG1vZHVsZV90eXBlIDB4JTAyeAoAAAAAAAAA
-AABtb2R1bGVbJXVdOiBncGlvICV1IHRyYW5zIDEwRyAweCUwMnggMUcgMHglMDJ4IChsZW5ndGgg
-JXUpIGNhYmxlIDB4JTAyeCAobGVuZ3RoICV1KSBtb2R1bGVfdHlwZSAweCUwMngKAAAAAAAAAAAA
-ZmxyX3BmdmZfZnNtWyV1OiV1XTogdW5rbm93biBzdGF0ZSAldQoAAAAAAAAAAAAAaHcgcGYgYml0
-bWFwIDB4JTAyeCB2ZmlkIGJpdG1hcCAweCUwOHg6MHglMDh4OjB4JTA4eDoweCUwOHgKAAAAAGFm
-dGVyIHZmaWQgZml4dXAsIHZmaWQgYml0bWFwIDB4JTA4eDoweCUwOHg6MHglMDh4OjB4JTA4eAoA
-AAAAAAB0aW1lciBxdWV1ZSAldSBsb3N0IGEgdGljayEgbmV4dCAlcCBsYXN0ICVwIG51bWUgJXUK
-AAAAAAAAAAAAAAAAZmxyX3RpbWVyX3N0YXJ0OiBmbG93Y19pZCAldSAlcCBidWYgJXAKAAAAAAAA
-AAAAcGNpZTogbnBmICV1IChwZmJpdG1hcCAweCUwMngpIG52ZiAldSAocGYgMC4uNyAweCUwOHgl
-MDh4KSB2ZnN0cmlkZSAldQoAAAAAAAAAAABod19ncGlvX3ByZXA6IGVycm9yLCByZXQgJWQKAAAA
-AGZhaWxlZCB0byBmaW5kIHRoZSAlYyVjIFZQRCBwYXJhbWV0ZXIKAAAAAAAAAAAAAGZhaWxlZCB0
-byBwYXJzZSB0aGUgJWMlYyBWUEQgcGFyYW1ldGVyCgAAAAAAAAAAAG1lbV9wcmVwOiBlcnJvciwg
-cmV0ICVkCgAAAAAAAAAAZmFpbGVkIHRvIHN1Y2Nlc3NmdWxseSBmaW5kIENoZWxzaW8gVlBECgAA
-AAAAAAAAdnBkX3ByZXA6IGVycm9yLCByZXQgJWQKAAAAAAAAAABzZXJjZmdfcHJlcDogZXJyb3Is
-IHJldCAlZAoAAAAAAGxvZyBpbml0aWFsaXplZCBAIDB4JTA4eCBzaXplICV1ICgldSBlbnRyaWVz
-KSBmd3JldiAweCUwOHggcGNpZV9mdyAweCUwOHgKAAAAAAAAZ2F0aGVyX3Rhc2tzX2Zvcl90bWY6
-IGlkeCBbMHgleF0sIHRhc2staWQgWzB4JXhdLCBjbWQtaWQgWzB4JXhdLCBhY3RpdmUgdGFza3Mg
-WzB4JXhdLiBjb25uLWlkIFsweCV4XSwgY21kIGNvbm4taWQgWzB4JXhdLCB0YXNrIGNvbm4taWQg
-WzB4JXhdCgAAZ2F0aGVyX3Rhc2tzX2Zvcl90bWY6IEludmFsaWQgdHlwZSBbMHgleF0sIGJhaWxp
-bmcgb3V0LgoAAAAAAAAAAGdhdGhlcl90YXNrc19mb3JfdG1mOiB0YXNrIGlkIFsweCV4XSwgc3Rh
-dGUgWzB4JXhdLCBsaWR4IFsweCV4XSwgY29va2llIGhpIFsweCUwOHhdIDogbG8gWzB4JTA4eF0K
-AAAAAAAAAAAAAAAAAABnYXRoZXJfdGFza3NfZm9yX3RtZjogcmMgWzB4JXhdLCBbMHgleF0gdGFz
-ayBnYXRoZXJlZCBmb3IgdG1mIHR5cGUgWzB4JXhdIHByb2Nlc3NpbmcuCgAAAAAAAAAAAABzY3Np
-X2RhdGFfb3V0OiBjb25uX2ZjIFsweCV4XSwgc3RhdGUgWzB4JXhdLCBzZXNzX2ZjIFsweCV4XSBp
-biByZWNvdmVyeS4gU2tpcHBpbmcgaXN0YXNrX2ZjIFsweCV4XSBmcm9tIFRYLgoAAAAAc2VuZF9t
-c2dfcGxkOiBmYyB7IGlkIFsweCV4XSwgZmxhZ3MgWzB4JXhdLCBidWZmZXJlZCBbJXVdLiB9CgAA
-AHNlbmRfbXNnX3BsZDogc2VzcyB7IGlkIFsweCV4XSB9LCB1bHB0eGNoIFsldV0gbm8gY3JlZGl0
-cyBhdmFpbGFibGUsIHJlc2NoZWR1bGluZyByZXF1ZXN0LgoAAAAAAHNlbmRfYWJvcnRfcmVxOiBj
-c2tfZmMtPmZsb3djX3R5cGUgWzB4JXhdLCBjc2tfZmMtPmZsb3djX2lkIFsweCV4XSwgdGlkIFsw
-eCV4XSwgdWxwdHhjaCBbJXVdLCBidWZmZXJlZCBbJXVdCgAAAABodyByZWdpc3RlciBvcGVyYXRp
-b24gbm90IGNvbXBsZXRpbmcsIHJlZyAweCUwOHggbWFzayAweCUwOHggdmFsdWUgMHglMDh4IChy
-ZWcgMHglMDh4KQoAAAAAAAAAAABNRElPIENMNDU6IGZhaWxlZCB0byBzZXQgdXAgTU1EIGFkZHIK
-AAAAAAAAAAAAAABNRElPOiBmYWlsZWQgdG8gd3JpdGUKAAAAAAAAAAAAAE1ESU8gQ0w0NTogZmFp
-bGVkIHRvIHNldCB1cCBNTUQgYWRkcgoAAAAAAAAAAAAAAE1ESU86IGZhaWxlZCB0byByZWFkCgAA
-AAAAAAAAAAAACUFRX1Rha2VDb250cm9sT2ZGTEFTSDogMWUuYzAwMT0lI3ggMWUuYzQ1MD0lI3gg
-MWUuYzQ1MT0lI3ggMWUuMTAwPSUjeAoAAAAAAAAAAABBUV9BUElfV3JpdGVBbmRWZXJpZnlGbGFz
-aEltYWdlIC0gSW1hZ2UgaW50ZWdyaXR5IGNoZWNrIGZhaWxlZCAoY2FsYyAlI3ggdmFsICUjeCkK
-AAAAAAAAAAAAAAAAAABBUV9BUElfV3JpdGVBbmRWZXJpZnlGbGFzaEltYWdlIC0gSW1hZ2UgaW50
-ZWdyaXR5IGNoZWNrIHBhc3NlZAoAQVFfQVBJX1dyaXRlQW5kVmVyaWZ5Rmxhc2hJbWFnZSAtIFRp
-bWVvdXQgd2FpdGluZyBmb3IgZmxhc2ggaW50ZXJmYWNlICgldSkKAAAAAABBUV9BUElfV3JpdGVB
-bmRWZXJpZnlGbGFzaEltYWdlIC0gVGltZW91dCB3YWl0aW5nIGZvciBmbGFzaCBpbnRlcmZhY2Ug
-KCV1KQoAAAAAAEFRX0FQSV9Xcml0ZUFuZFZlcmlmeUZsYXNoSW1hZ2UgLSBUaW1lb3V0IHdhaXRp
-bmcgZm9yIGZsYXNoIGludGVyZmFjZSAoJXUpCgAAAAAAQVFfQVBJX1dyaXRlQW5kVmVyaWZ5Rmxh
-c2hJbWFnZSAtIFRpbWVvdXQgd2FpdGluZyBmb3IgZmxhc2ggaW50ZXJmYWNlICgldSkgKHBwICUj
-eCBhcCAlI3gpCgAAAAAAQVFfQVBJX1dyaXRlQW5kVmVyaWZ5Rmxhc2hJbWFnZSAtIFRpbWVvdXQg
-d2FpdGluZyBmb3IgZmxhc2ggaW50ZXJmYWNlICgldSkKAAAAAABBUV9BUElfV3JpdGVBbmRWZXJp
-ZnlGbGFzaEltYWdlIC0gVGltZW91dCB3YWl0aW5nIGZvciBmbGFzaCBpbnRlcmZhY2UgKCV1KQoA
-AAAAAEFRX0FQSV9Xcml0ZUFuZFZlcmlmeUZsYXNoSW1hZ2UgLSBFcnJvciBvbiBidXJuaW5nIEZM
-QVNIIChjcmMxNiBtaXNtYXRjaCkKAAAAAAAAc2VuZF9jbG9zZV9yZXE6IGNza19mYy0+Zmxvd2Nf
-dHlwZSBbMHgleF0sIGNza19mYy0+Zmxvd2NfaWQgWzB4JXhdLCBjc2tfZmMtPnRjYl9zdGF0ZSBb
-MHgleF0KAAAAc2VuZF9jbG9zZV9yZXE6IGNza19mYy0+Zmxvd2NfdHlwZSBbMHgleF0sIGNza19m
-Yy0+Zmxvd2NfaWQgWzB4JXhdLCB0aWQgWzB4JXhdLCB1bHB0eGNoIFsldV0sYnVmZmVyZWQgWyV1
-XQoAAAAAAG9mbGRfdGNwX2RvX2FjdGl2ZV9jbG9zZTogY3NrX2ZjIFsweCV4XSwgY3NrX2ZjLT5m
-bG93Y19pZCBbMHgleF0sIGNza19mYy0+dGNiX3N0YXRlIFsweCV4XQoAAAAAAG9mbGRfdGNwX2Rv
-X2FjdGl2ZV9jbG9zZTogY3NrX2ZjIFsweCV4XSwgY3NrX2ZjLT5mbG93Y19pZCBbMHgleF0sIGNz
-a19mYy0+dGNiX3N0YXRlIFsweCV4XQoAAAAAAG9mbGRfdGNwX2Rpc2Nvbm5lY3Q6IHRjYl9mYy0+
-Zmxvd2NfaWQgWzB4JXhdLCBjc2tfZmMtPmZsb3djX2lkIFsweCV4XSwgY3NrLT50Y2Jfc3RhdGUg
-WzB4JXhdCgAAAGRlY29kZV9iYXNlNjRfc3RyaW5nOiBkbGVuIFslZF0KAAAAAAAAAAAAAAAAAAAA
-AGRlY29kZV9oZXhfc3RyaW5nOiBkbGVuIFslZF0KAAAAZm9pc2NzaV92YWxpZGF0ZV9sb2dpbl9z
-dGFnZTogLSAxCgAAAAAAAAAAAAAAAAAAYXN5bmNfcGR1OiBsb2dvdXQgcmVxdWVzdGVkIGJsb2Nr
-aW5nIHNlc3Npb24KAAAAYXN5bmNfcGR1OiBzZXNzL2Nvbm4gZHJvcCByZXF1ZXN0ZWQgYmxvY2tp
-bmcgc2Vzc2lvbgoAAAAAAAAAAAAAAGNwbF90eF9wa3Q6IHZsYW5pZCBbMHgleF0KAAAAAAAAbmV0
-X2wyZGV2X2ZpbmRfYnlfYWRkcjogbDJkZXZfZmMtPmZsb3djX2lkIFsweCV4XSwgbDJkYy0+bHBv
-cnQgWyV1XSwgbDJkX2ZjLT5mbG93Y19pZCBbMHgleF0sIGwyZGMtPmluNF9kZXYuaW5fYWRkci5h
-ZGRyIFsweCV4XSwgYWRkciBbMHgleF0KAAAAbmV0X2wyZGV2X210dV9jb25maWc6IGwyZGV2X2Zj
-LT5mbG93Y19pZCBbMHgleF0sIG10dSAldQoAAAAAAAAAAGNwbF90eF9wa3Q6IHZsYW5pZCBbMHgl
-eF0KAAAAAAAAZW5jb2RlIGhleCBzdHJpbmc6IGRsZW4gWyVkXQoAAABjaG5ldF9maW5kX2wydF9l
-bnRyeTogZGFkZHIgWyUwOHhdLCBbMHglMDh4XSwgbG9jYWwgbmV0d29yayBbJWRdCgAAAAAAAAAA
-AAAAAAAAAGwydGVudCBbJTB4XSwgbDJ0ZW50LT5pZHggWyVkXQoAdGNwX3NlbmRfYW9wZW5fcmVx
-OiBjc2tfZmMtPmZsb3djX2lkIFsweCV4XSwgY3NrX2ZjLT5mbG93Y19zdGF0ZSBbMHgleF0sIGJ1
-ZmZlcmVkIFsldV0sIHJlc19jbnQgWzB4JXhdLCBpcV9pZHggWzB4JXhdCgAAAAAAAAAAAAB0Y3Bf
-c2VuZF9hb3Blbl9yZXE6IGNza19mYy0+Zmxvd2NfaWQgWzB4JXhdLCBjc2tfZmMtPmZsb3djX3N0
-YXRlIFsweCV4XSwgbm8gdmFsaWQgbDJ0X2VudHkuIERlbGF5aW5nIGFub3RoZXIgcmV0cnkgZm9y
-IDEgc2Vjb25kcy4KAAAAAAAAAAAAAAAAAABhb3Blbl9yZXE6IGh3X2xlX2ZpbHRlcl9jdHVwbGUg
-ZmFpbGVkCgAAAAAAAAAAAABvZmxkX3RjcF9zZW5kX2FvcGVuX3JlcTogY3BsX3JlcS0+RmlsdGVy
-IFsweCUweF0sIGN0dXBsZXNbMF0gWzB4JXhdLCBjdHVwbGVzWzFdIFsweCV4XQoAAAAAAAAAAABs
-YWRkcl9yZXQ6IGwyZGMuYWRkciA6MHgleCwgc3JjX2FkZHI6MHgleAoAAAAAAABjc29ja19hbGxv
-Yzogc3JjX2FkZHI6MHgleCwgZHN0X2FkZHI6MHgleAoAAAAAAABjc2tfYWxrOiBJbnZhbGlkIGwy
-ZGV2OjB4JXgKAAAAAGNza19hbGs6IG5leHQ6JXUsIGlkeDoldSwgdXNlZDoldSwgc3BvcnQ6JXUK
-AAAAAGNzb2NrX2FsbG9jOiBjc29ja19zcmNfYWRkcjoweCV4LCBjc29ja19kc3RfYWRkcjoweCV4
-CgAAAAAAAAAAAABjc29ja19hbGxvYzogdHhfY2ggWzB4JXhdLCBscG9ydCBbMHgleF0sIGNvb2tp
-ZSBbJTA4eF0KAAAAAAAAAAAAY3NvY2tfYWxsb2M6IGF2YWlsYWJsZSBbJXVdLCBuY3NvY2sgWyV1
-XSwgcG9zOmF0aWQgWzB4JXhdLCBjc2tfZmMgWzB4JXhdLCBjc2tfZmMtPmZsb3djX2lkIFsweCV4
-XSwgc3BvcnQgWyV1XQoAAGl0dF90b190YXNrX2lkeDogdGFnIFsweCUwOHhdLCBoaSBbJXVdLCBs
-byBbJXVdLCBubWFza2JpdHMgWyV1XSwgdGFza19pZHggWyV1XQoAV0FUQ0hET0c6IE5vIHRlbXBl
-cmF0dXJlIHNlbnNvciBhdmFpbGFibGUuCgAAAAAAV0FUQ0hET0c6IEFjdGl2YXRpbmcKAAAAAAAA
-AAAAAABXQVRDSERPRyAtIEVuYWJsZSBhY3Rpb24gJXUgdGltZSAldQoAAAAAAAAAAAAAAABXQVRD
-SERPRyAtIERpc2FibGUgYWN0aW9uICV1CgAAAFdBVENIRE9HOiBEZS1hY3RpdmF0aW5nCgAAAAAA
-AAAAcG9ydFsldV0gc2V0IFBBVVNFIFBBUkFNUzogcHBwZW4gJXUgdHhwZSAlI3ggcnhwZSAlI3gK
-AAAAAAAAAAAAAG1wc19saW5rX3VwWyV1XSBhY2FwcyAlI3ggKDgwMi4zICUjeCkgKyBscGFjYXBz
-ICUjeCA9PiAlI3gKAAAAAABmb2lzY3NpIGNvbm5fZmMgWzB4JXhdLCBmbG93Y19zY2hlZGNsIFsw
-eCV4XSwgaW5nX2NoIFsweCV4XSwgZWdyX2NoIFsweCV4XQoAAAAAAGwyZGV2X25vdGlmeSB3aXRo
-IHVua25vd24gZmxhZyBbMHgleF0KAAAAAAAAAAAAAEZDb0UgRkNCIGxpbmtkb3duOiBpb19yZXEg
-MHgleCV4IGlxaWQgMHgleCBmbG93aWQgMHgleCBvcCAweCV4CgBjYW5jZWwgZmNiOiV4IHNjYjol
-eCBzdGF0ZToleAoAAFJERVYgbXNnIGZsb3djOiV4IHN0YXRlIDB4JXggZXZlbnQgMHgleAoAAAAA
-AAAAAHZuMnZuOiBwb3J0IDB4JXggZGlkOjB4JXgleCV4IFVQCgAAAAAAAAAAAAAAAAAAAHZuMnZu
-OiBwb3J0IDB4JXggZGlkOjB4JXgleCV4IERPV04KAAAAAAAAAAAAAAAAAGZjX3NlbmRfYWxsb2Nf
-Y3BsOiBmYWlsZWQgdG8gc2V0dXAgZmlsdGVyIGN0dXBsZQoAAAAAAAAAAAAAAAAAAABmY29lX2Nv
-bXB1dGVfY3R1cGxlIDB4JXg6JXgKAAAAAGNvbXB1dGVfY3R1cGxlKCk6IGZhaWxlZCB0byBzZXR1
-cCBmaWx0ZXIgY3R1cGxlCgAAAAAAAAAAAAAAAAAAAABmY29lX2NvbXB1dGVfY3R1cGxlIHZsYW4g
-JXggdmlpZCAleCBwb3J0ICV4IG1wc19pZHggJXgKAAAAAAAAAAAAY2hfY2xfcmF0ZVsldS8ldV06
-IGNhcHBlZCBkZWZpY2l0X2luY3IgZnJvbSByZXF1aXJlZCAldSB0byAldTsgcmF0ZSAldSAoZWZm
-ICV1KSBkZWZpY2l0X21heCAldQoARENCWDogc3VtIG9mIHJhdGVzIG9uIGFsbCBjbGFzc2VzIG11
-c3QgYmUgMTAwIChhY3R1YWw6ICV1KQoAAAAAAGZjX3NlbmRfYWxsb2NfY3BsOiBmYWlsZWQgdG8g
-c2V0dXAgZmlsdGVyIGN0dXBsZQoAAAAAAAAAAAAAAAAAAABmY29lX2NvbXB1dGVfY3R1cGxlIDB4
-JXg6JXgKAAAAAGNvbXB1dGVfY3R1cGxlKCk6IGZhaWxlZCB0byBzZXR1cCBmaWx0ZXIgY3R1cGxl
-CgAAAAAAAAAAAAAAAAAAAABGQ29FIEZDRiB0aW1lcjogZmxvd2Mgc3RhdGUgMHgleCwgcG9ydCAw
-eCV4ICxmY2YgMHgleCwgZmxvd2NfaWQgMHgleAoAAAAAAAAAAAAAAHdvcmthcm91bmQxMzcyMzog
-ZGV0ZWN0ZWQgV1IgQCAweCUwOHggb2Ygc2l6ZSAldSBieXRlcywgZHJpYmJsaW5nIGl0IGluICV1
-IGJ5dGVzIGF0IGEgdGltZQoAAAAAAHJpX3dyX2luaXRbJXVdOiBtc3MgJXUgaXMgbm90IDgtYnl0
-ZSBhbGlnbmVkCgAAAGNvcmVfcHJvZ3JhbV90Y2I6IHRpZCAlI3ggdF9zdGF0ZSAlI3ggcmN2X2Fk
-diAweCUwOHggcmN2X3NjYWxlICUjeCB0eF9tYXggJSN4IHJjdl9ueHQgJSN4IGF0aWQgJSN4CgAA
-AAAAAAAAAAAAAAAJb3B0MCAlI3gleCBvcHQyICUjeCBpcHY2ICUjeCBmbGFnc190aW1lciAweCUw
-OHgKAAAAAAAAAAAAAAAAAAAAb2ZsZF9jb25uZWN0aW9uX3dyOiBjb25uZWN0aW9uIHdpdGggNS10
-dXBsZSBscCAweCUwNHggZnAgMHglMDR4IGxpcCAweCUwOHglMDh4IHBpcCAweCUwOHglMDh4IGZp
-bHRlciAweCUwOHggZXhpc3RzIEAgTEUgaW5kZXggJXUKAAAAAAAAAAAAAAAAAAAAb2ZsZF9jb25u
-ZWN0aW9uX3dyOiBjb25uZWN0aW9uIHdpdGggNS10dXBsZSBscCAweCUwNHggZnAgMHglMDR4IGxp
-cCAweCUwOHggcGlwIDB4JTA4eCBmaWx0ZXIgMHglMDh4IGV4aXN0cyBAIExFIGluZGV4ICV1CgAA
-AAAAAABvZmxkX2Nvbm5lY3Rpb25fd3I6IGNvbm5lY3Rpb24gd2l0aCA1LXR1cGxlIGxwIDB4JTA0
-eCBmcCAweCUwNHggbGlwIDB4JTA4eCUwOHggcGlwIDB4JTA4eCUwOHggZmlsdGVyIDB4JTA4eAoA
-AAAAb2ZsZF9jb25uZWN0aW9uX3dyOiBjb25uZWN0aW9uIHdpdGggNS10dXBsZSBscCAweCUwNHgg
-ZnAgMHglMDR4IGxpcCAweCUwOHggcGlwIDB4JTA4eCBmaWx0ZXIgMHglMDh4CgAAAAAAAAAAAAAA
-AElRRkxJTlQgcGZuICV1IHZmbiAldTogaXFpZCAldSB0b28gbGFyZ2UgKG1heCAldSkKAAAAAAAA
-AAAAAAAAAABJUUZMSU5UIHBmbiAldSB2Zm4gJXU6IGlxaWQgJXUgbm90IGFsbG9jYXRlZAoAAABJ
-UUZMSU5UIHBmbiAldSB2Zm4gJXU6IGZsMGlkICV1IHRvbyBsYXJnZSAobWF4ICV1KQoAAAAAAAAA
-AAAAAAAASVFGTElOVCBwZm4gJXUgdmZuICV1OiBmbDBpZCAldSBub3QgYWxsb2NhdGVkCgAASVFG
-TElOVCBwZm4gJXUgdmZuICV1OiBmbDFpZCAldSB0b28gbGFyZ2UgKG1heCAldSkKAAAAAAAAAAAA
-AAAAAElRRkxJTlQgcGZuICV1IHZmbiAldTogZmwxaWQgJXUgbm90IGFsbG9jYXRlZAoAAElRRkxJ
-TlQgcGZuICV1IHZmbiAldTogZmwxaWQgJXUgaXMgdmFsaWQgYnV0IG5vdCBmbDBpZCAldQoAAAAA
-AABJUUZMSU5UIHBmbiAldSB2Zm4gJXU6IGZsMWlkICV1IGlzIHZhbGlkIGJ1dCBoZWFkZXIgc3Bs
-aXQgZmVhdHVyZSBpcyBub3QgZW5hYmxlZAoAAAAAAAAAAAAAAAAAAABod191bHB0eF93b3JrYXJv
-dW5kX3ByMTY5NDlfZW5hYmxlZF9wZjogcGYgJXUgZW5hYmxlZCAldQoAAAAAAAAAaHdfdWxwdHhf
-d29ya2Fyb3VuZF9wcjE2OTQ5X2VuYWJsZWRfdmZpZDogdmZpZCAldSBlbmFibGVkICV1CgAAAEVR
-IHBmbiAldSB2Zm4gJXU6IGNyZWF0aW5nIEVUSCBlcWlkICV1IHdpdGggcGVuZGluZyBXUihzKSAo
-bnVtX2J5dGVzICV1IGFuZCBmbGFncyAweCUwOHgKAAAAAAAAAEVRIHBmbiAldSB2Zm4gJXU6IGNy
-ZWF0aW5nIENUUkwgZXFpZCAldSB3aXRoIHBlbmRpbmcgV1IocykgKG51bV9ieXRlcyAldSBhbmQg
-ZmxhZ3MgMHglMDh4CgAAAAAAAEVRIHBmbiAldSB2Zm4gJXU6IGVxaWQgJXUgdG9vIGxhcmdlICht
-YXggJXUpCgAAAEVRIHBmbiAldSB2Zm4gJXU6IGVxaWQgJXUgbm90IGFsbG9jYXRlZAoAAAAAAAAA
-AGh3X2NpbV90cF93b3JrYXJvdW5kMTM3MjNfZW5hYmxlOiBwb3J0ICV1IHByb3RvY29sIDB4JXgg
-ZW4gJXUgY3VycmVudCAweCV4IHdvcmthcm91bmRfcHIxMzcyMyAweCV4IG5leHQgMHgleAoAAABk
-Y2J4X3BvcHVsYXRlX2N0cmwgY29kZSBpbmNvbXBsZXRlCgAAAAAAAAAAAAAAAAB2aV90Y2FtX3Jh
-dyBpZHggJXUgbWFjIDB4JTA0eCAlMDh4CgAAAAAAAAAAAAAAAABwb3J0X2JsaW5rX2xlZF9yZXN0
-b3JlCgAAAAAAAAAAAHBvcnRfYmxpbms6IGJsaW5rZHVyPTB4JXggYmxpbmtfcmVmY250CgAAAAAA
-AAAAAHBvcnRfYmxpbms6IAlibGlua19yZWZjbnQ9MHgleAoAcG9ydF9ibGluazogCWJsaW5rX3Jl
-ZmNudD0weCV4CgBtaWlfYWR2X2ZjWyV1XTogcmNhcHMgMHgleAoAAAAAAG1paV9hZHZfc3BlZWRb
-JXVdOiByY2FwcyAweCV4CgAAbWlpX2luaXRbJXVdOiBhY2FwcyAweCV4CgAAAAAAAABwb3J0WyV1
-XTogZ2F2ZSB1cCBmaXhpbmcgZXJyb3JzISEhCgAAAAAAAAAAAAAAAABtaWlfYW5yZXN0YXJ0WyV1
-XTogYWNhcHMgMHgleAoAAGh3X3hnbV9wb3J0X2xwYmsgcG9ydCAldSBwdHlwZSAlI3ggYWN0aW9u
-ICUjeAoAAHBvcnRfY21kX2hhbmRsZXI6IHVua25vd24gdS5kY2IudHlwZSAweCV4CgAAAAAAAHBv
-cnRbJXU6MHglMDJ4OjB4JTAyeF06IGwxY2ZnLCBpbnZhbGlkIHJlcXVlc3QsIHBjYXBzIDB4JXgg
-YWNhcHMgMHgleCByY2FwcyAweCV4CgAAAAAAAAAAAAAAAAAAAHBvcnRbJXU6MHglMDJ4OjB4JTAy
-eF06IGwxY2ZnLCBwY2FwcyAlI3ggYWNhcHMgJSN4IHJjYXBzICUjeCBtY2FwcyAlI3gKAAAAAAAA
-AAAAcG9ydFsldToweCUwMng6MHglMDJ4XTogbDFjZmcsIG1kaSBpc3N1ZSBwY2FwcyAweCV4IGFj
-YXBzIDB4JXggcmNhcHMgMHgleAoAAAAAAABwb3J0WyV1OjB4JTAyeDoweCUwMnhdOiBsMWNmZywg
-Y2Fubm90IGZvcmNlIG5vL211bHRpcGxlIHNwZWVkKHMpLCBwY2FwcyAweCV4IGFjYXBzIDB4JXgg
-cmNhcHMgMHgleAoAAAAAAAAAAAAAAAAAZXRoX2Zsb3djX2hhbmRsZXJbMHgleF06IGZsYWdzIDB4
-JTA4eCBudW1fYnl0ZXMgJXUgc2NoZWRjbCAweCV4IC0+IDB4JXgKAAAAAAAAAAB0YXNrX2lkeF90
-b19pdHQ6IHRhc2tfaWR4IFsldV0sIGhpIFsldV0sIGxvIFsldV0sIG5tYXNrYml0cyBbJXVdLCBz
-d190YWcgWzB4JTA4eF0sIHBwb2RfaWR4IFslZF0KAAAAAAAAAAAAAAAAAAAAc2NzaV9jbWQ6IHJl
-Y2VpdmVkIFRNRiBvcCBbMHgleF0gZnVuYyBbMHgleF0gb24gY29ubiBbMHgleF0gdGhyb3VnaCBj
-b21tYW5kIHBhdGguCgAAAAAAAAAAAAAAAAAAc2NzaV9jbWQ6IGNvbm5fZmMgWzB4JXhdLCBzdGF0
-ZSBbMHgleF0sIHNlc3NfZmMgWzB4JXhdIGluIHJlY292ZXJ5LiBTa2lwcGluZyBpc3Rhc2tfZmMg
-WzB4JXhdIGZyb20gVFguCgAAAAAAAAAAAHNjc2lfcmVhZDogY29ubl9mYyBbMHgleF0sIHN0YXRl
-IFsweCV4XSwgc2Vzc19mYyBbMHgleF0gaW4gcmVjb3ZlcnkuIFNraXBwaW5nIGlzdGFza19mYyBb
-MHgleF0gZnJvbSBUWC4KAAAAAAAAAABzY3NpX3dyaXRlOiBjb25uX2ZjIFsweCV4XSwgc3RhdGUg
-WzB4JXhdLCBzZXNzX2ZjIFsweCV4XSBpbiByZWNvdmVyeS4gU2tpcHBpbmcgaXN0YXNrX2ZjIFsw
-eCV4XSBmcm9tIFRYLgoAAAAAAAAAZGNieF9jb250cm9sX3NtWyV1XSBDT05UUk9MX0xJTktVUAoA
-AAAAAAAAAAAAAAAAZGNieF9jb250cm9sX3NtWyV1XSBDT05UUk9MX1VQREFURV9EQ0JYX1RMVgoA
-AAAAZGNieF9jb250cm9sX3NtWyV1XSBDT05UUk9MX1BFRVJfTk9UX0FEVkVSVElTRV9EQ0JYCgAA
-AAAAAAAAAAAAAGRjYnhfY29udHJvbF9zbVsldV0gQ09OVFJPTF9VUERBVEVfT1BFUl9WRVJTSU9O
-CgAAAAAAAAAAAAAAAAAAAABkY2J4X2NvbnRyb2xfc21bJXVdIENPTlRST0xfUFJPQ0VTU19QRUVS
-X1RMVgoAAABkY2J4X2NvbnRyb2xfc21bJXVdIENPTlRST0xfQUNLX1BFRVIKAAAAAAAAAAAAAABk
-Y2J4X2llZWVfdmFsaWRhdGVbJXVdIGVycm9yIChvdWkgJSN4IHN1YnR5cGUgJSN4IGxlbiAlI3gp
-CgAAAAAAZGNieF9jZWVfdmFsaWRhdGVbJXVdIGVycm9yCgAAAABwcm9jZXNzX2RoY3Bfb3B0czog
-cm9vdCBwYXRoIGxlbiBbJWRdIGJ5dGVzCgAAAABuZXRpZl9wcm9jZXNzX2RoY3Bfb3B0czogbDJk
-ZXZfZmMtPmZsb3djX2lkIFsweCV4XSwgTVNHX1RZUEUgWyVkXSwgZGhjdHh0LT5zdGF0ZSBbJWRd
-CgAAAAAAAAAAAABpY21wX3JlY3Y6IGwyZGV2X2ZjLT5mbG93Y19pZCBbMHgleF0sIHBpZCBbMHgl
-eF0sIGljbXAgdHlwZSBbMHgleF0KAAAAAAAAAAAAAAAAAEFCVFMgQUNDIGF3YWl0aW5nIFBSTEkg
-UnNwOiBmbG93Y19pZCAweCV4IG94X2lkIDB4JXggcnhfaWQgMHgleCBpcWlkIDB4JXgKAAAAAAAA
-cG9ydCAweCV4LCBzdGF0ZSAweCV4LCBjb21tYW5kIGZhaWxlZCByZXRyaWVzIDB4JXgKAAAAAAAA
-AAAAAAAAAGFycF9yZWN2OiBpcGlkIFsweCV4XSwgaW5fYWRkci5hZGRyIFsweCV4XSwgc2lwIFsw
-eCV4XSwgcmlwIFsweCV4XSwgYXJwX29wIFsweCV4XQoAAAAAAAAAAAAAAAAAAGNobmV0X2FycF9y
-ZWN2OiBpcCBjb25mbGljdCBkZXRlY3RlZAoAAAAAAAAAAAAAAGNobmV0X2FycF9yZWN2OiBwaWQg
-WyV1XSwgdmxhbiBbMHgleF0sIGFycCBvcCBbMHgleF0sIHNpcCBbMHgleF0sIHJpcCBbMHgleF0K
-AAAASW52YWxpZCBkaWQ6eCUyeCUyeCUyeCByY3ZkIG9uIHBvcnQ6JWQuRHJvcGluZyBmcmFtZQoA
-AAAAAAAAAAAAAHJjdDp4JXggc2lkOnglMnglMnglMnggcmN2ZCBvbiBmbG93YzolZC5Ecm9waW5n
-IGZyYW1lCgAAAAAAAAAAAABjc29ja19mcmVlOiBzaXplb2YoY3NrX2ZjLT51LmNzb2NrKSBbJXVd
-LCBieXRlcwoAAAAAAAAAAAAAAAAAAAAAR290IENPTk5fRVhJU1QgZm9yIHhpZDoweCV4LCB0YWc6
-MHgleCwgcmV0cnlpbmcuCgAAAAAAAAAAAAAAAAAAAGh3X3VscHR4X3dvcmthcm91bmRfcHIxNjk0
-OV9lbmFibGVkX3BmX2lxOiBpcSAldSBlbmFibGVkICV1IChwZiAldSkKAAAAAAAAAAAAAAAAY3Nv
-Y2tfcGVlcl9jbG9zZTogY3NrX2ZjLT5mbG93Y19pZCBbMHgleF0sIHRjYl9mYy0+Zmxvd2NfaWQg
-WzB4JXhdLCBjc2tfZmMtPmZsb3djX3N0YXRlIFsweCV4XSwgdGNiX2ZjLT5mbG93Y19zdGF0ZSBb
-MHgleF0KAAAAAABjc29ja19wZWVyX2Nsb3NlOiBjc2tfZmMtPmZsb3djX2lkIFsweCV4XSwgY3Nr
-X2ZjLT5mbG93Y19zdGF0ZSAgWzB4JXhdCgAAAAAAAAAAAHRjcF9jbHNfYWJydF9ycGw6IHRjYiB0
-aWQgWzB4JTA2eF0sIGZsb3djX3R5cGUgWzB4JXhdLCBjcGxvcCBbMHgleF0gCgAAAAAAAAAAAAAA
-Y2hfcmF0ZVsldV06IGNhcHBlZCB0aWNrIGZyb20gcmVxdWlyZWQgJXUgdG8gc3VwcG9ydGVkICV1
-OyByYXRlICV1IChlZmYgJXUpIGRlZmljaXRfaW5jciAldSB0aWNrICV1CgAAAAAAAAAAAAAAAHBr
-dHNjaGVkX2NoX3JsWyV1XTogY2hhbm5lbCBybCBub3QgYXZhaWxhYmxlIGluIGNvbmp1bmN0aW9u
-IHdpdGggZmxvdyBzaGFwaW5nCgAAcGt0c2NoZWRfY2hfcmxbJXVdOiByYXRlICV1IG1heCAldQoA
-AAAAAAAAAAAAAAAAcGt0c2NoZWRfY2xfd3JyWyV1OiV1XTogd2VpZ2h0ICV1CgAAAAAAAAAAAAAA
-AAAAZXFfcGFyYW1zWzB4JXg6MHgleF06IGRtYXEgMHgleCByZWFkICV1IHBmICV1IGVxaWRfYXBp
-ICV1IHJldCAlZAoAAAAAAAAAAAAAAAAAAABod19tYV9hZGRyX3RvX21lbV90eXBlX29mZjogTUEg
-YWRkcmVzcyAweCUwOHggaXMgbm90IG1hcHBlZAoAAAAAaHdfbWFfYWRkcl90b19tZW1fdHlwZV9v
-ZmY6IE1BIGFkZHJlc3MgMHglMDh4IG1hcHMgdG8gdHlwZSAldSBvZmZzZXQgMHgleAoAAAAAAABt
-ZW1fbWFsbG9jX3RlbXA6IGZhaWxlZCB0byBhbGxvY2F0ZSAldSBieXRlcywgcmV0dXJuaW5nIE5V
-TEwKAAAAbWVtX21hbGxvYzogZmFpbGVkIHRvIGFsbG9jYXRlICV1IGJ5dGVzLCByZXR1cm5pbmcg
-TlVMTAoAAAAAAAAAAGxlIGNvbmZpZ3VyYXRpb246IGhhc2ggbW9kZSByZXF1aXJlcyBhdCBsZWFz
-dCAxNiBlbnRyaWVzLCBuaGFzaCAldQoAAAAAAAAAAAAAAAAAbGUgY29uZmlndXJhdGlvbjogaGFz
-aCBtb2RlIHJlcXVpcmVzIGF0IGVudHJpZXMgdG8gYmUgYSBwb3dlciBvZiAyLCBuaGFzaCAldQoA
-AABsZSBjb25maWd1cmF0aW9uOiByZXF1ZXN0ZWQgJXUgdGNhbSBlbnRyaWVzIGJ1dCBvbmx5ICV1
-IGF2YWlsYWJsZSAobnJvdXRlICV1IG5jbGlwICV1IG5maWx0ZXIgJXUgbnNlcnZlciAldQoAAAAA
-bGUgY29uZmlndXJhdGlvbjogdGNhbSByZWdpb25zIG11c3QgaGF2ZSBtdWx0aXBsZSBvZiAzMiBl
-bnRyaWVzLCBucm91dGUgJXUgbmNsaXAgJXUgbmZpbHRlciAldSBuc2VydmVyICV1CgAAAAAAAGh3
-X3RwX3RjcF90dW5pbmdzOiB0dW5pbmcgZm9yIGNsdXN0ZXIgZW52aXJvbm1lbnQKAAAAAAAAAAAA
-AAAAAABod190cF90Y3BfdHVuaW5nczogdHVuaW5nIGZvciBMQU4gZW52aXJvbm1lbnQKAABod190
-cF90Y3BfdHVuaW5nczogdHVuaW5nIGZvciBXQU4gZW52aXJvbm1lbnQKAABod190cF90Y3BfdHVu
-aW5nczogbWFudWFsIHR1bmluZwoAAAAAAAAAAAAAAAAAAABfaHdfY2ltX2ZsYXNoX21lbWNweTog
-bWVtY3B5WCBzdGFydAoAAAAAAAAAAAAAAABfaHdfY2ltX2ZsYXNoX21lbWNweTogZHN0IDB4JTA4
-IG9mZnNldCAweCUwOHggc2l6ZSAldSwgd2lkdGggb2YgJXUgaXMgbm90IHN1cHBvcnRlZAoAAAAA
-AAAAAAAAAABfaHdfY2ltX2ZsYXNoX21lbWNweTogbWVtY3B5WCBlbmQKAAAAAAAAAAAAAAAAAABj
-b25maWd1cmF0aW9uIGZpbGUgcGFyc2VyIGVuY291bnRlcmVkIGVycm9yIEAgbGluZSAldToKAAAA
-AAAAAAAAaHdfaTJjX3RyYW5zYWN0aW9uOiBuZGF0YSAldSBhZGRyX29wIDB4JXggZGF0YVswXSAw
-eCV4IGRpZmYgJXUKAGh3X2kyY190cmFuc2FjdGlvbjogbmRhdGEgJXUgYWRkcl9vcCAweCV4IGRh
-dGFbMF0gMHgleCBkaWZmICV1IGRwb3MgJXUgY29udCAldSBmYWlsZWQgd2l0aCBlcnIgJWQKAAAA
-AAAAAAAAAAAAAABpMmMgdHJhbnNhY3Rpb24gZmFpbGVkIHRvIGNvbXBsZXRlCgAAAAAAAAAAAAAA
-AABIT1NUIFBBR0VfU0laRSBbMHglMGx4XSB0b28gc21hbGwsIG1pbiBbMHglMGx4XSByZXF1aXJl
-ZAoAAAAAAAAAcGFnZSBzaXplIFslbHVdIG1pc21hdGNoCgAAAAAAAABQQUdFIHNpemUgJWx1IHVu
-c3VwcG9ydGVkLCBkZHAgZGlzYWJsZWQKAAAAAAAAAABIb3N0IHBhZ2Vfc2l6ZSAlbHUsIGRkcF9p
-ZHggJXUKAEZDb0UgRERQIGluaXQ6IGZjb2UgbGxpbWl0IDB4JXgsIGZjb2UgdWxpbWl0IDB4JXgg
-Z2JsIGxsaW1pdCAweCV4IGdibCB1bGltaXQgMHgleCBwY2JzeiAleAoAAAAAAEZDb0UgRERQIGlu
-aXQ6IGZjb2UgcHBvZCBvZmYgMHgleCwgZmNvZSBzdCBwcG9kIGFkZHIgMHgleCBmY29lIG51bSBw
-cG9kcyAweCV4CgAAZmNvZSB4Y2hnIG1nciBpbml0OiBOdW1iZXIgb2YgRERQIGV4Y2hhbmdlcyBm
-b3IgRkNvRSBpcyAleAoAAAAAAGZjb2UgeGNoZyBtZ3IgaW5pdDogTnVtYmVyIG9mIHR1bm5lbCBl
-eGNocyBmb3IgRkNvRSBpcyAleAoAAAAAAABmY29lX2wydF9pbml0OiBObyB1bHB0eCBjcmVkaXQg
-Y2g6WyV1XQoAAAAAAAAAAABmY29lX2wydF9pbml0OiBjaDpbJXVdIGwydF9pZHggWyV1XQoAAAAA
-AAAAAAAAAABubyBsMnQgZW50cmllcyBjb25maWd1cmVkOyBmb3JjaW5nICV1IGVudHJpZXMsIHN0
-YXJ0aW5nIGF0ICV1CgAAZGNieF9pZWVlX2NvbnN0cnVjdFsldV0gZXRzICV1IHBmYyAldSBhcHAg
-JXUKAAAAZGNieF90aW1lb3V0WyV1XQoAAAAAAAAAAAAAAAAAAABkY2J4X3J1bl92ZXJzaW9uX3Nt
-WyV1XSBEQ0JYX1ZFUl9TVEFURV9SVU5fSUVFRQoAAAAAAAAAAAAAAAAAAAAAZGNieF9ydW5fdmVy
-c2lvbl9zbVsldV0gRENCWF9WRVJfU1RBVEVfUlVOX0NFRQoAZGNieF9ydW5fdmVyc2lvbl9zbVsl
-dV0gRENCWF9WRVJfU1RBVEVfUlVOX05PTkUKAAAAAAAAAAAAAAAAAAAAAHBvcnRbJXVdIGxpbmsg
-dXAgKCV1KSAoc3BlZWQgJSN4IGFjYXBzICUjeCBscGNhcHMgJSN4KQoAAAAAAAAAAABwb3J0X2hz
-c19zaWdkZXRbJXVdOiBoc3Nfc2lnZGV0IGNoYW5nZWQgdG8gMHgleAoAAAAAAAAAAAAAAAAAAAAA
-cG9ydFsldV0gcmVzZXR0aW5nIEtSCgAAAAAAAAAAAABRU0ZQIG1vZHVsZSB1bnBsdWcgLSByZWlu
-aXRpYWxpemluZyByeF9sb3MgIHRvIDB4ZmYKAAAAAAAAAAAAAAAAZ3Bpb19xc2ZwX21vZHVsZV91
-cGRhdGU6IGNoYW5nZWQgcnhfbG9zIGZyb20gMHgleCB0byAweCV4CgAAAAAAAGdwaW9fcXNmcF9t
-b2R1bGVfdXBkYXRlOiBjaGFuZ2VkIHR4X2RpcyBmcm9tIDB4JXggdG8gMHgleAoAAAAAAABDYWxj
-dWxhdGlvbiBvdXQgb2YgYm91bmRzIGZ1cmluZyBpbml0OiAlI3ggJSN4ICUjeAoAAAAAAAAAAAAA
-AAAAaHdfc2dlX21hbWVtX2luaXQ6IGVuY291bnRlcmVkIGVycm9yICVkCgAAAAAAAAAAX2h3X3Rw
-X3BnbW5ndDogdHhfcGFnZV9tYXggJXUgcnhfcGFnZV9tYXggJXUgcHN0cnVjdHMgJXUgc2l6ZSAl
-dQoAAAAAAAAAAAAAAAAAAABtcGFydGl0aW9uX290aGVyc190b3RhbDogZGRwICV1IGRkcF9pc2Nz
-aSAldSBzdGFnICV1IHBibCAldSBycSAldSBycXVkcCAldSAtPiAldQoAAAAAAAAAAAAAAAAAAABf
-bXBhcnRpdGlvbl9iYW5rc19tY1g6IG5iYW5rc19wbXR4ICV1ICgldU1CKSBuYmFua3NfcG1yeCAl
-dSAoJXVNQikgbmJhbmtzX290aGVycyAldSAoJXVNQikgbmJhbmtzX2Z3ICV1ICgldU1CKQoAX21w
-YXJ0aXRpb25fYmFua3NfbWMxOiBuYmFua3NfcG10eCAldSAoJXVNQikgbmJhbmtzX290aGVycyAl
-dSAoJXVNQikgbmJhbmtzX2Z3ICV1ICgldU1CKQoAAAAAAAAAX21wYXJ0aXRpb25fYmFua3NfbWMw
-OiBuYmFua3NfcG1yeCAldSAoJXVNQikgbmJhbmtzX290aGVycyAldSAoJXVNQikKAAAAAAAAAAAA
-AABtZW1fbWFsbG9jX2ludGVybmFsOiBmYWlsZWQgdG8gYWxsb2NhdGUgJXUgYnl0ZXMsIHJldHVy
-bmluZyBOVUxMCgAAAAAAAAAAAAAAAAAAAGh3X2VkY19iaXN0WyV1XTogYmlzdF9jbWRbMHglMDh4
-XSBhZGRyIDB4JXggbGVuIDB4JXgKAAAAAAAAAAAAAABod19lZGNfYmlzdFsldV06IGRvbmUsIGVu
-Y291bnRlcmVkICV1IGVycm9ycyBvbiBmaXJzdCBhbmQgJXUgZXJyb3JzIG9uIHNlY29uZCBhdHRl
-bXB0ICgldWdicHMpCgBtZW1faW5pdF9jYWNoZXM6IGNhY2hlX3NpemUgJXUgZmxvd2NfYnVmX3Rj
-Yl9jYWNoZV9zaXplICV1IGJ1ZmxsNjRfY2FjaGVfc2l6ZSAldQoAAAAAAAAAAAAAAAAAAABxdWV1
-ZXNfcGVyX3BhZ2U6IHBmICV1IGhhcyBhIGJhcnNpemUgb2YgJXUtYnl0ZXMsIG9jcV9zaXplICV1
-CgAAc2dlIHJlcXVpcmUgbmVxICV1IG5pcSAldSByb3VuZGluZyB0byAldSAldQoAAAAAbXBhcnRp
-dGlvbl9wbXR4OiBtIDB4JTA4eCBzaXplICV1CgAAAAAAAAAAAAAAAAAAbXBhcnRpdGlvbl9wbXJ4
-OiBtIDB4JTA4eCBzaXplICV1CgAAAAAAAAAAAAAAAAAAbXBhcnRpdGlvbl9lZGMgKG5vIGV4dG1l
-bSk6IG0gMHglMDh4IHNpemUgJXUKAAAAbXBhcnRpdGlvbl9lZGNfZXN0aW1hdGU6IGh3IG1vZHVs
-ZXMgcmVxdWlyZSAlZCBieXRlcyBpbiBFREMKAAAAAGNobmV0X2J5ZTpsMmRldl9mYy0+Zmxvd2Nf
-aWQgWzB4JXhdLCBsMmRldl9mYy0+Zmxvd2NfcGNpZV9wZm4gWzB4JXhdLCBsMmRldl9mYy0+Zmxv
-d2NfcGNpZV92Zm4gWzB4JXhdLCBwb3J0IFsweCV4XQoAAAAAAAAAAAAAAAAAY2huZXRfYnllOnZs
-YW5kZXZfZmMtPmZsb3djX2lkIFsweCV4XSwgdmxhbmRldl9mYy0+Zmxvd2NfcGNpZV9wZm4gWzB4
-JXhdLCB2bGFuZGV2X2ZjLT5mbG93Y19wY2llX3ZmbiBbMHgleF0sIHBvcnQgWzB4JXhdCgAAAAAA
-AABjcl9tb2R1bGVfcnhfbG9zWyV1XTogcnhfbG9zIGNoYW5nZWQgdG8gJXUKAAAAAABwZm4gJXUg
-dmZuICV1IGhhcyBwbmR0eG5zICV1IGFmdGVyIDEwMG1zCgAAAAAAAABiYWQgbWFpbGJveCBjbWQ6
-IHBmbiAweCV4IHZmbiAweCV4OyBvcGNvZGUgMHgleCA+IExBU1RDMkUgMHgleAoAbWFpbGJveCBj
-bWQgbm90IHlldCBzdXBwb3J0ZWQ6IHBmbiAweCV4IHZmbiAweCV4OyBvcGNvZGUgMHgleAoAAGJh
-ZCBtYWlsYm94IGNtZDogcGZuIDB4JXggdmZuIDB4JXg7IG9wY29kZSAweCV4IGlzIHZhbGlkIHBv
-c3QgZGV2aWNlIGluaXQgb25seQoAYmFkIG1haWxib3ggY21kOiBwZm4gMHgleCB2Zm4gMHgleDsg
-b3Bjb2RlIDB4JTAyeCByYW1hc2sgMHgleCBjbWQgcmFtYXNrIDB4JXgKAABiYWQgbWFpbGJveCBj
-bWQ6IHBmbiAweCV4IHZmbiAweCV4OyBvcGNvZGUgMHglMDJ4IGxlbjE2IDB4JXggdmVyc3VzIGV4
-cGVjdGVkIGxlbjE2IDB4JXgKAAAAAAAAAABpbnN1ZmZpY2llbnQgY2FwcyB0byBwcm9jZXNzIG1h
-aWxib3ggY21kOiBwZm4gMHgleCB2Zm4gMHgleDsgcl9jYXBzIDB4JXggd3hfY2FwcyAweCV4IHJl
-cXVpcmVkIHJfY2FwcyAweCV4IHdfY2FwcyAweCV4CgAAAAAAAAAAAGluc3VmZmljaWVudCBjYXBz
-IHRvIHByb2Nlc3MgbWFpbGJveCBjbWQ6IHBmbiAweCV4IHZmbiAweCV4OyByX2NhcHMgMHgleCB3
-eF9jYXBzIDB4JXggcmVxdWlyZWQgcl9jYXBzIDB4JXggd19jYXBzIDB4JXgKAAAAAAAAAAAAZG93
-bmxvYWRfc3JhbTogZXJyb3IsIHJldCAlZAoAAABkb3dubG9hZF90Y2FtOiBlcnJvciwgcmV0ICVk
-CgAAAFZQRCByZWdpb24gaXMgdG9vIHNtYWxsIChTRVJDRkdfU1JfUEZOVlBEU0laRSAweCV4KQoA
-AAAAAAAAAAAAAABjZl9wcmVwOiBlcnJvciwgcmV0ICVkCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACC
-AAABIAAAAAAAAACCAAABAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG
-gIAAAAAAAAAAAAAAAACAAAAAAAAAAAACgAAAAAAAAAAAAAIAAwAAAAABYAgAAAAAAwAAAAAAAAAA
-AAAAAwAAAAAAAAAAAAAAAgAAAAAAAAAAACAAAAAAAAAAAAAAAAEAA4AAAAAAAAAAAAAAAgAAAAAA
-AAAAACADgAAAAAAAAAAAABACgACAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAoAA
-AAAAAAAAAAAAAgAAAAAAAAAAAAAAAoAAAAAAAAAAAAEAAwAAAAAAAAAAAAACgwAAAAAAAAAAABAC
-gAAAAAAAAAAAADAAAwAAAAAAAAgAADAAAwAAAAAAAAAAADAFgwAAAAAAAAgAADAFgwAAAAAAAAAA
-ADAEgwAAAAAAAAgAADAEgwAAAAAAAAAAADADAwAAAAAAAAgAADADAwAAAAAAAAAAADgDAwAAAAAA
-AAAAADgFgwAAAAAAAAAAADgEgwAAAAAAAAAAADgAAwAAAAAAAAAAADQGggAAAAAAAAAAADwDggAA
-AAAAAAAAADwAAwAAAAAAAAgAADwAAwAAAAAAAAAAADwEgwAAAAAAAAAAADwFAwAAAAAAAAAAAD0E
-AwAAAAAAAAAAADwDgwAAAAAAAAAAACwAAgAAAAAAAAAAACwFggAAAAAAAAAAACwFAgAAAAAAAAAA
-ABAGgAAAAAAAAAAAABAGgsAAAAAAAAAAABAGgoAAAAAAAAAAAAAOggAAAAAAAAAAABAHgoAAAAAg
-AAAAAAAHggAAAAAgAAAAABAHAoAAAAAAAAAAABAHAoAAAAAAAAAAABAHAoAAAAAAAAAAAAAHAgAA
-AAAgAAAAABAXgwAAAAAAAAgAABAXgwAAAAAAAAgAABAAAAAAAAAAAAAAABAGA4AAAAAAAAAAAAAO
-AwAAAAAAAAAAABAGA0AAAAAAAAAAABAGAwAAAAAAAAAAABAGAAAAAAAAAAAAAAAGA4AAAAAAAAAA
-AAAGAwAAAAAAAAAAAAAOAgAAAAAAAAAAAAAOAgAAAAAAAAAAABAGAgAAAAAAAAAAABAGAgAAAAAA
-AAAAABAGAoAAAAAAAAAAABAGAoAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAIAAAAAAAAAAAAQAwAAAAAAAAgAAAAAAAAAAAAAAAAAAP//////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-/////////////////////////////////////////////////////////////////wAAACAAAAAA
-wAAAAAAAACAAAAAA4AAAAAAAAAACAAAAAAAAAEAAAAAAAAAAAAAAAAAAASEAAAAAAAAAAAABASAA
-AAAAAAAAAAAAAgAAAAQABAAAAAAFAAAABAAAAAAAAAAAAKAAAAAAgAAAAACAAEAAAAAAAAIAAACA
-ACAAAAAAAAIAAAEAQAAAAAAAAAAAAAEAQgAAAAAAAAAAAAAAIAAAAAAAAAAAAAIQIAAAAAAAAAAA
-AAIMAgAAAAAAAAAAAACFAgAAAAQAAAAAAACAQgAAAAAAAAAAAAIAIgAAAAAAAAAAAACAQQAAAAAA
-AAAAAACAQYAAAAAAAAAAAAIAIQAAAAAAAAAAAAAQIIAAAAAAAAAAAAIlAIAAAAAAAAAAAAAFAAAA
-AAAAAAAAAAiIBIAAAAAAAAAAAAiIBIAAAAAAAAAAAAiiAIAAAAAAAAAAAAiiAIAAAAAAAAAAAAij
-AIAAAAAAAAAAAAijAIAAAAAAAAAAAAikgIAAAAAAAAAAAAikgIAAAAAAAAAAAASkgMAAAAAAAAAA
-AASiAMAAAAAAAAAAAASjAMAAAAAAAAAAAASIBMAAAAAAAAAAAAAJAYAAAAAAAAAAAAIMAIAAAAAA
-AAAAAACIBMAAAAAAAAAAAACIBIAAAAAAAAAAAAILAIAAAAAAAAAAAACKgIAAAAAAAAAAAAALgIAA
-AAAAAAAAAACMAIAAAAAAAAAAAAIgEIAAAAAAAAAAAAIKAIAAAAAAAAAAAAIKgIAAAAAAAAAAAAAJ
-AoAAAAAAAAAAAAABAQAAAAAAAAAAAAABAUAAAAAAAAAAAAABAIAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAIAAAAAAAAAAAAAAgRAAAAAAAAAAAAAAgQgAAAAAAAAAAAAAgQQAAAAAAAAAAAAAgYAAAAAA
-AAAAAACAAMAAAAAAAAAAAACAAKAAAAAAAAAAAAAACAAAAAAAAAAAAACBgAAAAAAAAAAAAACBgIAA
-AAAAAAAAAACJgIAAAAAAAAAAAACJgMAAAAAAAAAAAAABggAAAAAAAAAAAAIBgAAAAAAAAAAAAAIB
-gIAAAAAAAAAAAABBgYAAAAAAAAAAAAIBgYAAAAAAAAAAAABJgYAAAAAAAAAAAAIJgYAAAAAAAAAA
-AAIBgQAAAAAAAAAAAABBgQAAAAAAAAAAACAAAAAAAAAAAAAAABAAAAIBAAAAAAAAABAAAAIAAAAA
-AAAAABAAAAAAAAAAAAAAAACAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-/////////////////////////////////////////////////////////////wAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAACACSAAAAAAAAAANmACAAQAAAAAAIAJIAAAAAAAAAA3IBJQRAAAAAAAAAAAAA
-AAAAAAADlgAgAEAAAAAACAAAAAIAiAOHAABWACAAQAAAAAAAAAAAAAAAAAAAA5YAIABAAAAAAAAA
-AAAAAAAAAAADlgAgAEAAAAAAAAAAAAAAAAAAAAOWACAAQAAAAAAAAAAAAAAAAAAAA5YAIABAAAAA
-AAgAAAACAIgDhQAAlgEgAEAAAAAAAAAAAAAAAAAAAAOWACAAQAAAAAAAAAAAAAAAAAAAA5YAIABA
-AAAAAAgAAAACAIgDhQAAlgEgAEAAAAAAAAAAAAAAAAAAAAOWACAAQAAAAAAAAAAAAAAAAAAAA5YA
-IABAAAAAAAgAAAACAIgDhQAAlgEgAEAAAAAAAAAAAAAAAAAAAAOWACAAQAAAAAAAAAAAAAAAAAIA
-A5YAJgRAAAAAAAhHIAEEAAACsgAC0gUgJEAAAAAAAAAAAAAAAAAAAAOWACAAQAAAAAAARyABBgyh
-grBAAZIEICRAAAAAAABHIAEEDKBCs4ACEgUgJEAAAAAACAAAAAIAiAOFAACWASAAQAAAAAAIAAAA
-AgCIA4UAAJYBIABAAAAAAAgAAAACAIgDhQAAlgEgAEAAAAAAAAAAAAAAAAAAAAOWACAAQAAAAAAN
-xRK6ArCA0xRUi+JKRiRAAAAAAAXFEroCt4DTFFSLYkmmJEAAAAAABcUSogawgNMUVIviSkYkQAAA
-AAANxRKiBreA0xRUi2JJpiRAAAAAAAXFEqIGsIDTFFSL4kpGJEAAAAAADcUSoga3gNMUVItiSaYk
-QAAAAAAFxRKiBrCA0xRUi+JKRiRAAAAAAA3FEqIGt4DTFFSLYkmmJEAAAAAACcQQoAIAgJAAAIti
-acYkQAAAAAABxBCgBrCAkwZUi2JpxiRAAAAAAAHEEKAGsICTBlSLYmnGJEAAAAAAAcUQuAawgJMW
-VItiSMYkQAAAAAAIoRCIAgCBWBIAC1IApiRAAAAAAAnAEJACsIADFlSKkgHGJEAAAAAACcAQuAaw
-gAMQlIviAkYkQAAAAAAJwBC4ArSAAxCUi2IBpiRAAAAAAAnAELgCtIADEJSLYgGmJEAAAAAACcAQ
-uAK0gAMQlItiAaYkQAAAAAAJwBC4ArSAAxCUi2IBpiRAAAAAAAGgEJAGtIADEJSLYgGmJEAAAAAA
-AcAQgAKwgAMUVIpSAMYkQAAAAAABwBCAArCAAxRUilIAxiRAAAAAAAHAEIACsIADFFSKUgDGJEAA
-AAAACEcgAQQAAAKyAALSBSAkQAAAAAAAgQAAAgCFWAdAC1IApiRAAAAAAACBAAACAIVYB0ALUgCm
-JEAAAAAAAAAAAAQAoEABgAHWACAAQAAAAAAAAAAABgChgABAAVYAIABAAAAAAAAAAAAEAKBAAYAB
-1gAgAEAAAAAACIEAAAIAhVmABAtSAKYkQAAAAAAJYUAAAAAAGAAAA0IBJqRAAAAAAAAAAAAAAAAA
-AAADlgAgAEAAAAAAAAAAAAQAoEABgAHWACAAQAAAAAAIAAAAAgCIA4cAA9YAJgRAAAAAAAgAAAAC
-AIgDhwAD1gAmBEAAAAAAAAAAAAAAAAAAAAOWACAAQAAAAAAAAAAAAAAAAAAAA5YAIABAAAAAAAAA
-AAAEAKBAAYAB1gAgAEAAAAAACcAQuAK0gAMQlItiAaYkQAAAAAAAAAAAAAAAAAIAA5YAJgRAAAAA
-AAAAAAAAAAAAAAADlgAgAEAAAAAACAAAAAIAiAOFAACWASAAQAAAAAAAAAAABACgQAGAAdYAIABA
-AAAAAAAAAAAEAKBAAYAB1gAgAEAAAAAAAAAAAAQAoEABgAHWACAAQAAAAAAIoRCIAgCBWBAACRIB
-piRAAAAAAAAAAAAEAKBAAYAB1gAgAEAAAAAAAAAAAAYAoYAAQAFWACAAQAAAAAAIAAAAAgCIA4VA
-CNICRiRAAAAAAAnFEqIClIjSEICLIkimJEAAAAAAAcAQgAakiAEFVItSAMYkQAAAAAAJwBCAAqSI
-AIVUi1IAxiRAAAAAAAnAEIAGtIgDARSLUgGmJEAAAAAADcAAAAKwgMMWVIviA0YkQAAAAAAAAAAA
-AAAAAAAAA5YAIABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAgAMAAEAAAAAgAAAgAmJEAAAAAAAEcwAAYDIAK3AAgCAcAkQAAAAAAIAwAAAgagCrUA
-CAIAxiRAAAAAAAAAAAAAAAAAAgAAAgAmJEAAAAAAACBQAAQAAAACAAACACYkQAAAAAAIYCAAhAAA
-AAAAAAYAIABAAAAAAAhgIACEAAAAAgEwAgAmJUAAAAAACGAAAAQAhAGABAQCAcYkwAAAAAABwAAA
-AkOAAwIMiAIBpiRAAAAAAAgAYAAEAAAAAgAAAgAmJEAAAAAACABgAAQAAAAAAAAEASAAQAAAAAAA
-AAAAAAAAAAAAAAQBIABAAAAAAAQIFIAGCgAABwFMAiCmJkAAAAAACIAAAAYAhAGABAgCAaYmQAAA
-AAAAQAAAAgCgAAJACAIBpiRAAAAAAAAAAAAAAAAAAgAAAgAmJEAAAAAABAAAAAKEAAMCiggCBKYk
-QAAAAAAAAAAAAAAAAAIAAAYBIEhAAAAAAAAgUAAEAAAAAgAAAgAmJEAAAAAACGAgAIQAAAACAAAG
-ACYEQAAAAAAIYCAAhAAAAAIAAAIBJiVAAAAAAAhgAAAEAIQBgAQEAgHGJMAAAAAACABgAAQAAAAA
-AAAEASAAQAAAAAAAAAAAAAAAAAAAAAIAJkxwAAAAAAAAAAAAAAAAAAAABgEgAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAABwAAACLSQBAkWBAIExiRAAAAAAAHAAAAItJAECRYEAgTGJEAA
-AAAABAh0gEwJAABQAFwCYeYkQAAAAAAMCHSARAAAAFIAQAJhJiRAAAAAAAgCEKAEAAAAAAEAAgAm
-JEAAAAAACAIQoAQAAAAAAQACACYkQAAAAAAECHQAQgEAAAcAiAJgxiRAAAAAAA3IFAACCQAABECc
-AmDmJEAAAAAACcgQgAa0kAQClIgCZcYkQAAAAAANyHQASLSQAwCUiAJgpiTAAAAAAA3IdABItJAD
-AJSIAmCmJMAAAAAACEcAAAQAAAAAAAACASAkQAAAAAAIRwAABAAAAAIAAAIFICRAAAAAAABHIAEM
-ByHCtwAIAgHAJEAAAAAAAEcgAQwHIcK3AAgCAcAkQAAAAAAARyABDAchwrcACAIBwCRAAAAAAAAA
-IAEIAIQABUCIAgHGJMAAAAAAAAAgAQgAhAAFQIgCAcYkwAAAAAAAACABCACEAAVAiAIBxiTAAAAA
-AAAAIAGGggABAsCIAgPGJMAAAAAAAAAgAYKCAAACwIgCA8YkwAAAAAAJwCABgqSAAQVAiAIBxiTA
-AAAAAAgAAAAMAIQABUCIAgHGJMAAAAAAAAAgAYaCAAECwIgCA8YkwAAAAAAAACABgoIAAADAiAIC
-piTAAAAAAAnAIAGCpIABBUCIAgHGJMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAIAAAABAAEJBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFtnbG9iYWxdCnJzc19nbGJfY29u
-ZmlnX21vZGU9YmFzaWN2aXJ0dWFsCnJzc19nbGJfY29uZmlnX29wdGlvbnM9dG5sbWFwZW4saGFz
-aHRvZXBsaXR6LHRubGFsbGxrcApyZWdbMHgxMDA4XT0weDQwODEwLzB4MjFjNzAKcmVnWzB4MTAw
-Y109MHgyMjIyMjIyMgpyZWdbMHgxMGEwXT0weDAxMDQwODEwCnJlZ1sweDEwNDRdPTQwOTYKcmVn
-WzB4MTA0OF09NjU1MzYKcmVnWzB4MTA0Y109MTUzNgpyZWdbMHgxMDUwXT05MDI0CnJlZ1sweDEw
-NTRdPTkyMTYKcmVnWzB4MTA1OF09MjA0OApyZWdbMHgxMDVjXT0xMjgKcmVnWzB4MTA2MF09ODE5
-MgpyZWdbMHgxMDY0XT0xNjM4NApyZWdbMHgxMGE0XT0weGEwMDBhMDAwLzB4ZjAwMGYwMDAKcmVn
-WzB4MTBhOF09MHgyMDAwLzB4MjAwMApzZ2VfdGltZXJfdmFsdWU9NSwxMCwyMCw1MCwxMDAsMjAw
-CnJlZ1sweDdkMDRdPTB4MDAwMTAwMDAvMHgwMDAxMDAwMApyZWdbMHg3ZDZjXT0weDAwMDAwMDAw
-LzB4MDAwMDcwMDAKcmVnWzB4N2RjMF09MHgwZTJmODg0OQpmaWx0ZXJNb2RlPWZyYWdtZW50YXRp
-b24sbXBzaGl0dHlwZSxwcm90b2NvbCx2bGFuLHBvcnQsZmNvZQpmaWx0ZXJNYXNrPXByb3RvY29s
-LGZjb2UKdHBfcG1yeD0zNAp0cF9wbXJ4X3BhZ2VzaXplPTY0Swp0cF9ucnhjaD0wCnRwX3BtdHg9
-MzIKdHBfcG10eF9wYWdlc2l6ZT02NEsKdHBfbnR4Y2g9MAp0cF9tdHVzPTg4LDI1Niw1MTIsNTc2
-LDgwOCwxMDI0LDEyODAsMTQ4OCwxNTAwLDIwMDIsMjA0OCw0MDk2LDQzNTIsODE5Miw5MDAwLDk2
-MDAKcmVnWzB4MTkxNjhdPTB4MDQwMjAxMDAKW2Z1bmN0aW9uIjAiXQpudmY9MTYKd3hfY2Fwcz1h
-bGwKcl9jYXBzPWFsbApudmk9MQpuaXFmbGludD04Cm5ldGhjdHJsPTgKbmVxPTE2Cm5leGFjdGY9
-OApjbWFzaz1hbGwKcG1hc2s9MHgxCltmdW5jdGlvbiIxIl0KbnZmPTE2Cnd4X2NhcHM9YWxsCnJf
-Y2Fwcz1hbGwKbnZpPTEKbmlxZmxpbnQ9OApuZXRoY3RybD04Cm5lcT0xNgpuZXhhY3RmPTgKY21h
-c2s9YWxsCnBtYXNrPTB4MgpbZnVuY3Rpb24iMiJdCm52Zj0xNgp3eF9jYXBzPWFsbApyX2NhcHM9
-YWxsCm52aT0xCm5pcWZsaW50PTgKbmV0aGN0cmw9OApuZXE9MTYKbmV4YWN0Zj04CmNtYXNrPWFs
-bApwbWFzaz0weDQKW2Z1bmN0aW9uIjMiXQpudmY9MTYKd3hfY2Fwcz1hbGwKcl9jYXBzPWFsbApu
-dmk9MQpuaXFmbGludD04Cm5ldGhjdHJsPTgKbmVxPTE2Cm5leGFjdGY9OApjbWFzaz1hbGwKcG1h
-c2s9MHg4CltmdW5jdGlvbiI0Il0Kd3hfY2Fwcz1hbGwKcl9jYXBzPWFsbApudmk9MjgKbmlxZmxp
-bnQ9MTcwCm5ldGhjdHJsPTEwMApuZXE9MjU2Cm5leGFjdGY9NDAKY21hc2s9YWxsCnBtYXNrPWFs
-bApuZXRob2ZsZD0xMDI0Cm5yb3V0ZT0zMgpuY2xpcD0zMgpuZmlsdGVyPTQ5Ngpuc2VydmVyPTQ5
-NgpuaGFzaD0xMjI4OApwcm90b2NvbD1uaWNfdm0sb2ZsZCxyZGRwLHJkbWFjLGlzY3NpX2luaXRp
-YXRvcl9wZHUsaXNjc2lfdGFyZ2V0X3BkdQp0cF9sMnQ9MzA3Mgp0cF9kZHA9Mwp0cF9kZHBfaXNj
-c2k9Mgp0cF9zdGFnPTMKdHBfcGJsPTEwCnRwX3JxPTEzCltmdW5jdGlvbiI1Il0Kd3hfY2Fwcz1h
-bGwKcl9jYXBzPWFsbApudmk9NApuaXFmbGludD0zNApuZXRoY3RybD0zMgpuZXE9NjQKbmV4YWN0
-Zj00CmNtYXNrPWFsbApwbWFzaz1hbGwKbnNlcnZlcj0xNgpuaGFzaD0yMDQ4CnRwX2wydD0xMDIw
-CnByb3RvY29sPWlzY3NpX2luaXRpYXRvcl9mb2ZsZAp0cF9kZHBfaXNjc2k9Mgppc2NzaV9udGFz
-az0yMDQ4CmlzY3NpX25zZXNzPTIwNDgKaXNjc2lfbmNvbm5fcGVyX3Nlc3Npb249MQppc2NzaV9u
-aW5pdGlhdG9yX2luc3RhbmNlPTY0CltmdW5jdGlvbiI2Il0Kd3hfY2Fwcz1hbGwKcl9jYXBzPWFs
-bApudmk9NApuaXFmbGludD0zNApuZXRoY3RybD0zMgpuZXE9NjYKbmV4YWN0Zj0zMgpjbWFzaz1h
-bGwKcG1hc2s9YWxsCm5oYXNoPTIwNDgKdHBfbDJ0PTQKcHJvdG9jb2w9ZmNvZV9pbml0aWF0b3IK
-dHBfZGRwPTEKZmNvZV9uZmNmPTE2CmZjb2VfbnZucD0zMgpmY29lX25zc249MTAyNApbZnVuY3Rp
-b24iMTAyMyJdCnd4X2NhcHM9YWxsCnJfY2Fwcz1hbGwKbnZpPTQKY21hc2s9YWxsCnBtYXNrPWFs
-bApuZXhhY3RmPTgKbmZpbHRlcj0xNgpbZnVuY3Rpb24iMC8qIl0Kd3hfY2Fwcz0weDgyCnJfY2Fw
-cz0weDg2Cm52aT0xCm5pcWZsaW50PTQKbmV0aGN0cmw9MgpuZXE9NApuZXhhY3RmPTQKY21hc2s9
-YWxsCnBtYXNrPTB4MQpbZnVuY3Rpb24iMS8qIl0Kd3hfY2Fwcz0weDgyCnJfY2Fwcz0weDg2Cm52
-aT0xCm5pcWZsaW50PTQKbmV0aGN0cmw9MgpuZXE9NApuZXhhY3RmPTQKY21hc2s9YWxsCnBtYXNr
-PTB4MgpbZnVuY3Rpb24iMi8qIl0Kd3hfY2Fwcz0weDgyCnJfY2Fwcz0weDg2Cm52aT0xCm5pcWZs
-aW50PTQKbmV0aGN0cmw9MgpuZXE9NApuZXhhY3RmPTQKY21hc2s9YWxsCnBtYXNrPTB4NApbZnVu
-Y3Rpb24iMy8qIl0Kd3hfY2Fwcz0weDgyCnJfY2Fwcz0weDg2Cm52aT0xCm5pcWZsaW50PTQKbmV0
-aGN0cmw9MgpuZXE9NApuZXhhY3RmPTQKY21hc2s9YWxsCnBtYXNrPTB4OApbcG9ydCIwIl0KZGNi
-PXBwcCxkY2J4CmJnX21lbT0yNQpscGJrX21lbT0yNQpod209MzAKbHdtPTE1CmR3bT0zMApkY2Jf
-YXBwX3RsdlswXT0weDg5MDYsZXRoZXJ0eXBlLDMKZGNiX2FwcF90bHZbMV09MHg4OTE0LGV0aGVy
-dHlwZSwzCmRjYl9hcHBfdGx2WzJdPTMyNjAsc29ja2V0bnVtLDUKW3BvcnQiMSJdCmRjYj1wcHAs
-ZGNieApiZ19tZW09MjUKbHBia19tZW09MjUKaHdtPTMwCmx3bT0xNQpkd209MzAKZGNiX2FwcF90
-bHZbMF09MHg4OTA2LGV0aGVydHlwZSwzCmRjYl9hcHBfdGx2WzFdPTB4ODkxNCxldGhlcnR5cGUs
-MwpkY2JfYXBwX3RsdlsyXT0zMjYwLHNvY2tldG51bSw1Cltwb3J0IjIiXQpkY2I9cHBwLGRjYngK
-YmdfbWVtPTI1CmxwYmtfbWVtPTI1Cmh3bT0zMApsd209MTUKZHdtPTMwCmRjYl9hcHBfdGx2WzBd
-PTB4ODkwNixldGhlcnR5cGUsMwpkY2JfYXBwX3RsdlsxXT0weDg5MTQsZXRoZXJ0eXBlLDMKZGNi
-X2FwcF90bHZbMl09MzI2MCxzb2NrZXRudW0sNQpbcG9ydCIzIl0KZGNiPXBwcCxkY2J4CmJnX21l
-bT0yNQpscGJrX21lbT0yNQpod209MzAKbHdtPTE1CmR3bT0zMApkY2JfYXBwX3RsdlswXT0weDg5
-MDYsZXRoZXJ0eXBlLDMKZGNiX2FwcF90bHZbMV09MHg4OTE0LGV0aGVydHlwZSwzCmRjYl9hcHBf
-dGx2WzJdPTMyNjAsc29ja2V0bnVtLDUKW2ZpbmldCnZlcnNpb249MHgxNDI1MDAxYwpjaGVja3N1
-bT0weDVjZWFiNDFlCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABbZ2xvYmFsXQpyc3NfZ2xiX2NvbmZpZ19tb2Rl
-PWJhc2ljdmlydHVhbApyc3NfZ2xiX2NvbmZpZ19vcHRpb25zPXRubG1hcGVuLGhhc2h0b2VwbGl0
-eix0bmxhbGxsa3AKcmVnWzB4MTAwOF09MHg0MDgxMC8weDIxYzcwCnJlZ1sweDEwMGNdPTB4MjIy
-MjIyMjIKcmVnWzB4MTBhMF09MHgwMTA0MDgxMApyZWdbMHgxMDQ0XT00MDk2CnJlZ1sweDEwNDhd
-PTY1NTM2CnJlZ1sweDEwNGNdPTE1MzYKcmVnWzB4MTA1MF09OTAyNApyZWdbMHgxMDU0XT05MjE2
-CnJlZ1sweDEwNThdPTIwNDgKcmVnWzB4MTA1Y109MTI4CnJlZ1sweDEwNjBdPTgxOTIKcmVnWzB4
-MTA2NF09MTYzODQKcmVnWzB4MTBhNF09MHhhMDAwYTAwMC8weGYwMDBmMDAwCnJlZ1sweDEwYThd
-PTB4MjAwMC8weDIwMDAKc2dlX3RpbWVyX3ZhbHVlPTUsMTAsMjAsNTAsMTAwLDIwMApyZWdbMHg3
-ZDA0XT0weDAwMDEwMDAwLzB4MDAwMTAwMDAKcmVnWzB4N2Q2Y109MHgwMDAwMDAwMC8weDAwMDA3
-MDAwCnJlZ1sweDdkYzBdPTB4MGUyZjg4NDkKZmlsdGVyTW9kZT1mcmFnbWVudGF0aW9uLG1wc2hp
-dHR5cGUscHJvdG9jb2wsdmxhbixwb3J0LGZjb2UKZmlsdGVyTWFzaz1wcm90b2NvbCxmY29lCnRw
-X3Btcng9MzAKdHBfcG1yeF9wYWdlc2l6ZT02NEsKdHBfbnJ4Y2g9MAp0cF9wbXR4PTUwCnRwX3Bt
-dHhfcGFnZXNpemU9NjRLCnRwX250eGNoPTAKdHBfbXR1cz04OCwyNTYsNTEyLDU3Niw4MDgsMTAy
-NCwxMjgwLDE0ODgsMTUwMCwyMDAyLDIwNDgsNDA5Niw0MzUyLDgxOTIsOTAwMCw5NjAwCnJlZ1sw
-eDE5MTY4XT0weDA0MDIwMTAwCltmdW5jdGlvbiIwIl0Kd3hfY2Fwcz1hbGwKcl9jYXBzPWFsbApu
-dmk9MjgKbmlxZmxpbnQ9MTcwCm5ldGhjdHJsPTk2Cm5lcT0yNTIKbmV4YWN0Zj00MApjbWFzaz1h
-bGwKcG1hc2s9YWxsCm5ldGhvZmxkPTEwMjQKbnJvdXRlPTMyCm5jbGlwPTMyCm5maWx0ZXI9NDgK
-bnNlcnZlcj0zMgpuaGFzaD0wCnByb3RvY29sPW5pY192bSxvZmxkLHJkZHAscmRtYWMsaXNjc2lf
-aW5pdGlhdG9yX3BkdSxpc2NzaV90YXJnZXRfcGR1CnRwX2wydD0zMDcyCnRwX2RkcD0yCnRwX2Rk
-cF9pc2NzaT0yCnRwX3N0YWc9Mgp0cF9wYmw9NQp0cF9ycT03CltmdW5jdGlvbiIxIl0Kd3hfY2Fw
-cz1hbGwKcl9jYXBzPWFsbApudmk9NApuaXFmbGludD0zNApuZXRoY3RybD0zMgpuZXE9NjYKbmV4
-YWN0Zj0zMgpjbWFzaz1hbGwKcG1hc2s9YWxsCm5oYXNoPTAKcHJvdG9jb2w9ZmNvZV9pbml0aWF0
-b3IKdHBfZGRwPTIKZmNvZV9uZmNmPTE2CmZjb2VfbnZucD0zMgpmY29lX25zc249MTAyNApbZnVu
-Y3Rpb24iMTAyMyJdCnd4X2NhcHM9YWxsCnJfY2Fwcz1hbGwKbnZpPTQKY21hc2s9YWxsCnBtYXNr
-PWFsbApuZXhhY3RmPTgKbmZpbHRlcj0xNgpbZnVuY3Rpb24iMC8qIl0Kd3hfY2Fwcz0weDgyCnJf
-Y2Fwcz0weDg2Cm52aT0xCm5pcWZsaW50PTQKbmV0aGN0cmw9MgpuZXE9NApuZXhhY3RmPTQKY21h
-c2s9YWxsCnBtYXNrPTB4MQpbZnVuY3Rpb24iMS8qIl0Kd3hfY2Fwcz0weDgyCnJfY2Fwcz0weDg2
-Cm52aT0xCm5pcWZsaW50PTQKbmV0aGN0cmw9MgpuZXE9NApuZXhhY3RmPTQKY21hc2s9YWxsCnBt
-YXNrPTB4MgpbcG9ydCIwIl0KZGNiPXBwcCxkY2J4CmJnX21lbT0yNQpscGJrX21lbT0yNQpod209
-MzAKbHdtPTE1CmR3bT0zMApkY2JfYXBwX3RsdlswXT0weDg5MDYsZXRoZXJ0eXBlLDMKZGNiX2Fw
-cF90bHZbMV09MHg4OTE0LGV0aGVydHlwZSwzCmRjYl9hcHBfdGx2WzJdPTMyNjAsc29ja2V0bnVt
-LDUKW3BvcnQiMSJdCmRjYj1wcHAsZGNieApiZ19tZW09MjUKbHBia19tZW09MjUKaHdtPTMwCmx3
-bT0xNQpkd209MzAKZGNiX2FwcF90bHZbMF09MHg4OTA2LGV0aGVydHlwZSwzCmRjYl9hcHBfdGx2
-WzFdPTB4ODkxNCxldGhlcnR5cGUsMwpkY2JfYXBwX3RsdlsyXT0zMjYwLHNvY2tldG51bSw1Cltw
-b3J0IjIiXQpkY2I9cHBwLGRjYngKYmdfbWVtPTI1CmxwYmtfbWVtPTI1Cmh3bT0zMApsd209MTUK
-ZHdtPTMwCmRjYl9hcHBfdGx2WzBdPTB4ODkwNixldGhlcnR5cGUsMwpkY2JfYXBwX3RsdlsxXT0w
-eDg5MTQsZXRoZXJ0eXBlLDMKZGNiX2FwcF90bHZbMl09MzI2MCxzb2NrZXRudW0sNQpbcG9ydCIz
-Il0KZGNiPXBwcCxkY2J4CmJnX21lbT0yNQpscGJrX21lbT0yNQpod209MzAKbHdtPTE1CmR3bT0z
-MApkY2JfYXBwX3RsdlswXT0weDg5MDYsZXRoZXJ0eXBlLDMKZGNiX2FwcF90bHZbMV09MHg4OTE0
-LGV0aGVydHlwZSwzCmRjYl9hcHBfdGx2WzJdPTMyNjAsc29ja2V0bnVtLDUKW2ZpbmldCnZlcnNp
-b249MHgxNDI1MDAxYwpjaGVja3N1bT0weGFkNGMxNzRmCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-====
Property changes on: user/ngie/bsnmp_cleanup/sys/dev/cxgbe/firmware/t4fw-1.15.28.0.bin.uu
___________________________________________________________________
Deleted: fbsd:nokeywords
## -1 +0,0 ##
-yes
\ No newline at end of property
Index: user/ngie/bsnmp_cleanup/sys/dev/cxgbe/firmware/t5fw-1.15.28.0.bin.uu
===================================================================
--- user/ngie/bsnmp_cleanup/sys/dev/cxgbe/firmware/t5fw-1.15.28.0.bin.uu (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/dev/cxgbe/firmware/t5fw-1.15.28.0.bin.uu (nonexistent)
@@ -1,10510 +0,0 @@
-/*-
- * Copyright (c) 2016 Chelsio Communications, Inc.
- * 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.
- */
-begin-base64 644 t5fw
-AAEEjwEPHAAAAQQJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAABHAEfwSIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAENoZWxzaW8gRlcgUlVOTUVNIERFQlVHPTAgKEJ1aWx0IEZyaSBGZWIgMjYgMTA6
-MTg6NTQgUFNUIDIwMTYgb24gdm5jNC5hc2ljZGVzaWduZXJzLmNvbTovaG9tZS9maXJtd2FyZS9j
-dnMvZnctcmVsZWFzZSksIFZlcnNpb24gVDV4eCAwMS4wZi4xYy4wMAAAAAAAAAAAAAAAAN8SmEJg
-AMgAH/zhSOEAe/AAEAAA4QAwuHj///8f/OFAgAAAAeEAe3AAABAAH//89CAAAADhAZwE4QUAAAAC
-AEDhBQgAAAYAQAACAAwABgAM4QUABAAMAACAAAEC4QB7POEAe0ThAHvk4gAAAAABAADhAHuQIAAA
-AAAAgADhAHsAAABAAeEAe5wAAEAAREREQuAAAADjAARzREREQOMACAAgAAJcAAAAAB//k+AAAAAA
-H/+T5AAAAAAf/5PoAAAAAB//k+wf/8AAAAAAAAAAAADAABH/zSIKh5IQghAS/8wT/8yTIBL/zBP/
-zIQgBDMBkyAR/8oS/8uSEBH/yhL/y5IQEf/KAfQxAOQxAAUxAQIAEv/IAucxAhYAEf/GgRABAV/A
-IQIRAckTEf/EEv/EkhAR/8QS/8SSEGAAEQAAEf++Ev/CkhAR/74S/8GSEIEQEf/AwCCSERL/v5IS
-wCCSExL/vpIQghAC8lBlL/cR/7zHL5IQEf+7khAS/7sT/7uTIMAykyET/7qTIoIiEv+5E/+5kyAj
-IiEU/7gEMwHJOBP/t4MwA4MUCDMRFP+1pDOTIRP/qZMiYAAIwjCTIRP/ppMiEv+wkCCQIZAikCOQ
-JJAlkCaQJ5AokCmQKpArkCyQLZAukC8gJhAgJhGCIhL/o8AwLTcwLTc0LTc4LTc8Iz0BcjPtAAIA
-Ev+gIwoALzcALzcQLzcgLzcwIz0BcjPtAAIAEv+VwDAoNzAoNzQoNzgoNzwjPQFyM+0S/5TAMCc3
-ACc3ECc3ICc3MCM9AXIz7RL/jxX/jxb/j8Aw1yAFZgFgABQAAAQ2BQACANMP0w8FMwxuOxQHRxQH
-BEN2MeYENgUFMwxvO+0AAgAS/4MV/4EjCgACJwIHBEMEPgUFMwwHRxRvO/ADAgAS/33JLoMghCGF
-IrwidDsOhlC0VZYwtDN0M/Rj/+YAZT/iZV/fEv9xwDIDLgUDAgAS/2jAMCg3QCg3RCg3SCg3TCM9
-AXIz7QACABL/ay0nAMARAUkxAEgxAQIAwAAU/2gE0jEV/2eUUBT/ZwTTMRX/ZpRQFP9mBNQxFf9m
-lFAU/2UE1TEV/2WUUBD/ZQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-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
-IAkpqCAJKaggCSliIAkpqCAJKWIgCSmoIAkpniAJKWIgCSliIAkpYiAJKWIgCSliIAkpqCAJKWIg
-CSliIAkpYiAJKWIgCSliIAkpqCAJKaggCSmoIAkpqCAJKaggCSmoIAkpqCAJKaggCSliIAkpYiAJ
-KWIgCSliIAkpYiAJKWIgCSliIAkpYiAJKWIgCSliIAkpYiAJKWIgCSliIAkpYiAJKWIgCSliAAIC
-BQUICAsLDg4RERQUFxcaGh0dICAjIyYmKSksLC8vMjI1NTg4OzsAAAAAAAAAAQMREQgIEAkDAQAA
-AAAAACAE55ggAbsUIABaKCABmZQgAbfYIAGzcCABewQgA/90H//AMB//6PwgAMcAH//b3CAAhWwg
-AHfwAAAAAAAAAAAgAZswIACj6AAAAAAAAAAAH//VlB//x2gf/8T8H//DECAAc/ggAGywIABrMCAA
-vJAf/+PEIAchsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAcHkIAGr
-yCAAzzwgAM5gH//vgB//0Ggf/80QIAChuCAFZ4AgAT0QIAEfMCABBvAgAPvIIADtwCAA4/AgANFY
-IATo8CAEMFAgATLYIARUGCAB6twgAIUoAAAAACAAz5wgBdtgIADEQCABokwgABIgIAC36CAADVgg
-A1tcH//ysCAAz1ggBDLoAAAAAAAAAAAgA3vcIABMACAAQmggAEr4AAAAACAAVeAgAFP8IABRsAAA
-AAAgAFnoIAE2iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAV4AgBOc4IABM
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAFkoIAOSTCAAWDgAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAQAAAAEAAAACAsAAAAgAxSgCAAAACADFKwIAAAAIAMUuAoAAAAgAxTEDAAAACAD
-FNASAAAAIAMU4A0AAAAgAxT0DgAAACADFQQTAAAAIAMVFAoAAAAgAxUoDgAAACADFTQYAAAAIAMV
-RA0AAAAgAxVgDgAAACADFXAQAAAAIAMVgBIAAAAgAxWUDgAAACADFagQAAAAIAMVuBEAAAAgAxXM
-CgAAACADFeALAAAAIAMV7A0AAAAgAxX4FAAAACADFggKAAAAIAMWIA8AAAAgAxYsBgAAACADFjwG
-AAAAIAMWRAYAAAAgAxZMBgAAACADFlQGAAAAIAMWXAkAAAAgAxZkBgAAACADFnAEAAAAIAMWeAYA
-AAAgAxaACwAAACADFogLAAAAIAMWlAQAAAAgAxZ4BAAAACADFqAJAAAAIAMWqAkAAAAgAxa0AAAA
-AAAAAAANAAAAIAMWwAoAAAAgAxbQBgAAACADFtwCAAAAIAMW5AMAAAAgAw/sAQAAACADFugAAAAA
-AAAAANdqpHjox7dWJCBw28G9zu71fA+vR4fGKqgwRhP9RpUBaYCY2ItE96///1uxiVzXvmuQESL9
-mHGTpnlDjkm0CCH2HiViwECzQCZeWlHptseq1i8QXQJEFFPYoeaB59P7yCHhzebDNwfW9NUNh0Va
-FO2p4+kF/O+j+GdvAtmNKkyK//o5Qodx9oFtnWEi/eU4DKS+6kRL3s+p9rtLYL6/vHAom37G6qEn
-+tTvMIUEiB0F2dTQOebbmeUfonz4xKxWZfQpIkRDKv+Xq5Qjp/yToDllW1nDjwzMkv/v9H2FhF3R
-b6h+T/4s5uCjAUMUTggRofdTfoK9OvI1KtfSu+uG05EHDBEWBwwRFgcMERYHDBEWBQkOFAUJDhQF
-CQ4UBQkOFAQLEBcECxAXBAsQFwQLEBcGCg8VBgoPFQYKDxUGCg8VH//AAAAEACAgB15AIAdiAB/8
-4gAf/62UH/+x8B//rSSBgAAAgQAAAAQAAAgP////H/+xAAOAAAAf/7DwAP/4AAEAAAAAEAAAgQQB
-AIEEAAABBAAAAQQBAAAH//+AAAAAKgAAAB//hPAGAAAAH//P8CAEbLwCAAAAgBAAAIAAAAVBQAAA
-QUABAIMAAAEf/5l8IAMN/AwAAAD//7//v////x//lDD//wAA//8A//AAAAD/f///H/zi5ABAAAAf
-/6l0AAEAAAAA//8f/5Tg///QJB//Z1wf/ODoIAdcHP//wOAf/2cQH/9ntB/83gAf/65MH/+fpAAA
-CHjg//4A4QGSAB//mhAA////H/+uYB//ngAEQQAIBAEACMAAAADABAAApQAAADAAAAAf/5yE4QP+
-AOEEbgAAAIWEAACFgCALeNAgC3mQIAt5ECALeVAf/67wAAAcoAAA/4AgB16QIAdcDCALedDhAC4A
-H/+u5B//qeQf/6+gH/+rEAAAFuAf/66Q4AAAoOEAMLgAAIAA4QBgEAAAQADhAwgA4QNIAOEDiADh
-A8gA4QAQCB/84UDhAHtwH/+1LB//tSQf/OAIH/+1KB//tUQf/7U8H/+1QB//tVwf/7VUH/+1WB/8
-4gAf/60kH/+q6B//ngAgAdL0H/+vvAAA/4AAAB2AH/+UMB//sQCBgAAABAAACIKAAACBAAAAIAMN
-8AwAAAAf/5oMH/+Z/B//n5z//7//v////wQBAAjDAAAAH/+x8B//rZQf/7DwIAsDYAAPQkAgAwvo
-IAuEQCADC8ggAB8YIAsC0CAAFHAgCwOQIAsCoCALAwAgCwMwIANNcCADC/gQAAAAAoAAAO4AAAAg
-C4RwAAALAAAAYAAAYAAAYAAAAAAAht0gCwPAIAAmTCoAAAAgAEPwIAsEMCADV5AgCwRgIAsEoCAL
-BNAgABkkIAMMCCALBVADYAAAIAuEkCALBdAf/6/IH/+vxB//sCggCwhwBQAAAIP/AAAAEAAAIAAt
-TCADDUgf/4lAH/+E8B//hvRnRSMB782riZi63P4QMlR2H/+AAAAAPyggAw/sz////yALCWA/////
-AgAAAEAAAAD//3//IAsKgCAARmggCwqwIAsLIAgAAAAA////IAsLkPf///8gCw4A//7//yALGzCA
-AAAAAABAACADDfQAAP//AACAACALHAAgCxyAIAscwCALHRAgCxxQ//v//w/2gAAgCyFwIAshoAAB
-AAAABAAAIAuMEB//rjAgAFXgIABXPCAAU/wgCyIwIABRsCALIsAgCyMQIAsjoOAAAAAgCyQgIAsj
-4FMAAAAgCyRAUgAAACALJIBRAAAAIAH0AB//qxAgCycQIAsncCALJ0AgCynwH/+uYCALKkAf/54I
-H/+uDCALLAAUAAAAgAAAAngAAACAAAAGgAAABQAACgCAALAAAOMwkv//8ACAALEA4QGaAAACAAAg
-CyvAH/+bhAAAfkAf/65EAP/AAAEAAAAoAAAAJgAAACALLHAf/7CkH/+qoCALLsAf/7HIOwAACA4A
-AADAAAAA0AAAAB//gFAAAB+aAACJFB/84uQAAAhQBYAAAAYAAAAf/6pkKwAAACAAb0Af/N4AH/+r
-/DUAAAADgAAAA0AAAAf///8AP///gEAAAAgP//8f////IAAAAAAAwAAf/64oPQAAAB//rMQHAAAA
-gQQBAIEEAAAf/6xkAAA6mAAAD/8AQwAAAAAIAAQAAAAgC5HgH/+yEB//tKAf/5l84QB6ACBgAAAf
-/6yUH/+eEB//ngQgC5IQAAMHgCALkoAf/5vkACAAAABAAAAAAAkAAAAwAP/8+H+j/7sAo/+6AA0A
-AADgAwAAg/+2AA////8P//gA/wAAAA///gEgC5LAIAsvsCALL+AgC5NQAA8AAAAKAAD//wAPH/+e
-GAP/wACD/8AAIAuT0CALlEAf/68QH/+ygB//smD/YPAAH/+AYB//k/AEgAAIAEQAAP8f//8AwAAA
-AYDCAAAAgQD/v/////8AAACAAAAAAAl8H/ziDA8AAAAgCzAgH/+usAAACHwf/6+0H/+f+B//mfgf
-/4BwIAdcYAAAJxAf/9sQIAua8B//rxQf/5343q2+7yADCNA0AAAAPwAAAB//r3wAmQAAAACJBhAA
-BwIBwIAAmQAAAB//soQAiAAIgoAAAR//shgf/7AIAA8D/wMRAAADFQAAIAs0cB//rhQgC5tAIAs0
-0CALNSAgCzWwIAs0oCAA9qAgCzWAIAs3UCALN4AgCzfQIAs4MCAA/BApAAAAIAECQCALm7AgC5wQ
-IAEL0B//sSTw8PDw/wD/AKqqqqrMzMzMH/+0kAAAIGAf/7KYAAP//wAAJ/8gARPwIAucgCAEWVgf
-/66UH/+u5AAJAAAAACAAAABIAIIAAAAgATaQIAuc8CAAKOwgC6GwIAuh4CALPvAgCz7AIAs/ACAL
-P2AgCz/gIAs/MCALP4AgCz+wIAtBgCALQdAgC5/wIAugECALQgAgC0JQIAugsCALoNAgC0GwIAuh
-ACALoEAgC6BwIAtCgCALo4AgC6QQIAuisCALosAgC6JAIAujICALooAgC6JQIAujACALo5AgC6NQ
-IAuj0AAAH0AgC0UAIAtFICALRUAACQAIH/+xjDAAAAAf/7KMH/+vVCALR3AgC0dQ///3/yALR9Ag
-BF8UAACD/yAHYEggB2FAFaAAAB//rLAAAAgGAAAP/gAAiMx/AAAA8AAAACALp1AADAAAH/+x2CAL
-p3AgC6awIAunECALp7AgC6XQIAumYAAA4AAgC6RAIAuk8P/8AAAgC6YwH/+bmAAEA/8KAAAAH/+w
-tDMAAADhAAAAH/+y1AP/4AB///8AAAD//gA/9pAf/7HgAAAfqAP/8AAgC5EwIAuQ8CALkVAf/7Pg
-IAtIQB//q0waAAAAIAtIkCABj1wf/7HcAA///x//rKAf/7GQH/+sfB//r0Qf/65IIAuoMB//rfgf
-/6q4H/+srCAHXAgf/6kwIAtLgMAEAAAf/6y4H/+yUB//sbggC6lAIAtLwB//rDDgAQAAH/+foCAL
-qoAgC0wAIADBEB//n5ggAL4EIAuqACALqlAf/5u4IAtOAB//n6QgC1qw4P/+ACALgZAf/5XsIAtn
-0CALaGAf/7GUIAdekCALa4AgC2vQIAtrECALa0BIAAAAIAHLqB//rAwgAc2oH/+p5B//mmwf/6zU
-H/+qLAAAF7AAABX8IAdefB//qpThAF4AH/+rtABNNaAAAEi54QAuAB//rODhAwYA4QAOAOAFAAAD
-/wAAH/+qNCADDfwf/L//PAAAAAAH//+DAAAAH/+p7CAB76ggC4AQH/+vJOAGAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAACBgAAAAAAAAP////////////////////8f//wUH//8FB//+9gf//vY
-H//72B//+9gf//QgH//4kB//9rgf//a4H//2uCAHI5gAAAAAAAAAAAAAAAAAAAAAIAcmCCAHJggA
-AAAAAAAAAAAAAAAAAAAAIAcjmCAHI5gf//mMH//5jB//+Ywf//mMH//5jB//+YwAAAAAIAHUFAAA
-AAAAAAAAAAAAAAAAAAACAQAAAAAAAAAAAAAAAAAABAAAAAAAAACBgAAAAAAAEAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAKABHyfxPyf9MPA+YxAQIA
-FvJ9F/J+d2sGkGC0Zndj+FQPC1XmgA8UAGP/+QAAAGwQCIoiKCAHiTD7Cv8oIAFAMPWhYmkAAUww
-KiAWmRP4FgQgMgRasPS1GgIAAFCwWD2ViBT0omhg/xBYMBryaRnyaSyiSvmSfyFXADcgJqJJCWYB
-+WwAAVEANaAd8mMt0IAMhxH/8mIWACBV8PxyOiBuAmtwDU0UpN3/jwoABgJrcP/ylyoAhe8QLnI5
-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
-IANfkSADX1IgA11NIANdTSADXU0gA11NIANdTSADXU0gA16+IANeSyADXbEgA12aIANdiyADXXsB
-EBgBAAEAAAEQGAEABAAAAAAAAAAAAAAgBFRCIARUpSAEVC8gBFSlIARULyAEVKUgBFRGIARURiAE
-VI0gBFR1IARUXQAAAAAgBFuSIARbkiAEWZ4gBFuSIARZniAEW28gBFtHIARZniAEWnkgBFmeIARZ
-niAEWnAgBFmeIARbkiAEWZ4gBFmeIARbkiAEWasDAQACAAAAACAE3NggBN58IATfoyAE3NggBN+b
-IATfhiAE3NggBNzYIATc2CAE3NggBNzYIATc2CAE3NggBNzYIATc2CAE3NggBN95IATfbCAE3Ngg
-BNzYIATc2CAE3NggBNzYIATc2CAE3NggBNzYIATc2CAE3NggBNzYIATc2CAE3NggBNzYIATeZiAE
-3NggBN5gIATeYCAE3NggBN5gIATeYCAE308gBN5gAAAAAAAAAAAAAAAAIAT+KCAE/iggBP2KIAT+
-KCAE+o0gBP4gIAT+ACAE+o0gBPqNIAT6jSAE+o0gBPqNIAT9biAE/iggBPqNIAT9biAE/igAAAAA
-AAAAAAAAAAAgBQz4IAULdCAFD1MgBQ8TIAUO2yAFDqAgBQ6AIAULyCAFDl8gBQ4jIAUNyyAFDXsg
-BQ0zIAUNEAEQGAEAAgAAARAYAQACAAAAAAAAAAAAACAFvY8gBbkRIAW9YyAFvTcgBb0KIAW89SAF
-uTMgBblKIAW83CAFuX8gBblrIAW5MyAFuX8gBbkzIAW5MyAFuTMgBb2PAAAAAAAAAAAAAAAAAAAA
-ACAGCjAgBgP4IAYDoCAGAMwgBfywAAAAAAAAAAAgBgPgIAYD2iAGA9ogBgPaIAYD4CAGA9ogBgPa
-IAYD2iAGA9ogBgPaIAYD2iAGA9ogBgPgIAYD2iAGA9ogBgPaIAYD2iAGA9ogBgPaIAYD2iAGA9og
-BgPaIAYD2iAGA9ogBgPaIAYD2iAGA9ogBgPaIAYD2iAGA9ogBgPaIAYD2iAGA9ogBgPaIAYD2iAG
-A9ogBgPaIAYD2iAGA9ogBgPaIAYD2iAGA9ogBgPaIAYD2iAGA9ogBgPaIAYD2iAGA9ogBgPaIAYD
-2iAGA9ogBgPaIAYD2iAGA9ogBgPaIAYD2iAGA9ogBgPaIAYD2iAGA9ogBgPgIAYD2iAGA9ogBgPa
-IAYD4CAGA9ogBgPaIAYD2iAGA+AgBgPaIAYD2iAGA9ogBgPgIAYD2iAGA9ogBgPaIAYD4CAGA9og
-BgPaIAYD2iAGA+AgBgPaIAYD2iAGA9ogBgPgIAYD2iAGA9ogBgPaIAYD4CAGA9ogBgPaIAYD2iAG
-A+AgBgPaIAYD2iAGA9ogBgPgIAYD2iAGA9ogBgPaIAYD4CAGA9ogBgPaIAYD2iAGA+AgBgPaIAYD
-2iAGA9ogBgPgIAYD2iAGA9ogBgPaIAYD4CAGA9ogBgPaIAYD2iAGA+AgBgPaIAYD2iAGA9ogBgPg
-IAYD2iAGA9ogBgPaIAYD2iAGA9ogBgPaIAYD2iAGA9ogBgPaIAYD2iAGA9ogBgPaIAYD2iAGA9og
-BgPaIAYD2iAGA9ogBgPaIAYD2iAGA+AgBgPaIAYD2iAGA9ogBgPaIAYD2iAGA9ogBgPaIAYD2iAG
-A9ogBgPaIAYD2iAGA+AgBgPaIAYD2iAGA9ogBgPaIAYD2iAGA9ogBgPaIAYD2iAGA9ogBgPaIAYD
-2iAGA9ogBgPaIAYD2iAGA9ogBgPaIAYD2iAGA9ogBgPaIAYD2iAGA9ogBgPaIAYD2iAGA+AgBgPa
-IAYD2iAGA9ogBgPgIAYD2iAGA9ogBgPaIAYD4CAGA9ogBgPaIAYD2iAGA9ogBgPaIAYD2iAGA9og
-BgPaIAYD2iAGA9ogBgPaIAYD2iAGA9ogBgPaIAYD2iAGA9ogBgPaIAYD2iAGA9ogBgPaIAYD2iAG
-A9ogBgPaIAYD2iAGA9ogBgPaIAYD2iAGA9ogBgPaIAYD2iAGA9ogBgPaIAYD2iAGA9ogBgPaIAYD
-2iAGA9ogBgPaIAYD2iAGA9ogBgPaIAYD2iAGA9ogBgPaIAYD2iAGA9ogBgPaIAYD2iAGA9ogBgPa
-IAYD2iAGA9ogBgPaIAYD2iAGA9ogBgPgIAYD2iAGA9ogBgPaIAYD2iAGA9ogBgPaIAYD2iAGA9og
-BgPaIAYD2iAGA9ogBgPaIAYD2iAGA9ogBgPaIAYD2iAGA9ogBgPaIAYD2iAGA9ogBgPaIAYD2iAG
-A9ogBgPaIAYD2iAGA9ogBgPaIAYD2iAGA9ogBgPaIAYD2iAGA9ogBgPaIAYD2iAGA9ogBgPaIAYD
-2iAGA9ogBgPaIAYD2iAGA9ogBgPaIAYD2iAGA+AAAAAAAAAAAAAAAAAgBgQvIAYFjyAGB6QgBgeW
-IAYHgSAGB3MgBgdeIAYHUCAGBzsgBgcuIAYHGyAGBw4gBgb7IAYG7iAGBtsgBgQrIAYGxyAGBrog
-BganIAYGmSAGBoQgBgZDIAYGAyAGBkMgBgYDIAYF9SAGBeAgBgQrIAYEKyAGBCsgBgQrIAYF0yAG
-BEggBgQrIAYEKyAGBCsgBgW2IAYFnSAGBYUgBgV0IAYEKyAGBWEgBgVHIAYFNCAGBRogBgUHIAYE
-7yAGBNwgBgTJIAYEZQAAAAAAAAAAIAYKeSAGCoMgBgwCIAYL1yAGC9AgBgvJIAYLwSAGC7ogBguz
-IAYLrCAGC6UgBgubIAYLkSAGC3kgBgtOIAYLIiAGCxkgBgr+IAYK9CAGCuogBgraIAYK0yAGCsAg
-Bgq5IAYKaSAGCpAAAAAAAAAAACAGpaAgBqL4IAahjCAGnzggBpzgIAaZqCAGmqAgBptQIAaZHCAG
-naQDDwgSg46TklJWAAAQAAAAY29uZmlndXJhdGlvbiBmaWxlIHBhcnNlciBmb3VuZCBhZGRpdGlv
-bmFsIGNvbmZpZ3VyYXRpb24gYWZ0ZXIgW2ZpbmldCgAAMAAAAGZjb2UAAAAAdm5pY19pZAB2bGFu
-AAAAAHRvcwBldGhlcnR5cGUAAABtYWNtYXRjaAAAAABtcHNoaXR0eXBlAABmcmFnbWVudGF0aW9u
-AAAAc3J2cnNyYW0AAAAAZmNvZW1hc2sAAAAAY29tcGFjdABiYXNpY3ZpcnR1YWwAAAAAc3lubWFw
-ZW4AAAAAc3luNHR1cGVuaXB2NgAAAHN5bjJ0dXBlbmlwdjYAAABzeW40dHVwZW5pcHY0AAAAc3lu
-MnR1cGVuaXB2NAAAAG9mZG1hcGVuAAAAAHRubG1hcGVuAAAAAHRubGFsbGxrcAAAAGhhc2h0b2Vw
-bGl0egAAAABsYW4Ad2FuAGNsdXN0ZXIAbWFudWFsAAB0cF9waW8AAHRwX3RtX3BpbwAAAG5pY192
-bQAAbmljX3VtAABuaWNfdW1faXNnbABuaWNfaGFzaGZpbHRlcgAAb2ZsZAAAAAByZGRwAAAAAHJk
-bWFjAAAAaXNjc2lfaW5pdGlhdG9yX3BkdQBpc2NzaV90YXJnZXRfcGR1AAAAAGlzY3NpX2luaXRp
-YXRvcl9mb2ZsZAAAAGlzY3NpX3RhcmdldF9mb2ZsZAAAZmNvZV9pbml0aWF0b3IAAGZjb2VfdGFy
-Z2V0AHBvZmNvZV9pbml0aWF0b3IAAAAAcG9mY29lX3RhcmdldAAAAGlzY3NpX3QxMGRpZgAAAABp
-c2NzaV9pbml0aWF0b3JfY21kb2ZsZABpc2NzaV90YXJnZXRfY21kb2ZsZAAAAAB0bHNrZXlzAHBw
-cABkY2J4AAAAAGIyYgBzb2NrZXRudW0AAABjZWUAaWVlZQAAAABhdXRvAAAAAGFuX2RpcwAAcGRs
-aXRlX2RpcwAAIAMW7AAEAAAAAAQAAAQAAAAAAAD/AgAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAD/AgAAAAAAAAAAAAAAAQAC/wIAAAAAAAAAAAAAAAAAAv8CAAAA
-AAAAAAAAAAAAABYAAAAAAAAAAAAAAAAgBpjgAAAAACAGmDAgBpXQIAaUqCAGc7AgBhKIIAX8CCAF
-+ugAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBHncIASGKCAEhiggBIYoIASWACAErqggBLtoIATE
-bCAEduQgBHRYIAQuVCAE28ggBCwEIAQo+CAF+rwgBfmMIAXy2CAEhiggBfIAIAXwpCAF79ggBykg
-IAOazCAD9XQgBrBsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBFIIIAQ8vCAES/gg
-BEpkIARI7AAAAAAgBEaQIARRRCADXPQgBCDoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///AAAD/wAA
-AD8AAAAPIAc5yCAG4iAgBzmwIAbiMCAG4kQgBuGIIAbiyCAG4Vj/GDBgYAAAAAABAgMAAAAAIAam
-TCAEeDwgAITwAAAAAAAAAIEAAAAAAAAAAAAAAAAgA/ikIAP6MCAD+cwgA/pEIAP4wAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAgA/lUAAAAAAAAAAAAAAAAMDEyMzQ1Njc4OWFiY2RlZkFCQ0RF
-RgAAAAAAAAAAAABBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0
-dXZ3eHl6MDEyMzQ1Njc4OSsvAAAAAAAAAAAAAAAAAAAAACAARTQAAQAAIABFFAAFAAEgAET4AAMA
-BSAARNgABwAAY4JTYwAAAAD///////8AAAAEBAgABAQIAAQECAAEBAgAB0MAAAAAAAAAAAAAAAAA
-ACEACQCBAEEAIQAJACEACQCBAEEAgQBBAIEAQQCBAEEAIQAJAIEAQQAhAAkAIQARAIEAQQCBAEEA
-IQAJAIEAQQAhAAkAIQAJAQEAQQCBACEAgQAhABAQYQEBAIEBAQCBAwIBABAgQAAAAAAAAAAAAAQA
-AgABAACAAEAAIAAQAAggQIAAAAAAAAAAAAAAAAAAIAMJIAAAAAAgAxAYAAAAACADCSQAAAABIAMQ
-wAAAAAIgAwksAAAABCADCTQAAAAIIAMJPAAAABAgAxDIAAAAICADCUAAAABAIAMJTAAAAIAgAwlY
-AAABACADCWQAAAIAIAMJdAAAIAAgAwmAAABAACADCYwAAIAAAAAAAAAAAAAAACocAAAqPAAAKlwA
-ACp8AAACBAAAAEQAAAAEAAAAQCAGqdwgBqmYIAaobCAGpxwgBqbYIAamrCAGpwQAAAAAAAACAAAA
-BAAAAAgAWWVzADAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5egAAAABub25lAAAA
-AGFsbAAqAAAAZGlzYWJsZWQAAAAAZW5hYmxlZAAweAAATkEAAFYwAABWMQAAVjIAAFYzAABWNAAA
-VjUAAFY2AABWNwAAVjgAAFY5AABWQQAAVkIAAFZDAABWRAAAVkUAAFZGAABWRwAAVkgAAFZJAABW
-SgAAVksAAFZMAABWTQAAVk4AAFZPAABWUAAAVlEAAFZSAABWUwAAVlQAAFZVAABwb3J0AAAAAHBy
-b3RvY29sAAAAAGdsb2JhbAAAZnVuY3Rpb24AAAAAZmluaQAAAAByZWcAZmlsdGVyTW9kZQAAZmls
-dGVyTWFzawAAcnNzX2dsYl9jb25maWdfbW9kZQByc3NfZ2xiX2NvbmZpZ19vcHRpb25zAABzZ2Vf
-dGltZXJfdmFsdWUAdHBfcG1yeAB0cF9wbXJ4X3BhZ2VzaXplAAAAAHRwX3BtcnhfZmxhZ3MAAAB0
-cF9ucnhjaAAAAAB0cF9wbXR4AHRwX3BtdHhfcGFnZXNpemUAAAAAdHBfbnR4Y2gAAAAAdHBfbXR1
-cwB0cF90Y3B0dW5pbmcAAAAAdHBfdGltZXJyZXMAdHBfdGltZXJ2YWxzAAAAAHRwX2JhY2tvZmZ2
-YWxzAABzY2hlZF9pb3F0eF9icF9wcmlvcml0eQBwY2llX21hX3JzcF90aW1lcnZhbHVlAABwbF90
-aW1lb3V0X3ZhbHVlAAAAAG1lbWZyZWVfY29uZmlnAABiYXIydGhyb3R0bGVjb3VudAAAAGNwbHR4
-ZGF0YV9tZW1hbGlnbgAAbWMAAG1jX21vZGVfYnJjAG1jX3BkAAAAb2ZsZF9mbGFncwAAbnZmAHd4
-X2NhcHMAcl9jYXBzAABuaXFmbGludAAAAABuZXEAbnFwY3EAAABuZXRoY3RybAAAAABudmkAcnNz
-bnZpAABuZXhhY3RmAG5yYXdmAAAAY21hc2sAAABwbWFzawAAAG5ldGhvZmxkAAAAAG5yb3V0ZQAA
-bmNsaXAAAABuZmlsdGVyAG5zZXJ2ZXIAbmhhc2gAAAB0cF9sMnQAAHRwX2RkcAAAdHBfZGRwX2lz
-Y3NpAAAAAHRwX3N0YWcAdHBfcGJsAAB0cF9ycQAAAGlzY3NpX250YXNrAGlzY3NpX25zZXNzAGlz
-Y3NpX25jb25uX3Blcl9zZXNzaW9uAGlzY3NpX25pbml0aWF0b3JfaW5zdGFuY2UAAABpc2NzaV9t
-YXhfc2dlAAAAcHBtX21heF96b25lcwAAAHBwbV96b25lX3JhbmdlMABwcG1fem9uZV9yYW5nZTEA
-cHBtX3pvbmVfcmFuZ2UyAHBwbV96b25lX3JhbmdlMwBmY29lX25mY2YAAABmY29lX252bnAAAABm
-Y29lX25zc24AAABmY29lX25mY2IAAABkY2IAZGNiX2FwcF90bHYAZGNiX2RjYnhfcHJvdG9jb2wA
-AABiZ19tZW0AAGxwYmtfbWVtAAAAAGh3bQBsd20AZHdtAGRlYm91bmNldGltZQAAAAB2ZXJzaW9u
-AGNoZWNrc3VtAAAAAFNlc3Npb25UeXBlAE9GTWFya2VyAAAAAElGTWFya2VyAAAAAERhdGFEaWdl
-c3QAAEhlYWRlckRpZ2VzdAAAAABFcnJvclJlY292ZXJ5TGV2ZWwAAEltbWVkaWF0ZURhdGEAAABE
-YXRhUERVSW5PcmRlcgAARGF0YVNlcXVlbmNlSW5PcmRlcgBJbml0aWFsUjJUAABNYXhDb25uZWN0
-aW9ucwAATWF4UmVjdkRhdGFTZWdtZW50TGVuZ3RoAAAAAEluaXRpYXRvck5hbWUAAABJbml0aWF0
-b3JBbGlhcwAARGVmYXVsdFRpbWUyV2FpdAAAAABEZWZhdWx0VGltZTJSZXRhaW4AAE1heEJ1cnN0
-TGVuZ3RoAABGaXJzdEJ1cnN0TGVuZ3RoAAAAAE1heE91dHN0YW5kaW5nUjJUAAAAVGFyZ2V0TmFt
-ZQAAVGFyZ2V0QWxpYXMAVGFyZ2V0QWRkcmVzcwAAAFRhcmdldFBvcnRhbEdyb3VwVGFnAAAAAEF1
-dGhNZXRob2QAAFNlbmRUYXJnZXRzPUFsbABDSEFQX0EAAENIQVBfSQAAQ0hBUF9DAABDSEFQX04A
-AENIQVBfUgAARGlzY292ZXJ5AAAATm9ybWFsAABOb25lAAAAAENSQzMyQwAAQ1JDMzJDLE5vbmUA
-Tm9uZSxDUkMzMkMAQ0hBUAAAAABDSEFQLE5vbmUAAABOb25lLENIQVAAAABOb3RVbmRlcnN0b29k
-AAAASXJyZWxldmFudAAAUmVqZWN0AABObwAANQAAAENITmV0IDEuMDAAAAAAAAwAAAAAAQABfAAM
-AQAAAAAQAAAAFCAHU0AAAAMFDkAAAAAAABAAAAAoIAdWSAAAAxgOUAAAH/wAAB/8AAAf/7VwH/+1
-cCAHXkAgB2IAIAlE8CAJRPAgCgAAIAqAACAKgAAgCuaAIAMAAOEALgAf/5QwAABhqOEBjgAAAEAP
-AAGRDIAAAAAgC4HwIAuCIAAAQAAAAIAAAAAIACALgyD///P/IAuDUAAAqCwAAKgvAACoKwAAqCoA
-AKjsAACBAAAAqDUAAKg3IAsBMOEAXgAgCwFwAABADgAAQBogCwGgAAAQAAAA/+kAAP/gAABQAAAA
-//gAAKg7///JJAAAQA0AAP/3AAAP/wAAD0IAAP/1IAsCAAAAgAcAAIAEIAuDcCALg5AAALjuAAA0
-AAAAtO4AALT/AAC0AAAAuAAf/654IAsCMCADC8ggC4OwIAuD8BWgAAAAAIP9IAMI0CADWTgAAUFK
-AAEBbgAAg/8f/7DwAMAAASALhAAgCwJwIAML2CALA+AgCwQQKMAAAEAAAAIgAwrUKKAAAIAAAAIg
-CwUAH/+uMAAA//8BAAAAKAAAAOEAAABrAAAAIAMKUCALBTAQAAAAA2AAAO4AAAAgC4SQIANTGCAL
-hLAAACcQIANayCALhQAgCwWAQAAAACADDBggCwYAA+AAAB//rfggAwAgH/ziAB//sfAf/60k4QMG
-AP/f///f////AAEACgLmAukgAAAA4QL+ACADADDhAAYAAAIAAP/9//8AmJaAAA9CQK1lNF07msn/
-O5rKAAAETAAAAK8A4QEOAAAAiPcAIAAAAT8BQP/4XuAAB6EgACxjSB//rLQgC4UwIAuFkAgAAAAf
-/OLkIANlRB//rkQgCwYwIAsHYCALBmAPPAAAIAsG8CAD5IAgA+ZYIAsHwA8AAAAgCwggH/+GwB//
-h7Af/4TwIAsIkCALCNAgCwkQIAMN8CADDXAgC4cgIAMNUCALh1AgC4YAIAuGYCALhsAf/66k4AAA
-ACAARVQf/6+0AP///yALh3AgCwmgIAsKACALClAgCwnQIAO9TAAIAAAgA8IMIAsL4CAHXGAAD/wA
-H/+Z+B//m1wAADAAIAsMICALDLAgCw1QVQAAAA4AAAAgC4gQIAMOaAAACAYgCw2AIAsOYAAAD/4f
-/65YIAsO8CALDsAAAPAAIAuIMCALDxAgCw9wIAsPoCALEAAgCxBQIAsRECALiFAgCxCwIAN+0CAD
-loAgCxFwIAsRsB//rkwgCxIgIAsScCALiSAgA5y8IAOiDCALiOAgCxMgIAsSsCALE5AgCxPwIAsU
-YCAHYcAgB16QIAsU4CALFSDv////IAsVgCALFdAgCxig/f///yALFjAgCxagIAOkfCALFwAgCxdg
-IAsXwCALGBAgCxhQIAuJcCADDmAEAAAIgQAAAAAAYAAgAw30DAAAAB//hyAf/4ggIAMP8B//hwA/
-////z////yALGQAf/4fcIAsZQCALGYAgC4mQIAsaAH///6v//y5cAADRpP//0E0AAJxOIAsagCAL
-GkAgCxnAH/+HHCADDfgAAGgAH/+HGAAAIAAf/4eAIAsawCADxaAgCxtwH/+uQCADVDAgC4ogIAuJ
-sCALigAgA8lgA//QAAABAAAgC4swH/+a/ABAAAAAUAwAg//QACALiqAgA36oIAuLYB//rxQgCx0w
-IAsdcB//rMAgC4vgIAsdoCALHdAgCx3wIAseICALHmAgCx6gH/+uSCALHxAf/66YIAsgICALH2AA
-TEtAIAPFXCALH7AgCyBgBAEACCADpvQgCyDgIAsgkCALIUAgC4fQIAPdzCALh6AgCyTAAACOAiAL
-JTAgCyWAIAsl0CALJPAgCyYgA4AAAB//sQAgCyZwIAsmwP/3//8gCyewIAPY2CALKHAgCykwIAPc
-1CAD1uQgA8W8IAPcDCALKXACAAAAIAspsAAAF3AgAwu0IAuNACALjLAgC4yQIAP3ACALjGAgC4zg
-4P/+AAAB4pAgAwuUIAsqkCADC0Qf/648IAMLTCALKuAf/6zgIAsrACALKzAgCytQH/+rtCAHWuAg
-CyuAH/+q0OEAfgAf/6zwAADz/wQAAAAUAAAAKgAAACAEACggCywwH/+vECALjdAgC42gIAAfGBoA
-AAAgCyzAIAuOgB//ruQAHoSAIARZWB//seQAD///IAstEB//sKQf/664IAuPEB//rjQ4AAAAAAAf
-QDAAAHQAABA2///v/x//scgwAAAQH/+V2ACcAADgAAkkH/+uVCALLVAgCy4wIAsuACALkLAgCy3Q
-H/+eaCALLZAAAwTA4QMCAOEAjgAf/5XsAACWgAAAlkAgB15AAACWoAAAlmDhAwAsAAMAAB/83gDh
-AHoAAAHgAOEBkgAAAeMAH/+uYCALLmAgCy6QH/+zRCALLuAgCy9AH/+VnCAHYUAXkAAAFLAAACAH
-YJCAAAAEIAdhSgAAH5ogAwCIIAdhkCADAJAWoAAACFABACCgAAA/8AAAI6AAAAP/AB8AwAAEIAck
-UCAEQjAgByQU3q2+/x//s0gawAAAIAdgSAAA/+ogB2FQAAAIFAAAiAAAEAAAH/+srB//r2wgBAnc
-IAMAoCALjsAgC47g/z///yADANAgCy9wMAAACDAAAAw0AAAI0AAAAAAAiRQ7AAAIIAMLBDSQAAAF
-XUqAIARfFAAYAAD/B///ADgAAAAwAAAgC5GQBgAAACAEbLz4AAAAAf//5wABwAAgAACABAAQAB//
-quDhAZoA4QGaQOEBmjzhAZo44QGaNOEBmjAf/69AIAMLXCADC1SAAAAD//z//x//rlB/////H/+W
-HCAEedwgC5SwIAuU8CALlSAgC5VgIAuVkCALldAgC5YAIAuWQP//AAAP///w//AAACALluAf/5sU
-IAuWoB//qjQgBIYoIAuX4CALmBAgC5eAIAuXIB//mtgf/5wUH/+eZAAA/4AAAC7gIAswYCALMJD/
-+///AAQAAOEB4sCQAADw/P+AwAIAACD+/4DAIAsw4CALMSAAAPgAAAMBCAADAQyP////IAsxcCAL
-McAgCzHwIAsyMOEA3gAAAwMIAAMCAB//rOT///AA4QDuAP//f/8AAPwAH/+uaAAA4AAAAAwAAAMD
-BAABERwAAREYIAuYcAAQCACAAAgAAAMBBP//wAAAAP/+AAAlgAADAwAf/6zc4P/iwB//q3gf/54I
-IAuYwCALmPAgC5kQIAuYoCADARgAAP/zIAsygAAAKjAAAP+PAABStQAASAoAAI+CAACPhgAAOAAA
-AI+KAADjPwAAg64AAP/xIAsyoAAAEED//8+/IAuZMAAAEgAgCzLQ4QMuAOEDMgD+////IAsy8CAD
-ASAgCzNQIAszIACAAAAgC5lQIAuZ4AAA/v8AAP/AAAD/PwAA+f8f/6sYIAuZgCALmoAgC5owIAs0
-ACALM8AgCzOQIAs0IBAABQ0BwIAACQAAAB//soQf/698IAMB0B//rMQAAIMAIAs28AAAggAgCzYQ
-IAs2YCALNqAQAAcCAADAACALjWAgC40gAAAMvAAAiQYgCziQiIiIiB//mnggAwIgIAs48CALOMAg
-CzvgIAs7oCALO2AgCzsgIAs64CALOqAgCzpQIAs6ECALOcAgCzlwIAs5MCALnWAgC52QIAudwCAL
-ngAgC55AIAuecCALPRAgCzzAIAs8ICALPGAAAIDCAAAbIR//qxwgCz1AIAueoCALnuAgC58AAP/A
-ABIAAAAgBSnoIAufsCALn3AAAKAAYAAAAB//rsggC6EwH/+uxCALPWAgCz2QAAAcICALPcAgCz4g
-H/+tQCALPmAgCz3wIAtAEAAAf6YgC0CgIAtAMCALQNAgA0rsIAtAYCALQTAgC0EAIANMBCALQWAg
-A1DAIAuiECALQtAgC6RgIAtD8CADDeAgC0MgIAtEECALQ4Af/7NMH/+x2AAACFAgC0RQIAtEoCAL
-RIAA///8MgAAAB//s8rAAAAAIAMCWDOQAAAgAwsAIAuPcCALj9AgC4+wIAuQECALRMAgBGlMIAMC
-YCALRXAAAIAFIAtFoIGAAADerb7vIAtF4B//rjgwAAAcMAAABDAAABQAAP/v//7//wD/8AAAKAAA
-IAtGEAAACEAgAwrEIAtGQAD///ogC0aQMAAAADAAADQAAIABIAMCcAAAgAIgBY1wIAulkBAABRCZ
-AAAANAAAACALpUAgC0bQABkAACALRyAgAw6AAAASDyALR5Af/6roH/+xjAUAAACD/wAbAxUAACAL
-SAAgBeDQ//9AACALp/AgC0jQIAtJUCALSaAAAZGs4QGRrL////8gC0nQCwAAACAF5wAgC0pAIAtK
-sCALSyAgC0tQIAuocCALqPAgBMY0IAMLdB//nTwAATiA4AAGAAACJxAgC6mQf///Dx//rbgf/60M
-/AD//+EAlgDhAJoAAAAJ/+EAngAAALAAH/+u2CADAsAgC0xQ4QAOAOEAEgD/4DgAA/+ADgBz/4AD
-AAAAADj//xMAAAARAAAAH/wAAB//riQgC0yQIAuqsAABlI8AAZTPIAMC4B//niQgAwdgIAtM0CAL
-TQAf/6sAH/+sfCADCDAf/5SkH/+dMB//m7gf/50o4QGeAP+///8AAZ80IAtOUCALTpAf/5WUIAtT
-cCALU8AgC1QgH/+rZCALVcAf/6wIAD///x//m9AAAP+XAAD//QAA/tX//6uTwgAADgXcAQAD/wAA
-wAAAASALViAgC1ZgIAtWsCALVvAgC1dAIAtXgB////Af/68kAgAAEB//lFgf/54wH/+WKAAC//8A
-AJxAIAuQUCALWcAgC1owIAta8CALjgAgC1uAIAtbwCALXAAgC1xAAAD+ACALshAbAAAAAAUAAjrA
-AAAgC1zAIAtckCAGK/ggC7LQIAuyYCALsqAgBjHYIAuyQCALXRD//8j////x////388gC11A//+f
-/wAAIAT//984IAtdcB//lfDhAx4A///t/x//q3wgB15wIAdeeCALXaAAAZD4//z4fyALXeAgC15Q
-IAdcCCALXoAAAwACH/+eBCALXwAgC16wIAtfMOEDCgAf/6t0IAuzMPf///8BMBjAIAtfkCALX3Ag
-C7NwIAtfsCALYDAgC1/wIAtg0CALYRAgC2BwIAtgoCALs7AAAYagIAZc9OEDAAQF9eEAACYloAJi
-WgAgAwiY4QMAMAAEBe4AAJAgAACQEOEDAQThAeIAH/+V4ABgAAAf/5YEH/+rUAAFAAQABBQAH/+e
-EB//nhQgCAAAIAgusCAIBmAgCG8AIAgFUCAIBEAgCAMwIAgCICAIARAf/67cH/+cDB//qqAgB1xk
-H/+pKB//q+AgAdV04QB2ACADC8AgC7ggH/+t6CALZ3AgA5xYIAdhiiALagAgB2EMFJAAAEAAAAQg
-C2pwIAtqoCALaHAgB2GAIAtosCALaRAAAI/+IAtpYCMoFQAgC2nAIAu4kCALuRAgB2DIH/+0aB//
-sTAf/7PY/+gP/wAQgAAgC2vwIAaW2OEAVgAgAwig4QBaAAHIQAbhAZngAAB+UAAAfkAAAH4YIAai
-+B//rLAgAxAgIAMQJCADEBggAxAoIAMQNCADEDwAUCAG4QGaDABwIAb/4AAAAAIgBiALbqDhAZoE
-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
-BwA7AAIAOAAEAzsBAAAAAAE2AWwBlgDwASABUwDhATEBYQC8AOQBCwD1ASIBSQDGAOsBDwDCAOoB
-EwCdAL8A3gDLAO0BDQCqAMkA5ACjAMQA4ACBAKIAvQCvAMwA4wCUALAAxgCLAKgAvwAAAIEAnQCa
-ALMAxwCBAJsArwBuAI8ApQAAAAAAAACJAJ8AsQBtAIgAmwAAAGEAcgAAAAAAAAB6AI8AnwAAAHIA
-hwAAAAAAAAAAAAAAAAAAAAAAAAAAAPsBJgFqANkA/wE2AO4BLgGMAKsA0wETANYA+QEqALkA2gEK
-ALcA4gEwAIwArQDhALoA2QEGAKIAvgDnAJYAtwDqAGUAjAC6AKQAvwDmAI4AqADNAHoAmADDAAAA
-AACUAJEAqgDNAHsAlQC3AAAAegCjAAAAAAAAAIAAmAC4AGQAgQCjAAAAAAB9AAAAAAAAAG0AhgCl
-AAAAZgCOAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEpAVUAzgDzARUAxwDuARYAoQDDAOAAzQDtAQwA
-qwDKAOMAogDBAN0AfQCeALcArQDJAN8AkwCtAMEAhgCiALkAAAAAAIsAlwCuAMAAfQCWAKkATACB
-AJkAAAAAAAAAhQCaAKsAYgB/AJMAAAAAAAAAAAAAAAAAdgCJAJkAAABWAHkAAAAAAAAAAAAAAAAA
-ZgB6AIkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADfAQMBMQC/AN8BEAC8AOQBLACPAK8A4gC9
-ANwBBwCkAL8A5wCWALYA5gBXAIYAtACkAL8A5ACOAKYAygB2AJMAvAAAAAAAAACPAKcAyAB4AJEA
-sgAAAG0AmQAAAAAAAAB8AJQAsgBaAHoAmAAAAAAAAAAAAAAAAABnAIAAngAAAAAAgQAAAAAAAAAA
-AAAAAAAAAGoAigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANsBAAEbALcA1wDwALAAzwDoAJAA
-rgDGALMAzgDkAJkAsgDGAI0ApwC8AAAAAACNAJkArwDAAIAAlwCpAAAAfACUAAAAAAAAAIUAmQCo
-AFoAewCPAAAAAAAAAAAAAAAAAHQAhwCVAAAAAAAAAAAAAAAAAAAAAAAAAGEAdQCDAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAYABxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzADrARgAsgDPAPYAqQDM
-AQAAggChAMoArQDIAO0AmACxANUAgwCgAMcAAAAAAJYAlQCtAM4AgACYALkAAAB1AJ0AAAAAAAAA
-fwCWALQAVQB9AJ8AAAAAAAAAAAAAAAAAZgCAAJ0AAAAAAH0AAAAAAAAAAAAAAAAAAABiAIYAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAF8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//D/8P/AD/D/gJ
-2w/wD6UP4AmZD8AAmQ+AAAAPAAAAD/wP/A/4BfwP8A+0D+AFtA/AALQPgAAADwAAAAwAAAAPwAAA
-DsAAAA+AAAAOgAAADwAAAA4AAAAMAAAAAQAAAAABOIAAAGgqAABOIAABhqAAAYagAAII1QACCNUA
-AAAoAAAAMgABBGoAAGgqAABKZwABhqAAAYagAAII1QACCNUAAAAoAAAAMgABWwEAAGgqAABQIAAC
-CNUAAYagAAII1QACtnEAAAAmAAAAMgABKW4AAGgqAABNKQACCNUAAYagAAII1QACtnEAAAAmAAAA
-MgABBEEAAGgqAABKZwACCNUAAYagAAII1QACtnEAAAAmAAAAMgABdAYAAGyBAABUAQACiwoAAgjV
-AAKLCgACtnEAAAAeAAAALQABRYUAAGyBAABRYQACiwoAAgjVAAKLCgACtnEAAAAeAAAALQABIVoA
-AGyBAABO6gACiwoAAgjVAAKLCgACtnEAAAAeAAAALQABBGoAAGyBAABMlwACiwoAAgjVAAKLCgAC
-tnEAAAAeAAAALQABhqAAAG+bAABWzgACiwoAAgjVAAKLCgADDUAAAAAeAAAAKAABWzgAAG+bAABU
-dQACiwoAAgjVAAKLCgADDUAAAAAeAAAAKAABOIAAAG+bAABSPAACiwoAAgjVAAKLCgADDUAAAAAe
-AAAAKAABHBgAAG+cAABQIQACiwoAAgjWAAKLCgADDUAAAAAeAAAAKAABbHQAAHLjAABXYwADDUAA
-AosKAAKLCgADDUAAAAAbAAAAIwABS1IAAHLjAABVWAADDUAAAosKAAKLCgADDUAAAAAbAAAAIwAB
-L7YAAHLjAABTZQADDUAAAosKAAKLCgADDUAAAAAbAAAAIwABGFkAAHLjAABRiAADDUAAAosKAAKL
-CgADDUAAAAAbAAAAIwABeroAAHZfAABaPgADDUAAAosKAAKLCgADDUAAAAAZAAAAIwABWysAAHZf
-AABYVgADDUAAAosKAAKLCgADDUAAAAAZAAAAIwABQV4AAHZfAABWgQADDUAAAosKAAKLCgADDUAA
-AAAZAAAAIwABKZMAAHZgAABUwQADDUEAAosLAAKLCwADDUEAAAAZAAAAIwABESoAAG+bAABP3QAC
-CNUAAgjVAAKLCgADDUAAAAAeAAAAKAABFwQAAGyBAABOIAACiwoAAosKAAKLCgADDUAAAAAbAAAA
-IwAAAAAraCODGGoNBgsqAAAAAAAAAAAAMgAAA+gAAAAoAABOIAAAAAAAA9CQAJiWgAAPQkAAmJaA
-AAAcIAAAAEsAPQkAAAPQkACYloABAQAAAwMCAgUFBAQHBwYGAAAAMgAAA+gAAABkAADDUAAAAAAA
-A9CQA9CQAABMS0AD0JAAAAAcIAAAAEsAPQkAAA9CQCPDRgADAgEABwYFBAsKCQgPDg0MAAAAMgAA
-A+gAAAAKAAAB9AAAAAAAAAPoAJiWgAAPQkAAmJaAAAAcIAAAAEsAPQkAAAPQkACYloADAgEABwYF
-BAkJCAgLCwoKAAAAAAAAAAAAAQAQABEAHgANABIABwAfAA4ACwATABUAGwAIABcAIAAPAB0ADAAG
-AAoAFAAaABYAHAAFAAkAGQAEABgAAwACAAEAewB1APsA9QBFAG8AfQB3AF8AaQDFAO8AowA/AP0A
-9wC7ADkA3wDpAM8AnQBHAHEADwBZACUAvwATAGMAfwB5AG0AXQA9ALkAmwANAGEAawALAAkAUQAf
-ADEAUwDHAPEAIQC1AI8A2QCtADMApQBBAFUAlwCTAOMAKQDJAP8A+QDzAMMA7QDdAOcAIwC9ADsA
-twBPAB0AjQDXAJEA4QDrANsAGwCLAIkAhwCvANEAnwA1AC0AsQDTABcApwBJAHMAQwBnAKEANwDN
-AFcAEQBbAJkABwAvALMAqwCVACcAwQDlAE0A1QAZAIUAKwAVAGUAywAFAKkASwCDAAMAgQAAAPoA
-9AB8AHYAxADuAPwA9gDeAOgARgBwACQAvgB+AHgAPAC4AGAAagBQAB4AxgDwAI4A2ACkAEAAkgDi
-AP4A+ADsANwAvAA6ABwAjADgAOoAigCIANAAngCwANIASAByAKAANgAQAFoALgCyACYAwADUABgA
-FABkAKgASgCAAHoAdABEAG4AXgBoAKIAPgC6ADgAzgCcAA4AWAASAGIAbABcAJoADAAKAAgAMABS
-ACAAtACsADIAVACWACgAyADyAMIA5gAiALYATgDWAJAA2gAaAIYArgA0ACwAFgCmAEIAZgDMAFYA
-mAAGAKoAlADkAEwAhAAqAMoABACCAAIAAQADAAIABAAAAAAAAAAAAAEAAgAcABsAFgAVAB4AHQAY
-ABcADAALABAADwAgAB8AGgAZABQAEwAKAAkADgANABIAEQAIAAcABgAFAAQAAwABAAAAAgAEAAAA
-AAAAAAAAADAEAAAwEAAAWdwAAFqAAABahAAAWogAAFqMAABakAABlDAAABAkAAAQMAAAEDwAABDc
-AAARDAAAeywAAHs0AAHijAAB5owAAeqMAAHujAAB8owAAfaMAAH6jAAB/owAAI3MAACOgAAAfnQA
-AI/cAAGRWAABknAAAI/8AAQTHAAEExgABBMQAASTHAAEkxgABJMQAAB34AAAd+QAAHf0AAB4BAAB
-nDwAARB0AAEQhAAAlAgAAJhcAACWDAAAlhQAAJYgAACWLAAAlsQAANAoAACQCAADCNwAA0jcAAOI
-3AADyNwAAwjkAANI5AADiOQAA8jkAAGQVAAAYBwAAaDYAAGQkAAAd+AAAHfkAAB39AAAeAQAAHjY
-AAB44AAAePQABQB4AAUIeAAFEwgAAZQEAAHjwAAB58AAAevAAAHvwAAB88AAAffAAAH7wAAB/8AA
-AZQMAAAAAAAAAAAAAAAAAAAwAL///0AAADAIv///QAABlBCf////AAGUNAAAABAAAZQIn//j/wAB
-lDgAAAAQAAAQKOH///8AABAs4f///wAAEDQB////AAAQOAH///8AABBAAAQAAAAAERAA////AAAR
-FAD///8AAHsoAH3/4gAAezA//+7/AAB7OAAAAAEAAHtAP//u/wAAfCQAff/iAAHiiAAIAAAAAeaI
-AAgAAAAB6ogACAAAAAHuiAAIAAAAAfKIAAgAAAAB9ogACAAAAAH6iAAIAAAAAf6IAAgAAAAAjcj/
-///wAACN0P////AAAI58AAAA8AAAjoQAAADwAAB+cH+//38AAH54f7//fwAAfgACwAAAAAGRVAH/
-//8AAZGcAf///wAAj9gDf///AACP+P////8ABBMUAAAABwAEEwwAAAALAASTFAAAAAcABJMMAAAA
-CwAAd9wAAAADAAB39P////8AAHgEAAAAAwABnDgAAcBAAAGc+AABwEAAAJAEAAAAPgABEHgA////
-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
-H/+rxOMAAgDi//8AIAtVgCAI6sAgC69QIAAAAAAwAAAAYAAAIGAAANAAAAAgC66QIAuvIAAAEAAg
-AwjYH/+w8B//rNgf/4CwH/+tMB//rkz///AAIAuwICALV8AgC1hAIAtYsCALr9AgC6+QIAuv8B//
-rPAgC1lAAAAoAAAAP/8AAMAAAAQAAOEAMgAf/4DgH/+BIB//gWAf/5tc/4AP///+AB8AAHtgH/zi
-AAgAAAAf/508H/+WKB//q1Af/5WU4QL+AOEDvgDhAz4A4QN+AOEB4gDhAQ4A4QCSAP//8P8f/6ow
-AAAJAOEBDgThAQ4I4QEODB//njD/8AAAAAKABh//ruD/+///IAthkCALYfAf/4HgH/+cuB//m7gf
-/67YEAAAAP/w//8gAwzgH/+aMAAAfkzhAIoAAADwACALYmAgC2LAIAtjIB//rrgf/6q4H/+srCAL
-Y2AgC2PgIAu2ACALY5Af/6zIH/+d+CALZGAgC2QgH/+cMCALtIAgC2TQIAtlECALtvAgC7ZQ39AA
-ACALtpAf/6zkH/+slP+AAAD//+AAIAtlUCALZYAgC7QwIAdcZCADDOwf/66oIAtlwB//rOgf/7OM
-H/+zwB//rSQEAAAIEgAAACALsaAf/7J8gQAAAAAAMAAgC7HQIAMM6B//sdwf/7SYH/+vuB//s9hJ
-AAAAIAuw8CALsTAgC7BAIAuwoC4ANgAADwP/AxEAAAMVAAAf/6+oIAda4CALZgAf/6vwH/+a0B//
-qpwf/54cH/+fUCAAwRAf/+04H//sgAAAE4gf/+48H/+r1AIAghACAAIQAAAgAAIAABAAGgAAAPrG
-iAAgAADwAAAAH/+s3OEDBgAgB1s0IAdb3B//gfAgC2ZQIAtmICALZoAgC7PQ//9//wAAMgAf/5vo
-H/+eCB//rKQgC7PwAAD4AAA8PDwf/7HwH/+WmB//mlwKFChQIAgPBCAHXCAf/5TIH/+WHCADDvT/
-/8f/AAL/wB//m4wgC7WwIAu1UCALt+Af/5wsIAtnICALt4AgC7dQIAtmsCALt7AgC7TgH/+cKB//
-nCAf/6pIH/+qRB//gnAf/6sgH/+rdB//nHQf/5xwH/+caB//nGQf/4KQH/+reCADCUAgAwuAH/+C
-sB//rtQf/6sEH/+q+B//qvwf/6sAH/+rOB//qzQf/6swH/+rLB//qygf/6sQH/+rFB//qxgf/4Lg
-H/+qgAAAQAMf/5U0H/+qNIf///8f/5ycH/+c/B//njgAD//wIAtsEB//g5AgC2xwH/+DoB//rvQg
-C2ywH/+dFCALbQAf/5zoIAttMCALbWAf/4OwH/+cWAAAJYAgC22QIAtt0B//nAQf/5nwH/+D0B//
-nAAf/5qUH/+Z7B//g9j//wAAA+f8GCALbgAf/4PgH/+rwCADCZQf/6u8D////yADDyAgC25gIAgT
-5P//6yAgCBOU///rcCAIElT//+ywIAgRdP//7ZAf/5yAA///4AAEcgwABHIUAARyHAAEcBQABHAo
-AARwIAAEcCwAAIWAP///4AAEQCQABEBMAARKJAAEAOAABAAEIAtxACALcTAf/5w8AAQCxAAEAsAg
-C70QIAu9QAAEcGQgC71wAARBwAAEQcQABEHIAARAeAAEQNwABEFAAARBRCALcgAgC3JAIAtycCAL
-cWAgC3GgIAtx0AAEcFgAABAoAARBYCALcsAAAHd3AAAzMyALdAAgC3MAIAtzgCALc8AgC3NAIAty
-kAAAICgABHQYAARKwAAEQMAABEDEAARB8AAEQfQABHQUIAu80CALdSAgC3TgIAt0oCALdGAgC3Qg
-AAQCcAAACPAABAJ0AAQCfAAEApAAAL8oAARwXAAEdAAAAPAGAARL8AAEcigAAZsvAAFjHQAEATAA
-BADsAAQBCAAEdgAABAEEAAR2BAAA//gABAEAAAQA5AAEdggAAP/BAARyAAAAVVUABHIEAAQA+AAE
-ANwABADYAARySAAEATgABAEYAARyTAAEAPQABHJQAAR0CAAEcggABEBIAARK3CALdWAgC3WgIAt1
-4AAEQSwABEE8AARA4CALdiAABEEAIAt2UAAEcEgABHBgAARyIAAEdgwABHgEgBAAACALvbAgAw+w
-gBIAAwAEAOiAEAADAAQAwAAATiAABADMAAQAxAAEAMgABAE0IAgG1CAICxQAAgAhAAQAgAAP/ykA
-BABEIAt2gAAEAkQABAJMAAQCSAYGAAAABAGAAAAeeAABMLAABADQAAQA1AAEAPAABAD8AAII1QAB
-BGoABAEMAAQBEAAAosIABAEUAAQBHAAEASQABAEoAAQBLAAEAUAABAFEAAQCUAAEASAABAJgAAQC
-ZAAEAlQAAQAhdzWUAAAEQfwABEv8AACAIAAACAgABHAwIAgDwAAEYMAABGDEAACIAAAEQdQABEvU
-AARB2AAES9gABEHcAARL3AAEcDgABHAAIAt2sAAEcAQgC3bwAARgyAAAgCQABEAcAARKHAAAFywg
-C3cwIAt3YDuaygAABGDkAARg0CALd5AABEAAAARABAAEQAwABEAIIAMLNAAESgQABHA0AARwCAAE
-UAAABFQAAARgzAAAfwAABEHQAARL0AAEcFAABFBoAARQQAAEVGggCAfwAARQUAAEVFAABFIkAABA
-QAAEUigABFIsAARAEAAESBAABEAUAARIFCAICBAABEHgAARL4CAICDQABEHoAARL6AAEQeQABEvk
-AARB7AAES+wABEAYAARKGAAA7vAABFBgAARUYAAAEQAAABEwAAAQMCAIA+ggCAM8IAgFSCAIBJwg
-CAaoIAgF/AAEEwQABBMkAP///wCBAiAAgAAA4QHiQOEAEgD/wAwAH/+UxB//ljAgC3qgAf///wPf
-0kACFg7A4QNGACALevAf/5sMAARUsAAA4+8ABFCwAARg4AAAwfMf/60oH/+EMP/8f/8gC3sQgAAF
-AAAAfuiAAAcAIAvAwIAABACAAAYAIAvAoIAAAQCAAAIAH/+dTP+fAABACAAAAgAAAPjAAAAAAGAs
-/3///yALezAgCUNwIAt7cB//lQAgCUTwIAMI0CALe6Af/65cAA///yAHXBgf/63QH/+soB//r4Af
-/6+gH/+VMx//rNAAVAAAIAwAACALe9DhBP4A4QUGAAAkAADhAd4A4QBaAPgAA//f//4AAACAYAAA
-QAkAAAnEIAvBECALwWAgC8GQIAvCUCALwiAgC8DgH/+dQN6tvu8gCAxEIAgOlAAJiWggCA5EIAgM
-BCADD+AgC3wgIAvCgCALe/AgC3xAH/+sKCAKAAAACgAAIAt8YOL//gAf/6xoH/+ugB//mYwgCqAA
-IArgQGwQBsCk/PymEBQQWDBby2b8/KUQABBQMPsKHiAAEGgwW57C/PyhEAAQUDD7Ch4gQBBoMFue
-vvz8nRAAEFAw/fycEB4QWDBbnrn8/JoQABBQMP0afCAeEFgwW560/PyWEAAQUDD7Ch4gQBBoMFue
-r/z8khAAEFAw+woBIAAQaDBbnqv8/I4QABBQMP38jRABEFgwW56m/PyLEAAQUDD7CgEgEBBoMFue
-ofz8iBAAEFAw+woBIAAQaDBbnpz8/IQQABBQMPsKASAJEGgwW56Y/Px6EAAQUDD7CgEgABBoMFue
-k/z8dhAAEFAw/fx5EAEQWDBbno78/HQQABBQMP38dhABEFgwW56J/PxwEAAQUDD9/HIQARBYMFue
-hfz8bBAAEFAw+woBIAkQaDBbnoD8/GIQABBQMPsKASAEEGgwW557/PxfEAAQUDD9/GIQARBYMFue
-dvz8XBAAEFAw/fxgEAEQWDBbnnL8/FgQABBQMP38XBABEFgwW55t/PxUEAAQUDD7CgEgCRBoMFue
-aPz8SxAAEFAw+woBIAgQaDBbnmP8/EcQABBQMP38ShABEFgwW55f/PxEEAAQUDD9/EoQARBYMFue
-Wvz8QBAAEFAw/fxGEAEQWDBbnlX8/D0QABBQMPsKASAJEGgwW55Q/PwzEAAQUDD7CgEgDBBoMFue
-TPz8LxAAEFAw/fwyEAEQWDBbnkf8/CwQABBQMPsKASAhEGgwW55C/PwpEAAQUDD7CgEgAhBoMFue
-Pfz8JRAAEFAw+woBIAkQaDBbnjn8/BoQABBQMPsKHiAAEGgwW540wKT8/CMQFBBYMFvK0Pz8FBAA
-EFAw+woBIAAQaDBbniz8/A4QABBQMPsKASAAEGgwW54n/PwPEAAQUDD7CgEgOBBoMFueIsBw9xUA
-Ih8ANOAHdAL2/BAQABAoMLQa+ywAAAQQYDBbwNGNEfz8ABAAEFAw/Y9XDoAEO2D9jRQIAEAzcPiI
-EQwAQDdw+O4CDAkAf3D+3QIAARBYMP0WAS3wAWwwW54L/PvwEAAQUDD9EQMgARBYMFueBi4RANMP
-DwIAf+8Y/Pv1EAAQUDD7CgEiAABocFud1y8RAH/35vRMASAIAilw/wIAAAgCELD/AgAL/7WdUPoK
-BC3gBD0g/PvnEBQQWDBbypH8+9oQABBQMPsKASAAEGgwW53t/PvQEAAQUDD7CgEgABBoMFud6fz7
-zBAAEFAw/fvLEAEQWDBbneT8+8kQABBQMPsKASAAEGgwW53f/PvGEAAQUDD7CgEgABBoMFud2vz7
-whAAEFAw+woBIAkQaDBbndb8+7cQABBQMPsKHiBAEGgwW53R/PuyEAAQUDD7Ch4gABBoMFudzCcV
-BBP7vxX7v/T7vxAAEBAwsSL8+6oQABBQMPsKASAQEGgwW53D/PumEAAQUDD9+6UQARBYMFudvvz7
-pRAAEFAw+woBIAoQaDBbnbkoEQTTD3+PGPz7qRAAEFAw/RwIIAEQWDBbnYspEQR/l+b8+5YQABBQ
-MP0cCiABEFgwW52F/PuTEAAQUDD9HAwgARBYMFudgC0RBdMPDwIA/hEGIGoEG3Bz4S100Qp04Qf/
-AgAJ/7CVUPoKAiAUEFgw/PuUEgAAeLBbyjnHK9EPAPP+hWIAACHw/SwAAAQQUDD8+40QFBBYMFvK
-Mfz7chAAEFAw+woeIAQQaDBbnY7AINEPAABsEAb4MQhv6hAQMNEPAAAW+4EoYoQa+4AZ+4EKiAEJ
-iAL4ZoQgFBBQMFvCGStihBz7fPy7AgAAEBAw+2aEIGQQGDDBpFvCErEicyn1G/t2AEoR+1wACgAg
-WrBb/qr2oKdiAAASsMCk/PtwEBQQWDBbyg8U+24T+278+28QABBwMP4VACAAEBAwsSIMLC/NwfxM
-AAAEEFAw+woUIgAAaLBbygP6CgAgARBYMPwKACIAAGhwW504wKpbwfYuEQD8+10RjggbsP0sAAAE
-EFAw/PtaEBQQWDBbyfUc+1n7Ch4gABBQMPoVASAEAmhwW50qLREBDe0UaNESwKL8+1EQFBBYMFvJ
-6scr0Q/RD8Ck/PtOEBQQWDBbyeXAINEPAGwQBC0gIhj7SfglJiANALdgWsETZqBQLSAiwKT8+0UQ
-FBBYMFvJ2ikgIsAw9PtCEA4AtmDBpFvBz7EzdDn12iBawKlmoCHaIFrAf2agGRz7OvogISAHEFgw
-/goAIQAQaDBbKnbSoNEP0qDRDwAAAABsEAT6CgUgCBBYMPz7MBIAAGiwW8nDwKBYQTTz+y0QzBAg
-MAQkKNMP9Pr7IgAgJPD6LAACAABY8Ft3zfShC3IAACqwZa/p0lDRD2ev+PoKACAIEFgw/PsfEgAA
-aXBbybDSUNEPbBAEGfsc+ZLAIAwANKDAINEPAAAAABv7GCuwfxz7GfP7FxvwBD7gDLsCCepR+zZJ
-I7oCPqD3+xMQARAoMPYKAiASEHAwLnawJnazLQrILXaxLBr0LHay21D9CmQgARBgMPr7CRAKEHAw
-9XaRIAAQeDBabIX2ol9iAAAisMDv/woHIAYQQDD6CgUgBBBYMPn6/xAAEGAwHfr+LXagxNEtdoDA
-2C12oyt2tcTaLXa2KHa3L3a4LHa5KHa6Kna7Lna8wdUtdr0odr4rdr8qdsDA2i12wSp2wi8qAC92
-wyt2xMGAKHbFLwpkL3bGKyqbK3bHJXbIKnbJKnbKKAoDKHbLLwoSL3bMLnbNG/rjK7JIKgpO/joA
-KlQBXDD+ds4r0AQ+4AuqDCp2tCyWFCaWFSgKGCiWGRr62hv62v/61xABEHAw/3aQIAAQeDBabE/2
-oYdiAAAisBr60hv60vwKACAKEGgw/vrQEAAQeDD+dpAgARBwMFpsRfahXmIAACKwGvrHG/rI/AoA
-IAoQaDD/+scQARBwMA8CAA8CAP92kCAAEHgwWmw59qEvYgAAIrAa+rwb+rz8CgAgChBoMPj6vBAB
-EHAw+HaQIAAQeDBabC/2oQZiAAAisBr6sRv6svwKACAKEGgw+fqzEAEQcDD5dpAgABB4MFpsJfag
-3WIAACKw+/qoEAAQYDD6+qsQChBoMPp2kCABEHAw+vqhEAAQeDBabBr2oLJiAAAisBv6o/s2QCAB
-EFAwW8EaFvqhHvqgHPqg/DZAIAAQIDDV4C0yQP8CAAIAVetQwKpbwRKxRPZJ6HH+AnFw/goAL/sQ
-GDD6CgUgCBBYMPz6lBIAAGjwW8kP9jBUYgAAIPD6+pAQBxBYMP0KZCABEGAw/woAIAEQcDD+doEg
-ChBwMFpr+PagKWIAACKw+vqFEAcQWDD9CmQgAxBgMP4KCiACEHgw/3aBIAAQeDBaa+3UoMlHwKX8
-+nwQCBBYMP0sAAIAAHEwW8j00kDRD9JA0Q8AAAAAAADz/2xgABAYMGwQBBP6cvQKACAAEFAw9grM
-IIAQKDD1OAgAARA4MCiAwPkyUSAYADYg9EwBIgAgNPD5QuloACAo8NKg0Q9kn+jwQQQP5QA0oAB7
-GmS/2tpAW8DdZq/iY//PAAAAbBAEE/pcAiIKAyIKIiKc0Q8AAABsEAQY+lcCIwoIMwoiMpsjMpry
-Al8DgAQ84AMiAtEPAGwQBBv6UBX6Tvqygi/gEGAw+LJ8ID4CaPD/soEsAEBncA2qDPSAEmQAQGKw
-LrJ9D/45/wIACgBlcRDAQMCg/PpCEAYQWDBbyLgCKwoFuwr0tpkg/QA1IB36PRz6PdMP/U0IAAEQ
-EDDztpwiAAB7cCrCdtMPDwIAf6cNLsJwDO4Q/t8MCgBKa5D+pxdwAhAYMC7CcdMPDO4Q/wIACgBK
-e5AO/wx9pyYuwnIM7hD/AgAKAEh7kP7/DAAwAO6wwKH8+iUQABBYMFvImMYq0Q97p+sowoL8iBAA
-BhBIMP+D3XAGEHAwL7abKbaawKX8+hsQABBYMFvIjcAg0Q8AAAAAAAD0toIv/5xmkAIrCgW7CiS2
-mWP/QgAAAAD9tpsgABBgMPy2miIAAHtw8/+9YAAQcDAitpovtpvz/69gARBwMAAAI7aaL7ab8/+f
-YAIQcDAAAPz6AxABEFAw+woAL/QQaDBbyHHHJNEPAGwQCtoQW3e89qHcYgAAErD7+foSAABQcFpk
-GfahyWIAABKwF/n2FPn3KXJ//Pn1H/8QEDD4CgUgABAYMPN2figAQCZw+XZ/IgAAUPDTD22KGNsg
-wNl9owHbMP7NBCAIAlKw++YAIAgCYzAa+edbd5sc+ef6CgAgERB4MG36FNsgwoF4owIDOwIrxhT6
-rAQgCAJjMBr531t3kRz53PoKACAFEEgw0w9tmhPbIMDZfaMB2zArxij6rAQgCAJjMBr51Vt3hhz5
-0voKACAMEHAwbeoT2yDC8X+jAdswK8Yt+qwEIAgCYzAa+cxbd3wc+cj6CgAgBRBAMG2KE9sgwJl5
-owHbMCvGOfqsBCAIAmMwGvnDW3dyHPm++goAIAwQWDBtuhPbIMLRfaMB2zArxj76rAQgCAJjMBr5
-ult3aNoQW3dS+/m5EgAAUHBaY832oJliAAASsBb5tSlygRX5rB/5qfN2gCgAQCZwKXaBLvKBGPlw
-CO4CLvaBJlZQ81ZRIAgCYXDzxlEgEAJZcPO2USAYAlFwI6ZRGvmmW3c1GfmcJlZk85ZlIAgCenDz
-9mUgEAJycPPmZSAYAmpwI9ZlGvmdW3crGfmSJlZp85ZqIAgCWnDztmogEAJScPOmaiAYAkJwI4Zq
-GvmUW3ch0Q8AAGwQDhP5aoogKzIyC6ooW3oILTIyjCH9yigCAAAisFt6BC8yMo4i/+ooAgAAOrBb
-egAY+T4mMjIT+YX4ZigB/gJJMACQBPYEGQIAACqw/PmAEAUQUDDwmREB/gIpcP0iACmABDng/iIB
-KAkASjD/IgIoCQBBcPg25CAIEFgwW8fVHPl1jSOOJI8liyabEIonmhH5IgggCBBYMPkWAiAFEFAw
-W8fMHPltjSmOKo8riSyZEPgiDSAFEFAw+BYBIAgQWDBbx8SLJY4jGvkZAFAEBg0ZDq4sDt0s/iIG
-KgAG2pAKuywLSyhgAAULqywLSyz+qxJyAABi8B/5DQ/vLA9PKGAACgAAH/kKDv8sD08sjiefFP8W
-BSoACHKQH/kED+8sD08oYAAIH/kBDv8sD08snxaOKIYphSqfF/RmKAoACHKQH/j7D+8sD08oYAAI
-H/j4Dv8sD08sjisEVSifGP8WCSoACHKQF/jyB+csB0coYAAIF/jvDncsB0csjix+qw0f+OsP7ywP
-TyhgAAoAAB/46A7/LA9PLCcWEJ8aji2fGywWEfsWEioAC/KQGvjgCuosCkoo8AARYgAAefAAABr4
-3N9wDqosCkosF/jNmhwe+ST6Fg0oAwA78Jge+BYPKgBf75AU+Q0tNu3AoPo25SoAZWUQjBT7NuYq
-AG3lEI0WjhX+NucqAHZtEI8YiBf4NugqAH79EIkZ+TbpKgCINRD2NuoqAJGtEIoe9TbrKgCaVdCL
-Gv8CAAoAo93Qjh+NG4wcAO4RDt0C/TbsKgCoZRCMLo8d/zbuIAAQSDADnQr81tQgCAJYsPuyDiAC
-AmJwA8wK+8bUIBACULD6og4gBAJacAO7Cvq21CAYAkCw+IIOIAYCUnADqgooptTAINEPwKP8+PAQ
-CBBYMFvHSysSEiwSER3462P/KwAAwKP++NcSAABrMPz46BAIEFgwW8dCG/jTY/8ejRT8+OUQAxBQ
-MP74zxAIEFgwW8c7HvjMnhVj/wuNFvz43hADEFAw/vjHEAgQWDBbxzQf+MWfF2P++o0Y/PjYEAMQ
-UDD++MAQCBBYMFvHLRj4vZgZY/7p3WD8+NIQAxBQMP74uRAIEFgwW8cmFvi2Y/7Y3VD8+MwQAxBQ
-MP74shAIEFgwW8cfFfivY/7FjR78+MYQAxBQMP74ZBAIEFgwW8cYGfhimR9j/rLAo/z4wBIAAGrw
-/vhdEAgQWDBbxxEa+FqaG2P+n40c/Pi6EAMQUDD++J0QCBBYMFvHChv4mpsdY/6WAABsEBIb+LMS
-+I8e+LKNuCywFyqyO47g/hYAIgAAGHD7sOMgABAgMCkicfkOWwlgAUww9NDsaAAgdnAf+Ggv8kHw
-nhEJdAFoMA6OAi4mcqHOLuAADx9ADv8RD+4CLiZ0LiJ2LwoE/+4CCAAgTjD+JnYgxAA2oBj4mSiC
-QfCcEQ90AVQwDP8CLyaCLSJ0o74u4AD/+o8oAQFAMPqIEQ/ABDug/90BDgkAQ7AO3QItJnQoInbB
-wAyIAigmdiQmc8CoKiZ6G/iG+QoNICACUHD5JnsgYBBgMFu86Rr4W/kKGCAgAkBwDwIA0w/TD22a
-D/mCACAIAlKw+aY/IAgCQjAtIrsf+Hge+HgP3QEO3QItJrsc+HYsJoMb+Hb7JoQgABAQMNEPJCZy
-KCJ2x8sMiAH4JnYvRAC2oCQmgmP/fgAAbBAKGPgtF/hrFvhFKIDBKnHX+3HZIB8QYDD0cdsgGAD+
-MClyBtMPZJJfJXHd/nHTLAAgVvCk3aXd+g9ECgFo75D18p5ogAFYMPWClmiAASQwZZKO/wIACAFF
-qxAocfIK7wwN6Qwpdd//ddYr4AF4MPusDAPgBDqg/HXYIe4ANiAEywwrddoJuQz5dd4p4AFMMAWb
-DCt13C9x2PJmhC/gBD/gL2aHLnHcDp0R/WaFL+AEO6AuZoYscdz9Zv0t4AQ7IPxm/CAAEBAw83Jx
-IACwrKDLO/g8/yoBPMTg/wIACAFEmhDaMFvEkSxiih74M/CtEQwAQHMw+3HSLAkAazAsZoorZv4p
-YoEa+C0KmQIpZoHAqFueQhb4KiJiiPlihyIAACKw/2KCLVAEPqD9IgwP8BBgMPhigyIAQGCw+iwA
-ABMAN+AJmDl4IwgiZohgAAQAAADAoPmsAADYADag+RYIIdAANmD1+BgQABAQMPlmdiAAEBgwKmJ2
-wLjTD/KqCAAAEGAwW71bsTP1OehyACARMMAgZiCYW3Wz9qCSYgAAErAc9+APAgAPAgArwoEd+AcN
-uwIrxoFb/dr2oHJiAAASsCtx2SRx2yVx3S5x0y9x8iNycSZx3/px1yApADfglBCWEZUSkxP89/kS
-AAB68P3sAAAGEFgw/qwAAAQQUDBbxjjRDxz385MTlhKVEfQWACIAAHrw/ewAAAYQWDD4ceQiAABy
-sPgWBCAEEFAwW8Yt0Q8qYn0rYn75YnogHgJSsPSwlmoAQGKwLGJ7DJwMDLs2LmJ4yOqq3HyzBixm
-fWAAAgDAoPP+9mIAAEqwC/0MBN0MLXXaBdgMCYgM+HXeKeABbDAFnAwsddxj/gwucjll7ZkvcfNl
-/ZMucdP6cdcgABB4MP92cSAgEFgw+3XZIgAQKDD9rQgloBAgMPR12yGAAmtw9XXdKgAk75AKCERk
-jYxgABAAAAAAAADz/3NiAABacAAAAJUQ/Pe7EgAAeTD+vAACAABqsPoKAiAGEFgwW8X48/3Fb+oQ
-EDAAAAAAAACUEZUSHPex+xYAIgAAerD6CgIgBhBYMFvF7vP9nW/0EBAw8pwAAAAQUDD896kQBhBY
-MFvF5yJmdvP+SG/0EBAwAAD9PAAAAhBQMPz3ohAGEFgwW8XfY/2pAAD9PAAAAhBQMPz3nRAGEFgw
-W8XZY/2RAABsEAgZ95ktKkAtlqoukoUokoYc95YT95f7CgMgABBQMPzsAQ/8EGgw/YgBCgUAYvD2
-95IYCQBSMPiWhiBYABew//eMEAgQSDD5FgEgCBBQMPoWACAIEFgw+/R+IAgQeDCfEmAAJQAAAPj3
-ghABEHgw/xYCIAAQSDD5FgEgAxBQMPoWACACEFgwK4R+Cr0K9fd7HAAgbnD5FgQsACBv8P2dCAAg
-EGAwDcwM/fdxEAAQIDD+d1IABBBAMP5CUgZABD3g/NR/IgMAQLDCqFvDuBj3aPiAfigDABawD5kQ
-CXkCCYgCBogCKTLQBZkBCYgC+DbQICACITDzPBAtngI9IPT3XRAAECgw9vdeEgAAGHDCqFvDpixC
-4B/3Wy0yAAKuNg/uEP/MAQwJAHdw/cwCADAQWDD1XBAsCQAzMPxG4CAIAhjw9EwQIZAIWXAqCihb
-w5cY90kpguzy90waAwAWsBz3Sxr3S48U/7sQCABAZnD7qgICCQAR8PoiAg4JAE/wAv8C/4bsIAAQ
-EDDRDwBsEAQV90H2IgAgIBAYMG06BodQdnsFuFXCINEPlyAiUATRDwBsEAiVFfIWAiIAAGEw9vc2
-EgAAUPD5LAAAABAQMPwWBCACAhpw+hYDIEACIbAnYn8PAgDacFudDPs8AAIAACqw+nwAAgAAYXBb
-v970oBNgEAIxsPRp1nAQAhCwwCDRDwAAAIwSsV2tzCrAAMXd/woAJgCIbpD1/AACAABwcPMKACAA
-EDAw9AoiIC8QODBtCBRkoHzJYXehL2hiTLHK3KAqoAB9oVBj/+R0qez2bAEgAgJTMPrmACAIAnOw
-8//gYgAAYrAAAAAAAP/EACACAjGw+swBIgAAGzD65gAgCAJzsPP/u2IAAGKwdKmvL8QA8/+pYgAA
-KzDKaWhhV2hiR8gxJzQAZF9U9FQAIAAQEDDRD8gxJzQAZF9C9FQAIAAQEDDRDwCOE/bmACAHADTg
-JzQAZFBBGPbuH/buqP/0VAAiACB4sNEPAIsV+hIBIAAQYDBbm12LFPoSACAAEGAwW5taiRP2lgAg
-BwA04Cc0AMhRJFQAZq7lG/bdGvbeq6qqItEPHfbaHPbb/RIDLAAgazD/1gAiACBgsNEPAAAAbBAE
-izAmsAAnCgD4aUliAABK8GRgQQu5AvgaACAAEFAw/AoJICMQaDBtCChobBV8YRJ9YTb4jP8gAgJS
-sPYkACACAhCwsXereSaQAGhpUGSAY2RgSmP/0MBA9CQAIAICQnD4NgAgABAQMNEPLJAA+MkpYAAQ
-KDCre/awACIAADrwbQgU9GAYYAICKXAmcAGxd/hpCWIAAEnwY//kq3urWcmCwND9JAAgAgJycP42
-ACIAABKw0Q/GKtEPAABsEAZb/v32pqNiAAASsBT2pBn2c/z2ohABEFgw/faiEAAQcDAf9qEvxqUt
-xqQuxqcY9p8oxqYf9p4vxqke9p4uxqgtxqsY9pwoxqotQoIf9pse9psPAgAP3QEO3QItRoIc9pks
-RoYrRocoQqoPAgAIGEv/AgAGA/XOEBf2kyhyNfb2kxZ8ADYg8vaSH/4QSDDz9lAf/xAoMBv2jxr2
-jw8CACq2AC8ywBj2jQj/AS82wC0y0C7qwP7dAQEVEHAwDt0CLTbQHPaHLDbRKjLbG/aFC6oCKjbb
-GPaEKCY1LjLdL/rfD+4BLjbdKzLSHfaAHPaADbsBDLsCKzbSKzLSGvYMKqDACbsB+zbSIjgBOqAs
-MtMe9ngd9nkOzAENzAIsNtMlNvQlNvXA9C4y3g/uAi423iwywR32cv3MAQCAEGgwDcwCLDbBKjLC
-G/ZuC6oCKjbCLyItGfZsGPZs+vZsHgBAT/D89mseCQBH8P8mLSAFEFgwW5iSGvZl/PZmEAYQWDBb
-mI4a9mL89mIQBxBYMFuYixr2Xvz2XxAIEFgwW5iHGvZb/PZbEAkQWDBbmIQa9lf89lgQChBYMFuY
-gBr2VPz2VBALEFgwW5h9GvZSHPZUGPZS+CYOICAQWDAPAgBbmHf69k0RQRBYMP0KACD/EGAwW5qW
-+vZIEUEQWDD9CgAg/xBgMFuakhr2Q/z2RRDkEEgw+SYKICMQWDBbmGga9j789kAQJBBYMFuYZRr2
-Ovz2PBAlEFgwW5hhHPY7nCycK5wtKXBEmRAiMtwtMtgPAgAPAgANTVP9FgEk5AA2YJkQ8hYDIAKE
-BmD5FgAiAuUCYP8CAAIC7YZgIvrq9PW8EAIXrKApCszyCoAgABBQMPJOCAAAECgwLuDA+0JRIn0A
-N6D1XAEkACBJMPlS6W4AIBEw9qP5YgAAErAU9hwvQtQZ9hsY9hsJ/wH4/wIALhBQMP9G1CAHEFgw
-W3PQKmF9/wIAAAHn6pD7CgIgrxBQMFtzu/oKKyABEFgwW3O4+gorICkQWDBbc8X6CjIgARBYMFtz
-s/oKMiApEFgwW3O/+govIAEQWDBbc636Ci8gLBBYMFtzuvoKJiABEFgwW3Oo+gomICkQWDBbc7T6
-CjogRxBYMFtzsfsKASCpEFAwW3Og+wotIKkQUDBbc6z6CjYgAxBYMFtzmvoKNiAuEFgwW3Om+go3
-IAEQWDBbc5X6CjcgPBBYMFtzofoKJSACEFgwW3OP+golIAMQWDBbc5v6CjsgAhBYMFtzivoKOyAG
-EFgwW3OW+woBILMQUDBbc4QrYYIiChgPAgD/AgAIAXvYkPsKViCzEFAwW3OM+gpHIAEQWDBbc3os
-YYL/AgAIAXNgkPoKRyA6EFgwW3OE+gpGIAEQWDBbc3ItYYIPAgAPAgD/AgAIAWfokPoKRiA5EFgw
-W3N6+gpAIEwQWDBbc3f6CjMgTRBYMFtzdfoKOSBOEFgwW3Ny+gqyIGIQWDBbc2/6CkkgTxBYMFtz
-bPoKTSABEFgwW3Nb+wphIE0QUDBbc2coMv4Z9W0JiAIoNv4uQpAvCi8P7gIuRpBb/Pj2ohFiAAAS
-sB31pdMPLdJ/ZNPVHPWj/MCAIAAQWDBt2QwAsAQMDRt/1wGxubG7EvWgH/WeHfWcFPWcLNKAx+v+
-YXssAEBzMPgKBCH6AlpwC4k4/NaAIIQAf7D/AgAAAX2GYP8CAAIBxQJgaZRCJHYpL3Yq8nYrIAAQ
-QDAodihgAC5kvYPaUFu7kvkKzCH+xa6gY/1zAAAAAP8CAAABYwZg/wIAAgGuAmD/AgAEAbICYP8C
-AAIBOoJgFfVKFPVgHPTCLEaMJUaQH/V7LPaMJfaQHvV6LOaMJeaQHfV4LNaMJdaQ+AoAIBAQSDBt
-mg0EiQoslp/1lq8gAgJCMNpQW/xp9qERYgAAErAb9W4sQnEqcjXB0foWAiwJAGsw/EZxICUANqDA
-oFuKSxv1ZvuuCAAAEHgwL+aBiBIo5oIv5oMZ9Nkp5oAncmhkcB8qCgFbikEb9Vz7qggAABBgMCym
-gSemgiymgxn00CmmgBj1Vvr6/yBVEEgwbZoM+YJ/IAgCQjCrmSqWgC1hftMPZND1wNAa9Tv8Cv8g
-JxBYMFuZhhr1Nxv1Shz1SluXXx/1SC9GcBr1Mxz1SB31SB71Rv5GeCJAEFgwW5l8xKDAswuqLAoZ
-FPmcAy/8EFgw+GF+KABAXnDymxEJgAQ+YP6qEQgJAF5w+vUGGAkAVnD5pqUgGQC2ICxhf8zOLWGA
-zNkuYYLM5C9hgWTyI9EPAPoKLSABEFgwW3LI+gotICkQWDBbctVj/BsAAAAAAAAA+woCILMQUDBb
-csBj/P4AAPoKRyACEFgwW3K8Y/0PAAD6CkYgAhBYMFtyuGP9JgAAKHJoZYmBKWF+ZJGvKkKkG/UZ
-C6oBKkakY/lsLGF/Zc8DLWGAZd79LmGCZe73L2GBZf7x8/7wYAwQaDAAAMCk/PUOEAgQWDBbwwQe
-9PYpEgEoEgD+LgIAARBQMP4WAygDAFZw+RYBICYCPiDApPz1AxAIEFgwW8L4jhMa9QEPAgDSoCwy
-2B/0/40R/N0QDABAezANzAIsNtiLEBz0vy423Au7Cwy7Cyu9C/u8ICBIEGAwW7kB2iBb+vPz+r1i
-AAASsC5wti9wsChwuflwsyAAEFgwK3S0K3S6K3Sz+3S5LgAgT/D/dLAuACBDsC50tmP9Xhz05Sx2
-KGP9TS1wuS5wtihwsPtwsyAAEHgwL3YoL3S0L3S3L3S6/3SzKAAgWjD/dLYuACBDsP90uSwAIHdw
-LXSwY/0SwKT89NUQCBBYMFvCxowRwNANzDacEWP++8Ck/PTQEAgQWDBbwr8S9Mlj/1JbcnEuQqoY
-9MsKTxQv/P7//xEOAEBDsA/uAi5GqmP3+GP8QQAAAAD/dikgABBAMCh2KGP8sQAA/3YpIAAQWDAr
-dihj/KEAACR2KS92KvJ2KyAAEGAwLHYoY/yLLWF/Zd5JLmGAZe5DL2GCZf49Y/e2KzLgHfSxHPSx
-DbsBDLsCKzbgKjLABaoCKjbAKDLYGfRTGvSI/PSqGAkASjD4NtggIBBYMFuWrR/0JC4ywhj0pQju
-AS42whr0YS2iGMDEDN0CLaYYK6IZDLsCK6YZwJEppiAu8oHHjgjuAS72gdEPbBAYGPSZKIJBEvRg
-8/SYFXAANiDzCgAgABA4MPYKACAAECAw9QoAIAAQQDD/9JEQABBgMP4KACAAEFgw+xYUIAAQaDD9
-Fh0iAABQsP4WFyAAEGgw/BYeIAAQcDD8CgAgABBYMP8WGSAAEBAw+BYaIAAQeDAY9IAogoEqomCo
-OAmIEaiqia4rFiMqFhb4ohYp8AQ+YJmu+RYYIYAQSDD69DseAAVGUCkSGGSRQyihf/kSFiAPADYg
-KZIa+xYjIVwANmAvFh8sFiItFiEuFiAtEhYuEhieEp4XLNESnBX90gsiAABQ8P0WASIAAFhwW3IC
-KxIjLBIiLRIhLhIgLxIfKRIWKhYR+hYVIAJ7rqAjFiSKECYWJYgVJhIZKJUSmpyDFCOVE4oR+pYL
-KAAgQPDzZd8h/gJCMChl4CMSFCgSGiWWESSUUSaQb5if+pBwKAAgUjAoFhr2kHEiACAdsCgSHiMW
-FCMSHfqQcygAIEKwKBYe9pBQIgAgHbAoEhcjFh0mFhIjkhr2kTEkACAxMPqSECgAIEKwKBYXKJEw
-85EyJgAgPPD6kTMkACBVcPj0Lx4AIH4w85BsKgAgXPD6kG0sACBisPiACSIAIBGw9hIlLgAgcPDz
-EiQsACBusPrz7BDCAP4wKBISKJReKBYTYABWACkSFimSGvgSFiAPADZgD5kRKRYYmY5j/qIpEhYY
-87yYnhnzuikWGGP+kS8WHy4WIBnztygSGC0WISwWIvkSFigDAEowKxYjKBYYmJ5j/oIAKJBeKBYT
-KBITGfQH+BIZJgAgQbApkkHzPAEgCAJCMPgWGSv/CMzQGPQAKIJDKhIUKRIR+RYVINEANiDAMG0I
-viYWJRbz/BnzwSZigymSYKY2CWYR9hIeKAAgNnAokHCmhiYWHiiQcSYSHfSUUSYAIDIwJhYdJpEw
-KJBQKBYb9pEyLgAgfbD4kTEkACBBMPaSGioAIF2w+JEzIgAgEjD2kG0mACA9sPiQbCwAIGIw9pBv
-LAAgbbD489weACByMCWWEfaSECoAIFGwKIAJ8zwBJAAgNXD2EiUgIAD+MCgSGyiUXigWHGAABSiQ
-XigWHBnzzigSHCmSQ/k7DXYAIEGwY/86AAAAAAAA8/PJEd4ANKAY88oqFhQihX8rhYH8hYMgMgA1
-4C8WHxnzxC4WIC0WISyVgyuVgfKVfyIAAFHwW6a6LRIhLhIgLxIf8AAQYgAAOrAshYMrhYEihX8q
-FhQqEhQnNsMS83orIX75IX8hZAA24CchgCwwff40fCwFADtw/DR9IBkANmAqNH8tEhcuEh0oEh4o
-NIAuNIEtNIIsIX36xxRwABBoMBnzpC00eS00eC2Vg2AAAwBksVQX85sqckL0dkkh3AA2oMAwGvOa
-KqKCKSJgqjoJqhGqmYueD7sRm54sIX/6vAAAqgA3ICySGvkWECCMADcgLxYfLhIQmhqaHy3hEp0d
-/uILIEACWHD+FgkgEAJQ8FtxKC8SHy0SEPoWFSAAzi6gjByLHYkYKBIaJdYRJNRRmN+Z3CvVEizV
-EyzQUIsZ+9YLIAEQcDD+0hAsAQBzMCzUUPlwCSACAhjw/AxHCAAgWjD4FhokACBhMP+fLHQAIHVw
-LNReYAAkABrzDykWEP8WHyoDAFLwmp5j/2QpFhAvFh/z/1tiAABS8CzQXityQvxmCAv/kFzQLSF9
-LHIoJXY/9HZELAYBbDD2dkUsBQBr8Px2KCIAABKw0Q9lnpwoIYJljpYnIYAqMH0H2jkqNH1j/rJl
-viJlzh9kfnAqFhQvFh8Y808uFiAtFiEihX8rhYEshYNj/hUAAGWepykhgmWeoWV+nhvzRy00eS00
-eC21gyixfSqxeS6xfy22RAiqDA6qDCq1gWP+ehnzOimSQ2SQfv0KACAAEHAw9woAIAAQEDD/CgAg
-ABAwMPQKACAAECgw+woAIAAQSDD5Fh4gABBAMPgWGiAAEFAw+hYdIAAQYDD8FhUgABBQMPsWFyAA
-EGAw8/yeYAAQWDAldj8tcigkdkT2dkUiBgFgMPISFSwFABfwLXYo0Q8AIhIV0Q8AAAD9CgAgABBw
-MP8KACAAEDAw9AoAIAAQYDD8FhUgABBYMPsWFyAAEEgw+RYeIAAQQDD4FhogABBQMPoWHSAAECgw
-8/1YYAAQUDBsEAQY8s7TDyKBe8A18ygwcAAQMDAX8uMpcn/KkvR98yIAACmwbQgVJkTgKnJ/9VwB
-If4CUrD1owdwAgIhMGP/4yOBfXk/G3o/GCuBfs2yLIF/zM0tgYDM2C6BgczjL4GCyPDRDxLy8SYm
-ZiYmmdEPbBAEE/KyGPLu9DF7IAAQEDDyNYEkAEBBMCQ1e9EPAABsEAQb8uka8uf5CgAgABAQMPuw
-gCAIEEAwbYoVAJAECwwb/8cKcAICSnAtoa943wOyqtEPHvI3LuDAxfDyCgAmAF3/kBLyFyIij1tx
-Cxvy09MPKbJm86wAAAEQIDD0kJxiOgEQMGQgWmghTP8CAAIATICgaSNMZTDO/7KZIJMANmDA8cCi
-/PLJEAAQWDD9LAACAABw8FvAqPpJEQmQBDjg+fLEGAkASjAIKAL4lIAv/xAQMNEPAAAA+rKZIFwA
-tmBloFT6CgQgABBYMPzyuhIAAGiw/jwAAgAAeTBbwJf6TBELkAQ84PzyshoJAGbwCysC+8SAIAAQ
-EDDRD9EPLrKZwNAO1Dhj/1xkP7dgAFYAAGX/bWP/rAAA+goCIAAQWDD88qYSAABosFvAg/pJEQmQ
-BDjg+fKfGAkASjAIKAL4lIAv/xAQMNEP/woBLzcAtmApspn4CgAgARB4MAmPOGP/IQAAAAD6CgIg
-ABBYMPzykxIAAGiwW8Bw+kkRCZAEOOD58owYCQBKMAgoAviUgC//EBAw0Q8AAABsECz58okS3gA0
-oP8CAAABcgSg/wIAAgF4gKD/AgAEAYyAoGglA8Yq0Q8c8dMswMEb8n/68n8QJAB/MCOhxAczEfAA
-DGIAIFzwI6HDBzMRqzP6CgQgARBYMPzydhIAAGiw/lwAAgAAePBbwE3ApfsKASIAAGDwW8BKLDAA
-IxZE9QoAISgCUHD0wNhg/xBAMP0KACYAaEcQ/RZLIAAQODDwADhv6hAQMAAAAGRyJCsSRYhxLBJG
-/RJHICACUHALgAD2oldiAAASsCwSRCzAANVg9MCBYP8QaDB9wXkrHQH6HBAgIAJa8Fv7KSwQEPoW
-TCACAjFwDwIA/QpbL80ANyB9yacoHJSopS5Qe8X9DwIAf+mXLR0B+hwQICgCW3D83BggOAJrcFv6
-svesAAM8ADagLhJLZeMkGPJAj6F4+YkqEkT78jkQARBIMCkWSwOqDCq2HWP/cmYhwhzyNMCxK8SM
-YABGwGD6VQgP6hAQMPoKAiABEFgw/PIxEgAAabBbwAjAovsKASAAEEgw+VR9IAoQQDD4VHwgIAJg
-cFvAARvyIsCh+rSMIADBrKAV8h8lUh3/CgAiAABY8PUqFAAAEGAw9KFsaEIBKDAKOhRtiQuJsLH/
-+7wELAAgYnBkoI6JsIixJLIC/rIDKAAgZnD9sgQoACBKMPyyBSQAIEEwBO4IDt0I/bIGLAAgazAv
-/Aj4vCAh/gJKsP6yByIAAFtwbZlH+YIAIBACe/D8ggEsACBm8P2CAioAIGuw+YIDKgAgVnD8ggQq
-ACBfMP2CBSoAIF9w+4IGKAAgXnD+ggcoACBPMPncCABAAkIwrLys7PP5Cg4gASgw+B0BIEoAN6D9
-8esQBBBQMPmSACBAAkIw+RZIKAAgQ7D+qgwAABBIMA8CAA8CAA8CAG2pB/mEACACAkIwKhJIwLH7
-1IwsACBisCzWHtEPHfHZ/NYeIAEQWDAr1IzRDyUSTPgclC/qEBAw8/6MZAAgRXAZ8dYANRHz/WJi
-ACBNcBXx1BjxCAAzEaU18/1PYgAgRPAAABXx0Bjx0AAzEaU18/06YgAgRPAlEkwoHJTz/khkACBF
-cMCRKbSM0Q/z/zhgABBgMPvxxhAGEFAw/QoBIAEQcDDwNREAEBB4MPOSHCIAAGFwW4Y1wHAH5BYB
-AgAlFkn88bsQBRBQMPwWSiAAEFgwW7+KFvG1DwIADwIAAAaGlhAW8bQqCgX7CgAiAAAg8PAEoAIA
-AGGwW7+A+vGsEBAQWDBbwdUH5Bb6CgYgABBYMPwKACAAEGgw/goAIAAQeDBbhhooMAApCv//AgAG
-AE7OECwSSRPxk/vxnBAGEFAw//FBEAEQaDDzMhwgARBwMFuGDsBwB+QWAQIAwKX8EkogABBYMFu/
-ZRrxk/jxkBIAAEjw0w9tqgUACIYASWEqCgX7CgAiAABhsFu/XBrxhxvxLlvBsgfkFvoKBiAAEFgw
-/AoAIAAQaDD+CgAgABB4MFuF9mP79cCi/PGAEAEQWDBbv07z/QFv6hAQMBjxfQIIi/ADog/+EBAw
-0Q9sEAQV8XnTDyRSHiNSHSJSH/bxWh//EDgw9DMIAAAQQDDzIggAABAgMG0pYSJigSNS4fJCCAAC
-AiEwCSIRojIoJCEoJCAoJRMoJRKYLJgrKCYQKCYRKCRRKCRQKCReKCRfKCUqJyR4KCUxKCUyKCUz
-KCYaKCRsKCRtKCRvKCRwKCRxKCR3KCU6KCRzKCR70Q9sEA4kFhAU8VUiFhGJRohAikWMRI1DjkKP
-QZ8RnhKdE5wUmhWYEJkWiEeYF4RI9BYIIgAAWPD0LAABlgA0oPzxSBGOADTg/vFGEAkQaDAtJhEl
-wuko+gT8wuMv8BBoMP/i6CQAIEVw/uLkJABAbXD6XAAAFQA3IA/+Of/xORoABXVQJfbpYAABwKD1
-rAABXQA2oPzwvhGlADVgJUYS+xYNIgAAMHD5QgUgABA4MPkWDyAAEBgwiB2FYCJCEghVKPAwBABk
-EEAwCFUsBWUUlR4FBRn6XAACACA4sFuWvB7xIC/i6ZUc+eLjIgAAarD6/wwP+BBYMPji5C4AQF/w
-+vwAABMANmAp4ugJmDl48wUv5ulgAAHAoPWsAABuADagZFCy9SYAIgAAUXD7EgwgABBgMFu12wAx
-BCwSEI4eix+bIZ4j/CYEIAEQaDAA3RqdJvruEQwAIGOw/BYQIf4CYzD8JgUqACB28PsWDyGAAlrw
-myIqQhH2bAQgAgIY8Pd8HCv/mtTQwCDRDyXi3izi3yji3Pni2yAOAilw9MAjZABAXXAImAwIzDYp
-4tn0kBpuACAvcH/DEi/m3mP/YgAAAAAA8//jYgAAYnDz/1JgABAoMMEm0Q/AoPzwbRAGEFgwW76s
-9SYAL/QQEDDRDxnw3Rjw3CWS3iyS3yiC3PmS2yAeAilw9MBSZABAbXAImAwIzDYZ8NQpktkqXQH0
-kBNh+AJSsHrDCxzwzyrG3mP+ZAAAAPP+XmAAECgwAAAAwKD9CvwgBhBYMFu+kvVGEiAMEBAw0Q8A
-AAAAAADz/7RiAABicGwQCFtwxxzwABfwvizAwftyeiABEBgw/AxAAAUQKDD4coQkBQBk8PW6CAIA
-ACKw9nzkK5AEOqD6iggE4AEsMFtwtSomICtigSpyhKtbCbsRq6pbcKsrIiAqJiH7SQpwABBgMCwm
-JGAAC3tLCAS9DA1tFC0mJBXwnfutDAAEEHAw/dwBIgAAULD9JiIgDBBYMBbwBhnwnSwkqC4kqy4k
-piUmGyMkqSsmHPskrCACEEAwKCSqKSYd9mLaIA4QSDD5JK4gEBBAMPgkryANEFgw+yStJ/ABMDAm
-Jh72Jh8gABBYMG3qEi+grADxBAA+GvXhCXACAlKwsbsrCgQLDkf+JKYkAMODoPzwgRAFEFAw/fB3
-EDAQWDBbvkYrIiAqIiELqgyxqgpqFPmsAAGsADagCgxfZMJuwqAJjVdk0nMJzlNk4ngJ71Fk8n/2
-FgQh/gJCsAmKO8FxB6c2+SIkIf4CUfAAoQQANhr5aQgB/gIxsPYmIyH+AkpwKSYlW3Be1aBbcGgK
-WgyxqgpqFPmsAAJLADagCgtfZLHbwqAJjFdkweAJzVNk0eUJ7lFk4eywrwn6Ox7wFIUUKiSkAHEE
-ADoa9ySlIf4CUrAqJiYpIKT44tkgDAJKcACRBAA/GvgmJyH+AnvwLyYoHPBKLuLaLyImLSInKSIo
-mRAoIKT4FgEgBRBQMPggpSAwEFgw+BYCL6AEP+Bbvgcc8EAvIiEuIiAoIiKYEC0iHp0R+yIfIAUQ
-UDD7FgIiAABpMPUWAyAwEFgwW738HPA1KCIlLyIkLiIm/SIjIAkQSDD5FgMh8BBYMJsR+xYCIAUQ
-UDD4FgAgMBBYMFu97wprEfwiJCDYAlCwW/7IwCDRDwAAAPzwJRAFEFAw/fAXEDAQWDBbveUqIKwt
-IhsAoQQAPhoAoAQNCRlkkTIsIhywy/CwBAH+Akuw+QkZD/8QUDBtCAoJGRT0kBFgAgJSsGP/7pYU
-8/53YAAQUDAAwQQAPRrwsAQB/gJbcPsLGQ//EEgwbQgKCxsU9LAIYAICSnBj/+4A/CSsIgAAWLD6
-nwwABgJzMP4kryACAlMw+iStIAQCQzD/JKggABBQMPgkriACAmvw/SSpIAQCQ/D4JKogBgJ78P8k
-qyAEEHAw0w9t6hItsKwA0QQAPBr1wQhwAgJa8LGqwKQKDkcuJKZj/ZEAqRHz/h9gEBBQMAAACJkR
-8/4YYfACUrAMmRHz/hNh+AJSsAAADpkR8/4MYfwCUrAAqRHz/YxgEBBQMAAACJkR8/2FYfACUrAM
-mRHz/YBh+AJSsAAADpkR8/15YfwCUrAAAAAAAPP91GAAEFAwAAAAwKL8784QABBYMFu9kPzvzRAF
-EFAw/e+9EDAQWDBbvYtj/REAAGwQCBTvxxjvn9MPKkLbK4KBKI3mKIDB+bsRAgAAMPD/hxB6ACBa
-sCqtASqsgFuLXGAACCqtAyqsgFuLWRnvAS2SEf5CCSAyADdgwCCLR4VGj0iOSRzvtJUQiUqZEfsW
-AiAFEFAw8hYDIDAQWDBbvW7RDwAAAAAAAPrvrBA5ADeg/0IIKgAY9pD67yEQNwA34PVCBioAF/6Q
-y1T7QgcqABkukPwKQCAHADbge8ss8/+jb+oQEDCLR4VGj0jz/5Vv6hAQMItHhUbz/4lv6hAQMACL
-R/P/fm/qEBAwG+8bHe+T/UYKIIgCGLAjJhHzJhIgmAIosCUmE/UmFCJAEFAwW4QQ16D7KoAiQBBQ
-MFuEDY5HmhUPAgD36igAgBBYMFgGX/tCByGEADaglRb2FgQgPwA24PasAAAAECgw+mwAD/8QWDD9
-7wESQBBgMFgGOCkiESisCCiWASmmAiOmAygmES9CByVcAf9T0XYAIDHwhxWKRveqKACAEFgwWAZI
-1qD1QgYhEQA2oMtT8xIGIAAQKDD6bAAP/xBYMPwqQCKAEGgwWAYiLSITuKyc0Z2ik6MsJhOLRrFV
-+1PXdgAgMfCKSluU6SVC+S5C88dg+lUMAgAAarD04BZkAEA1cClC+ChC9AmYOXhTBSVG+WAAAcBQ
-ZFGX9+7MEMcANWD1Jg0iAABRcPtCCiAAEGAwW7QLG+9J+yUgIAAQUDCaL5ouikhblNElQvksQvP6
-VQwCAABqsPTAFmQAQDVwKUL4KEL0CZg5eFMFJUb5YAABwFBkUXJkURL1JhciAABRcPtCCCAAEGAw
-W7P1ikdblL/BsFgGDComFvtCByA0ADagLAoAW7PvikZblLjBsFgGBSomFfVCBiBZALagi0cd7mqP
-SI5JLdIR8/2xb/QQEDAAhUYd7mWPSI5JLdIR8/2cb/QQEDDAoPsKBiIAAGHwW7zYHe5dlS2LR4VG
-j0iOSS3SEfP9d2/0EBAwAAAAAAAAAPwKACIAAFlwW7PRiklblJslQvkuQvP6VQwCAABqsPTgG2QA
-QDVwKUL4KEL0CZg5eFMKJUb5YAAGAAAAAADAUGRQ9WRQyvUmGCIAAFFw+0IJIAAQYDBbs777EgQi
-AABQsFv+KxvuPS2yEcDBCs04LbYR8/zvYgAAErAAANxw+goAIAYQWDBbvK4d7jQlJheLR4VGj0iO
-SS3SEfP8z2/0EBAwJULuKkLv+ULrIB4CKXD0oL1kAEA1cCxC7AycDAysNi5C6cjppdp6wwUqRu5j
-/jjz/jVgABAoMCVC7ipC7/lC6yAeAilw9KCOZABANXAsQuwMnAwMrDYuQunI6qXaesMGKkbuY/5d
-APP+WWAAECgw3HD6CgAgBhBYMFu8iR3uDiUmGItHhUaPSI5JLdIR8/w6b/QQEDAAACVC7ipC7/lC
-6yAeAilw9KA2ZABANXAsQuwMnAwMrDYuQunI6qXaesMGKkbuY/7aAPP+1mAAECgw8/9MYgAAYnDz
-/3tiAABicPP/02IAAGJwbBAGFe6rFO6DKFLbKkKBKU3mKZDB8xYAK5AEOqD/lzN4ACBSMCqNAfYK
-gCEAAlKwW4o6LEKBK1LbCcwRrLv2uggCAAAisFuKMgpGDGAAKwAAAAAAKo0D9iqAIQACUrBbii8u
-QoEtUtsJ7hGu3fbaCAIAACKwW4omCkYML1LzJFL5Bm0K/lL0LdAEP2D9RAwP8BA4MPTwFWQAQDkw
-L1L4D/45fkMHJFb5YAADAADAQGRCAPjuABMlADUgGu5wDUkUlCUACottmQIARGErUvMkUvkGbQv/
-Uvgt0AQ/YA1EDPSwE2QAQDkwLlL0D/45fkMFJFb5YAABwEBkQg5kQZ30JgYiAABRMPsKACIAAGNw
-W7JND2MR2jBbk/ckUvkoUvMpUvj6RAwCAABqsPSAE2QAQDkwKFL0CZg5eEMFJFb5YAABwEBkQhtk
-Qan0JgEiAABRMPs8AAAAEGAwW7Mb2mBbk+UkUvn6UvMiAABqsA1EDPSgFmQAQDkwKVL4KFL0CZg5
-eEMFJFb5YAABwEBkQhFkQbn0JgIiAABRMPtsAAAAEGAwW7MJKlIFDwIADwIA+qQJAHgQWDD7qigA
-EBBYMFgFG/omByAIALagxyTRD4pV+qYKAMgQWDD7qigAEBBYMFgFE/omCC/jADag2kBbk8LBsFgF
-DvomAy/RADag+0wAAAAQYDBbsvHaYFuTusGwWAUH+iYEL7QANqD7bAAAABBgMFuy6R/uKP1SHCAC
-EFgwKyS9KyS/KyTA+yVhIAEQSDApJLwpJWMpJWUpJWf5JWogZBBwMP4lYiAFEEAwKCS++CVrIAMQ
-UDAqJWQqJWb6JWggABBgMCwmLiwmNi0kJC8mOP8mOSQAEGgw/SY7IAQQYDAsJWmKEFpY2MAg0Q/A
-oPzthRAGEFgwW7vE9CYGL/QQEDDRDyRS7i5S7/tS6yAeAiEw9OEzZABAOTAoUuwIuAwI6DYpUunI
-n6Tbe4MLK1buY/3PAAAAAAAA8/3GYAAQIDAAAADAoPztbxAGEFgwW7uu9CYBL/QQEDDRDyRS7i5S
-7/tS6yAeAiEw9ODkZABAOTAoUuwIuAwI6DYpUunJkKTbe4MMK1buY/3BAAAAAAAAAPP9t2AAECAw
-AAAAwKD87VkQBhBYMFu7mPQmAi/0EBAw0Q8kUu4uUu/7UusgHgIhMPTglGQAQDkwKFLsCLgMCOg2
-KVLpyZCk23uDDCtW7mP9tAAAAAAAAADz/apgABAgMCRS7i5S7/tS6yAeAiEw9OBeZABAOTAoUuwI
-uAwI6DYpUunImqTbe4MGK1buY/2+APP9umAAECAwAAAAwKD7CgYiAABiMFu7dPQmBS/0EBAw0Q8A
-AAAAAADz/tZiAABC8PP/JWIAAELw8/91YgAAQvDz/6tiAABC8GwQBBjtq8CQKYb7+CgKB5AEPWD2
-ShEJUAQ84PqZAgYJAD2w+I0EJgkATfCXgNEPAGwQJBvtoPocAABAEGAwW7FwG+2d/ApAIIACUHBb
-sWz77ZsQ/gJQcPqsASCAEGAwW7FoFu2XEuzs9woAIAIQGDAkYa7aQFu5XfsKHyH+AmKwDLsM+0UG
-cgAAYrCxrP4KACIAAEBw+3URACAQSDDwzBEKgAQ94PocfyoJAGbw/BxAIAICUrD7SwIAAgI58Psm
-+SGwAiEwbZo7+YEALAkAL7D9wQAvAAQ/YPuiACACAnOw+UkoAAgCUrDz3REABAJjMAuZLPOZNQAE
-AkIwDZkCD5kCKSb3/wIAAAQCMbD/AgAL/7Ad4MAg0Q9sEAQS7JfTD9MPKSKvE+zwypEpNqEoIpv0
-CgAgGQA2IPoKACIAAFkwW4E0KSKbsUTTD3lD6ikiscqRKTaiKiKe9AoAIBkANqD6CgEiAABZMFuB
-KisinrFE0w97Q+opIrPKkSk2oywinfQKACAZADcg+goCIgAAWTBbgSAtIp2xRNMPfUPqLiKc9AoA
-IBcAN6D6CgMiAABZMFuBGC8inLFEf0PsKCK39IBQYwAQUDArIrcqMs8rNs4qrQMb7JUtMrwf7Tuw
-rg5+FPTuEQwAQH9wDt0CLTa8LDKsf8cILzLLDw9Le/E6KTLMwId5gAgsMswMXEt7wQbAINEPY/+8
-LTLMH+0sLq3+Dm4U++4RDABAf3AO3QL9NswgABAQMNEPAAAvMssZ7Q8orMD4aBQOAEBP8Aj/Ai82
-y2P/qgAAbBAEFOxw9woAIAUQMDAHAkf7CgAiAABQsFuBDykKCAl5AgkJRylGUihCUyUKAPVGViNQ
-BDygAzMUJT0BGu0P+woCIAAQYDD/OBAABRBoMPaIAgABEHAw+EZYIAAQeDBaXa72oHJgAgIY8HU5
-zsCwK0ZYsXf5QlggADAuoGl2jhLs5B/s/v7s/hAAEGgw/AoAIBAQGDAD2wILC0crRlIMiRQAmREO
-mQIpRlP93AEo4AFoMPACBwnABDog+UJTKAAgejD4gjkggBBIMG2aAgBIYfzNCCmCAjtg0qDRD2wQ
-BBrs6dMPKqJ/KzroC6osKK39KIzgbogFKxqXertRKgpkFOzi+kV+IAEQWDBbgP7z7NsQABAQMPpF
-fyAAECgw2iBbgPDaIFuA5/U2AiAAECAw+iwAAgAAWTBbgM6xRGlL77Ei8zwQJbACOKDAINEPACzq
-cKysbsgFLQrPetsK8/+fYDIQUDAAAAAu+jiurm7oBMX3evsH8/+HYBkQUDDz/39gChBQMGwQBhrs
-wdMP0w8qon/2CgAghwA2oBXsvfTssBAAEDgwLVDd+W4RAAAQEDDzCgAgWQA3YJ4QKgqAW7h2wMEs
-RvuyrQDRBABrGqs79ykICgAgJvD7vQQrAAQ6YJqwwLMrRvuIEPSZCgsABDig+Z0EKAkAUjCYkC9Q
-3bEi/yO3cAgCGPAa7KEqon/1XAEgAgIxsPpjjHYAIDyw0Q8AAGwQFBTsQQ8CACtCf9cQ+Ow/FEIA
-NuD4gIAgABBIMG25DACQBAgLG3+3AbGasZkd7B7+CgQh+gJ6sA/qOPocFAAAEBAw/NaAIgAQGDDa
-IFuASLEicyn1GuyHG+yHHOyI/uyIEAAQQDD9CgAgQBBIMNMPbZokCokKKZ0EnZAMiQopnQSdkA6J
-CimdBJ2Q+4kKAAICQjApnQSdkFuAFxjsevkKACAIEFAw0w9tqgUphjAojQQoQn/TD/IKACA8ADYg
-E+xtFevwwJApNsIpNsMpNsQpNsX5NsYiAABQsFt/+isywCpCfwW7Avs2wCACAhCw8z1AK//pVJDz
-7A0QABAQMNogW3/s860IAAAQYDD81oAiAABQsFt/4yIsIP4KAC4AIB6w/vaAL7ICOKAa7FcT7FfA
-kCmmrygymsKw+4gCAwgQWDD4NpogABBAMG26FimmximmxymmyCmmySmmyvimxSACAkIw9nwQIAAQ
-SDD6ChAiAABBsA8CANMPbaoH+YYAIAgCQjD1CoggABAQMPtsAAIAAFCwW3+xIiwBdSnuK0J/IgoC
-+AoAIDUANuAc7DIV7CxtCB4uwoAF7gIuxoArQn8szUDzjQoAAgJCMPLWjSoABtoQY//aAAAAAAAA
-9QoAIC4ANuAW7CQY68kogIBtCBcAUAQICRv/AgACAQ1+ULFV9m1AKgAIWVBj/+EAAAAY678ogIAr
-fGD/vAAFgAQ+IBbsGihigBnsGgmIAQhVAiVmgB3sGC7SzP7uEQ/wECgw/uwPIAAQMDD2NosuAEAr
-sA4eDP52HCIAAGOwAeEALd3qLdDBwID57AwQZBAwMP0NQAABEHAw+moALAUAb7D9qTkABBBwMP3r
-vhAGEFAwbephLt0BLuyAI+C8LuC9A5Mcx14GMyz+ZQwCAEAs8P4+KAAGAmtw9TMoD/4QKDAG7iwG
-Myz1+vgiAEAs8PMjNwQAQC+w9cYALgBAU7D8zAQuACAbsP72ACQAIHVw//wEKAAgKjB4mybAwNMP
-bQgcC88KjfCxzAwMQfrc/iIYADtg+vYAIfwCQjB4mwJj/9r5iyxwABBgMNMPbQgdC88KjfAszAEM
-DEH40gxgBAJzcP72ACAEAkIweYsEY//ZAAAY68+JsPmGhCAIAnrwGevQj/D/loQgEAJy8B/rzo7g
-/vaEIBgCavAe68yN0C3mhClyHI6QtJ2N0C6GiLic/MIAIAgCcjAt5oi8m/uyACAQAmowLNaIvIwr
-xoguchwa60+M4I/jjeIMPBSO4Q09FA8/FP4+FA7gBD/g9N0RD6AEO6D/3QIMCQBzMP3MAgApEFgw
-W41swCDaIFt+rtogW36lsSJpJPAvQn/yCgAgFwA34Pta7iIAAFCwW38LKEJ/sSJ4I+zAINEPANpQ
-/HxQIAAQWDBbtsgrcSgrZooqfFIpoQAqoQH7Qn8pAAQ+YAqZAvlmiSACAilw9m1AK/7QXVAY6zAo
-gIBj/b9j+9YAbBAIF+rqFOuSE+rCHOrwKEGCJUFn+0FpIB8QEDD0gYdg4AJjMCZBaypBbf5BYywA
-IC7wpt2q3fUPRAoBs++Q9fM5aIABWDD1gzFogAE0MGWTKfXoDAgBk1CQKEVmC48MDeIMIkVvBv8M
-/0VqKeABQDALiQwpRWgC/wz/RW4v4AF8MAr5DPlFbCngBDogIkFo+DaEI+AEOKAiNociQWwO/xH/
-NoUj4AQ4oCI2hixBbP82/S3gBDsg/Db8IAAQEDBmIrUiQjnLKPgs/yoBfMSg/wIACAGEkhDaIFu3
-ES0yivCuEQwAQD9w/EFiLAkAd3AtNoosNv4pMoEb6q4LmQIpNoEqQWL261QQABAQMPXrUxAwADag
-YAAFKkFieisiLzK9/CgRDgBAN/AI/wIvNr0lNrxbkKb0r99gAgIQsMcu0Q8Kqwoa60YpoXz7No0h
-wQA2YCwygR3rQw3MASw2gSJCOydBbypBbSZBaytBaS5BYy9BgiVBZyI2jPJCOSGoADfglhCXEZIT
-HOs3/7wAAgAAa7D6FgIiAABxcPoKBCAGEFgwW7jMwCDRDyoyhClBYihBYwqZDAkpFClFZwmIDChF
-ZiUyhCYyhy9BZgZVDAUlFCVFaQX/DC9FaC0yhy4yhQ7dDA0tFC1FayoyhStBaSVBZywyhiZBa/5B
-Yy6AASww/KoMDAAgLvD23QgN4gFQMPzYCAviAVAw+kVtKgD+x5Bl8dALCERlgcoGCURlkcT/AgAI
-AODQkCxBggXvDP9FZigAIFdwCekM+UVvLeABfDAL3gz+RWghAwA3IAbrDCtFagm5DPlFbingAUww
-CpsMK0VsDtgRIkFo+DaEI+AEOKAiNocvQWwOnhH+NoUv4AQ/4C82hixBbP42/S3gBDsg/Db8IAAQ
-EDBmIM8pMoF7llcoMooICFXwgQQAARAQMAAiGvJGOS4+ADSg/wIACgC8xKCwKf8CAAgAw5JQ2iBb
-tpEuMorwrxEOAEA7sP1BYi4JAHuwLjaKLTb+KzKBHOotDLsCKzaBY/36wIAoRjlj/fIpoX1lnjwr
-oX5lvjYsoYBlzjBj/jkAHOrRkhP3FgIiAAB68PYWACIAAGuw+hYBIgAAcXD4QXQgBBBQMPgWBCAG
-EFgwW7hgwCDRDwv4DAaIDChFagqMDAnMDPxFbingAUQwCp4MLkVsY/730Q8AAP1cAAIAAHmw+hYA
-IgAAcvD6CgIgBhBYMFu4T/P9JG/qEBAwAAAAlhEc6gqbEPoWAiIAAHlw+goCIAYQWDBbuEbz/P9v
-9BAQMPoKAiAGEFgw/OoCEgAAaLBbuD9j/SYAAPoKAiAGEFgw/On9EgAAaLBbuDlj/Q7dUP9sAAAC
-EFAw/BYAIgAAcvD86fEQBhBYMFu4MfP+km/qEBAwlhEc6ez6FgIiAAB5cPsWACwAIFdw+woGIAIQ
-UDBbuCfz/mpv9BAQMAAAAAAA+goCIAYQWDD86eISAABosFu4H2P8pgAA+goCIAYQWDD86d0SAABo
-sFu4GWP8jgAAbBAGGep9Gup9KJAEKBQEKZIAKRYAW/y2Fep6GuoA/FF+IUAQWDBbjCca6nYPAgAP
-AgAqoX/yGgAiAXvqkPrp9xFBEFgwW4wb9OmkHAgBUDAsVEwrQtNmsvguUhktUhgf6mqu2P8CAAoB
-fcfQx38pUhb9RsQi1wA2YClGxixSGvbp1hJ6ADcgKVIcZJJvi13AMf6yFWAAEFAwbQgKsaoAoQQA
-PRp72wJj/+4tUMoZ6laIXypWEAuZLA2ILPlWEiH8AkIwKFYRLEbIiF0uUMqh7i7gAI1fAu4Q+EbN
-LAkAd3ApUhApnPX9Rs4pAAQ+YC1C2x7qRg7dAfhSHCgJAG5wKUbbKEbKLlIMLVDLAd0ILdAAKVIO
-Ad0Q/kbLKAkAbnAuUh8tUh4O2Aj5RswqASRH0BvqOC5QyypQyi9SD/xSDi4AIFuw/uCAKgAgWrAq
-oID/zAgKACBysPvqLxoAIGKwKFDLL1IOLlIP+VDKIBgQYDAM/ywM7iwJ7iwI/ywA/xH6ZhsuCQB7
-sC5GxwqqEf1GxSoAIFNwLbJwDN0sCt0R+mYYKgAgarArsnEMuywKuxH6ZhkqACBasCpmGhrqF/0q
-ACAAEGAw/goBIAIQWDD7ZhMgABB4MFpalfahqWIAABKwj14jZhMPfxQvZiEtUiMsUiIe6goZ6Y8N
-fDgsViIrUiMqUiL8ltsqACBasChSJS9SJCqW3Ah/OC9WJC1SJSxSJP+W1ywAIGswK1IpKFIoLJbY
-C3g4KFYoKlIpL1Ioqv/45vUh/gJ78C1SKC/m9ixSKStSKP2W3yoAIGbwKlIrL1IqK5bgCn84L1Yq
-KFIrLVIqqN3/5vch/gJrcCxSKi3m+CtSKypSKvyW4yoAIFqwKFItL1IsKpbkCH84L1YsLlItLVIs
-/5bhLAAgd3AsUjErUjAtluIMezgrVjAqUjEoUjD7lukoACBSMCiW6i5C8B/p1A/uAi5G8C1Cwi1W
-OSxC2CxWOitC2StWOypC2ypWPClC8ClWPShC7ChWPtEPwCAnRsYnRsgiRs0iRs4nRsoiRssiRswi
-ZhsiRscnRsUnZhgnZhknZhpj/sEAAAAAAAAA+uk7EUEQWDBbi14CrAL66TcRQRBYMFuLX2P88CdG
-xmP9KR/ouS7wwcCECO4CLvTBY/z1wKH86a8QBhBYMFu3PMYq0Q/AofzprBAGEFgwW7c4xirRD8Ch
-/OmpEAYQWDBbtzTRD2wQBBvovP0KASIAAHiw0w8qsnYPAgB/pxIssnD8zBAAABBwMPwvDAoAPhMQ
-/qcQcAIQcDAssnEMzBB/y3gM/wx9pygssnIMzBB/y3X8/wwAPgDusPoKASAAEFgw/OinEgAAaLBb
-txnGKtEPAHun5C2yggzdEP/T23AGEHAwn0D+NgAgBhBwMP0sAAAFEFAw/OibEAAQWDBbtw3AINEP
-AAAAAAAA8kYAIAAQeDCfMPP/1WIAAHiwnTCfQPP/yWABEHAwn0CeMPP/vWACEHAwAABsEAQmWkD6
-CoAiAABBMP36wCBAAliw8yYAIGACYLD8JgwgABBIMPwmDSIfASQw+SUUKgBAbvD1pToAgAJa8Psm
-CSBwAlCw+yYIKAUAGbD4JRUiAABZcFtpKANkOftcAAIAAFEwW32rCm4ULiUC0Q8AbBAEGulWAwsG
-8qKHIgAAaLAoooEpooYNIgz0gBNiAEAS8CiiggmYOXgjBSKmh2AAAcAgzyEionwson2jIvmieSH+
-AhCw9MAzYgBAEvAronoLmwwLyzYsonfIya0sfLMFLKZ8YAABwCDIINEPwKD86IYQBhBYMFu2xdEP
-APP/1mIAAFpwbBAGE+jzKDIgFejW8goAIEUANiAmUoQkMuEPAgCmJglmEaZEJkIHJmIOKyoA/AoA
-IgAAUbBbrbj6Rg4gQBBYMPpsUCAAEGAwW62zmk8oMiCxIngjviwyHQ8CAPIKACEZADcgFOj6wGD7
-QN0iAABQsFt9YiwyHfIsASYBAFGw/CPmcAICITAqMh4pMh/6FgIqACBisKqZ9AoAINYANmCxbPwW
-ACAAEFgwmxNgAFMtIFArJFH72wgCAABS8JsS/RIAKgAVWpCCIAq4DG2JHShShCky4fqICAACAlKw
-CYgRqJgnhAwmhA2SiC2ENygyHi8yHS4yH6j/9EwBLgAge7B+S24iUoEqMuGiQgkiEaoiJiANixL3
-IAwvlgA1oIsTKVKEq5kJmRH4IgAoACBOsJkRJ5QM9pQNIgAAWbD4lggiAABR8Ft9Lo0RjBMpIFAq
-1Df8JFEgAgJjMPwWAyMgATpgihKqnvokUSH+AluwmxJj/0zRDwAAAAAAAPP/CmAAEDAwbBAEF+jW
-FOjW/OjWEgAAaLD0dn0gBRBQMPR2fiAYAiEw9HaAIAAQWDD0doEnoAQ8oP48AAIAACHwW7ZT9uiH
-H8AQSDAJMwHzczYAABAQMPxi3yBpADTgKmLeK2Lb/mLZIH4CUrD9YtwqAEBKsPSsAAAKADcgDbsM
-C8s29OANagAgGrB6swUqZt5gAAHAQGRAvmRBE/U8AAAcADTgkk7yRg8iAABRMFpTMyVcwPVf7GCA
-AiEw83QMD8AQSDD6YukgTQA1IC9i4yxi6ASqDPTwE2oAQEqwK2LkDMs5e6MFKmbpYAABwKDKp2Sg
-lPNMAAAeADUg1KCSTvJGDyIAAFEwWlMdIzzA9T/sYIACITDAINEPK2LbKmLeLGLfLmLZ/frAIH4C
-UrD0wA1qAEBqsC1i3A27DAvLNsjupKx8swosZt5j/6QAAAAAAPP/nGAAEFAwJGLpL2Lj80QMD8AQ
-QDD08BZkAEBBMCli6Chi5AmYOXhDBSRm6WP/GPP/FWAAECAw+goAIAYQWDD8578SAABpMFu1/cCh
-/Oh0EAYQWDBbtfrHJNEPAAAAAP08AAAAEFAw/OhvEAYQWDBbtfPAofzobBAGEFgwW7XwxyTRD2wQ
-GBjnyw8CACiBfyIWHvw8AACAECgw+AhBAAAQGDD4UzkP/xBQMPwWByIAAFjwW3yp0qD7CgAv/xBQ
-MFt8pSoWHPsKAC//EFAwW3yiKhYb+woAL/8QUDBbfJ4qFhr6+v8hABBYMFt8myoWGfr6/yEAEFgw
-W3yXKhYX+vr/IQAQWDBbfJQqFhb7CgAv/xBQMFt8kCoWFfsKAC//EFAwW3yNKhYQ+woAIEAQUDBb
-fImaH/r6/ySAEFgwW3yGKhYU+xoAIkAQUDBbfIMqFhP7WoAiQBBQMFt8fyoWEvs6gCJAEFAwW3x8
-KhYR+woAL/8QUDBbfHgqFg77CgAv/xBQMFt8dSoWDfsKAC//EFAwW3xxmhz6+v8ngBBYMFt8bpob
-+vr/J4AQWDBbfGsqFgr6+v8ngBBYMFt8Z5oZ+vr/IIAQWDBbfGTWoPr6/yEAEFgwW3xhCqcC+woA
-L/8QUDBbfF3VoPr6/yMAEFgwW3xamhj6+v8hgBBYMFt8V5oW+vr/IIAQWDBbfFOaFfsKAC//EFAw
-W3xQjBoU6ASJHI8WLkIrIxYgLUIqD+4ojxiDHyhCHg/dKC9CIP4SECwAIHdwLRYhA/8oLUIfLxYk
-LxITDt0oLkITCYgoIxIUD+4oj08oFiMoEhYD/yiDTStCIikSGQgzKIhLDLsojEkJiCgpEhsrFiIr
-EhwJzCiJSAuZKItHCysomxT5EhoqACBO8PxCCioAIGbwCcwo+BIXLAAgQzD8QgwqACBm8AjMKPMS
-FSwAIBsw/EIOKgAgZvADzCj/EhIsACB7MPxCEioAIGbwD8wo/hIRLAAgczD8QhEqACBm8A7MKP0S
-DiwAIGsw/EIcKgAgZvANzCgtEiT9Eg0sACBrMPxCHSoAIGbwDcwoLRIjjhv9QiEsACBrMPxCIyoA
-IGbwDt0ojhkOzCguEiKu3f1CJCoAIG7wBt0olhH9QicsACBrMPxCJioAIGbwGOe0Bd0oB8wolxL4
-gX8sACBrMPwSISoAIGbwjhUtQiz8QigqACBm8I9HDt0oCswolRPzEiAsACBrMPj7C3oAIGbwhRSa
-EGAAB/oWACAAECgw+wqAKgAgKvBYAlLZoPesAAAEl6qgZFBEiEcPAgAPAgD2CgAgMQA2IPoWHyIA
-ACqw+lwAD/8QWDD8+v8iAABo8Fv+FFpR+YlHsWb5Y+J0ACAssCkSHwJnKA8CAKeXiBfTD2SAZIUX
-KIoACFUBAlUsJRYdBSUo+lwAAIAQWDBYAjX/AgAABEYqoCkSHQ8CAPMWGCA3ADZgwFD2PAACAAAa
-sPo8AA//EFgw/Pr/IgAAabBb/fhaUd0qEh0lXAHTD/pZ3nIAIBywIxIYKxIe8xYYJuoANuDzCgAg
-ABAoMCZC5aVmk2AsQsn4QgcqAAdk0KyI/wIACgCGRNAsQsr5QggqAAdk0KyZ/wIACgCfzNAsQsv6
-QgkqAAfk0AyqCP8CAAoAqNTQLELM+0IKKgAHZNCsu/8CAAoAslzQLELN/UILKgAHZNCs3f8CAAoA
-u+zQLELO/kIMKgAH5NAM7gj/AgAKAMT00CxCz/9CDSoAB2TQrP//AgAKAM580CxC0PhCDioAB2TQ
-rIj/AgAKANfE0CxC0flCDyoAB+TQDJkI/wIACgDgzNAsQtL6QhMqAAdk0Kyq/wIACgDuVNAsQtT7
-QhIqAAdk0Ky7/wIACgD73NAsQtX9QhEqAAdk0Kzd/wIACgEJbNAsQtP+QhAqARvk0Kzu/woVKgEW
-8NAvZARgADIAAAD6fAACAABY8P0SGCAAEEAw+GQEL/8QYDBb/Z7Hv/umACAAEEgw+WYHJgAgPLBa
-UX4sEh71XQEgAgIY8PVcgC//TuDQYAVzAAD6fAACAABY8Pz6/yACEHAw/mQEIAAQaDBb/YwvEhya
-Z/P/xGYAID/w+nwAAgAAWPD8+v8gAxBAMPhkBCAAEGgwW/2CKRIbmmfz/5xmACA+cPs8AA//EGAw
-/QoAICIQUDD6ZAQiAABR8Fv9eCsSGppn8/90ZgAgPvD6fAACAABY8PwKBCEAEGgw/GQEL/8QYDBb
-/W4tEhmaZ/P/TGYAID9w+nwAAgAAWPD8+v8gBRBwMP5kBCEAEGgwW/1kLxIXmmfz/yRmACA/8Pp8
-AAIAAFjw/Pr/IAEQQDD4ZAQhABBoMFv9WikSFppn8/78ZgAgPnD7PAAP/xBgMP0KACAGEFAw+mQE
-IgAAUfBb/VArEhWaZ/P+1GYAID7w+nwAAgAAWPD8ChMkgBBoMPxkBC//EGAwW/1GmmeOri0SFJbg
-8/6oZgAgP3AAAAAA+nwAAgAAWPD8KkAvlhB4MP9kBSAZEEAw+GQEIQAQaDBb/TgpEhOaZ/P+dGYA
-ID5w+woXIkAQYDD7ZAQvkBBQMPpkBSWAEGgw+nwAAgAAWPBb/SwsEhKaZ/P+RGYAID8w+nwAAgAA
-WPD8KkAvhRBoMP1kBSAWEHAw/mQEI4AQaDBb/SAvEhGaZ/P+FGYAID/wLELZ+EIfKgAHZNCsiP8C
-AAoAq8TQLELa+UIgKgAH5NAMmQj/AgAKALTM0CxC1vpCHCoAB2TQrKr/AgAKAL5U0CxC1/tCHSoA
-B2TQrLv/AgAKAMfc0CxC2P1CHioAB+TQDN0I/wIACgDQ7NAsQtv+QiEqAAdk0Kzu/wIACgDadNAs
-Qtz/QiIqAAdk0Kz//wIACgDj/NAsQt34QiMqAAfk0AyICP8CAAoA7MTQLELe+UIkKgAHZNCsmf8C
-AAoA9kzQLELf+kImKgAHZNCsqv8CAAoA/9TQLELg+0InKgAH5NAMuwj/AgAKAQjc0CxC4f1CKioA
-B2TQrN3/AgAKARJs0CxC4v5CKyoAB2TQrO7/AgAKARv00CxC4/9CLCoAB2TQrP//AgAKASV80CxC
-5PhCKCv+b+TQrIj/AgAL/mrA0Pp8AAIAAFjw/Pr/IBsQSDD5ZAQgABBoMFv8x5pnihDz/K5mACA+
-sAAA+nwAD/8QYDD9CgAgCBBYMPtkBCIAAFjwW/y8LBIQmmfz/IRmACA/MPp8AAIAAFjw/ApAIAkQ
-aDD9ZAQgABBoMFv8so4fmmfz/F1mACA/sAD6fAACAABY8Pz6/yAKEHgw/2QEIAAQaDBb/KiIHppn
-8/w1ZgAgPjAA+nwAAgAAWPD8+v8gCxBIMPlkBCAAEGgwW/yemmeKHfP8DWYAID6wAPp8AA//EGAw
-/QoAIAwQWDD7ZAQiAABY8Fv8lIwcmmfz++VmACA/MAD6fAACAABY8Pz6/yANEGgw/WQEJ4AQaDBb
-/IqOG5pn8/u9ZgAgP7AA+nwAAgAAWPD8+v8gDhB4MP9kBCeAEGgwW/yAiBqaZ/P7lWYAID4wAPp8
-AAIAAFjw/Pr/IA8QSDD5ZAQngBBoMFv8dppnihnz+21mACA+sAD6fAAP/xBgMPsKECCAEGgw+2QE
-IgAAWPBb/GyMEZpn8/tFZgAgPzAA+nwAAgAAWPD8+v8gERBoMP1kBCEAEGgwW/xijhKaZ/P7HWYA
-ID+wAPp8AAIAAFjw/Pr/IBIQeDD/ZAQgABBoMFv8WIgTmmfz+vVmACA+MAD6fAACAABY8Pz6/yAe
-EEgw+WQEIwAQaDBb/E6aZ4oY8/rNZgAgPrAA+nwAD/8QYDD7ChohgBBoMPtkBCIAAFjwW/xEjBaa
-Z/P6pWYAID8wAPp8AAIAAFjw/Pr/IB0QaDD9ZAQggBBoMFv8Oo4Vmmfz+n1mACA/sAAAAC9CIfdK
-sCKgEBgw9QoAIGQAN+AW5UcmYoEiQuWmVglmEaYihieGbsDA+yESIOACUbBbqi2LK5oq82oIAAAQ
-YDBbqikrIhCaLfdqCAAAEGAwW6olKiYSKyBQKm0H+qzAIAAQYDBbqiAqJhMrQiElXAF7U58sQiLT
-Dw8CAPUKACBkADcgFuUrJmKCIkLlplYJZhGmIoYnhm7AwPshEiDgAlGwW6oRiyuaKvNqCAAAEGAw
-W6oNKyIQmi33aggAABBgMFuqCSomEisgUCptB/qswCAAEGAwW6oEKiYTK0IiJVwBe1OfLEIj0w/T
-D/UKACBjADcgFuUQJmKDIkLlplYJZhGmIoYnhm7AwPshEiDgAlGwW6n1iyuaKvNqCAAAEGAwW6nx
-KyIQmi33aggAABBgMFup7SomEisgUCptB/qswCAAEGAwW6noKiYTK0IjsVV7U6DAINEPAI0XHOVc
-KUL2L0L1KEL48xYYIgAAcXD5/wwABBBQMPj/DAAGEFgwW7LWIxIYY/eJAMCh/OVREAYQWDBbstHH
-JNEPAAAAbBAEGuVC8qJ8IgAAaLADDAYron34onoiACAYsPmieSH+AhCw9LBMYgBAEzAImAwIuzYp
-onf0kA1uACBosH6zBS6mfGAAAcAgziMioocrooEpooYNIgz0sBNiAEATMCiiggmYOXgjBSKmh2AA
-AcAgyCnRDwDz/7piAABacMCg/OUoEAYQWDBbsq3RDwBsEBIS5H3TDyIigyoKpPIIQwAIEFgw+BYA
-IB8QYDBbrUb7CgQgHxBgMPoWCChkARAw+BYBILgQUDBbrT/7CgAgHxBgMPoWCShoARQw+RYCIMwQ
-UDBbrTj6FgogHBBYMPLKQwAfEGAw+hYDINwQUDBbrTL6FgsgHxBgMPILUwDwEFAw+xYEIBgQWDBb
-rSv6FgwgFBBYMPJMUwEEEFAw/BYFIB8QYDBbrST7ChAgHxBgMPoWDSx4ARQw/RYGIRgQUDBbrR37
-CgwgHxBgMPoWDi58ARAw/hYHISwQUDBbrRcS4+qaHyoim1uXhvoiniIAADKwW5eD+hYRIAAQKDD0
-HCAggAI4cPMcAAAAEBAw9hYQIAAQeDD/FhYgARBYMIlAKDIAKZwLAJEE8LYaABQCQjAAgAQGBhvL
-ZCoSEAaqLFuwbyoWEioSEQaqLFuwbC4SEiwSFgBRBPCtGgABEFgw8O4aDAkAazD8FhYiCQBwsPVc
-BCAIAiEw90mjcAgCGPAY5B4ihoTBsP8SFiAAEEgw+RYYIAAQUDD6FhcgHxBgMP+GvSFAEFAwW6zk
-+hYIIBQQWDD6GkwgHxBgMFus3/oWCSAYEFgw+hpYIB8QYDBbrNv6FgogHBBYMPoaZCAfEGAwW6zW
-+hYLIAAQWDD6GnQgHxBgMFus0foWDCAEEFgw+hqAIB8QYDBbrMz6Fg0gCBBYMPoajCAfEGAwW6zI
-EuOb+hYOIAwQWDD6GpggHxBgMFuswisKAfQcICAAECgw+hYPIgAAGHCJQIgwu5kAkQTwthoAFAJC
-MACABAYGG2RgTSoin1uXJyoWEyoip1uXJSoWFCoSEwaqLFuwISoWFSoSFAaqLFuwHi4SFywSGC8S
-FQBRBACtGvD/GgwJAGsw/BYYLgkAe7D+FhcgARBYMLRV8iwEIAgCITD3SYpwCAIY8BjjzikSFymG
-hSISGPKGviAAEBAw0Q8AAAAAAGwQCBzkdRbkc5MVkhQtYFQuYFUvYFf6YFggBhBYMPlgWSYAIG+w
-+GBbJgAgffD5FgEmACBV8PgWAiYAIE3w+hYAJgAgRfD3FgMgBRBQMFux4mRx9sCl+BIEIAYQWDD8
-5F8eACAU8P8WBiIAAGiw+P8MAgAAcPBbsdj6HBAgKAJYcPwKQCBAEGgwW3hRKmBUhBT0ZgQgEwC2
-oPAALGAAEGAwAAAAAAAAAPsSBSBAECgwW7Pb/AoAIgAAafBbslH1DQYMAQAq8A3MASpgVfxmBSQA
-ICMw9GYGIBAAtqDwAClgABBQMAAAAAD7EgUgQBAoMFuzy/wKACIAAGnwW7JB9QsGCgEAKvALqgH5
-CgAsAKIWoClmPSpgV/36wCB+AmJwDcwB/GYHJAAgIzD0ZgogEgC2oPAAK2AAEEgwAAAAAAAA+xIF
-IEAQKDBbs7X8CgAiAABp8FuyK/UKBggBAC7wCpkBKmBY+WYLJAAgInD0ZgwgEAC2oPAAKWAAEEgw
-AAAAAPsSBSBAECgwW7Ol/AoAIgAAafBbshv1CgYIAQAu8AqZASpgWflmDSQAICJw9GYOIBAAtqDw
-AClgABBIMAAAAAD7EgUgQBAoMFuzlfwKACIAAGnwW7IL9QoGCAEALvAKmQEqYFv5Zg8kACAicPRm
-EiAQALaghxbwACxgABBQMAAA+xIFIEAQKDBbs4X9fAAAABBgMFux+/ULBgoBACrw9xIGKgBAWrDd
-IPzj7hIAAHDw+mYTLgAgJrD/FgQgBhBYMP9/DAAFEFAwW7FjghTRDwAAmmeUFFuvc4QU8KEEAAEQ
-SDAAmRopZj1j/qgAbBAQkxTy43ISAABIsBXjbpkVKyJmJ1KLLVKBKlKD/FKCIAAQMDD4UoovwBAY
-MPmqEQ2QBD9g/X0IDZAEOyD9FhIsACBh8PwWEyoAIFHw+hYUKZAEOiD1sA9mACBF8Cwimc7FiRRg
-AI8A2mBbeCUZ4z+pqS2SgGfQC20IBSqSgGegAmP/8ykimcmdwKFbeBwZ4zepqSuSgGewC20IBSqS
-gGegAmP/8ykimSZWpy8iZhTjWvzjWBACEFAwKlaqLFar9FaiIAAQaDD0VqQgARBwMPn/CAIAAFkw
-/1ajJAAgI/D0VqUgfgJ78PRWqS4AQB/wW3fCiRQrImYpnD8DmQH5VpwkjAA24C5Smy9SngnuDA/u
-DLHtDu07DR0SZtTRLwpkD98s//8KAAUQUDD845MfwAQ74P4WCC/gBD/g/xYGIAAQWDBbsQpbd/IT
-42ImVm8kMrUoMrQpMrMqMrIrMrEsMrAuMq4vMq0tMq8vVnD/MrkuACB7sC5Wcf4ytiwAIHdwLVZy
-/TK4LAAgazAsVnP8MrcqACBm8CtWdPsywioAIFqwKlZ1+jLDKAAgVnApVnb5MsQoACBKMChWd/gy
-xSQAIEEwJFZ49DLGLgAgJ/AvVnn/MscuACB7sC5Wev4yyCwAIHdwLVZ7/TLJLAAgazAsVnz8Msoq
-ACBm8CtWffsyzCoAIFqwKlZ++jLNKAAgVnApVn/5MtAoACBKMChWgPgy0SQAIEEw9FaBLgAgJ/Av
-VoL0MtIuACB7sP5WgywAIHdw/VaELAAgazD8VoUqACBm8PtWhioAIFqw+laHKAAgVnD5VogoACBK
-MPhWiSQAIEEwJFaKW6g7KhYQW6g5KVKeJFKfLVKb/vqAIP4CSnD0QA1oAEB2cC9SnA/dDA1NNihS
-mciMCagRqJh40wUoVp5gAAHAkPkWDyLlADZgjB/TD2TDQSxWiypSgShSiitSgi0yx/RSgymQBDog
-+bsRC5AEOqD6yQgNkAQ/YP1KFAoAIF8w+xYJKAAgQzD4FgolkAQ5IPgSEiQAICMwbakFAAiGAElh
-KhISDWsUW3dzLTLIiRnTD/gSEy2QBD9gDUoUbakFAAiGAElhKhITDWsUW3dqLTLJ+BIULZAEP2AN
-ShRtqQUACIYARGEqEhQNaxRbd2ItMs75EgotkAQ/YP1KFAIAAEHwbakFAAiGAElh/WsUAgAAUfBb
-d1knUpsqUp+aG/p3DAIAACGwBOQWAQIA23BbsssE5BYqCgFbd0wnFgAU4vQvEgv84vIQCBBYMP0K
-ASIAAHKw+hYRLgAgJ/D/FgwgBRBQMFuwZtlgGOJlKhIR+xIMKAAgQrAoFhUrhoEnhoImhoMJ5BaZ
-HQECACiCgwTqMMCyW3cxCOowKRIVKZKI+RYOIBUANmAE6jD6EhEgAhBYMFt3KQjqMIodCuQWBIoM
-W3ce2KCOHv8SFSAFEFAw/OLRFdAEOeAIRCz/8oggCBBYMPQWACABEGgwW7BEKDKtKVKbJlafKlKc
-JlacFuLH+pkMD8AQODD5VpshYgA2ICxR1cCzfLALwtCdF/AADmACECgwwOD+FgcgBhAoMIQWKhIQ
-H+K6ixgvNpn/NpogGAJ78C82nC82nVv6PosXimAFuwj7qigCAABZMFv5xvagtGIAABqwW/ljLGL2
-0w9kwEwqYv0b4qsoYvwZ4qssYv7/YvgoACBaMPRi9SgAQEowKGb3+Gb7IAAQaDD0hAwAARBwMPj/
-DAIAAFow9MwIAH4Ce/D8Zv4uAEA/8Ft2tCwiZmTAlsCALWLszNbwAENgABBAMCli8CVi8dMPqJj7
-Yu0kACBFcPpi8yB+Ailw/GL0JABAPXD7XwwAABBoMP/8PyABEHAw9WbuLgBAP/BbdqDYUIoVmKBb
-qqdbsj3SMNEPKyKZZbtx8/uFYAAQaDApUqksUqMJqxELmQz0wBZoAEB2cC1SqCxSpA3cOXyTBSlW
-qWAAAcCQmR9j/PEvIpll/2IY4btj/14AAAAAAAAA+hIQIAAQWDBb+fLz/ulgABAYMMCl/OJpEAYQ
-WDBbr9wd4bBj+xoAAPmtEQAGEFgw/OJREAAQUDBbr9Uc4mH0Eg8gARBQMPRWiyAGEFgwW6/QxyTR
-DwAAAGwQBlt22hbiSNMPJmF/BqY3W3bEHeHBHOJVG+JVGOGjFOIu9+JUEAEQcDD4gX4gABAoMPrh
-nh4BAFWw+f8RAegCMfD/RhkgHgC2IC+hf9MP0w/4oYAgDwC34PmhgSAHALYgZJGyW3ar/uF8FAAQ
-WDD9Cj8qAJdW0Pm8AAABEFAwCZwP/cwLD8AQaDANzAEsRhcb4UcpQhcc4aAqtvH64jQQAKouYCzA
-gC9wfihwfCtwfSmgfP1wfygBAEFw+6B9KAEAWjD/iDcIAQBNcP+gfiABECgw+qB/KAEAajD8HUAI
-AQBecPwHQAACEFgw/5k3AAICQjD3WDkOAgFkMPw8QAgFAGrw+pk3AAMQaDD/2DkABBBQMPVAyygF
-AGKw90DKIfoCWjD7qDgAAgJKcPpCbCQBAE1w9QVHBgEARfD1RMsm4AE8MPdEyiCAADagi0wqQg2m
-Xws+LAotLC/wgP7bCAoAIDHw+qCAIBgQEDAC2CwC6Syrqqr/AvIsr5mpiPzh+xIAIECw+iIRAAYQ
-WDDyFgAgBRBQMFuvaPJGHyAAEBAw0Q8b4ZT6sw9yAABK8PP+z2ACEFAwAAAA+uMmcgAAS7Dz/rxg
-AxBQMChCn4tMik1lj34L6zb7RgwqAwBTsJpNY/9uG+Eo+rMQcgAASvDz/o9gBBBQMNKQ0Q8b4ZL6
-swxyAABK8PP+eGAFEFAwGeEC8/5tYAAQUDAAKaF9ep8FL6GCZPEFKnB8KHB9InB+/3B/KgEAUXD4
-sHwqAQBCsPKwfSoBABKw+bB+KgEAerD/0IAsAQBFcPLdNwACAlKw8rB/LAEAT3D/CEAAAhBIMP8b
-QAoFAEOw/yhADgMBfDDy3TcABBBwMPuaOQADEBAw+0DLKgUAQLD5QMoqBQB7sP+s/SACAmtw/+o4
-CgEAbvD7C0cIAQBWcPkJRw4AIDbw//CAIgAgMnAiIIAF/hH+vhQNUAQ8oA29FA3oCPjg0BIAIECw
-+EYMLgAgF/D4Rg0gGBAQMALqLALYLA+qCALyLPtEyygAIFIw+CIIAAYQWDD5RMojoAQ4oPIWACAF
-EFAwW68G8kYfIAAQEDDRD9JQ0Q8AAGwQBhngh/LhkBIAADiwKJIS9iJzIB0ANiDAIN1g/mIMIAUQ
-UDD84YkQMBBYMFuu9tEPJiKLKyKF+SKGLxAQQDD4ZggP8BBQMPSwFWYAQFGwKyKKC7k5eWMHJiaL
-YAADAADAYGRgY/YWASCeADWg2mD8CvAgABBYMFulBo0RGuDR/SZzIUAQWDBbgvT6EgEiAABysNtw
-/DwAAgAAaTD+pgwiAABxcFvyavsKASIAAEqw+rk5AgAAErD5FgAgZAA2oMDwCb84Zf9S0Q8mIoAr
-IoEoIn75In0gHgIxsPSwmWYAQFGwCJgMCLs2KSJ7Km0B9JANYeACUrB6swUqJoBj/2Xz/2JgABAw
-MPzgfxAAEFAw/QrwIAYQWDBbrrvHJNEPAIoR+3wAAgAAYPD9TAACAABxcFvxKx3gOv8SACABEHAw
-/NISIAAQWDDyrAAAARBQMP+rOAIAAEiw8uw4CAUAF7D81hIvZAA24MCACag4ZY6qY/9UAAAAAADz
-/21iAABacGwQDBnhMysgDBjgJSqS3SmS0/iCDSZYADrgG+AR+7DBKZAEPmCpqSOdAfM8gCAOAH7w
-YAACI50D8goAIBgANiDRD6mzCTMR8//tYgAgHrAAAAAAABvhH9MP+7IFIgAAUPBbYNgd4Rv70gQi
-AABisPzW4iIAAFDwW2DTH+EV+/IDIgAAcrD+9uEiAABQ8FtgzR3hECvS+yrW4CjS9fu90C/wEGAw
-/NwACgBAZvD6vAAAGQA2IC3S+izC9g3cOXyzCB3hBCvW+2AAAcCg8qwAAVEANqD+4CwRkQA0oBXg
-/vJWPSIAAFDwW3w+8qwAAgAAUPBbfD4Crwz6/AEgAQED4Bvgkxjg9Zsb8AsHAAwQSDDTD22aAgBI
-YRbg8xff/RLg8BTgpipVIypVOypVUx7f0B/g7/zg6hAAEFgw+1Q0L/8QSDApVDYpVGYpVJYpVMb8
-Fg4ggBBAMPgWCiABEGgw/VRkIAIQQDD4VJQgAxBoMC1UNy1UZy1Uly1Uxy1UxBzg2ir185wc/MzQ
-LeABVDD8FgksCQB3cC0WDS5COoge9QoAIgJhQ6AogpcvQjn4/QEOAlpH0Iob8AoHAgAAS3AASWEA
-SWGMHB7gyRrgyogdktD/MgAgEBBIMJnTltQn1Qz41gUgMhBYMPj/EQACEEAw+tYCLgkAR/D/1gEg
-BRBQMP7hqyAAEGgwW64gwLL7RjkgABBQMGVfgfKsAABmADag0Q8Z4KwqkvArkvHHwPmS7SAeAlKw
-9LHBagBAYrAc4KUswu4MnAwMuzYd4KIt0uvI3SytMHyzCB7gnizm8GAAAcCg8/5vYgAAErD6CgAg
-BhBYMP3goRIAAGOwW64DY/5cAAAY4JSIhcEgCCI2+jwAAgAAWLBbYEwZ34L6lgsgCAC2oMck0Q8b
-4IsqsvsrsvUCLRH9qgwP8BBgMPSwHGoAQGKwHOCELsL6LML2Duw5fKMIHuCAKub7YAABwKD0rAAB
-IgA2oGShYh/fbvn69CAAEBAwBJI49PYMICMANKDRD8Cj/OB+EDIQWDD+34IQARBoMFut3vP96WAB
-EFAwF+B4EuB4FuB7FOB5G+B3+xYIIBACKbAqQi0mJn8soQImJoAlJoH1JoIgrwA3IFpJxhjf5iiC
-dC9CKaqICYgRqP8o8Af5cIAg/BBQMAqIAQgIR/7gaRgJAEowKPQHnhSN8CscEPryByABEGAw+N0R
-AAEQcDD/JoMsCQB3cP0WBSBAAlKwWlGviRixd/IsMCBgAjGw9VwwIQAISbDaMFt7kvusAAIAAFDw
-W2AAG+BJ0w8PAgD6tgkiAABQ8Ft7ivsKMiIAAGqw/OBNEAUQUDBbracc4ECMyWXAZsck0Q8A8/5L
-YgAAWnAZ4DQqkvArkvHHwPmS7SAeAlKw9LCJagBAYrAc4C0swu4MnAwMuzYe4Cou4uvI7arefrMJ
-H+AnLvbwYAACAMCg9KwADqEAtqDAoPzfThAGEFgwW62NY/6MAAAb4B37sgYiAABQ8Ftf1x3gGh/g
-IPzgKhAyEFgw/dIGIgAAcrD+9oMgBRBQMFutgB/gGC/yg/769CAAEBAwD+I4yCvRDwAA8/+DYgAA
-WnAAFd9rIlLb9VLcIgAAUPBbX8AY4Az6hkkiAABQ8FtftxzgCcCQKcZNLcJJKsZKLcZLDasMAt0M
-C2sUm8cNbRT9xkwiAABQ8FtftRzf/vrGBiAIALagxyTRDx7f+hzgBv3iSSIAAHiw/uJKIAUQUDD1
-FgAgYBBAMPgWASAyEFgwW61YH9/wHN/8LfJM/vJLIAUQUDD/8gcgMhBYMFutUcAg+t8/EUAQWDBb
-gWIY3+YqhoL63zoRQRBYMFuBXtygHd8n+t82EUEQWDD53+wRABBwMPnWCCwJAHMwW4Fa+Ao/LAAQ
-cDD8CgYgABBYMBrewytGwStGwCtGwitGxytGxitGzCtGzitG0ytG0itG1CtG2CtG2itG5StG5CtG
-6itG7C5G3y5G4f5G5yABEEgwKUbQLEbVLEbrKEbe+EbgL/8QeDD/RsMgAxBoMC1Gyv9GySAAEGgw
-/UboIBsQaDD9RtYgEBB4MC9G4hjeaJmtHN/GLEbZ+EbIIBoQSDApRsQf31v+38AQHhBQMCpGvv5G
-zyAREFAwKkbcL0bN/96vE/8QSDD5RuYgDxBAMChG7S/ywhvftitG29EPAAAAAIga+Iz/IAEQSDD4
-FgogAgIqMPWVOQH9zRog+goFIDIQWDD8EgkgABBoMFus/vP7f2AQEFAwbBAEFd6BKFIV8goAIAsA
-NiDRDwAAAAAA+t7lEUEQWDBbgQgT354pMRz0ChAgABAQMPuXE3IAAFqwHd7MGt+ZHN+TLNYIIqZp
-+t7ZEQAQYDD8vAIBQRBYMFuA/iQ25hzfkR3fJh/eLRvfiiI27BjfihnfiSk23fg23ywAEFAwKjbj
-KjblKjbr+zbTL/8QEDAiNsfyNs0gPxBwMC424i425C82zP020SAREHgw/zbgIA8QaDD9NvEgABBw
-MC42xS42xC42xi42yy42yi420C420i421y421i422C423C423i426S426C427v428CAGEBAw8jbZ
-IC4QWDDyNu8gHhBQMPo2wiAbEFAw+jbaIBoQEDDyNsggARAQMPI21CADEHAw/jbOI/8QcDD+Nuog
-BBBQMFusr/JWFSAAEBAw0Q8AAABsEATz31kR/BBQMBTenQoMPylC3wlZFCk2HChC4QhoFCg2HSRC
-4wRUFCQ2HhLePyIi3gICQPI0kCAAEBAw0Q8AbBAE9N9KEAAQEDAiRkUiRkQiRkMiRkIjQksjRXwj
-RX0jRX4jRX8DMxQjRYAjRYEjRYIjRYPRDwBsEAYb30AZ3zwU3z313zwQABAwMPkWACAQEGgw900D
-IBACETDzXAACAABQsNgw/N3MEgAASTAPAgDTD9MPbdog+4ZRIGACQjAshZQphkH5hkIgYAJKcCqG
-Q/qGRCBgAlKwHN8q+10EIAAQUDCavfvfJhAkAlGwW17aG98ijBAiLQMlXQPzPQMgAgIxsPd9AyAQ
-EGgw9E0DIEACOfD0TCAgQAIY8PVcICBAAhCw/wIAAgAAULD/AgAP/7phUBfedhLfD/Q6ICAAEBgw
-9X3mIEgCMfArcoYvUMEqYoL4UjEqACBc8PzfCxuQBD7g//cRegAgWrAtLQQMjCgs1hJgAA4A/i0E
-IH0QaDANjSgt5hIb3wFbp7WOEKQi/im2cAICGPDAINEPbBAEFN78KkJ58t3gEAAQSDD4SgAqfAFQ
-MG2KCgybEPsm+yACAkpwZKBRaaFOI0J6KkJiW5FMW6pK+t3vEgAAKrBbqkf3NzlwIBBoMBze6xve
-6wN+QNMP/ss5ABQAZPAf3fUPuwJ6NwUY3uYIuwJ7NxIZ3lfwAAxqCQBO8MAg0Q8AG97g/DcMcAgQ
-YDAe3fbTDw67Av03IXAEEEgwH9160w/TD/+7AgAkAHjwKEB90w8PAgB/jwINuwJ/NwIJuwIMuwIr
-JvwFpgwEYxAjJv0a3s4PAgAKOgIqJv4jJv8pLQQpkgAb3sv63fofPxBoMPzexxgAQG5w/S0EKAkA
-XnD51gAgOBBYMFuAHBrd8fxsEQlABDmg+G4RDIAEPaD8aRAPAAQ9oPn/AgwJAGzw+O4CDAkAf3D8
-bAIMCQB3cP3MAgA5EFgwW4AMKkJeGN1r/FYQADAQGDD1CgAgIQA2oAhmAtxg+t3bEgAAWPBbgAMp
-Ql6xVflT6nACAhjwwDD6PAAAABBYMPwKACAAEGgwW15isTNpPucjCgDaMFteULEzaTv1KiLAG96c
-C6oC+ibAIAAQEDDRD2wQBMAg0Q8AbBAIFt6WEt6WGd1J+GIhIAAQIDD73pQQARBQMP4KACAAEHgw
-9ZwAA7oANiCbFJ4WKhYFHt6N/xYAIAAQQDCYF/4WASFYAnuw/xYCIKgCc7AuFgMX3dgncoUjYuCn
-Rwl3EQczCCcyBydyDitiH/p8UCAAEGAwW6K8+jYZIAAQYDD7Yh8g4AJR8Fuit/o2GiAAEGgwLXYl
-LXYkLGLa+10BIBEQcDD+NAQsACBhMPw2ACEAAlrwK7CMwPX6CgEgABBoMPsIRg//EDgw+wlEDAAJ
-oiD9NCQgHxBAMCg0IWAAEgDA0Po0JCAFEHgw+TQhL/8QODAkNCIsUNwtNRwnNEstNCAtNR0tNR4t
-NSAtNEUtNCotNCstNEn9Nhsl7hBwMC41GS00NC80KS00LC00NS00Q/01JiIAAFEw/TRTIAEQQDD4
-NC0sgAFgMPw0IyACEFgwW3BYhxD7CgEiAABKsPk0TyIAAFEwW3BTKjROLjAjjRf8ME8gEBBYMPs0
-UCABEEgw+TRRLAkAbrD9FgcmCQA/MPcWACwBEhOgH941D+8Kj/CJFQrwAPreGBAQEEgwKTUg+jYb
-IMAQQDD4NR4gwBBQMFtwMisxHgq7Ais1HmAATiwigC36z/0KECwAQGsw/cwCAgAAUTD8JoAgABBY
-MFtvlmAB1wBkQND43gQQCBB4MP81ICDAEHAwLjUe+DYbIMAQUDBbcB4pMR4KmQIpNR7aMFtvgwoK
-TSo1HFtwGCsxHAq6Aio1HPo1HSvgAVAw+jUfIgAAUPBbb3T6FgYgAR0uoCowI1tvYCswIy0wTy4w
-Ti8xHPysAAIAAFEwW4mg+hYGIAEKrqArMCMsME79ME8iAABRMFuEM/o8AAABEFgwW28e+hYGIAD4
-rqDaMFtuJikxHP8CAAIAee5Q/wIAAgB98lD/AgAAAO56UPpMAAACEFgwW29hYAEDAPoKByABEFgw
-W2/HY/8gLl0BLuyALuCUiBP45xtgCBB4MPoKAiAYEFgw/N3fEgAAaTBbqxdgAMsAKDYbLzUgY/8U
-AADInVtvaPoWBiAAuS6gwKCaFS5dAS7sgC7glGjmL/8SAig4ADug+goCIBgQWDD83c8SAABpMFur
-BWAAhAAA/zYbIAIQQDAoNSBj/scAAPkSASACEFAwKjUgKTYbY/60AACNFP02GyAIEGAw/DUgIMAQ
-WDD7NR4gwBBQMFtvwS4xHgruAi41HmP+iQAAAAD6TAAAEBBYMFtvKWAAJAAA+kwAAAgQWDBbbyVg
-ABQAAPoKAiAYEFgw/N2uEgAAaTBbquMvYiHyLUAgAgIhMPVcASv+PP0QYAAUAMCg+hYHIAAQSDD5
-FgAgABBAMJgWgxCFF/oKBSAWEFgw/N2eH/8QQDD4VQMCEQBE8PMDRwTgASww/VwAAgAAcPBbqs0X
-3Mz23ZYQABAgMABABAUIG3+HGPrdYhIAAFkwW4gvB6oIKaKA0w8GmQEppoCxRGlI2MBAAEAEAwob
-f6cV+t2IEgAAWTBbiCWnrCvCgAa7ASvGgLFEaUjbHNwsLMDBe88DghbRD1tthIIW0Q/GKtEPAAAA
-bBAUFd17Hd17Gd17KlIYK1IWLJLTLtF+KFIiL9F8nxKYE54RLBYXmxQqFhYrkisqkiot0YAsUh4s
-FhSdEPmSLCAAEDgw/VIcIAAQEDD9FhUqACBasPtSICgAIFZw+xYTI+8ANmApFgX43K0fwBAwMP7d
-YxAAEGgw/RYSL/8QEDD+FhggABBYMB/dXCiCgSTy7qh4+RIXKZAEOiD/8hEkACBBMINHHt1U+hIE
-IAAQaDDzMg4gKAA34B3cOyxBMJwzmTIv4hCpyfkWFyB+Akqw9pkBCgAJf1CfNGAADi1FMGP/1QAA
-AC9CGi82BCk2BShQnA8CAPgWHCBrADYgK1IXKkBsmh6bH1usgP0SHCAAEGAwW6r1AqoB/QoBIAAQ
-YDD83DkKBQBTcPa+AQoJAGKw+woAICkANqAsEhgtEg/+Eg4gAhBQMP8SHCAAEFgwW6pc8AAKb+oQ
-WDAAAAAAnjZmsumJNSoSFog2Kqw/BqoB+jYHKAAgSjD/UJ0gfgJCMAaIAZgU/xYbIGYAN+ArUhkq
-QG2aHJsdW6xc/RIbIAAQYDBbqtECrAH+CgEgABBoMP3tOQwFAGOw9r8BDAkAazD7CgAgJAA3ICwS
-GI0d/hIMIAIQUDD/EhsgABBYMFuqOfAABm/qEFgwnzhmsl+KNykSFYw4DwIAKZw/BpkB+TYLLAAg
-UzD4UJ8gfgJjMAbMASwWFvgWGiBoADYgK1IdKkBvKhYKKxYLW6w4/RIaIAAQYDBbqq0CqgH9CgEg
-ABBgMPzcOQoFAFNw9r0BCgkAYrD7CgAgJAA2oCwSGI0b/hIKIAIQUDD/EhogABBYMFuqFfAABm/q
-EFgwnTxmsc+JOy4SFIg8DwIALuw/Bu4B/jYNKAAgSjD/UKAgfgJCMAaIASgWFf8WGSBoADfgK1If
-KkBwKhYIKxYJW6wU/RIZIAAQYDBbqokCrwH5CgEgABBAMPiYOQ4FAH5w9rkBDgkAR/D7CgAgJAA3
-4CwSGI0Z/hIIIAIQUDD/EhkgABBYMFup8fAABm/qEFgwmT5msT+OPSoSE40+/xICIH4CUrD5MhAq
-AEAysPo2DywAIHdw/FCgIH4Ca3D6Fh0sAEA3cC0WFP0SACCDADcgLFChK1IhKkBxmhabFywWEFur
-7P0SECAAEGAwW6ph9rgBDABAFrD/CgEgABBwMP7+OQwFAG/w+hIdLAkAd3D7CgAgLAA3YCwSGI0X
-/hIGIAIQUDD/EhAgABBYMFupx4o/LzIQLxYR8AAKb+oQWDAoFhEoNhCNEI4RjxKME2AABo4RjBMp
-FhEmEhIoQTosNhEpQHMvNSwmNhP4NhQmACAyMCYWEvhBMSwAIGJwnBMuNS4oNS32QTIuACB+MJ8S
-LTUwJjUv9hIRLgAgcbAoQTOeESg1MSk2EvkSBSwAIG4w9qYID8AQQDD9FgAgfgIxsPjbuhYAQEGw
-9hYTIAICOfD2+sAv/iDJ0NKw0Q8A0Q8AAGwQBhnbU/jb3ROAEFgw8tvbEAAQIDBtmgwkJvv5jQQg
-CAJCMJuQGtvDKqId9QoAIBcAtqBgANQa278qoh2xVf8CAAoAZNFQFtugE9u6JmKBIzLhplYJZhGm
-MycxByYxEyowDPswDSZsATwwW3A9GtxPKTEHKDESCpkB9pkCAAAQUDD5NQcgNAA2IPV9EQ2QBDlg
-8msKDAkAazBtCBgkJvsuMRIvvQT7vAQgAgJSsPz2ACoABHKQY//gAIk+ZJ93jDyKO8Cw9J9uagAg
-YrD1fhENkAQ5YPKtCgwJAHMwbQgkL3r//wIAC/+oV9AkJvsp3QSckIg++qwBIAICWvD93AQr/5tC
-0GP/1AAAAAD3CgAhDAA2oBvbp5sSYAAXGtuGKqIdixL3fAEgAgJa8PsWAioAdlHQHttljBId234u
-4oEt0uH8wN0uACBx8AnuEf7dCAAAECgw/RYBIEEAtyBj/8HbYP5cAAIAAFCw/AoAIgAAafBb7daP
-TvIsASACAhjw+Hr/KgAD+NByi9WKEikSACqg3fqbhnIAACpwihGxU/qgDCIAAFjwW6ZVkxAmoQfy
-oRMiAAAisCtADfqgDCZsATAwW2/nGtv6KUEHKEESCpkB+SkCAAAQGDD5RQcgJgA2INog+2wAAAEQ
-YDD9fAACAABxcFvttitBErEz+zPicAICELCITIlOgkvzCgAvfgA2YPWQEGIAIECwY/9uANEPAAAA
-AAAA8/9fZ/8QQDBsEAgb21PAQsBh9Lb7IAgQSDD0CgAiAABC8A8CAG2aCfmNBCAIAkIwlJAY20n2
-tvskABBIMG2aCfmNBCAIAkIwlJAESgJb7mIT2nT2oCxiAAASsFvuKPagIWIAABKwKjIy+NqVEfQQ
-WDALqigqhpAZ28Upho8khotbb2ryFgQgALIsoB3adRTawPfarx//ECgwldCV0ZXSldOV1JXVldYl
-1gcscoUrQoIMfFL8zAIsfxBoMPnMEQoAQG7wDLsCK0aCGtqzKEKCGdux/tuvEIAQeDD6iAEAQBBo
-MPaUgCwFAEfwLeSAW+20+hYEIAB7rqAV26gU2rLTDy9STJ9BW/C4+hYEIABvrqAvUrIS2wL62sAf
-/xBAMAj/CQ9vFC6i2dMPDwIA+v8RDqABcDD9UrQuCQB7sC6m2S2m5SxCeR3blSkidQwMQw3MAvxG
-eSmABD5gK6KQCwtHC5kCKaaQW++D+hYEIAA/rqBb7mr6FgQgADouoBvaPCpSS6uqKnarW+4+Fdr7
-+AqAIAAQEDD9+vQgAxA4MCxSOv/a3xKaAT8gLlI5L/JN/+sBDgAf/5D6CgAgARBgMP0KACAAEEgw
-+RYBIAAQcDD5FgIgARBAMPgWACAAEHgwWkw6J1Y58hYEICYANKCCFNEPALCI+4wBIAEQcDD76zkA
-AgJiMPzSOA+WALbgY//VGNqPG9qO+vr/IFUQSDDTD22aDPmCfyAIAkIwq5kqloAoMMHTD3+PNPjb
-WhBOEEgwbZoP+YJ/IBACQjAqgn6rmSqWgCkwwG6SEyxCdsCyC8wCLEZ2KkJ+C6oCKkZ+HdqsKtKx
-xr/7ChAqAEBasAuqAirWsVuq4B3aQyzSgvISBCwJADMwLNaC0Q8AAGwQBB3andMP0w8s0h7TDw8C
-AGTAQfjM/yIAAFsw+MoBDgAPxxBtCA/5rP8iAABasPmqAQ4ABM7QY//pAAAPuxEe2zMvzB8PXxQr
-5Hz/5H0gABBQMCrkfvjS4SCAEFAwCAA/W6ZmCgE/0Q8AAGwQJBTbKBXbKRjbJxLaIIZWilWLVIxT
-LVAC/1EAIEACcHAv5QD95AIgYAJIcJyQm5GakpaT+9qGEGACUHD9QnYgQAIwcPMipCA4Ailw/FAC
-IIACeHD89AIgARBIMPVRACAAEHAw9fUAKgBAXPD7njgCLgEcMP6EfSYAIDDw9mAAIAgQKDD2hHwg
-BxBYMG1aDyyhByqs/vxF6SoABGsQsLvHvwDhBADMGixGdygipBrbANMP9bkRCABAUjAJiAIoJqRb
-9XT7QnUggAJQcPzZlBoAIFDwKqAAC7kJLsKd/8KeKaAEPmD5ORQPwBAwMPruKAB+Akpw//8JCABA
-NnD5RoogPxBAMPjuCw+gBD/gDz8U//w/LgBAM7D+Ro4uAEA38C9GjC0iyXXXFR3a4ioiz/8CAAYG
-bu6Q2aAOnhEuRpIV2lsuUrMpUrEnUsMqUscjUsUvUtAoUs0iUskrUsj/UsQoACB6MC1SxvJSwioA
-IBbw81KwLgAgH/D6UrIsACBXcPdSrSIAIDiw+VKuIgAgTPD+Uq8qACBysKl3p+75UrQuACAbsP5S
-tSoAIHKwJ1K2I1K3/lK5KAAgdnD6UrgoACBWcP5SzCYAIHXw+XcIAgAgVPD6UtIiACA88PlSyiIA
-IBiw91LRLgAgF/Dz2rMcACB/cP6ZCAoAIG7w9VLOKAAgXnD6dwgIACBKMP0yqiYAIEXw/zJ3JAAg
-PXD1XD8gABBIMPZVAQAIEDgw9TYBJG4AN+D13AAEbgA3YCgw9f8yFAAbALYgJzGB3ZD8dxAAABB4
-MPAAs2YDAD5wAAArMP0tMPguMPkvMPssMPz6MP8oACBvsPoWAigAIH5w+xYBKAAgZnD8FgAoACBe
-cPzaLhgAIFZw+RY1IAYQWDD5FgMgBRBQMFunqCoSNcyqxKDwADdgABB4MAAAwLH7FjQgCBBYMFup
-si4w9S0SNf7dCAAAEGAwW6gmKBI0+AgGDgEARvD4/wEAQBBQMClAKfgxgSAIEGgwD90MDSco/IgQ
-CAkAVnD5RCkmAwBF8A8oKPoKBS90ATgw/NpqGXQBQDD4FgAgBhBYMFunhwUyFPosAAIAAFiwWlKU
-KzD0KTGA/EApIAgQcDD67QwAgBBwMP8CAAjABD5g/wIAAAQuquANKygJuzbVsA7MAixEKfzaVRl0
-ARAw+hYBIAAQeDD6CgUvdAFYMP8WACAGEFgw+BYCIAAQeDBbp2z6XAACAABZ8Fv3m/ai82IAABKw
-W250+TLiIH4CerD12c0eAEA38C82afSQB2nABDpgKDblKTJ3G9jUKlF//jIkJ/MANmCIMSxCjCuy
-tikyKi0y5Qy7Cf6ZCAgAIFow/fIICAAgSjD6pwpyACBAsA4iDA0iDPoKBSAGEFgw/NotEgAAaLBb
-p0r6HEQiAABYsFv17faibGIAABKwFdmxHNnRHdolGtjMKRIRJzJ3H9mq+tz8KAAgVnD5FhEnhwA1
-4Cjxf/8CAAAAwWoQL0KQ/pwAABkAN+Cvnv8IBgH+AnOwCO4B/kaPLgAge7CPMSdCkihCji1Civkw
-9iB+AnOw+0KMLgBAM7D+RoksACB3cP4yaSgAIC5wKZCA/UaLKgAgbvArRo39MhgoACBaMP0WPyYA
-IEXw+EaRJgAgffAnNmgNmSj5FjcuACA7sJ4w/+4IAAYlqmCt5/0PBgH+Amnw+TYmLABAf3D9NiUi
-AAA6cC8w9/QyFy4AIC/wL/CABPkorX75FhIgBiIqYPk2KC4AICOw9AgGAf4Cc7D/FiUuAEBDsP42
-JyIAAGpwKjD2BNksKDIY/xIlJAAgLrAlUIAIeCz5NhkkACBKMPg2GiQAICkw/pwABAAgd3D0Chgu
-ACAn8ASKLASbLP+7CAIAAGow+6oIAH4CKXAE9Cz6RAgEAEA1cPpEEQAGEFgw9BYAIAUQUDBbpucr
-MuUlNin0NiosACAtMPoyJCoAIG7w/PqAIP4CWvD9NuQqAEBm8Ps2IyoAIFqwW21p0Q8AAP0yqiAE
-fing+dwAAAR6K2AoMPUpFjYHPRT9Fj0hXQC2ICgxgfsKACAAEHgw/IgQAAAQUDDwAfNqAwBCsKdZ
-9wwGAf4CSnAJyQF/m20qMkF/r2cY2O4tMPcF/gz42S8eAwBDsKjdLdCADv4M+zIoLgAgcfD33SgB
-/gJzsPUWES4AQHMw/jYnKgVE6tCufrDu/TYoLgBAczAuNicoQCnApPsKBiAgEEgw/NmSGAkASjD4
-RCkiAABr8FumrNEPAAAAAPXcAAdnADdgBfs3CzsU+xYxIgAAUvBaUbQrMP0tMPguMPkvMPv8MPwi
-AAASsPkw/ygAIGuw+RYCKAAgejD7FgEoACBiMPwWACgAIFow/NkWGAAgSjD4FiwgBRBQMPgWAyAG
-EFgwW6aQKTD1JTD0AnsM/bwAAAT/qmAqEiz5FikiAABy8PwKACwAIE1w/BYrLAAgbrD9Fiol8AC2
-oP+cAAABEEgw+RY0IAAQQDD4Fi0v/xBIMCkWLmAGBSsw/S0w+C4w+S8w+yww/Pow/ygAIG+w+hYC
-KAAgfnD7FgEoACBmcPwWACgAIF5w/NjvGAAgVnD5FjIgBhBYMPkWAyAFEFAwW6ZpKhIyzKktEj3w
-ADVgABB4MMCx+xY0IAgQWDBbqHQuMPUtEjL+3QgAABBgMFum6CgSNPgIBg4BAEbw/RI9LgBAR/Au
-QCn8MYEgCBBYMA+7DPvaKABAEEAw/MwQDgkAQ7D+RCkqAwBisBzZLSoWGf/YKA90AVAw/bwAAAYQ
-WDD4Fj4pdAFAMPgWACAFEFAwW6ZFKRIZ0w/+Ej4l4wA2YBrYayk2KPo2JygAIFZwLRI2/9imEAoA
-N6ApNisuNiwr8noq8nsLqgwqFjwNOxQrFjNaUUUuMPQpMYD8EjwgCBBoMArdDPTlnGjABD5gLhIz
-0w8N7igJ7jYvQCkoCoAI/wIvRCnA8PoWASAAEEgw/hYYK3QBZDD82QMfdAFwMPsWAiAFEFAw+RYA
-IAYQWDBbph4pEhjInBzYRvk2JiwAIGHwLDYlLTIlZNDhLTInZNDbLRYdHNj4/jIoIAUQUDD+Fi8g
-BhBYMFumECcyFytCiiww9ygyIipCjv9CkiwAICswLMCALhIv+vkICAAgWjD3zCgIACBKMAjuDPwW
-EioCk2OQLhIdp+73CAYB/gJzsPw2KC4AQEOw/jYnIgAAazAc2N79MiUoACBzcC4yJi4WOy0WMChG
-ifsKBigAIFow+EaNKAAgUjD4RpEuACB+MP82ISAFEFAwW6XsLzD29zIYLgAgL/Av8IAuEjsH/yj/
-AgAKAnH7kCgSMKeI9wkGAf4CQjD/NiYoAEBKMCg2JSoyK9MPyKQrMixb8+YvQpD1EhEgGQA34K9V
-/wgGAf4CKXAIVQH1Ro8kACB9cChCiSVcP/SENGQAQDVwKEKNKUKMJUaL9IQzZAAgLnAvQpLI9CpC
-kWSkM4gxKzIlLDJp9TYAJAAgLjAlNmj0sIVkACAvMCkyJ2SQei8w9xrYLCcyGCkyFy4yKC0yJigw
-9gnuLAfdLKqI+ICALgAgV/Av8ICu16h39woYLgAgP/AH2CwH6Sz82D8YACB+cPmICAAGEFgwB/cs
-/jYZJgAgRfD9NhonoAQ94PcWACAFEFAwW6WnJVw/9zYqJABANXD1NikkACA9cCky5SgyJNMP9Tbk
-KAAgLnD1+oAg/gJKcAWVAfU2IyQAIC4w2lBbbCYvMidk+6snMhf/AgAL/ZOr0BjX/yQw96hEJECA
-KjIoB00oJRYR9TYnKgHR6pD9NigoACA9cPcKBgH+Akpw/xYiKABAVnApNicY1/IlMPYH3iwvMhgt
-Mib82A8UACBFcCVQgA/dLP7fCAAFEFAw9f8IAAYQWDD0ChguACB9MATYLATpLP42GSgAIH5w9TIp
-KAAgSjAE9Cz9NhokACBBMPVcPyWgBDkg9BYAJABANXBbpWwlNikkNiotEiL+MicgBBBQMPzYTBAG
-EFgwW6Vl0Q8AwFD5VTYIAqYDYNtQ8/efYAAQaDAoMqpliArz+ElgABAQMCgyqvkWFCh2ALYgHteC
-/ZwAAgAAEnD82DwSAAA6cPnuDAAFEFAw/hYXIAYQWDBbpU8vQpDJ868n/wgGAf4COfAIdwH3Ro8m
-ACB98CgyIioy5SkyaSsyASxCki1Cjv9CiiB+Ajnw/kKMJgBANfAnRon3MiQuACA/8P9Giy4AIHuw
-/kaNLAAgd3D/MPQsACBrMP1GkSoAIGbw/DYAKAAgXnD7NmgqACBKsPk25CgAIFIw+fqAIP4CQjD6
-NiEoAEBKMCg2I/XwCmYAIEXwKDD1ZIbOJxYVKzD/LTD4LjD5LzD7KDD8/DD9KgAga7D4FgAqACB6
-sPsWAioAIEKw/BYBKgAgYrD815oaACBasPoWFiAGEFgw+hYDIAUQUDBbpRQiMPYnMhj7MPQiACAo
-sCIggCsWGvciKATVALbg/woAJtAANKAiFjcoMPUoFilgBQ37FicgARBIMPkWNC//EEgwKRYuW6cV
-LRIqLBIrW6WKLBI0+xIuLAEAYvAuEif/EikqAEBm8CsWLf0SLSIAAFuw/RYoIgAAU/BbpwctEios
-EitbpX0oEi4vEjQtEi0Pvzf4/wEMACBssPwSKCwAIG/wDX0MKTGA9FN8aMAEPmAqEjEK2igJqjbV
-oCsyd2SzIS5AKSgKQAjuAi5EKScSMSgxgZITnBH8eygPdAFQMPzXwxAFEFAw/3coCXQBPDD5FgQo
-wAQ6IPtLWwYDAEXw+xYCKXQBPDD5FgAgBhBYMFuk0GP1jBfW+RXW+GP1gym8PwaZASkmz2PzHBnW
-9GP6KMDg+e42CAG6A2Dz+mVgABBoMC9CiiVGifP7xmQAIC/wAAAoQo4lRo3z+8dkACAuMAAAJUaR
-8/vFZAAgfXAALjYoGtegLRIS+RIdIgAAYfD5NicgCAJasFtrMC9Cki0yKC4yJypCjitCimP6zAAA
-KhIwKjYlGteU/jYmIgAAYfD7rAQiAABr8FtrJGP7GQAa140vFiIlNif7rAQiAABh8FtrHhjXDCQw
-9ycyF/0yKCQAIEEwJECAY/xQACzyevryeyoBAG3wCzsUKxYkDKoMKhYfWk+kKzD9LDD8LTD4KhYm
-LjD5LzD7KjD/+hYCKAAgb7D7FgEoACB+cPwWACgAIGZw/NcIGAAgXnD6mQgABhBYMPkWOCAFEFAw
-+RYDIMACOzBbpIAvEjguMPQsEiYqMPX6FikgCBBYMAy7DP28AAJhADag3bD4CgAoACBXsPgWISgA
-IH5w+RYgICUAt+D+FhogARBYMPsWNCAAEFAw+hYjL/8QWDArFi5gAD0AAAArFhv+FhogARBoMP0W
-NC//EGgw/RYuIgAAU/BbpnQtEiAsEiFbpOkoEjQvEi4IuDf9EhsuAEBH8C8WIyoSKSkSI/kWHCIA
-AFtwW6ZoLRIgLBIhW6TeLxI0KBIu0w/5EiMuAQB+8PgSJi4AQEfw/hIaKAAgSjD4+AgACBBoMAjd
-DCkxgCsSHPThpWjABD5gLhIkDt4oCe42KDJ3ZIFvKUApxKAKmQIpRCkuFh4pEiQoMYGbEQ+aKPuX
-KAIAAGHw+xIfKMAEOiD4EiYqAwBCsCoWOfgWAyt0AVAw+hYAK3QBXDD7FgQrdAE4MPoWAi90AXAw
-+goFIAYQWDBbpCopEjlkkQEe1lIpNignFjr+NicuACBycC0SOvkSHiAPADdgLTYs/jYrLgAgc3Bk
-mBQuNiUpNiZj+AsoMqpkjOMpQCkrCoALmQIpRClj/NQAABrW/i8WIvusBCIAAGHwW2qQLxIiLjIn
-Y/Vv21Dz8l1gABBoMMDw8/yBYAAQYDDAUPlVNggBOwNg2lDz/INgABBoMBrW7v42JSIAAGNw+AoA
-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
-+woAL/sQaDBbg+/HK9EPAGwQBhi1rxm4eB61LR24eC2WF/6WGCAAEFgw+5UyIAQQUDAqlGYcuHLH
-8A/MASyGthy4cSiCrimS55kQ+BYBIIAQeDBbg93AINEPAABsEAQauGoYuGorooErhtf6ooIgBBBY
-MCuGNSuGNCuGOCuGRCuGQiuGQyuGPvqG2CAAEEgw+YZUIAgQGDDzhicgARBIMCmGQCmGOxi1PhK1
-Vxy2giOAwSIigf22QBQAEHAw+TcCDgABHDD/7DkAEgC8sCzVftEPErZ4FLY49wZABAAQKDD3hMEi
-BQAxcCJFftEPAAAAbBAEHLhIGrhIGLhFKsZ/+q1AIIgQWDD6hn8gABBgMFt6sh61Ix24QS3mMy3d
-Ai3mNNEPAAAAAABsEAQatdz7rOQgogA8oGgiaPSQfmACAhJw/yITYAEQIDBgADRpZAUFqAgnhgBy
-Syj6PAACAABZMFuAvfhhEmACAiEw+WLdaAAgLrAnlQBj/9ulqye0AGP/09EPK6J6KaKEo7sJuxH4
-YW9oACBecGhibmlk5KWcl8DRDxm12qk5KZDdaEA29JBfYAICETByQ59j/8UssoEpooSjzPnMEQAC
-AiEw+GEbaAAgZnBoYhtoZCD/AgAL/72VEGP/nGWfUWP/lqWYJ4QAY//mpZonpQBj/96lm5ewY//X
-pZwnxADRD6WdJ9UA0Q8A0Q8AAAAAAAAAAAAAAAAAACADEEAMwAAGIAcrXCADEEQIwAAMIAcrXCAD
-EEg8wAAQIAcqrCADEEwGwAA4IAcswCADEFAIwAA8IAcrXCADEFQCwABAIAcswCADEFgIwABEIAcr
-XCADEFwIQABMIAcr7CADEGAIQABQIAcr7CADEGQIQABUIAcr7CADEGgIQABYIAcr7CADEGwgQABc
-IAcr7CADEHAgQABsIAcr7CADEHQgQAB8IAcr7CADEHggQACMIAcr7CADEHwgQACcIAcr7CADEIAg
-QACsIAcr7CADEIQgQAC8IAcr7CADEIggQADMIAcr7CADEIwMQADcIAcpvCADEJAMQADoIAcpvCAD
-EJQMQAD0IAcpvCADEJgMQAEAIAcpvCADEJwMQAEMIAcpvCADEKAMQAEYIAcpvCADEKQMQAEkIAcp
-vCADEKgMQAEwIAcpvCADEKwIQAE8IAcr7CADELAIQAFAIAcr7CADELQIQAFEIAcr7CADELgQQAFI
-IAcr7CADELwQQAFQIAcr7GJjbTg0ODU2X2xvYWRzZXF1ZW5jZTogU3RhcnRlZAoAYmNtODQ4NTZf
-bG9hZHNlcXVlbmNlOiBVcGxvYWQgaW1hZ2UgdG8gUEhZIG9uLWNoaXAgbWVtb3J5CgAAAAAAAGJj
-bTg0ODU2X2xvYWRzZXF1ZW5jZTogZG9uZSBsb2FkaW5nIGltYWdlIChpID0gJXUpCgAAAAAAAAAA
-AAAAAABiY204NDg1Nl9sb2Fkc2VxdWVuY2U6IERPV05MT0FEIEZBSUxFRCAobG8gPSAlI3gsIGhp
-PSUjeCwgY250PSV1KQoAAAAAAAAAAAAAAAAAAGJjbTg0ODU2X2xvYWRzZXF1ZW5jZTogRG93bmxv
-YWQgY29tcGxldGVkIGFmdGVyICV1IGxvb3BzCgAAAAAAAABod19jbDQ1X2luaXRbJXVdIGFjYXBz
-ICUjeAoAAAAAAGJjbTg0ODU2X2luaXRbJXVdCgAAAAAAAAAAAAAAAAAAaHdfYmNtODQ4NTZfbG93
-cG93ZXJbJXVdOiBlbmFibGU9JWQKAAAAAAAAAAAAAAAAaHdfYmNtODQ4NTZfbG93cG93ZXJbJXVd
-LCBmYWlsZWQgdG8gc2V0IDMwLjB4NDAwQSBiaXQgNzsgMzAuMHg0MDBFIGJpdD0xIGFmdGVyIDVt
-cywgcmVnPSV4CgAAAAAAaHdfYmNtNTQ4Ml9jZmdtZGlbJXVdIHNldHRpbmcgdHlwZSAldQoAAAAA
-AAAAAAAAcmVtb3ZlIG11bHRpY2FzdCBtYWMgWyV4OiV4OiV4OiV4OiV4OiV4XSBmcm9tIFRDQU0K
-AAAAAAAAAAAAAAAAAGlwdjZfam9pbl9ncnA6IGlkICV1LCByZWZfY250ICV1CgAAAAAAAAAAAAAA
-AAAAAGRoY3A2X3RpbWVyX2NiOiByZXNlbmRpbmcgREhDUDZTT0xJQ0lUIGFnYWluCgAAAGRoY3A2
-X3RpbWVyX2NiOiBzZW5kaW5nIERIQ1A2UkVRVUVTVAoAAAAAAAAAAAAAAGRoY3A2X3RpbWVyX2Ni
-OiBzZW5kaW5nIERIQ1A2UkVORVcgcmVxdWVzdAoAAAAAAGRoY3A2X3RpbWVyX2NiOiBzZW5kaW5n
-IERIQ1A2UkVCSU5EIHJlcXVlc3QKAAAAAGRoY3A2X3RpbWVyX2NiOiBESENQNlJFUExZIHJjdmQs
-IHN0YXRlICV1CgAAAAAAAGZhaWxlZCB0byByZW5ldy9yZWJpbmQgZGhjcHY2IGFkZHJlc3MKAAAA
-AAAAAAAAAHR5cGUgJXgsIHhpZCAleCwgdHlwZV94aWQgJXgKAAAAaXB2Nl9tdWx0aWNhc3RfcXVl
-cnlfdGltZXJfY2Igbm9kZV9pZCAlZAoAAAAAAAAAaXB2Nl9nZW5lcmFsX3F1ZXJ5X3RpbWVyX2Ni
-CgAAAABhZGQgbXVsdGljYXN0IG1hYyBbJXg6JXg6JXg6JXg6JXg6JXhdIGluIFRDQU0KAABjaG5l
-dF9pcHY2X2RhZF9jYjogaGFuZGxlICV1LCBhZGRyX2lkICV1LCBhZGRyIHN0YXRlICV1CgAAAAAA
-AAAAaXB2NiBwcmVmZXJyZWQgYWRkciBbJTA0eCAlMDR4ICUwNHggJTA0eF0KAAAAAAAAU3RhcnRp
-bmcgYWRkciB2YWxpZGl0eSB0aW1lciBmb3IgJXUgc2Vjb25kcwoAAAAAVmFsaWRpdHkgZXhwaXJl
-ZCBmb3IgYWRkcl9pZCAldQoAAAAAAAAAAAAAAAAAAAAAc2VuZGluZyBpcHY2IGVjaG8gcmVwbHkK
-AAAAAAAAAABjaG5ldF9pcHY2X3JzX291dHB1dDogbDJkZXZfZmMgMHgleAoAAAAAAAAAAAAAAABj
-aG5ldF9pcHY2X25zX291dHB1dDogbDJkZXZfZmMgMHgleCwgZmxvd2NfaWQgMHgleCwgdmxhbiBm
-bGFnIDB4JXgKAAAAAAAAAAAAAAAAAGNobmV0X2lwdjZfbmFfb3V0cHV0OiBsMmRldl9mYyAweCV4
-CgAAAAAAAAAAAAAAAGNobmV0X2lwdjZfbWxkdjJfcmVwb3J0X291dHB1dDogbDJkZXZfZmMgMHgl
-eAoAAGdhdGhlcl90YXNrc190b190eF9saXN0OiB0YXNrIGluIHVzZSBbJXVdCgAAAAAAAGdhdGhl
-cl90YXNrc190b190eF9saXN0OiBpZHggWyV1XSwgdGFzayBmaWQgWzB4JXhdLCB0YXNrIHN0YXRl
-IFsweCV4XSwgdGFzayBjb25uIFsweCV4XSwgdGFzayBmZmxhZ3MgWzB4JXhdLCBjb25uIGZpZCBb
-MHgleF0sIGRkcCBbJWRdCgAAAAAAAAAAAGdhdGhlcl90YXNrc190b190eF9saXN0OiB0YXNrIFsw
-eCV4XSwgc3RhdGUgWzB4JXhdIG9uIGNvbm4gWzB4JXhdIG5vdCB2YWxpZCB0byBnYXRoZXIsIHNr
-aXBwaW5nCgAAAAAAAAAAAAAAAAAAAABnYXRoZXJfdGFza3NfdG9fdHhfbGlzdDogdGFzayBbMHgl
-eF0sIHN0aWxsIHF1ZXVlZCBvbiB0eCBwZW5kaW5nIGxpc3QuIFJlbW92aW5nIGl0LgoAAAAAAAAA
-AAAAAABnYXRoZXJfdGFza3NfdG9fdHhfbGlzdDogY29ubl9mYy0+Zmxvd2NfZmxhZ3MgWzB4JXhd
-LCBsaXN0X2VtcHR5IFsweCV4XSwgYWRkX3Rhc2tfY291bnQgWzB4JXhdCgB0b190eF9saXN0OiBu
-byB0YXNrIHRvIGNsb3NlIGZvciBjb25uIFsweCV4XSwgYmFpbGluZyB0byByZWNvdmVyeSBzdGF0
-ZSBbMHgleF0KAHNldF9kaWdlc3Q6IHVwbHN1Ym1vZGU6JXgKAAAAAAAAYXV0aGVudGljYXRlX3Rh
-cmdldDogS0VZX0NIQVBfUkVTUCAtIFsweCV4JXgleCV4JXgleCV4JXhdCgAAAAAAAGF1dGhlbnRp
-Y2F0ZV90YXJnZXQ6IEtFWV9DSEFQX1JFU1AgLSBbMHgleCV4JXgleCV4JXgleCV4XQoAAAAAAABh
-dXRoZW50aWNhdGVfdGFyZ2V0OiBJbmNvcnJlY3QgcGFzc3dvcmQKAAAAAAAAAABDSEFQX0M6IGRp
-Z2VzdCBleHBhbnNpb24gZXJyb3IKAENIQVBfTjogVGFyZ2V0IHVzZXJpZCBtaXNtYXRjaAoAQ0hB
-UF9SOiBkaWdlc3QgZXhwYW5zaW9uIGVycm9yCgBpU0NTSSBTZWMtcGFyYW1zIHJlY2VpdmVkIGhh
-dmUgZXJyb3JzISEKAAAAAAAAAABUYXJnZXQgbW92ZWQgdGVtcC4gY29ubiAleCwgc2VzcyAleAoA
-AAAAAAAAAAAAAABMb2dpbiBGYWlsZWQhIS4gY29ubl9mYyBbMHgleF0sIHNlc3NfZmMgWzB4JXhd
-LCBzdGF0dXNfY2xhc3MgWzB4JXhdCgAAAAAAAAAAAAAAAFByb3RvY29sIEVycm9yIGNiaXQgJWQg
-dGJpdCAlZCBjc2cgJWQgbnNnICVkCgAAAHJlY3Zfbm9waW46IGN0cmwgdGFzayBhbHJlYWR5IHBl
-bmRpbmcKAAAAAAAAAAAAAG9mbGRfcnhfZGF0YTogYWllZSwgaXNjc2kgY29ubiBbMHgleF0gZm9y
-IHNlc3MgWzB4JXhdLCB0eXBlIFsweCV4XSB0cmFuc2l0ZWQgaW4gdG9lIG1vZGUuIEtpY2tpbmcg
-cmVjb3ZlcnkgCgAAAABvZmxkX3J4X2RhdGE6IGNvbm4gdGlkIFsweCV4XSwgcnhfZGF0YS0+c2Vx
-IFsweCV4XSwgcnhfZGF0YS0+bGVuIFsweCV4XSwgcnhfZGF0YS0+c3RhdHVzIFsweCV4XQoAAAAA
-AAAAAAAAAAAAAAAAb2ZsZF9yeF9kYXRhOiBjc2sgeyBpZCBbMHgleF0sIGNzb2NrX29mZnNldCBb
-MHgleF0sIGRsZW4gWzB4JXhdIH0KAAAAAAAAAAAAAAAAAABhY3RfZXN0OiB0Y2JfZmMgWzB4JXhd
-LCBmbG93Y19pY29ubl9mbGFncyBbMHgleF0KAAAAAAAAAAAAAAAAAAAAYWN0X2VzdGFiOiB0Y2Jf
-ZmMtPmZsb3djX2J1ZiBbMHgleF0sIHRjYl9mYy0+Zmxvd2NfdHlwZSBbMHgleF0gdGNiX2ZjLT5m
-bG93Y19zdGF0ZSBbMHgleF0sIG5wYWdlcyBbMHgleF0sIGZsb3djX3RwX3NuZF9tYXggWzB4JXhd
-CgAAAAAAAAAAAAAAAAAAYWN0X2VzdGFiOiBhdGlkIFsweCV4XSwgdGlkIFsweCV4XSwgb3AgWzB4
-JXhdLCByY3ZfaXNuIFsweCV4XSwgc25kX2lzbiBbMHgleF0sIGNzb2NrLT5mbG93Y19zdGF0ZSBb
-MHgleF0sIHRjcF9vcHQgWzB4JXhdLCB0Y2JfZmMtPmZsb3djX2lkIFsweCV4XSAKAAAAAAAAAAAA
-AAAAAGNza19mYy0+Zmxvd2NfY3NvY2tfY29va2llIFsweCV4XSAKAAAAAAAAAAAAAAAAAG5ldF9s
-MmRldl9maW5kX2J5X2FkZHI2OiBsMmRldl9mYy0+Zmxvd2NfaWQgWzB4JXhdLCBsMmRjLT5scG9y
-dCBbJXVdLCBsMmRfZmMtPmZsb3djX2lkIFsweCV4XSwgYWRkciBbJTA0eDolMDR4OiUwNHg6JTA0
-eF0KAAAAAAAAY2huZXRfcXVldWVfeG1pdDogZmMtPmZsb3djX2lkIFsweCV4XSwgYnVmX2xlbiBb
-MHgleF0sIGJ1ZmZlcmVkIFsweCV4XSwgZmlmby5udW1fYnl0ZXMgWyUweF0KAAAAbmV0aWZfZG9f
-ZGhjcHY2OiB3ci0+cGFyYW0udmxhbmlkIFsldV0sIGwyZGV2X2ZjLT5mbG93Y19uZXRfbDJkZXZf
-dmxhbmRldiBbMHgleF0KAAAAAAAAAAAAAAAAAAAAbmV0aWZfZG9fZGhjcHY2OiBpcHY2IG5vdCBl
-bmFibGVkCgAAAAAAAAAAAAAAAAAAZGhjcCByZXNwIHRvIGRyaXZlcgoAAAAAAAAAAAAAAABsM2lu
-Nl9kZXZfY29uZmlnOiB3ci0+cGFyYW0udmxhbmlkIFsldV0sIGwyZGV2X2ZjLT5mbG93Y19uZXRf
-bDJkZXZfdmxhbmRldiBbMHgleF0KAAAAAAAAAAAAAAAAAABsM2luNl9kZXZfY29uZmlnOiBpcHY2
-IG5vdCBlbmFibGVkCgAAAAAAAAAAAAAAAABuZXRfbDNpbjZfZGV2X2NvbmZpZzogbDJkZXZfZmMt
-PmZsb3djX2lkIFsweCV4XSwgYWRkcmVzcyBhbHJlYWR5IHVzZWQgYnkgcG9ydCAlZCwgYWRkcl9p
-ZCAlZAoAAABuZXRfbDNpbjZfZGV2X2NvbmZpZzogIGFkZHIgWzB4JTA0eCUwNHglMDR4JTA0eF0s
-IHJlZl9jbnQgWzB4JXhdIGluIHVzZQoAAAAAAAAAAGwzaW40X2Rldl9jb25maWc6IHdyLT5wYXJh
-bS52bGFuaWQgWyV1XSwgbDJkZXZfZmMtPmZsb3djX25ldF9sMmRldl92bGFuZGV2IFsweCV4XQoA
-AAAAAAAAAAAAAAAAAG5ldF9sM2luNF9kZXZfY29uZmlnOiBsMmRldl9mYy0+Zmxvd2NfaWQgWzB4
-JXhdLCBhZGRyZXNzIGFscmVhZHkgdXNlZCBieSBwb3J0ICVkCgAAAAAAAAAAAAAAAAAAAG5ldF9s
-M2luNF9kZXZfY29uZmlnOiAgYWRkciBbMHgleF0sIG1hc2sgWzB4JXhdLCBndyBbMHgleF0sIHJl
-Zl9jbnQgWzB4JXhdIGluIHVzZQoAAAAAAAAAAAAAAAAAAGwyZGV2X2ZjIFsweCV4IF0gRmFpbGVk
-IHRvIHN0YXJ0IHRpbWVyIGZvciBpcHY0IGRhZAoAAAAAAAAAAAAAAAB3cmhfY2huZXRfaWZjb25m
-OiBsMmRldl9mYy0+Zmxvd2NfaWQgWzB4JXhdLCBsMmRldl9mYy0+Zmxvd2NfdHlwZSBbJTB4XSwg
-aWZjb25mX3dyLT5zdWJvcCBbMHgleF0KAAAAAAAAAAAAAAAAAAAAd3JoX2NobmV0X2lmY29uZjog
-bDJkZXZfZmMtPmZsb3djX2lkIFsweCV4XSwgdW5rbm93biBzdWJvcCBbMHgleF0KAAAAAAAAAAAA
-AAAAAAB3cmhfY2huZXRfaWZjb25mOiBsMmRldl9mYy0+Zmxvd2NfaWQgWzB4JXhdLCByYyAlZAoA
-AAAAAAAAAAAAAAAAbmV0aWZfaXBfY29uZmxpY3RfdGltZXJfY2I6IGwyZGV2X2ZjLT5mbG93Y19p
-ZCBbMHgleF0sIGV4cGVjdGluZyB0aW1lciBoYW5kbGUgWyVkXSwgYnV0IGdvdCBoYW5kbGUgWyVk
-XSBleHBpcnkKAG5ldGlmX2lwX2NvbmZsaWN0X3RpbWVyX2NiOiBsMmRldl9mYy0+Zmxvd2NfaWQg
-WzB4JXhdLCBpbmRldmN0eHQtPnN0YXRlIFslZF0sIGluZGV2Y3R4dC0+cmV0cnlfY250IFslZF0K
-AAAAAAAAAABuZXRpZl9pcF9jb25mbGljdF90aW1lcl9jYjogbDJkZXZfZmMtPmZsb3djX2lkIFsw
-eCV4XSwgaW5kZXZjdHh0IFsweCV4XSwgaW4gZnJlZSBzdGF0ZQoAAAAAAAAAAABjbWRoX2NobmV0
-X2lmYWNlOiBmYyBbMHgleF0sIGZjLT5mbG93Y19pZCBbMHgleF0sIGZjLT5mbG93Y190eXBlIFsw
-eCV4XSwgcCBbMHgleF0sIGxlbjE2IFsldV0sIGxvYyBbMHgleF0KAAAAAAAAY21kaF9jaG5ldF9p
-ZmFjZTpsMmRldl9mYyBbMHgleF0sIGwyZGV2X2ZjLT5mbG93Y19pZCBbMHgleF0sIGwyZGV2LT5m
-bG93Y190eXBlIFsldV0sIGwyZGV2X2ZjLT5mbG93Y19uZXRfbDJkZXZfZmxhZ3MgWyUweF0KAAAA
-AABjbWRoX2NobmV0X2lmYWNlOiByMlswXToldSByMlsxXToldSwgc3Vib3A6MHgleAoAAAAAAAAA
-AAAAAAAAAAAAY21kaF9jaG5ldF9pZmFjZTogbDJkZXZfZmMtPmZsb3djX25ldF9sMmRldl9mbGFn
-cyBjaGFuZ2VkIGZyb20gWyUweF0gdG8gWyUweF0sIHJjIFslZF0KAAAAAAAAAAAAY2huZXRfbDJk
-ZXZfdXBfbWJfY2I6IHJjIFslZF0sIHBvcnQgWyV1XSwgc3RhdGUgWyV1XSwgY29va2llIFsweCV4
-XQoAAAAAAAAAAAAAAABkaGNwX3Byb2Nlc3NfY2I6IGwyZGV2X2ZjLT5mbG93Y19pZCBbMHgleF0s
-IGRoY3R4dC0+c3RhdGUgWyUweF0sIGRoY3R4dC0+cnRyeV9jbnQgWyV1XQoAAAAAAAAAAABkaGNw
-X3RpbWVyX2NiOiBESENQRElTQ09WRVIgc2VudCwgYnV0IG5vIHJlcGx5IGZyb20gYW55IHBvc3Np
-YmxlIHNlcnZlciBvbiB0aGUgbmV0d29yay4gUmV0cnlpbmcgYWdhaW4KAAAAAAAAAAAAZGhjcF90
-aW1lcl9jYjogbDJkZXZfZmMtPmZsb3djX2lkIFsweCV4XSwgc2VuZGluZyBESENQRElTQ09WRVIg
-Zm9yIGRoY3R4dCBbMHgleF0gb24gcGlkIFslZF0KAAAAZGhjcF90aW1lcl9jYjogbDJkZXZfZmMt
-PmZsb3djX2lkIFsweCV4XSwgREhDUE9GRkVSIHJlY2VpdmVkIGZvciBkaGN0eHQgWyV4XSBwaWQg
-WyVkXQoAAAAAAAAAAAAAZGhjcF90aW1lcl9jYjogbDJkZXZfZmMtPmZsb3djX2lkIFsweCV4XSwg
-IERIQ1BBQ0sgcmVjZWl2ZWQgZm9yIGRoY3R4dCBbJXhdLCBwaWQgWyVkXQoAAAAAAAAAAAAAZGhj
-cF90aW1lcl9jYjogbDJkZXZfZmMtPmZsb3djX2lkIFsweCV4XSwgZGhjdHh0LT5pcGFkZHIgWzB4
-JXhdCgAAAAAAAAAAAAAAAAAAAABkaGNwX3RpbWVyX2NiOiBzdGFydGluZyB0aW1lciBmb3IgbGVh
-c2UgWyV1XSBzZWNvbmRzCgAAAAAAAAAAAAAAZGhjcF90aW1lcl9jYjogbGVhc2UgdGltZSBvZiBb
-JXVdIHNlY29uZHMgZXhwaXJlZCwgc2VuZGluZyByZW5ldyByZXF1ZXN0CgAAAAAAAABkaGNwX3Rp
-bWVyX2NiOiBsMmRldl9mYy0+Zmxvd2NfaWQgWzB4JXhdLCBubyByZXBseSBmcm9tIGRoY3Agc2Vy
-dmVyLCB0aW1pbmcgb3V0CgAAAAAAAAAAAAAAAAAAAABhdXRoX25lZ29fc2VjdXJpdHk6IHNlbmRf
-ZmxhZyBbMHgleF0sIGF1dGhfcG9saWN5IFsweCV4XQoAAAAAAAAAYXV0aF9uZWdvX3NlY3VyaXR5
-OiBLRVlfQ0hBUF9SRVNQIC0gaGFzaFsweCV4JXgleCV4JXgleCV4JXhdCgAAAGF1dGhfbmVnb19z
-ZWN1cml0eTogS0VZX0NIQVBfUkVTUCAtIGhhc2hbMHgleCV4JXgleCV4JXgleCV4XQoAAABhdXRo
-X25lZ29fc2VjdXJpdHk6IEtFWV9DSEFQX1JFU1AgLSBlcnJvciBlbmNvZGluZyB0byBoZXgKAAAA
-AAAAYXV0aF9uZWdvX3NlY3VyaXR5OiBLRVlfQ0hBUF9SRVNQIC0gZWxlbiBbMHgleF0KAAAAAAAA
-AAAAAAAAAAAAAGF1dGhfbmVnb19zZWN1cml0eTogS0VZX0NIQVBfQ0hBTCAtIGVycm9yIGVuY29k
-aW5nIHRvIGhleAoAAAAAAABhdXRoX25lZ29fc2VjdXJpdHk6IEtFWV9DSEFQX0NIQUwgLSBlbGVu
-IFsweCV4XQoAAAAAAAAAAAAAAAAAAAAAbG9nb3V0X3RpbWVkb3V0OiBsb2dvdXQgcmVxdWVzdCB0
-aW1lZG91dCwgcG9zc2libGUgbmV0d29yayBpc3N1ZXMuIEZvcmNlZnVsbHkgYnJlYWtpbmcgcGF0
-aCBmb3Igc2VzcyBbMHgleF0KAAAAAHBpbmdfdGFyZ2V0OiBwaW5nIHRpbWVvdXQsIGtpY2tpbmcg
-cmVjb3ZlcnkgZm9yIHNlc3MgWzB4JXhdCgAAAABjc29ja19mYWlsZWQ6IGNza19mYy0+Zmxvd2Nf
-aWQgWzB4JXhdLCBjc2tfZmMtPmZsb3djX3N0YXRlIFsweCV4XSwgc2Vzc19mYy0+Zmxvd2NfaWQg
-WzB4JXhdLCBzZXNzX2ZjLT5mbG93Y19zdGF0ZSBbMHgleF0sIGV2dCBbMHgleF0KAAAAAAAAAAAA
-AABjaG5ldF9maW5kX2lwNl9sMnRfZW50cnk6IGZpbmQgcHJlZml4IG1hdGNoIFslMDR4ICUwNHgg
-JTA0eCAlMDR4XQoAAAAAAAAAAAAAAAAAAE5vIHJvdXRlciBjb25maWd1cmVkLCBsMmRldl9mYy0+
-Zmxvd2NfaWQgMHgleAoAAApSb3V0ZXIgbGlmZSAldSBleHBpcmVkLiBkZWxldGluZyByb3V0ZXIg
-WyUwNHggJTA0eCAlMDR4ICUwNHhdCgBVc2luZyByb3V0ZXIgWyUwNHggJTA0eCAlMDR4ICUwNHhd
-IHRvIHJlYWNoIFslMDR4ICUwNHggJTA0eCAlMDR4XQoAAAAAAAAAAAAAAAAAAGwydGVudCBbJTB4
-XSwgbDJ0ZW50LT5pZHggWyVkXQoAcmMgWyVkXSwgY3NrX2ZjIFsweCV4XSwgY3NrX2ZjLT5mbG93
-Y19pZCBbMHgleF0KAAAAAAAAAAAAAAAAAAAAAGNzb2NrX2FsbG9jOiBzcmNfYWRkcjoweCV4LCBk
-c3RfYWRkcjoweCV4CgAAAAAAAGNvbm5lY3Rpb24gb3ZlciBpcHY2LCBsMmRldiBmbG93Y19pZCAw
-eCV4CgAAAAAAAGNza19hbGs6IEludmFsaWQgbDJkZXY6MHgleAoAAAAAY3NrX2FsazogbmV4dDol
-dSwgaWR4OiV1LCB1c2VkOiV1LCBzcG9ydDoldQoAAAAAY3NvY2tfYWxsb2M6IGNzb2NrX3NyY19h
-ZGRyOjB4JXgsIGNzb2NrX2RzdF9hZGRyOjB4JXgKAAAAAAAAAAAAAGNzb2NrX2FsbG9jOiB0eF9j
-aCBbMHgleF0sIGxwb3J0IFsweCV4XSwgY29va2llIFslMDh4XQoAAAAAAAAAAABjc29ja19hbGxv
-YzogYXZhaWxhYmxlIFsldV0sIG5jc29jayBbJXVdLCBwb3M6YXRpZCBbMHgleF0sIGNza19mYyBb
-MHgleF0sIGNza19mYy0+Zmxvd2NfaWQgWzB4JXhdLCBzcG9ydCBbJXVdCgAAcmVjb3ZlcnlfdGlt
-ZW91dDogc2VzcyBpZCBbMHgleF0gc3RhdGUgWzB4JXhdLCByY291bnQgWyVkXSwgZmxhZ3MgWzB4
-JXhdCgAAAAAAAAByZWNvdmVyeV90aW1lb3V0OiBzZXNzIGlkIFsweCV4XSBpbiBsb2dvdXQsIGFi
-b3J0IHRoZSBjb25uZWN0aW9uCgAAAAAAAAAAAAAAAAAAAHJlY292ZXJ5X3RpbWVvdXQ6IHNlc3Nf
-ZmMtPmZsb3djX2ZvaXNjc2lfc2Vzc19mbGFncyBbMHgleF0sIGNvbm5lY3Rpb24gcmVxdWVzdCBw
-ZW5kaW5nLCBiYWlsaW5nIG91dAoAAAAAAAAAAAAAAABmb2lzY3NpOiBSZWNvdmVyeSB0aW1lZCBv
-dXQgYWZ0ZXIgWyV1XSByZXRyeSwgYmFpbGluZyBvdXQKAAAAAAAAVENQIGNvbm4gZXN0YWJsaXNo
-bWVudCBmYWlsZWQgJWQKAAAAAAAAAAAAAAAAAAAAZGlzY292ZXJ5X2RhdGE6IHNlc3MgeyBpZCBb
-MHgleF0sIGZsYWdzIFsweCV4XSwgYnVmZmVyZWQgWyV1XS4gfQoAAAAAAAAAAAAAAAAAAABkaXNj
-b3ZlcnlfZGF0YTogc2VzcyB7IGlkIFsweCV4XSB9LCB1bHB0eGNoIFsldV0gbm8gY3JlZGl0cyBh
-dmFpbGFibGUsIHJlc2NoZWR1bGluZyByZXF1ZXN0LgoAAABJbnZhbGlkIG9wY29kZSAweCV4IGlu
-IGN0cmwgcGF0aAoAAAAAAAAAAAAAAAAAAABERFAgZXJyb3IgWzB4JXhdLCBhYm9ydGluZyBjb25u
-biBbMHgleF0KAAAAAAAAAAByeF9kYXRhX2RkcDogUmVzcG9uY2UgcmVjaWV2ZWQgZm9yIHRhc2sg
-WzB4JXhdIHdoaWxlIGludmFsaWQgdGFzayBvciBjb25uZWN0aW9uIHN0YXRlLiB0YXNrIHN0YXRl
-IFsweCV4XSwgY29ubiBzdGF0ZSBbMHgleF0sIGNvbm4gZmxhZ3MgWzB4JXhdCgBpaGRyOiBSZXNw
-b25jZSByZWNpZXZlZCBmb3IgdGFzayBbMHgleF0gd2hpbGUgaW52YWxpZCB0YXNrIG9yIGNvbm5l
-Y3Rpb24gc3RhdGUuIHRhc2sgc3RhdGUgWzB4JXhdLCBjb25uIHN0YXRlIFsweCV4XSwgY29ubiBm
-bGFncyBbMHgleF0KAAAAAAAAAABpaGRyOiBJbnZhbGlkIHRhc2sgc3RhdGUgMHgleCBmb3IgdGFz
-ayAweCV4LCBpdHQgWzB4JXhdLCBvcGMgWzB4JXhdCgAAAAAAAAAAAAAAAHByb2Nlc3NfdG1mX3Jl
-c3BvbnNlOiBidWZmZXJlZCBbMHgleF0sIGlzdGFza19mYy0+Zmxvd2NfYnVmLT5zY2hlZF9ub2Rl
-Lm5leHQgWzB4JXhdLCBpc3Rhc2tfZmMgWzB4JXhdLCBpc3Rhc2tfZmMtPmZsb3djX2lkIFsweCV4
-XQoAAAAAAAAAAAAAAAAAAHByb2Nlc3NfdG1mX3Jlc3BvbnNlOiB3ciBvcCBbMHgleF0sIHRtZiBv
-cCBbMHgleF0KAAAAAAAAAAAAAAAAAAB0bWZfcmVzcDogZmxvd2M6MHgleCwgaWQ6MHgleCwgc3Rh
-dGU6MHgleCwgeWllbGQ6MHgleAoAAAAAAAAAAAAAdG1mX3Jlc3A6IHRfdGFzazoweCV4IGZyZWVk
-LgoAAABzY3NpX2NtZF9yZXNwOiBmbG93YzoweCV4LCBpZDoweCV4LCBzdGF0ZToweCV4LCB5aWVs
-ZDoweCV4CgAAAAAAZGF0YV9pbl9yZXNwOiBmbG93YzoweCV4LCBpZDoweCV4LCBzdGF0ZToweCV4
-LCB5aWVsZDoweCV4CgAAAAAAAHJldHVybl9wZW5kaW5nX3Rhc2s6IGNvb2tpZSBbMHglMDh4XSwg
-WzB4JTA4eF0KAHJldHVybl9wZW5kaW5nX3Rhc2s6IGRlbGF5IHByb2Nlc3NpbmcsIGNvbm4gZmxh
-Z3MgWzB4JXhdCgAAAAAAAAByZXR1cm5fcGVuZGluZ190YXNrOiBEb25lIHNlbmRpbmcgdGFzayBl
-cnJvciB0byBob3N0LCB1bHB0eGxlbjE2IFsldV0KAAAAAAAAAAAAAHJldHVybl9wZW5kaW5nX3Rh
-c2s6IGRlcXVldWUgdGFzayBbMHgleF0sIHN0YXRlIFsweCV4XSBmcm9tIHR4X2xpc3QKAAAAAAAA
-AAAAAAAAcmV0dXJuX3BlbmRpbmdfdGFzazogYWxsIHRhc2tzIHJldHVybmVkLCByZWNvdmVyeSBz
-dGF0ZSB0cmFucyB0byBbMHgleF0KAAAAAAAAAABjbGVhcl9kZHBfbWFwOiBpc3Rhc2tfZmMgWzB4
-JXhdLCBpc3Rhc2tfZmMtPmZsb3djX2lkIFsweCV4XSBidWZmZXJlZCAldQoAAAAAAAAAAGNsZWFy
-X2RkcF9tYXA6IGlzdGFza19mYy0+Zmxvd2NfaXRhc2tfbnBwb2QgJXUsIG5wcG9kICV1LCBwcGRh
-ZGRyIFsweCV4XQoAAAAAAAAAY2xlYXJfZGRwX21hcDogYWxsIHJldHVybmVkIHRhc2tzIGRkcCBj
-bGVhcmVkLCByZWNvdmVyeSBzdGF0ZSB0cmFucyB0byBbMHgleF0KAAB3cmhfZm9pc2NzaV9ub2Rl
-OiBub2RlX3dyLT5mbG93aWRfbGVuMTYgMiBbJXhdCgB3cmhfZm9pc2NzaV9jaGFwOiBpZF9sZW4g
-WyV4XSwgc2VjX2xlbiBbJXhdCgAAAAB3cmhfZm9pc2NzaV9jaGFwOiB0Z3RfaWRfbGVuIFsleF0s
-IHRndF9zZWNfbGVuIFsleF0KAAAAAAAAAAAAAAAAc2Vzc2lvbl9ibG9jazogc2Vzc19mYy0+Zmxv
-d2NfaWQgWzB4JXhdLCBzZXNzX2ZjLT5mbG93Y19zdGF0ZSBbMHgleF0sIGNvbm5fZmMtPmZsb3dj
-X2lkIFsweCV4XSwgY29ubl9mYy0+Zmxvd2Nfc3RhdGUgWzB4JXhdLCBjc2tfZmMtPmZsb3djX2lk
-IFsweCV4XSwgY3NrX2ZjLT5mbG93Y19zdGF0ZSBbMHgleF0KAAAAAAAAAAAAAAAAAAAAc2Vzc2lv
-bl91bmJsb2NrOiBzZXNzX2ZjLT5mbG93Y19pZCBbMHgleF0sIHNlc3NfZmMtPmZsb3djX3N0YXRl
-IFsweCV4XSwgY29ubl9mYy0+Zmxvd2NfaWQgWzB4JXhdLCBjb25uX2ZjLT5mbG93Y19zdGF0ZSBb
-MHgleF0sIGNza19mYy0+Zmxvd2NfaWQgWzB4JXhdLCBjc2tfZmMtPmZsb3djX3N0YXRlIFsweCV4
-XQoAAAAAAAAAAAAAAAAAc3RhcnRfbG9nb3V0OiBTZXNzLWlkIFsweCV4XSBhbHJlYWR5IGxvZ2dp
-biBvdXQuCgAAAAAAAAAAAAAAAAAAAHBlZXJfY29uOiBjc2tfZmMgPT4gZmxvd2lkIFsweCV4XSwg
-Zmxvd2NfYnVmIFsweCV4XQoAAAAAAAAAAAAAAABhbGxvY19zZXNzOiBsb2dpbl9yZXRyeSBbJWRd
-LCByZWNvdl90aW1lb3V0IFslZF0KAAAAAAAAAAAAAAAAAAAAZm9pc2NzaV9jdHJsOiBzdWJvcCBb
-MHgleF0sIHNlc3NfdHlwZV90b19lcmwgWzB4JXhdLCBzZXNzX3R5cGUgWzB4JXhdCgAAAAAAAAAA
-AABmb2lzY3NpX2N0cmw6IHJlY2VpdmVkIGJsb2NrZWQgZnJvbSBkcml2ZXIsIHRyaWdnZXJpbmcg
-cmV0dXJuIHRhc2tzIG5vdy4KAAAAAAAAAFdBVENIRE9HX2Rpc3BhdGNoIGNhc2UgdG8gYXZvaWQ6
-IENvdW50ZXJfd2F0Y2hkb2cgJXUgQ291bnRlcl9zY2hlZCAldSAKAAAAAAAAAAAAV0FUQ0hET0c6
-IGRldmljZSBzaHV0ZG93bgoAAAAAAABXQVRDSERPRzogcG9ydFsldV0gcGF1c2Ugd2F0Y2hkb2cg
-dGltZW91dAoAAAAAAABXQVRDSERPRzogYnlwYXNzIHRpbWVvdXQKAAAAAAAAAFdBVENIRE9HOiBG
-TFIgLSBub3QgaW1wbGVtZW50ZWQgeWV0CgAAAAAAAAAAAAAAAFdBVENIRE9HOiB0ZW1wZXJhdHVy
-ZSBvZiAlZEMgZXhjZWVkcyB0aHJlc2hvbGQgb2YgJWRDCgAAAAAAAAAAAABmaWx0ZXI6IHBvcmdy
-YW1taW5nIHRpZCAldSAobGUgdGNhbSBpbmRleCAldSkuLi4KAAAAAAAAAAAAAAAAAAAAZmlsdGVy
-OiByZXF1ZXN0aW5nIGNvbXBsZXRpb24uLi4KAAAAAAAAAAAAAAAAAAAAY2huZXRfaXB2Nl9saW5r
-X2NoYW5nZV9ub3RpZnk6IGwyZGV2X2ZjIFsweCV4XSwgc3RhdHVzICV1CgAAAAAAAGwyZGV2X3Nl
-bmRfcG9ydF9ldmVudDogd3IgWzB4JXhdIHBlbmRpbmcgb24gcG9ydCBbJWRdLCBjdXJyZW50IHRy
-eSBbJWRdCgAAAAAAAAAARkNPRSBGcmVlOiBzdGlsbCB5aWVsZGVkIHdoZW4gZnJlZWluZy4uLmZs
-b3djX2lkICV4IGZsb3djX2ZsYWdzICV4IAoAAAAAAAAAAAAAAABGQ09FIEJQIFdSIEVSUjogV1Ig
-d2l0aCBjb29raWUgJXgleCBlcnJvcmVkIGJhY2sgCgAAAAAAAAAAAAAAAAAAZGNieF9pZWVlX2Nt
-ZGhbJXVdIHdyaXRlIG9ubHkgcGVybWl0dGVkIG9uIGxvY2FsIGNvbmYKAAAAAAAAAAAAAGRjYnhf
-aWVlZV9jbWRoWyV1XSBjYW5ub3Qgd3JpdGUgJXUgYXBwcyAoTUFYOiAldSkKAAAAAAAAAAAAAAAA
-AABkY2J4X2llZWVfY21kaFsldV0gcmVxdWVzdGluZyBEQ0JfSUVFRV9DTUQKAAAAAABkY2J4X2ll
-ZWVfY21kaFsldV0gdW5rbm93biBmZWF0dXJlIHdyaXRlOiAldQoAAABkY2J4X2llZWVfY21kaFsl
-dV0gdW5rbm93biBmZWF0dXJlIHJlYWQ6ICV1CgAAAABGQ29FIEREUCBmYWlsZWQgOiBveF9pZCAw
-eCV4IHJ4X2lkIDB4JXgKAAAAAAAAAABGQ29FIEREUCBmYWlsZWQgOiBEZHBSZXBvcnQgMHgleCBE
-ZHBWYWxpZCAweCV4CgBGQyB4Y2hnIGFsbG9jIGZhaWxlZDogYXZhaWwgJWQKAGZjb2Ugbm90aWZ5
-IDogVXBkYXRlIG5ldyBEQ0JYIHZhbHVlcyBWSSBzdGF0ZSAweCV4IHByaSAweCV4IHNjaGVkY2wg
-MHgleCBkY2J4X2RvbmUgMHgleAoAAAAAAAAAAGZjb2Ugbm90aWZ5IDogRkNGIGZsb3dpZCAweCV4
-LCB1bHBjaCAweCV4IAoAAAAAAFBSTEkgUnNwIHRpbWVkb3V0IDogZmxvd2NfaWQgMHgleCBveF9p
-ZCAweCV4IHJ4X2lkIDB4JXggCgAAAAAAAABjYW5ub3QgYWxsb2NhdGUgb2ZmbG9hZGVkIGZpbHRl
-ciBjb25uZWN0aW9uCgAAAABjYW5ub3QgYWxsb2NhdGUgb2ZmbG9hZGVkIGZpbHRlciBJUHY2IGNv
-bm5lY3Rpb24KAAAAAAAAAAAAAAAAAAAAZGlzcGF0Y2hfZGVmZXJyZWRfY2xhc3NfY2xhc3Nfc2hh
-cGluZ1sldToldV06IGxpc3RfZW1wdHkKAAAAAAAAAGxvb3BiYWNrIGJ1ZmZlciBncm91cFsldV0g
-aXMgZGlzYWJsZWQKAAAAAAAAAAAAAGludmFsaWQgYnVmZmVyIGdyb3VwWyV1XSBjb25maWd1cmF0
-aW9uOiBtdHUgJXUgbHdtICV1IGh3bSAldSBkd20gJXUKAAAAAAAAAAAAAAAAZmMgJXUgdmYgJXUg
-Z290IGl2Zj0weCV4LHJhbmdlOiAlI3gtJSN4ICgldS8ldSB1c2VkKQoAAAAAAAAAAAAAAFZJICV1
-IGNhbm5vdCBnZXQgUlNTIHNsaWNlOiBObyBtb3JlIHNsaWNlcyBhdmFpbGFibGUgKHVzZWQgJXUv
-JXUpCgAAAAAAAAAAAAAAAAAAcGZuICV1IHZmbiAldSB3aXRoIHBvcnQgbWFzayAweCV4IGNhbm5v
-dCBhY2Nlc3MgcG9ydCAldSwgcmV0ICVkCgAAAAAAAAAAAAAAAAAAAABwZm4gJXUgdmZuICV1IGNv
-dWxkIG5vdCBhbGxvY2F0ZSB2aWlkLCByZXQgJWQKAABwZm4gJXUgdmZuICV1IGNvdWxkIG1hcCB2
-aWlkICAweCV4IHRvIGZsb3djLCByZXQgJWQKAAAAAAAAAAAAAAAAcGZuICV1IHZmbiAldSBjb3Vs
-ZCBub3QgYWxsb2NhdGUgdXdpcmUgZnVuYyAlZCBtYWMgYWRkciwgcmV0ICVkCgAAAAAAAAAAAAAA
-AAAAAABtaWlfaW5pdFsldV06IGFjYXBzIDB4JXgKAAAAAAAAAG1paV9mb3JjZV9zcGVlZFsldV06
-IHJjYXBzIDB4JXgKAAAAAAAAAAAAAAAAAAAAAG1paV9wZG93blsldV06IHBvd2VyZG93biBlbiAl
-dQoAcG9ydF9jbWRfaGFuZGxlcjogdW5rbm93biB1LmRjYi50eXBlIDB4JXgKAAAAAAAAcG9ydFsl
-dToweCUwMng6MHglMDJ4XTogdW5rbm93biBhY3Rpb24gMHgleAoAAAAAcG9ydFsldToweCUwMng6
-MHglMDJ4XTogdW5rbm93biByZWFkIGFjdGlvbiAweCV4CgAAAAAAAAAAAAAAAAAAAGNwbF9lcnJf
-bm90aWZ5OiB0aWQgJXUgY3BsIDB4JTA4eCUwOHgKAAAAAAAAAAAAAGNwbF9lcnJfbm90aWZ5OiB0
-aWQgJXUgY3BsIDB4JTA4eCUwOHggMHglMDh4JTA4eAoAAAAAAAAAAAAAAAAAAABjcGxfZXJyX25v
-dGlmeTogdGlkICV1IGxlbiAldQoAAEZDT0UgRnJlZTogc3RpbGwgeWllbGRlZCB3aGVuIGZyZWVp
-bmcuLi5mbG93Y19pZCAleCBmbG93Y19mbGFncyAleCAKAAAAAAAAAAAAAAAAc2NzaV9hYm9ydDog
-RW50ZXJpbmcgQWJvcnRfdGFzaywgYnVmZmVyZWQgWyV1XQoAc2NzaV9hYm9ydDogcmMgWzB4JXhd
-IHJlZiB0YXNrIG5vdCBvdXRzdGFuZGluZwoAc2NzaV9hYm9ydDogaWRhdGEtPm9wIFsweCV4XSwg
-ZmxhZ3MgWzB4JXhdLCBmdW5jIFsweCV4XSwgbHVuX2lkeCBbMHgleF0KAAAAAAAAAABzY3NpX2Fi
-b3J0OiB3ci0+aXFpZCBbMHgleF0sIGlzdGFza19mYy0+Zmxvd2Nfc2dlX2lxaWQgWzB4JXhdLCBp
-c3Rhc2tfZmMgdGFzayBmbGFncyBbMHgleF0KAAAAAABzY3NpX2FicnQ6dGFzayBmbG93Y1sweCV4
-XSwgdG1mX2xpc3RfZW1wdHk6CgAAAABzY3NpX2Fib3J0OiBjb25uIFsweCV4XSwgY21kc24gWzB4
-JXhdLCBzZW50X2NtZHNuIFsweCV4XSwgbWF4X2NtZHNuIFsweCV4XSwgaXR0IFsweCV4XQoAAAAA
-AAAAAABhYm9ydC9jbG9zZSBXUiB3aXRoIGNvb2tpZSAweCVseCB3YXMgaXNzdWVkIG9uIHNzbiAw
-eCV4IGluIHdyb25nIHN0YXRlIDB4JXgKAAAAAGFib3J0IFdSIG9uIHNzbiAweCV4IGRpZCBub3Qg
-ZmluZCBXUiB3aXRoIGNvb2tpZSAweCV4JXgKAAAAAAAAAABjbG9zZSBXUiB3aXRoIGNvb2tpZSAw
-eCVseCBvbiBzc24gMHgleDtkaWQgbm90IGZpbmQgV1Igd2l0aCBjb29raWUgMHglbHgKAAAAAAAA
-AGFib3J0IFdSIG9uIHNzbiAweCV4IHdhcyBpc3N1ZWQgb24geGNoZyAweCV4IHdpdGggcnhfaWQg
-MHgleCBpbiB3cm9uZyBzdGF0ZSAweCV4CgAAAAAAAAAAAAAAAAAAAHNjc2lfbHVyOiBFbnRlcmlu
-ZyBMVVIgaGFuZGxlciwgYnVmZmVyZWQgWyV1XQoAAHNjc2lfbHVyOiBpZGF0YS0+b3AgWzB4JXhd
-LCBmbGFncyBbMHgleF0sIGZ1bmMgWzB4JXhdLCBsdW5faWR4IFsweCV4XQoAAAAAAAAAAAAAc2Nz
-aV9sdXI6IHdyLT5pcWlkIFsweCV4XSwgaXN0YXNrX2ZjLT5mbG93Y19zZ2VfaXFpZCBbMHgleF0s
-IGlzdGFza19mYyB0YXNrIGZsYWdzIFsweCV4XQoAAAAAAAAAc2NzaV9sdXI6IGNvbm4gWzB4JXhd
-LCBjbWRzbiBbMHgleF0sIHNlbnRfY21kc24gWzB4JXhdLCBtYXhfY21kc24gWzB4JXhdLCBpdHQg
-WzB4JXhdCgAAAAAAAAAAAAAAZGNieF9hcHBseV9hcHBfY2ZnWyV1XU5FVyBBUFAgVExWIAoAAAAA
-AAAAAAAAAAAAZGNieF9jZWVfZmVhX3NtWyV1XSBGZWF0dXJlWyV1XSBGRUFUVVJFX0xJTktVUAoA
-ZGNieF9jZWVfZmVhX3NtWyV1XSBGZWF0dXJlWyV1XSBTRVRfTE9DQUxfUEFSQU1FVEVSUwoAAAAA
-AAAAAAAAAGRjYnhfY2VlX2ZlYV9zbVsldV0gRmVhdHVyZVsldV0gRkVBVFVSRV9OT19BRFZFUlRJ
-U0UKAAAAAAAAAAAAAABkY2J4X2NlZV9mZWFfc21bJXVdIEZlYXR1cmVbJXVdIEZFQVRVUkVfUEVF
-Ul9OT1RfQURWRVJUSVNFX0RDQlgKAAAAAAAAAAAAAAAAAAAAAGRjYnhfY2VlX2ZlYV9zbVsldV0g
-RmVhdHVyZVsldV0gRkVBVFVSRV9QRUVSX05PVF9BRFZFUlRJU0VfRkVBVFVSRQoAAAAAAAAAAAAA
-AAAAZGNieF9jZWVfZmVhX3NtWyV1XSBGZWF0dXJlWyV1XSBGRUFUVVJFX1VQREFURV9PUEVSX1ZF
-UlNJT04KAAAAAGRjYnhfY2VlX2ZlYV9zbVsldV0gRmVhdHVyZVsldV0gRkVBVFVSRV9QRUVSX1VQ
-REFURV9PUEVSX1ZFUlNJT04KAAAAAAAAAAAAAAAAAAAAZGNieF9jZWVfZmVhX3NtWyV1XSBGZWF0
-dXJlWyV1XSBGRUFUVVJFX0dFVF9QRUVSX0NGRwoAAAAAAAAAAAAAAGRjYnhfY2VlX2ZlYV9zbVsl
-dV0gRmVhdHVyZVsldV0gRkVBVFVSRV9DRkdfTk9UX0NPTVBBVElCTEUKAAAAAABkY2J4X2NlZV9m
-ZWFfc21bJXVdIEZlYXR1cmVbJXVdIEZFQVRVUkVfVVNFX0xPQ0FMX0NGRwoAAAAAAAAAAAAAZGNi
-eF9jZWVfZmVhX3NtWyV1XSBGZWF0dXJlWyV1XSBGRUFUVVJFX1VTRV9QRUVSX0NGRwoAAAAAAAAA
-AAAAAGRjYnhfY2VlX2ZlYV9zbVsldV0gRmVhdHVyZVsldV0gRkVBVFVSRV9GRUFUVVJFX0RJU0FC
-TEVECgAAAAAAAABkY2J4X2NlZV9mZWFfc21bJXVdIEZlYXR1cmVbJXVdIEZFQVRVUkVfRVJST1Jf
-Q0hBTkdFCgAAAAAAAAAAAAAAZGNieF9pZWVlX3Byb2Nlc3NbJXVdIHJlY2VpdmVkIEJXcyBkbyBu
-b3QgYWRkIHVwIHRvIDEwMCEKAAAAAAAAAFdBUk5JTkc6IHJlY2VpdmVkIEFwcCBUTFYgY29udGFp
-bnMgbW9yZSB0aGFuRlcgY2FuIGhhbmRsZSAobWF4OiAldTsgdGx2IGNvbnRhaW5zOiAldQoAAAAA
-AAAAAAAAAGRjYnhfaWVlZV9wcm9jZXNzWyV1XSBzdWJ0eXBlICUjeCByZW1fZnRfY2hhbmdlZCAl
-dSBzbV9jaGFuZ2UgJXUKAAAAAAAAAAAAAAAAAAAAZGNieF9pZWVlX3Byb2Nlc3NbJXVdIHN1YnR5
-cGUgdW5rbm93bgoAAAAAAAAAAAAAZGNieF9wYXJzZV9wa3RbJXVdIGVycm9yICVkCgAAAABpcHY2
-X2FkZF9wcmVmaXhfaW5fbGlzdDogbm9kZSBmb3VuZCAweCV4CgAAAAAAAABpcHY2X2FkZF9wcmVm
-aXhfaW5fbGlzdCwgbm9kZSBub3QgZm91bmQKAAAAAAAAAABjaG5ldF9hcnBfdXBkYXRlX2NhY2hl
-OiBhcnAgaXA0IGVudHJ5IGZvdW5kIAoAAABjaG5ldF9hcnBfdXBkYXRlX2NhY2hlOiBhcnAgaXA2
-IGVudHJ5IGZvdW5kIAoAAABjaG5ldF9hcnBfdXBkYXRlX2NhY2hlOiBib3RoIGlwNCBhbmQgaXA2
-IGFkZHIgY2Fubm90IGJlIG51bGwKAAAAY2huZXRfbDJ0X3VwZGF0ZTogbDJ0X3VwZGF0ZSByZXF1
-ZXN0IHNlbnQgbDJ0ZW50IFslMDh4XSwgbDJ0ZW50LT5pZHggWyVkXSwgbDJ0ZW50LT52bGFuIFsl
-ZF0KAAAAY2huZXRfaXB2Nl9yYV9pbnB1dDogSW52YWxpZCBSQQoAAAAAAAAAAAAAAAAAAAAAaXB2
-NiBSQSByY3ZkCgAAAHJvdXRlciBub3QgcHJlc2VudCBpbiBvdXIgbGlzdC4gYWRkaW5nIGl0CgAA
-AAAAAEludmFsaWQgb3B0aW9uIGxlbmd0aCAldSBpbiBTTExBIG9wdGlvbgoAAAAAAAAAAEdPVCBT
-TExBIG9wdGlvbiBpbiBSQSwgbGVuICV1CgAASW52YWxpZCBvcHRpb24gbGVuZ3RoICV1IGluIHBy
-ZWZpeCBvcHRpb24KAAAAAAAASW52YWxpZCBvcHRpb24gbGVuZ3RoICV1IGluIG10dSBvcHRpb24K
-AAAAAAAAAAAASW52YWxpZCBwYWNrZXQgd2l0aCAldSBleHRyYSBieXRlcwoAAAAAAAAAAAAAAAAA
-bWxkNiBxdWVyeSByY3ZkCgAAAAAAAAAAAAAAAAAAAABjaG5ldF9pcHY2X21sZDZfcXVlcnlfaW5w
-dXQ6IEludmFsaWQgTUxEIHF1ZXJ5CgBVbnN1cHBvcnRlZCBxdWVyeSB2ZXJzaW9uLiBvbmx5IG1s
-ZHYyIHF1ZXJ5IHN1cHBvcnRlZAoAAAAAAAAAAAAAcXVlcnkgcmVzcG9uc2UgZGVsYXkgJXUgKGlu
-IDEwbXMgdW5pdCkgCgAAAAAAAAAAYWxyZWFkeSBhIGdlbmVyYWwgcXVlcnkgcGVuZGluZyBpbiAl
-dSAoMTBtcykKAAAARGVidWcgdGhlIGNvZGUuIGdycF9ub2RlIG11c3QgYmUgcHJlc2VudAoAAAAA
-AAAAYWxyZWFkeSBhIG11bHRpY2FzdCBxdWVyeSBwZW5kaW5nIGluICV1ICgxMG1zKQoAaXB2NiBl
-Y2hvIHJlcSByY3ZkCgAAAAAAAAAAAAAAAABESENQdjYgcGFja2V0IHR5cGUgJXUsIG9wdHNsZW4g
-JXUgcmVjZWl2ZWQKAAAAAABJbnZhbGlkIGRoY3Agc3RhdGUgJWQKAAAAAAAAAAAAAElnbm9yZSBE
-SENQdjYgbXNnIHhpZCAleCwgIGRoNmN0eHQtPnhpZCAleAoAAAAAAEVycm9yIGluIERIQ1B2NiBv
-cHRpb25zIHBhcnNpbmcuIElnbm9yaW5nIG1zZywgaSAlZCwgb3B0c2xlbiAlZAoAAAAAAAAAAAAA
-AAAAAAAAREhDUCBmYWlsZWQsIHN0YXR1c2NvZGUgJWQuIElnbm9yaW5nIGFkdmVydGlzZQoAaWNt
-cDYgY2hlY2tzdW0gdmFsaWRhdGlvbiBmYWlsZWQsIG9yIGVyciByY3ZkaWdub3JpbmcgaWNtcDYg
-bXNnICV1LCBkbGVuICV1CgAAAABuZXRpZl9wcm9jZXNzX2RoY3A6IGwyZGV2X2ZjLT5mbG93Y19p
-ZCBbMHgleF0sIHByb2Nlc3NpbmcsIG9wdF9sZW4gJXUKAAAAAAAAAAAAAGNobmV0X2RoY3BfcmVj
-djogdmxhbmlkIFsldV0sIGwyZGV2X3BpZF9mYy0+Zmxvd2NfbmV0X2wyZGV2X3ZsYW5kZXYgWzB4
-JXhdLCBsMmRldl9mYyBbMHgleF0KAAAAAGNobmV0X2RoY3BfcmVjdjogbDJkZXZfZmMtPmZsb3dj
-X2lkIFsweCV4XSwgZGhjdHh0LT5zdGF0ZSBbJWRdLCBtYWxhY2lvdXMgZGhjcCByZWN2IGZvciBu
-byByZXF1ZXN0CgAAAAAAAAAAAAAAAABkaGN0eHQtPnN0YXRlIDogJWQKAAAAAAAAAAAAAAAAAGwy
-ZGV2X2ZjLT5mbG93Y19pZCBbMHgleF0sIEJhZCBESENQIGNvb2tpZSByZWNpZXZlZCwgYWJvcnRp
-bmcKAABDb3VsZCBubyBhbGxvY2F0ZSBwY2IhISBGcmVlaW5nIGZjZiAhISEKAAAAAAAAAAB2bl9w
-YXJzZSB1bmtub3duIHN1YmNvZGUgJXUKAAAAAHZuX3BhcnNlIHVua25vd24gZHR5cGUgJXUKAAAA
-AAAAaWdub3JpbmcgZmlwIHJlY3YgZm9yIHBjYiBmbG93OiV4IGluIG9mZmxpbmUgc3RhdGUKAAAA
-AAAAAAAAAAAAAGZpcF92bjJ2bl9yZWN2X2VyciAKAAAAAAAAAAAAAAAAQ291bGQgbm90IGFsbG9j
-YXRlIGZsb3djISEhIQoAAABDb3VsZCBub3QgYWxsb2NhdGUgU0NCIGZsb3djISEhIQoAAAAAAAAA
-AAAAAAAAAABDb3VsZCBub3QgZmluZCByaWdodCBzY2IgZm9yIGxvZ28KAAAAAAAAAAAAAAAAAABp
-Z25vcmluZyBmaXAgcmVjdiBmb3IgZmNmIGZsb3c6JXggaW4gb2ZmbGluZSBzdGF0ZQoAAAAAAAAA
-AAAAAAAAQ291bGQgbm90IGZpbmQgcmlnaHQgc2NiIGZvciBmbG9naQoAAAAAAAAAAAAAAAAAcG9y
-dCAweCV4LCBzdGF0ZSAweCV4LCByZXRyeSBub3Qgc3VwcG9ydGVkCgAAAAAARmxvZ2kgcmVzcCBy
-Y3Ygd2l0aCB1bmtub3duIHhjaGcgb3hfaWQleCBzaWQgJTJ4JTJ4JTJ4IGRpZCAlMnglMnglMngK
-AAAAAAAAAAAAAABOX1BPUlQgMHgleCV4JXggcmVqZWN0ZWQgUExPR0kgd2l0aCByZWFzb24gY29k
-ZSAleAoAAAAAAAAAAAAAAAAAQUJUUyB3aGlsZSBhd2FpdGluZyBQUkxJIFJzcDogZmxvd2NfaWQg
-MHgleCBveF9pZCAweCV4IHJ4X2lkIDB4JXggCgAAAAAAAAAAAAAAAABBQlRTIGZha2UgUnNwOiBs
-b2MgMHgleCBveF9pZCAweCV4IHJ4X2lkIDB4JXgKAABGQyBmY2IgYWxsb2MgZmFpbGVkOiBhdmFp
-bCAlZAoAAEZDIGZjYiBhbGxvYyB4aWQ6JWQgZmxvd2lkICVkCgAAbGxkcF9yeF9wa3RfaGFuZGxl
-clsldV0gZHJvcCBwcmUtaW5pdCAoY291bnQgPSAldSkKAAAAAAAAAAAAAAAAACV4JXgleCBSZWNp
-ZXZlZCBMT0dPIGZyb20gJXgleCV4IAoAAAAAAAAAAAAAAAAAAEZhaWxlZCB0byBwb3N0IHhjaGcg
-ZXJyOiBzc25pIDB4JXggY29va2llIDB4JWx4IHJ2YWwgJXggCgAAAAAAAAB0Y3BfcmVsZWFzZV90
-aWQ6IHRpZCBbMHgleF0sIGZsb3djIGZsYWdzIFsweCV4XSwgYnVmZmVyZWQgWzB4JXhdCgAAAAAA
-AAAAAAAAAAAAAHRjcF9yZWxlYXNlX3RpZDogc2l6ZW9mKHRjYl9mYy0+Zmxvd2NfaWNvbm4pIFsl
-dV0sIGJ5dGVzCgAAAAAAAABhY3Rfb3Blbl9ycGw6IGF0aWQgWzB4JXhdLCB0aWQgWzB4JXhdLCB0
-Y2JfZmMtPnsgaWQgWzB4JXhdLCBzdGF0ZSBbMHgleF0sIHR5cGUgWzB4JXhdIH0sIGNwbF9vcCBb
-MHgleF0sIHN0YXR1cyBbMHgleF0KAAAAAAAAAAAAAGFjdF9vcGVuX3JwbDogY3NrX2ZjLT57IGlk
-IFsweCV4XSwgc3RhdGUgWzB4JXhdLCBjc29ja19mbGFncyBbMHgleF0gfSAKAAAAAAAAAAAAYWN0
-X29wZW5fcnBsOiByZWN2ZCBuZWcgYWR2aWNlIFsweCV4XQoAAAAAAAAAAAAAc2VuZF9hYm9ydF9y
-cGw6IGNza19mYy0+Zmxvd2NfdHlwZSBbMHgleF0sIGNza19mYy0+Zmxvd2NfaWQgWzB4JXhdLCB0
-aWQgWzB4JXhdLCB1bHB0eGNoIFsldV0sIGJ1ZmZlcmVkIFsldV0KAAAAAHdyaF9vZmxkX3RjcF9j
-bG9zZV9jb25fcmVwbHk6IHRjYl9mYy0+Zmxvd2NfaWQgWzB4JXhdLCB0Y2JfZmMtPmZsb3djX3R5
-cGUgWzB4JXhdLCBsZW4xNiBbJXVdLCBsb2MgWyV1XQoAAAAAAAAAAAB3cmhfb2ZsZF90Y3BfY2xv
-c2VfY29uX3JlcGx5OiBycGwtPm9wX1RpZCBbMHgleF0sIHJwbD5zdGF0dXMgWzB4JXhdLCBycGwt
-PnNuZF9ueHQgWzB4JXhdLCBycGwtPnJjdl9ueHQgWzB4JXhdCgAAdGNwX2Fib3J0X3JwbF9yc3M6
-IHRpZCBbMHgleF0sIHN0YXR1cyBbMHgleF0KAAAAdGNwX2Fib3J0X3JlcV9yc3M6IHRpZCBbMHgl
-eF0sIHN0YXR1cyBbMHgleF0KAAAAb2ZsZF9hYm9ydF9yZXFfbmVnYWR2WyV1XTogd3IgMHglMDh4
-IGNwbF9hYm9ydF9yZXEgREVMSVZFUkVECgAAAGhvc3Rfd3JbJXVdOiB3ciAweCUwOHggY3BsX2Fi
-b3J0X3JlcSBzdGF0dXMgMHgleAoAAAAAAAAAAAAAAAAAAABwa3RzY2hlZF9jbF9ybFsldToldV06
-IG1vZGUgfCB1bml0IHwgcmF0ZSAweCUwNnggbWluICV1IG1heCAldSBwa3RzaXplICV1CgAAAAAA
-AHBhcmFtX2NobmV0WzB4JXg6MHgleF06IGNobmV0IDB4JXggcmVhZCAldSBwZiAldSByZXQgJWQK
-AAAAAAAAAABwYXJhbV9kbWFxWzB4JXg6MHgleF06IGRtYXEgMHgleCByZWFkICV1IHBmICV1IHJl
-dCAlZAoAAAAAAAAAAAAATUNbJXVdIGluaXRfc3RhdGVfbWFjaGluZSAweCUwMngKAAAAAAAAAAAA
-AAAAAAAATUMgaW5pdGlhbGl6YXRpb24gbm90IGNvbXBsZXRpbmcsIE1DIGN1cnJlbnQgaW5pdCBz
-dGF0ZSBpcyAweCUwMngKAAAAAAAAAAAAAAAAAABNQ1sldV0gX2h3X21jX2luaXRfbWMKAAAAAAAA
-AAAAAF9od19tY19pbml0X21jOiBlcnJvciwgcmV0ICVkCgAAX2h3X21jX2luaXRfbWNfZnBnYVsl
-dV06IGVycm9yICVkCgAAAAAAAAAAAAAAAAAAcGh5OiBmYWlsZWQgdG8gYWxsb2NhdGVkIG1lbW9y
-eSBmb3IgcGh5IGZ3IGZpbGUsIHJldCAlZAoAAAAAAAAAAGh3X2xlX2ZpbHRlcl9jdHVwbGU6IHR1
-cGxlICV1IG5vdCBzcGVjaWZpZWQgYnV0IHJlcXVpcmVkIGZvciBtYXNrIDB4JXgKAAAAAAAAAAAA
-bGUgY29uZmlndXJhdGlvbjogaGFzaCByZWdpb24gdG9vIGxhcmdlIHRvIGVuYWJsZSBzZXJ2ZXIg
-c3JhbQoAAGxlIGNvbmZpZ3VyYXRpb246IGNhbm5vdCBlbmFibGUgc2VydmVyIHNyYW0gd2hlbiBo
-YXNoIHJlZ2lvbiBpcyBkaXNhYmxlZAoAAAAAAAAAaHdfdHBfdGNwX3NldHRpbmdzX3c6IHRpbWVy
-X3JzICV1dXMgdGltZXN0YW1wX3JlcyAldXVzIGRlbGF5ZWRhY2tfcmVzICV1dXMKAAAAAABod190
-cF90Y3Bfc2V0dGluZ3NfdzogZGFja190aW1lciAldXVzIG1zbCAldXVzIHJ4dF9taW4sbWF4ICV1
-LCV1dXMgcGVyc19taW4sbWF4ICV1LCV1dXMKAAAAAAAAAABod190cF90Y3Bfc2V0dGluZ3Nfdzog
-a2VlcF9pZGxlLGludHZsICV1LCV1cyBtYXhydHQgJXV1cyBpbml0c3J0dCAldXVzIGZpbndhaXQy
-X3RpbWVyICV1dXMKAAAAAABod190cF90Y3Bfc2V0dGluZ3NfdzogY2FwcGluZyBkYWNrX3RpbWVy
-IGZyb20gJXUgdG8gJXUAAAAAAAAAAAAAaHdfdHBfdGNwX3NldHRpbmdzX3c6IGNhcHBpbmcgbXNs
-IGZyb20gJXUgdG8gJXUAaHdfdHBfdGNwX3NldHRpbmdzX3c6IGNhcHBpbmcgcnh0X21pbiBmcm9t
-ICV1IHRvICV1AAAAAAAAAAAAAAAAAGh3X3RwX3RjcF9zZXR0aW5nc193OiBjYXBwaW5nIHJ4dF9t
-YXggZnJvbSAldSB0byAldQAAAAAAAAAAAAAAAABod190cF90Y3Bfc2V0dGluZ3NfdzogY2FwcGlu
-ZyBwZXJzX21pbiBmcm9tICV1IHRvICV1AAAAAAAAAAAAAAAAaHdfdHBfdGNwX3NldHRpbmdzX3c6
-IGNhcHBpbmcgcGVyc19tYXggZnJvbSAldSB0byAldQAAAAAAAAAAAAAAAGh3X3RwX3RjcF9zZXR0
-aW5nc193OiBjYXBwaW5nIGtlZXBfaWRsZSBmcm9tICV1IHRvICV1AAAAAAAAAAAAAABod190cF90
-Y3Bfc2V0dGluZ3NfdzogY2FwcGluZyBrZWVwX2ludHZsIGZyb20gJXUgdG8gJXUAAAAAAAAAAAAA
-aHdfdHBfdGNwX3NldHRpbmdzX3c6IGNhcHBpbmcgaW5pdF9zcnR0X21heHJ0dCBmcm9tICV1IHRv
-ICV1AAAAAGh3X3RwX3RjcF9zZXR0aW5nc193OiBjYXBwaW5nIGluaXRfc3J0dF9pbml0c3J0dCBm
-cm9tICV1IHRvICV1AABod190cF90Y3Bfc2V0dGluZ3NfdzogY2FwcGluZyBmaW53YWl0Ml90aW1l
-ciBmcm9tICV1IHRvICV1AAAAAAAAbGUgY29uZmlndXJhdGlvbjogbmVudHJpZXMgJXUgcm91dGUg
-JXUgY2xpcCAldSBmaWx0ZXIgJXUgYWN0aXZlICV1IHNlcnZlciAldSBoYXNoICV1CgAAAAAAAAAA
-AAAAbGUgY29uZmlndXJhdGlvbjogbmVudHJpZXMgJXUgcm91dGUgJXUgY2xpcCAldSBmaWx0ZXIg
-JXUgc2VydmVyICV1IGFjdGl2ZSAldSBoYXNoICV1IG5zZXJ2ZXJzcmFtICV1CgAAAAAAAAAAAAAA
-AGh3X3NnZV9xdWV1ZV9iYXNlX21hcFsldV06IGV4Y2VlZGVkIG51bWJlciBvZiBlZ3Jlc3MgcXVl
-dWVzLCAldQoAAAAAAAAAAAAAAAAAAAAAaHdfc2dlX3F1ZXVlX2Jhc2VfbWFwWyV1XTogZXhjZWVk
-ZWQgbnVtYmVyIG9mIGluZ3Jlc3MgcXVldWVzIHdpdGggZnJlZWxpc3QgYW5kIGludGVycnVwdCwg
-JXUKAAAAaHdfc2dlX3F1ZXVlX2Jhc2VfbWFwWyV1XTogZXhjZWVkZWQgbnVtYmVyIG9mIGluZ3Jl
-c3MgcXVldWVzLCAldQoAAAAAAAAAAAAAAAAAAABza3UoMHgleCk6IGN1c3RvbSBza3UgNDBHX1NP
-IGRvZXMgbm90IHN1cHBvcnQgZXh0bWVtCgAAAAAAAAAAAAAAc2t1KDB4JXgpOiBjdXN0b20gc2t1
-IDEwRyBkb2VzIG5vdCBzdXBwb3J0IDQwRyBwb3J0cwoAAAAAAAAAAAAAAHNrdSgweCV4KTogY3Vz
-dG9tIHNrdSAxMEdfU08gZG9lcyBub3Qgc3VwcG9ydCA0MEcgcG9ydHMoJXUpIG9yIGV4dG1lbSgl
-dSkKAAAAAAAAc2t1OiBjdXN0b20gc2t1KDB4JXgpIDQwRyBwb3J0cygldSkgZXh0bWVtKCV1KSBz
-dXBwb3J0ZWQKAAAAAAAAAGNmX3BhcnNlOiBmaWxlIG1lbXR5cGUgMHgleCBtZW1hZGRyIDB4JXgg
-bWFwcGVkIEAgJXA6CgAAAAAAAAAAAABjb25maWd1cmVkIHdpdGggY2FwcyBuYm18bGluayAweCUw
-OHggc3dpdGNofG5pYyAweCUwOHggdG9lfHJkbWEgMHglMDh4IGlzY3NpfGZjb2UgMHglMDh4CgAA
-AAAAAABuZXQgVkkgYWxsb2NhdGlvbiBmYWlsZWQgZm9yIGZjX2lkICV1IHdpdGggZXJyb3IgJWQK
-AAAAAAAAAAAAAAAAbmV0IFZJIG1hYyBhZGRyZXNzIHByb2dyYW1taW5nIGZhaWxlZCBmb3IgZmNf
-aWQgJXUgd2l0aCBlcnJvciAlZAoAAAAAAAAAAAAAAAAAAABuZXQgVkkgcnhtb2RlIHByb2dyYW1t
-aW5nIGZhaWxlZCBmb3IgZmNfaWQgJXUgd2l0aCBlcnJvciAlZAoAAAAAbmV0IFZJIHJzcyBpbmRp
-cmVjdGlvbiB0YWJsZSBwcm9ncmFtbWluZyBmb3IgZmNfaWQgJXUgZmFpbGVkIHdpdGggZXJyb3Ig
-JWQKAAAAAABuZXQgVkkgcnNzIGNvbmZpZyBjb21tYW5kIGZhaWxlZCBmb3IgZmNfaWQgJXUgd2l0
-aCBlcnJvciAlZAoAAAAAbmV0IFZJIGNvbW1hbmQgZmFpbGVkIGZvciBmY19pZCAldSB3aXRoIGVy
-cm9yICVkCgAAAAAAAAAAAAAAAAAAAHByb2dyYW1tZWQgSFcgdGFnbSBbMHglMDh4XSwgSFcgcGdz
-eiBmYWN0b3IgWzB4JTA4eF0sIEZPaVNDU0kgdGFnbSBbMHglMDh4XSwgcnRhZ20gWzB4JTA4eF0s
-IG1heHN6X2JpdHMgWyV1XSwgc3pfYml0cyBbJXVdLgoAAAAAYmFzZSBbIDB4JTA4eF0sIGxsaW1p
-dCBbMHglMDh4XSwgdWxpbWl0IFsweCUwOHhdLCBzaXplIFsldV0sIG1heF90eHN6IFsldV0sIG1h
-eF9yeHN6IFsldV0sIGlvc2l6ZSBbJXVdCgAAAAAAAAAAAG5wcG9kcyBbJXVdLCBpZHhfbWFzayBb
-MHglMDh4XSwgaWR4X2ZpcnN0IFsldV0sIGlkeF9sYXN0IFsldV0sIHNjc2lfcGxkX3NpemUgWyV1
-XSwgQUxJR04oc2NzaV9wbGRfc2l6ZSwgMTYpIFsldV0sIHBwZF96b25lcyBbJXVdLgoAAAAAAAAA
-AAAAAAAAAGZvaXNjc2lfaW5pdDogaW5pdF9kb25lOiV1LCBmb2lzY3NpX250YXNrczoldSwgZm9p
-c2NzaV9uc2VzczoldSwgbmNzb2NrOiV1LCBuc3BvcnRzOiV1LCBmb2lzY3NpX25pbml0OiV1LCBy
-YzolZAoAAAAAAAAAAAAAAAAAAAAAY2hfY2xfcmF0ZVsldS8ldV06IGNhcHBlZCBjbGFzcyByYXRl
-IGZyb20gcmVxdWVzdGVkICV1IHRvIGNvbmZpZ3VyZWQgKGVmZmVjdGl2ZSkgY2hhbm5lbCByYXRl
-ICV1CgAAAAAAAAAAAAAAAAAAAGNoX2NsX3JhdGVbJXUvJXVdOiBpbmNyZWFzZWQgZGVmaWNpdF9p
-bmNyIGZyb20gcmVxdWVzdGVkICV1IHRvIHJlcXVpcmVkIG1pbiBvZiAldTsgcmF0ZSAldSAoZWZm
-ICV1KSBkZWZpY2l0X21heCAldQoAAAAAAAAAAAAAAAAAcGt0c2NoZWQgY2hhbm5lbCAldSBzZXRz
-IHNwZWVkIChmcm9tICV1KSB0byAldSBrYnBzCgAAAAAAAAAAAAAAAG5ldF9sMmRldl9ub3RpZnk6
-IGwyZGV2X2ZjLT5mbG93Y19pZCBbMHgleF0sIHBvcnQgWyVkXSwgZXZlbnQgWzB4JXhdLCB1bHB0
-eGNoIFsldV0sIGNsYXNzIFsweCV4XSwgdnByaW8gWzB4JXhdLCB2aWQgWzB4JXhdLCB2aV9yZWFk
-eSBbJXVdCgAAAAAAAG5ldF9sMmRldl9ub3RpZnk6IHBnaWQgWzB4JXhdLCBwcmlvIFsweCV4XSwg
-Y2ggWzB4JXhdCgAAAAAAAAAAAABmY29lIG5vdGlmeSA6IEZDb0UgTElOS1VQOiBwb3J0IDB4JXgs
-IGV2ZW50IDB4JXgKAAAAAAAAAAAAAAAAAAAAZmNvZSBub3RpZnkgOiBGQ29FIExJTktET1dOOiBw
-b3J0IDB4JXgsIGV2ZW50IDB4JXgKAAAAAAAAAAAAAAAAAGZjb2Ugbm90aWZ5IDogRENCWCA6IHBv
-cnQgMHgleCwgcHJpb3JpdHkgMHgleCB1bHB0eGNoIDB4JXggY2xhc3MgMHgleAoAAAAAAAAAAAAA
-WyV1XSB1bmFibGUgdG8gZXhlY3V0ZSBpbnRlcm5hbCBEQ0JfSUVFRV9DTUQKAAAAZGNieCB1cGRh
-dGVbJXVdIHNlbnQgdG8gZHJpdmVyICh0eXBlICUjeCBzdWJ0eXBlICUjeCBsb2NhdGlvbiAldSBm
-bG93Y2lkICV1KQoAAABwb3J0WyV1XSBwdHlwZSAldSBsYW5lICV1OiByeGNmZyA9ICUjeAoAAAAA
-AAAAAABwb3J0WyV1XSBwdHlwZSAldSBsYW5lICV1OiB0eGNmZyA9ICUjeAoAAAAAAAAAAABwb3J0
-WyV1XSBsaW5rIGRvd24gKCV1KSAobHN0YXR1cyAlI3gpCgAAAAAAAAAAAABod19pMmNfdHJhbnNh
-Y3Rpb246IG5kYXRhICV1IGFkZHJfb3AgMHgleCBkYXRhWzBdIDB4JXggZGlmZiAldQoAaHdfaTJj
-X3RyYW5zYWN0aW9uOiBuZGF0YSAldSBhZGRyX29wIDB4JXggZGF0YVswXSAweCV4IGRpZmYgJXUg
-ZHBvcyAldSBjb250ICV1IGZhaWxlZCB3aXRoIGVyciAlZAoAAAAAAAAAAAAAAAAAAGkyYyB0cmFu
-c2FjdGlvbiBmYWlsZWQgdG8gY29tcGxldGUKAAAAAAAAAAAAAAAAAGkyYyBlcnJvciBjYXVzZWQg
-YnkgbW9kdWxlIHVucGx1ZwoAAAAAAAAAAAAAAAAAAHNlbmR0byBwZW5kaW5nOiB3cl9wZW5kICVw
-IGZvciBwb3J0ICV1LCB3YW50IHRvIHNlbmQgdG8gcG9ydCAldQoAAAAAAAAAAAAAAAAAAAAAcG9y
-dFsldV0gdXBkYXRlIChmbG93Y2lkICV1IHJjICV1KQoAAAAAAAAAAAAAAAAAcG9ydF9zZXRfbG9v
-cGJhY2sgcG9ydCAlI3ggY3VycmVudCAlI3ggbW9kZSAlI3gKAAAAAAAAAAAAAAAAAAAAAHBvcnRb
-JXVdIHNwZWVkIHVwZGF0ZTogJSN4CgAAAAAAcG9ydFsldV0gYmVnaW5uaW5nIGRlYm91bmNlCgAA
-AABRU0ZQIG1vZHVsZSB1bnBsdWcgLSByZWluaXRpYWxpemluZyByeF9sb3MgIHRvIDB4ZmYKAAAA
-AAAAAAAAAAAAZ3Bpb19xc2ZwX21vZHVsZV91cGRhdGU6IGNoYW5nZWQgcnhfbG9zIGZyb20gMHgl
-eCB0byAweCV4CgAAAAAAAGdwaW9fcXNmcF9tb2R1bGVfdXBkYXRlOiBjaGFuZ2VkIHR4X2RpcyBm
-cm9tIDB4JXggdG8gMHgleAoAAAAAAABwb3J0X2xpbmtfc3RhdGVfaGFuZGxlclsldV0gcG93ZXJp
-bmcgZG93bgoAAAAAAABwb3J0X2xpbmtfc3RhdGVfaGFuZGxlclsldV0gcG93ZXJpbmcgdXAKAAAA
-AAAAAABwb3J0X2xpbmtfc3RhdGVfaGFuZGxlclsldV0gdW5rbm93biBzdGF0ZSAoc3RhdGUgPSAl
-I3gpCgAAAAAAAAAAcG9ydF9saW5rX3N0YXRlX2hhbmRsZXI6IFNvbWV0aGluZyB3ZW50IHRlcnJp
-Ymx5IHdyb25nLiByZXQgPSAlZAoAAAAAAAAAAAAAAAAAAABod19zZ2VfbWFtZW1faW5pdDogZW5j
-b3VudGVyZWQgZXJyb3IgJWQKAAAAAAAAAABsZSBpbml0aWFsaXphdGlvbjogbmVudHJpZXMgJXUg
-cm91dGUgJXUgY2xpcCAldSBmaWx0ZXIgJXUgYWN0aXZlICV1IHNlcnZlciAldSBoYXNoICV1CgAA
-AAAAAAAAAABsZSBpbml0aWFsaXphdGlvbjogbmVudHJpZXMgJXUgcm91dGUgJXUgY2xpcCAldSBm
-aWx0ZXIgJXUgc2VydmVyICV1IGFjdGl2ZSAldSBoYXNoICV1IG5zZXJ2ZXJzcmFtICV1CgAAAAAA
-AAAAAAAAaHdfdHBfaW5pdDogdGNiIHJlZ2lvbiAoc3RhcnQgMHglMDhzIHNpemUgJXUpIG11c3Qg
-YmUgaW4gZmlyc3QgMjU2TUIgb2YgTUEgbWVtb3J5CgAAAAAAAAAAAAAAAAAAaHdfdHBfaW5pdDog
-cGdtbmd0IHJlZ2lvbiAoc3RhcnQgMHglMDhzIHNpemUgJXUpIG11c3QgYmUgaW4gZmlyc3QgMjU2
-TUIgb2YgTUEgbWVtb3J5CgAAAAAAAAAAAAAAaHdfdHBfaW5pdDogVFAgcGdtbmd0IGluaXRpYWxp
-emF0aW9uIGRpZCBub3QgY29tcGxldGUKAAAAAAAAAAAAAGJ1Zm1faW5pdDogbiAldSBidWZsbDY0
-aW50X3NpemUgMHgleAoAAAAAAAAAAAAAAGJ1Zm1faW5pdDogbm90IGVub3VnaCBtZW1vcnkgdG8g
-YWxsb2NhdGUgaW50ZXJuYWwgYnVmbGw2NCBidWZmZXJzCgAAAAAAAAAAAAAAAAAAYnVmbV9pbml0
-OiBub3QgZW5vdWdoIG1lbW9yeSB0byBhbGxvY2F0ZSBidWZsbDY0IGJ1ZmZlcnMKAAAAAAAAAG1l
-bV9pbml0X2J1Zjogbm90IGVub3VnaCBtZW1vcnkgdG8gYWxsb2NhdGUgZmxvdyBidWZmZXJzCgAA
-AAAAAABtZW1faW5pdF9idWY6IG5vdCBlbm91Z2ggbWVtb3J5IHRvIGFsbG9jYXRlIHRjYl9jYWNo
-ZSAob2ZmZXJlZCAldSB0cnlpbmcgdG8gdXNlICV1IGF2YWlsYWJsZSAldSkKAAAAAAAAAAAAAAAA
-AAAAbXBhcnRpdGlvbl9vdGhlcnM6IHN0YXJ0IDB4JTA4eCBzaXplICV1ICh1bnVzZWQgJXUpCgAA
-AAAAAAAAAAAAAG1wYXJ0aXRpb25fb3RoZXJzOiBzdGFydCAweCUwOHggc2l6ZSAldSAodW51c2Vk
-ICV1KQoAAAAAAAAAAAAAAABtZW1faW5pdDogRURDIG92ZXJjb21taXR0ZWQgYnkgJWQgYnl0ZXMK
-AAAAAAAAAABtZW1faW5pdDogbm90IGVub3VnaCBtZW1vcnkgdG8gYWxsb2NhdGUgZmxvdyB0YWJs
-ZQoAAAAAAAAAAAAAAAAAY3hjbmljX2RldmljZV9pbml0OiBjeGNuaWMgWzB4JTB4XSwgY3hjbmlj
-LT5maWx0ZXIgWyUweF0KAAAAAAAAAHBvZmNvZSBpbml0IGRvbmUKAAAAAAAAAAAAAAAAAAAAUG9y
-dFsldV06IFVua25vd24gU0dNSUkgc3ViLXR5cGUgJSN4CgAAAAAAAAAAAAAAUG9ydFsldV06IFVu
-a25vd24gQlRfWEZJIHN1Yi10eXBlICUjeAoAAAAAAAAAAAAAcG9ydF9pbml0WyV1XTogcG9ydCB0
-eXBlIDB4JXggaXMgbm90IHN1cHBvcnRlZAoAbXBhcnRpdGlvbl9pbml0OiBtb3ZlZCBwbXJ4X3N0
-YXJ0IGZyb20gMHglMDh4IHRvIDB4JTA4eCB0byBtYWtlIHJvb20gZm9yIExFIEhBU0ggYW5kL29y
-IFRQIFRDQnMKAAAAAAAAAAAAAAAAAAAAAG1wYXJ0aXRpb25faW5pdDogbW92ZWQgcG1yeF9zdGFy
-dCBmcm9tIDB4JTA4eCB0byAweCUwOHggKEVEUkFNKQoAAAAAAAAAAAAAAAAAAAAARVEgcGZuICV1
-IHZmbiAldTogZGVzdHJveWluZyBlcWlkICV1IHdpdGggcGVuZGluZyBXUihzKSAobnVtX2J5dGVz
-ICV1IGFuZCBmbGFncyAweCUwOHgKAAAAAAAAAAAAbDJkZXZfZmMtPmZsb3djX2lkIFsldV0sIGwy
-ZGMtPnBmbiBbJXVdLCBsMmRjLT52Zm4gWyV1XSwgbDJkYy0+bHBvcnQgWyV1XSwgbDJkZXZfZmMt
-PmZsb3dpZCBbJXVdIGwyZGMtPnR4X2NoIFsldV0sIGRldi52cGQucG9ydHZlYyBbJXhdCgAAAAAA
-AAAAcG9ydHZlYyBbJXVdCgAAAGwyZGV2X3ZpX2ZzbTogbWIgWzB4JXhdLCBkZWZlcnJlZCwgc3Rh
-dGUgWzB4JXhdLCBwb3J0IFsweCV4XQoAAABsMmRldl92aV9mc206IHZpaWQgWzB4JXhdIHBvcnQg
-WzB4JXhdLCBtYWMtaWQgWyUwMng6JTAyeDolMDJ4OiUwMng6JTAyeDolMDJ4XS4gCgAAAAAAAAAA
-AAAAAAAAAABsMmRldl92aV9mc206IHNnZV9lcWlkIFsweCV4XSwgc2dlX2lxaWQgWzB4JXhdLCBz
-Z2VfZXFjciBbMHgleF0sIHJzc19zeiBbMHgleF0KAGwyZGV2X3ZpX2ZzbTogbDJkZXZfZmMtPmZs
-b3djX25ldF9sMmRldl9tdHUgWyV1XSwgbWJfc2NyYXRjaCBbMHgleF0sIHBvcnQgWzB4JXhdCgAA
-AAAAAAAAAAAAAAAAAGwyZGV2X3ZpX2ZzbTogdmlpZCBbJWRdLCB2aV9mYy0+Zmxvd2NfdmlfZmxh
-Z3MgWzB4JXhdCgAAAAAAAAAAAABsMmRldl92aV9mc206IHBmbiBbMHgleF0sIHZmbiBbMHgleF0s
-IGwyZGV2X2ZjLT5mbG93Y19pZCBbMHgleF0sIGxwb3J0IFsweCV4XSwgdmlpZCBbMHgleF0sIGZs
-YWdzIFsweCV4XQoAAAAAAAAAbDJkZXZfdmlfZnNtOiBFcnJvciBmcmVlaW5nIFZJLCByYyBbMHgl
-eF0KAAAAAAAAbDJkZXZfdmlfZnNtOiBwaWQgWzB4JXhdLCB2aWlkIFsweCV4XSwgbWJfbG9jIFsw
-eCV4XSwgbWJfb3JpZ1sweCV4XSwgbDJkZXZfZmxhZ3MgWzB4JXhdLCByYyBbMHgleF0KAAAAAAAA
-AAAAAAAAAEFoIGhhLi4uZG91YmxlIGZyZWUgb3hfaWQgMHgleCwgcnhfaWQgMHgleAoAAAAAAEhv
-c3QgUFJMSSBSZXNwb25zZSB0aW1lZG91dDogb3hfaWQgMHgleCByeF9pZCAweCV4CgAAAAAAAAAA
-AAAAAABGQ09FIEZyZWU6IHN0aWxsIHlpZWxkZWQgd2hlbiBmcmVlaW5nLi4uZmxvd2NfaWQgJXgg
-Zmxvd2NfZmxhZ3MgJXggCgAAAAAAAAAAAAAAAEZDIHhjaGcgZnJlZSB4aWQ6JWQgZmxvd2lkICVk
-CgAAcGZuICV1IHZmbiAldSB2aWEgY29tbWFuZAoAAAAAAABjb25maWd1cmF0aW9uIGZpbGUgcGFy
-c2VyOiBwbCB0aW1lb3V0IHZhbHVlIGlzIHRvbyBsYXJnZSwgY2hhbmdpbmcgZnJvbSAldSB0byAl
-dXVzZWNzCgAAAAAAAAAAAABQTF9QQ0lFX0xJTksuc3BlZWQgb2YgJXUgaXMgbm90IHN1cHBvcnRl
-ZApmaWxlLCByZXQgRldfRUlPCgAAAAAAc2NoZWRfaW9xdHhfYnBfcHJpb3JpdHk6IGhhcyAldSBl
-bnRyaWVzIG9ubHksIHJlcXVpcmVzICV1IGVudHJpZXMKAAAAAAAAAAAAAAAAAAB0cF9iYWNrb2Zm
-OiBwYXJzZWQgJWQgaW5zdGVhZCBvZiAldSBlbnRyaWVzCgAAAAB0cF90aW1lcnZhbHM6IHBhcnNl
-ZCAlZCBpbnN0ZWFkIG9mICV1IGVudHJpZXMKAAB0cF90aW1lcnJlczogcGFyc2VkICVkIGluc3Rl
-YWQgb2YgJXUgZW50cmllcwoAAAB0cF9tdHVzIGhhcyAldSBlbnRyaWVzIG9ubHksIHJlcXVpcmVz
-ICV1IGVudHJpZXMKAAAAAAAAAAAAAAAAAAAAdHBfbXR1c1sldV0gaXMgJXUgYnl0ZXMgd2hpY2gg
-aXMgbm90IHN1cHBvcnRlZAoAY29uZmlndXJhdGlvbiBmaWxlIHBhcnNlcjogc2dlIHRpbWVyIHZh
-bHVlWyVkXSBpcyB0b28gbGFyZ2UsIGNoYW5naW5nIGZyb20gJXUgdG8gJXV1c2VjcwoAAAAAAAAA
-ZmlsdGVybWFzayAweCV4IGlzIG5vdCBlcXVhbC9zdWJzZXQgdG8vb2YgZmlsdGVybW9kZQoAAAAA
-AAAAAAAAAGh3X2xlX2NsaXBfaGFuZGxlcjogcmVtb3ZlZCBwb3M9JXUgKD1pZHggJXUpCgAAAGh3
-X2xlX2NsaXBfaGFuZGxlcjogYWRkaW5nIHRvIHBvcz0ldSAoPWlkeCAldSkKAG1vZHVsZVsldV06
-IHBvcnQgbW9kdWxlIGluc2VydGVkIGFuZCByZWFkeQoAAAAAAG1vZHVsZVsldV06IHBvcnQgbW9k
-dWxlIHJlbW92ZWQKAAAAAAAAAAAAAAAAAAAAAG1vZHVsZVsldV06IHVua25vd24gbW9kdWxlIGlk
-ZW50aWZpZXIgMHglMDJ4CgAAAG1vZHVsZVsldV06IGdwaW8gJXUgdHJhbnMgMTBHIDB4JTAyeCAx
-RyAweCUwMnggKGxlbmd0aCAldSkgY2FibGUgMHglMDJ4IChsZW5ndGggJXUpIG1vZHVsZV90eXBl
-IDB4JTAyeAoAAAAAAAAAAABtb2R1bGVbJXVdOiBncGlvICV1IHRyYW5zIDEwRyAweCUwMnggMUcg
-MHglMDJ4IChsZW5ndGggJXUpIGNhYmxlIDB4JTAyeCAobGVuZ3RoICV1KSBtb2R1bGVfdHlwZSAw
-eCUwMngKAAAAAAAAAAAAY3JfbW9kdWxlX3J4X2xvc1sldV06IHJ4X2xvcyBjaGFuZ2VkIHRvICV1
-CgAAAAAATUM6IGV4cGVjdGVkIHN0YXRlIHRvIHN3aXRjaCB0byBDRkcuAAAAAAAAAAAAAAAATUM6
-IGV4cGVjdGVkIHN0YXRlIHRvIHN3aXRjaCB0byBBY2Nlc3MuAAAAAAAAAAAATUM6IGV4cGVjdGVk
-IHN0YXRlIHRvIHN3aXRjaCB0byBDRkcuAAAAAAAAAAAAAAAATUM6IGV4cGVjdGVkIHN0YXRlIHRv
-IHN3aXRjaCB0byBBY2Nlc3MuAAAAAAAAAAAASUkuMS5ieCBkcDE4WyV1XSBxWyV1XSAlI3ggJSN4
-ICUjeCAlI3ggbWluICUjeCBtYXggJSN4CgAAAAAAAAAAAElJLjEuYy1kLiAlI3ggJSN4ICUjeCAl
-I3ggYWxsICAlI3gKAAAAAAAAAAAAAAAAAElJLjIuYiAoJSN4IC0gJSN4ICsgJSN4KSAlIDEyOCA9
-ICUjeAoAAAAAAAAAAAAAAElJLjMgaW5ld18xZSBhZnRlciBsaW1pdCBjb21wdXRlIGl0ZW1wXzFl
-ICV4LCBpbmV3XzFlICV4CgAAAAAAAABJSS4zLiBpdGVtcF8xZSAlI3ggaW5ld18xZSAlI3ggaW5l
-d18xZSAlZAoAAAAAAABJSS40LiBzZXRfMWUgJSN4CgAAAAAAAAAAAAAAAAAAAE1DOiBjYWxpYnJh
-dGlvbiBmYWlsZWQgZm9yIGVycmF0YTI5IGRwMTggJXUKAAAAAElWLjEuIGRwMThbJXVdIHBoYXNl
-X3NlbCBiZWZvcmUgJSN4IGFmdGVyICUjeCwgZ2F0ZV9kZWxheSAlI3gKAABNQyBlcnJhdGEyOSBp
-c3N1ZTogZHAxOCAldSBxdWFkICV1IGNhbm5vdCBiZSBkZWNyZWFzZWQKAAAAAAAAAAAATUMgZXJy
-YXRhMjkgaXNzdWU6IGRwMTggJXUgcXVhZCAldSBjYW5ub3QgYmUgZGVjcmVhc2VkCgAAAAAAAAAA
-AE1DIGVycmF0YTI5IGlzc3VlOiBkcDE4ICV1IHF1YWQgJXUgY2Fubm90IGJlIGRlY3JlYXNlZAoA
-AAAAAAAAAABNQyBlcnJhdGEyOSBpc3N1ZTogZHAxOCAldSBxdWFkICV1IGNhbm5vdCBiZSBkZWNy
-ZWFzZWQKAAAAAAAAAAAAdGVtcDJfMWUrMHgxMCA9ICUjeAoAAAAAAAAAAAAAAABNQzogY2FsaWJy
-YXRpb24gZmFpbGVkIGZvciBlcnJhdGEyMSBpdGVyYXRpb24gJXUKAAAAAAAAAAAAAAAAAAAATUMg
-ZXJyYXRhIDIxOiBkcDE4WyV1XSBwcjAgbjAyIGZhaWxlZCB0byBnZXQgYXZlcmFnZQoAAAAAAAAA
-AAAAAE1DIGVycmF0YSAyMTogZHAxOFsldV0gcHIwIG4xMyBmYWlsZWQgdG8gZ2V0IGF2ZXJhZ2UK
-AAAAAAAAAAAAAABNQyBlcnJhdGEgMjE6IGRwMThbJXVdIHByMSBuMDIgZmFpbGVkIHRvIGdldCBh
-dmVyYWdlCgAAAAAAAAAAAAAATUMgZXJyYXRhIDIxOiBkcDE4WyV1XSBwcjEgbjEzIGZhaWxlZCB0
-byBnZXQgYXZlcmFnZQoAAAAAAAAAAAAAAE1DIGluaXRpYWxpemF0aW9uIGZhaWxlZDogREZJIGlu
-aXQgbm90IGdvaW5nIHRvIDAKAAAAAAAAAAAAAAAAAABNQyBpbml0aWFsaXphdGlvbiBmYWlsZWQ6
-IERGSSBpbml0IG5vdCBjb21wbGV0aW5nCgAAAAAAAAAAAAAAAAAATUMgaW5pdGlhbGl6YXRpb24g
-ZmFpbGVkOiBDYWxpYnJhdGlvbiBkaWRuJ3QgY29tcGxldGUuCgAAAAAAAAAAAERQMTggJXUsIGJ5
-dGVfbGFuZSAldSwgYml0X3NlbGVjdCAldQoAAAAAAAAAAAAAAERQMTggJXUsIGJ5dGVfbGFuZSAl
-dSwgYml0X3NlbGVjdCAldQoAAAAAAAAAAAAAAE1DIGZhaWxlZCB0byBnZXQgVVBDVEwgcG93ZXIg
-dXAgZG9uZQoAAAAAAAAAAAAAAE1DIGluaXRpYWxpemF0aW9uIGZhaWxlZDogRGlkbid0IGdldCBh
-bGwgRFAxOHMgbG9ja2VkCgAAAAAAAAAAAABNQyBpbml0aWFsaXphdGlvbiBmYWlsZWQ6IERpZG4n
-dCBnZXQgYm90aCBBRFJzIGxvY2tlZAoAAAAAAAAAAAAAQ3VycmVudCBTbGV3IHR4X3JvdyAlZDog
-dHhfY29sICVkLCB2YWwgJWQKAAAAAAAAQ3VycmVudCBTbGV3IGFkZHJfcm93ICVkOiBhZGRyX2Nv
-bCAlZCwgdmFsICVkCgAATUMgaW5pdGlhbGl6YXRpb24gZmFpbGVkOiBTTEVXX0RPTkVfU1RBVFVT
-IG5ldmVyIHRvZ2dsZWQAAAAAAAAAAGZscl9wZnZmX2ZzbVsldToldV06IHVua25vd24gc3RhdGUg
-JXUKAAAAAAAAAAAAAHBmbiAldSB2Zm4gJXUgaW4gZDNob3QsIGlnbm9yaW5nLCBkM2hvdCAweCUw
-OHggUENJRV9TVEFUIDB4JTA4eAoAAAAAAAAAAAAAAAAAAAAAaHcgcGYgYml0bWFwIDB4JTAyeCB2
-ZmlkIGJpdG1hcCAweCUwOHg6MHglMDh4OjB4JTA4eDoweCUwOHgKAAAAAGFmdGVyIHZmaWQgZml4
-dXAsIHZmaWQgYml0bWFwIDB4JTA4eDoweCUwOHg6MHglMDh4OjB4JTA4eAoAAAAAAABNQ1sldV06
-IGZhaWxlZCB0byBzd2l0Y2ggY29udHJvbGxlciB0byBDRkcgc3RhdGUKAAAAAAAAAAAAAAAAAAAA
-TUNbJXVdOiBmYWlsZWQgdG8gc3dpdGNoIGNvbnRyb2xsZXIgdG8gSU5JVF9NRU0gc3RhdGUKAAAA
-AAAAAAAAAE1DWyV1XTogZmFpbGVkIHRvIHN3aXRjaCBjb250cm9sbGVyIHRvIENGRyBzdGF0ZQoA
-AAAAAAAAAAAAAAAAAABNQ1sldV06IHBlcmlvZGljIGNhbGlicmF0aW9uIGZhaWxlZCB3aXRoIGVy
-cm9yICV1CgAAAAAAAAAAAAAAAAAAdGltZXIgcXVldWUgJXUgbG9zdCBhIHRpY2shIG5leHQgJXAg
-bGFzdCAlcCBudW1lICV1CgAAAAAAAAAAAAAAAGZscl90aW1lcl9zdGFydDogZmxvd2NfaWQgJXUg
-JXAgYnVmICVwCgAAAAAAAAAAAE1BQzogUExMcyBkaWRuJ3QgbG9jawoAAAAAAAAAAAAAcGNpZTog
-cmVhZCBmcm9tIHNlcmNmZyBwY2llX2lwX3VyX21heGZ1bmMgMHgleCBwZmJpdG1hcCAweCV4CgAA
-AHBjaWU6IG5wZiAldSAocGZiaXRtYXAgMHglMDJ4KSBudmYgJXUgKHBmIDAuLjcgMHglMDh4JTA4
-eCkgdmZzdHJpZGUgJXUKAAAAAAAAAAAAaHdfbWFjX3ByZXA6IGVycm9yLCByZXQgJWQKAAAAAABo
-d19ncGlvX3ByZXA6IGVycm9yLCByZXQgJWQKAAAAAE1DIENMSyBzZXR0aW5nIGZhaWxlZDogUExM
-X01fTE9DSyBuZXZlciB0b2dnbGVkCgAAAAAAAAAAAAAAAAAAAABmYWlsZWQgdG8gZmluZCB0aGUg
-JWMlYyBWUEQgcGFyYW1ldGVyCgAAAAAAAAAAAABmYWlsZWQgdG8gcGFyc2UgdGhlICVjJWMgVlBE
-IHBhcmFtZXRlcgoAAAAAAAAAAABtZW1fcHJlcDogZXJyb3IsIHJldCAlZAoAAAAAAAAAAGZhaWxl
-ZCB0byBzdWNjZXNzZnVsbHkgZmluZCBDaGVsc2lvIFZQRAoAAAAAAAAAAHZwZF9wcmVwOiBlcnJv
-ciwgcmV0ICVkCgAAAAAAAAAAc2VyY2ZnX3ByZXA6IGVycm9yLCByZXQgJWQKAAAAAABsb2cgaW5p
-dGlhbGl6ZWQgQCAweCUwOHggc2l6ZSAldSAoJXUgZW50cmllcykgZndyZXYgMHglMDh4IHBjaWVf
-ZncgMHglMDh4CgAAAAAAAGJvb3RzdHJhcCBmaXJtd2FyZSB0b29rICV1IG1zZWNzIHRvIHJ1bgoA
-AAAAAAAAAFBJIGVycm9yIGZsb3dpZF9sZW4xNiAweCV4LCBhcHBfdGFnIDB4JXgsIHJlZl90YWcg
-MHgleCwgcGlzYyAlMDR4ICUwNHggJTA0eCAlMDR4CgAAAAAAAAAAAAAAAAAAAGZsb3djICV1IChT
-R0UgZXFpZCAldSkgKEVUSENUUkwgcXVldWUpIGV4cGVyaWVuY2VkIGEgUENJIERNQSBSRUFEIHdv
-cmsgcmVxdWVzdCBlcnJvciAoaW5ib3VuZCBxdWV1ZSAldSkKAAAAAAAAAABmbG93YyAldSAoU0dF
-IGVxaWQgJXUpIGV4cGVyaWVuY2VkIGFuIHVuZXhwZWN0ZWQgUENJIERNQSBSRUFEIHdvcmsgcmVx
-dWVzdCBlcnJvciAoaW5ib3VuZCBxdWV1ZSAldSkKAAAAAAAAAAAAAAAAZmxvd2MgJXUgZXhwZXJp
-ZW5jZWQgYW4gdW5leHBlY3RlZCBQQ0kgRE1BIFJFQUQgZXJyb3IgKGluYm91bmQgcXVldWUgJXUp
-CgAAAAAAAABnYXRoZXJfdGFza3NfZm9yX3RtZjogaWR4IFsweCV4XSwgdGFzay1pZCBbMHgleF0s
-IGNtZC1pZCBbMHgleF0sIGFjdGl2ZSB0YXNrcyBbMHgleF0uIGNvbm4taWQgWzB4JXhdLCBjbWQg
-Y29ubi1pZCBbMHgleF0sIHRhc2sgY29ubi1pZCBbMHgleF0KAABnYXRoZXJfdGFza3NfZm9yX3Rt
-ZjogSW52YWxpZCB0eXBlIFsweCV4XSwgYmFpbGluZyBvdXQuCgAAAAAAAAAAZ2F0aGVyX3Rhc2tz
-X2Zvcl90bWY6IHRhc2sgaWQgWzB4JXhdLCBzdGF0ZSBbMHgleF0sIGxpZHggWzB4JXhdLCBjb29r
-aWUgaGkgWzB4JTA4eF0gOiBsbyBbMHglMDh4XQoAAAAAAAAAAAAAAAAAAGdhdGhlcl90YXNrc19m
-b3JfdG1mOiByYyBbMHgleF0sIFsweCV4XSB0YXNrIGdhdGhlcmVkIGZvciB0bWYgdHlwZSBbMHgl
-eF0gcHJvY2Vzc2luZy4KAAAAAAAAAAAAAHNjc2lfZGF0YV9vdXQ6IGNvbm5fZmMgWzB4JXhdLCBz
-dGF0ZSBbMHgleF0sIHNlc3NfZmMgWzB4JXhdIGluIHJlY292ZXJ5LiBTa2lwcGluZyBpc3Rhc2tf
-ZmMgWzB4JXhdIGZyb20gVFguCgAAAABzZW5kX21zZ19wbGQ6IGZjIHsgaWQgWzB4JXhdLCBmbGFn
-cyBbMHgleF0sIGJ1ZmZlcmVkIFsldV0uIH0KAAAAc2VuZF9tc2dfcGxkOiBzZXNzIHsgaWQgWzB4
-JXhdIH0sIHVscHR4Y2ggWyV1XSBubyBjcmVkaXRzIGF2YWlsYWJsZSwgcmVzY2hlZHVsaW5nIHJl
-cXVlc3QuCgAAAAAAc2VuZF9hYm9ydF9yZXE6IGNza19mYy0+Zmxvd2NfdHlwZSBbMHgleF0sIGNz
-a19mYy0+Zmxvd2NfaWQgWzB4JXhdLCB0aWQgWzB4JXhdLCB1bHB0eGNoIFsldV0sIGJ1ZmZlcmVk
-IFsldV0KAAAAAGh3IHJlZ2lzdGVyIG9wZXJhdGlvbiBub3QgY29tcGxldGluZywgcmVnIDB4JTA4
-eCBtYXNrIDB4JTA4eCB2YWx1ZSAweCUwOHggKHJlZyAweCUwOHgpCgAAAAAAAAAAAE1ESU8gQ0w0
-NTogZmFpbGVkIHRvIHNldCB1cCBNTUQgYWRkcgoAAAAAAAAAAAAAAE1ESU86IGZhaWxlZCB0byBy
-ZWFkCgAAAAAAAAAAAAAAaHdfYmNtODQ4NTZfY2hlY2sgZW50cnkKAAAAAAAAAABod19iY204NDg1
-Nl9jaGVjayBsb29wICV1IChjaGVjayAlI3gpCgAAAAAAAAAAAABod19iY204NDg1Nl9jaGVjayB1
-cF9ydW5uaW5nIChsb29wX2NudD0ldSkKAAAAAABod19iY204NDg1Nl9jaGVjayBmYWlsZWQgKGJh
-ZCBDUkMpCgAAAAAAAAAAAAAAAABQSFkgZmlybXdhcmUgbG9hZCBzdWNjZXNzZnVsISAod293Li4u
-KQoAAAAAAAAAAABNRElPIENMNDU6IGZhaWxlZCB0byBzZXQgdXAgTU1EIGFkZHIKAAAAAAAAAAAA
-AABNRElPOiBmYWlsZWQgdG8gd3JpdGUKAAAAAAAAAAAAAG1paV9hZHZfZmNbJXVdOiByY2FwcyAw
-eCV4CgAAAAAAbWlpX2Fkdl9zcGVlZFsldV06IHJjYXBzIDB4JXgKAABuZXRpZl9zZXRfbWFjOiBs
-MmRldl9mYy0+Zmxvd2NfbmV0X2wyZGV2X21icyBbMHgleF0KAAAAAAAAAAAAAAAAcmVtb3Zpbmcg
-bWFjCgAAAG5vZGUtPmdycCBbJTA0eCAlMDR4ICUwNHggJTA0eF0sIG5vZGVfaWQgJXUsIHJlZl9j
-bnQgJXUKAAAAAAAAAABEQUQgZm9yIGFkZHIgWyUwNHggJTA0eCAlMDR4ICUwNHhdCgAAAAAAAAAA
-AAAAAABjcGxfdHhfcGt0OiB2bGFuaWQgWzB4JXhdCgAAAAAAAGNwbF90eF9wa3Q6IHZsYW5pZCBb
-MHgleF0KAAAAAAAAZmxvd2NfaWQgWyV1XSBsMmRldl9mYyBbMHgleF0gYWxyZWFkeSByZWNlaXZl
-ZCBSQSwgbm90IHNlbmRpbmcgUlMKAAAAAAAAAAAAAAAAAABmbG93Y2lkIFsldV0gbDJkZXZfZmMg
-WzB4JXhdIE5vIElQdjYgcm91dGVyCgAAAABzZW5kX2Nsb3NlX3JlcTogY3NrX2ZjLT5mbG93Y190
-eXBlIFsweCV4XSwgY3NrX2ZjLT5mbG93Y19pZCBbMHgleF0sIGNza19mYy0+dGNiX3N0YXRlIFsw
-eCV4XQoAAABzZW5kX2Nsb3NlX3JlcTogY3NrX2ZjLT5mbG93Y190eXBlIFsweCV4XSwgY3NrX2Zj
-LT5mbG93Y19pZCBbMHgleF0sIHRpZCBbMHgleF0sIHVscHR4Y2ggWyV1XSxidWZmZXJlZCBbJXVd
-CgAAAAAAb2ZsZF90Y3BfZG9fYWN0aXZlX2Nsb3NlOiBjc2tfZmMgWzB4JXhdLCBjc2tfZmMtPmZs
-b3djX2lkIFsweCV4XSwgY3NrX2ZjLT50Y2Jfc3RhdGUgWzB4JXhdCgAAAAAAb2ZsZF90Y3BfZG9f
-YWN0aXZlX2Nsb3NlOiBjc2tfZmMgWzB4JXhdLCBjc2tfZmMtPmZsb3djX2lkIFsweCV4XSwgY3Nr
-X2ZjLT50Y2Jfc3RhdGUgWzB4JXhdCgAAAAAAb2ZsZF90Y3BfZGlzY29ubmVjdDogdGNiX2ZjLT5m
-bG93Y19pZCBbMHgleF0sIGNza19mYy0+Zmxvd2NfaWQgWzB4JXhdLCBjc2stPnRjYl9zdGF0ZSBb
-MHgleF0KAAAAZGVjb2RlX2Jhc2U2NF9zdHJpbmc6IGRsZW4gWyVkXQoAAAAAAAAAAAAAAAAAAAAA
-ZGVjb2RlX2hleF9zdHJpbmc6IGRsZW4gWyVkXQoAAABmb2lzY3NpX3ZhbGlkYXRlX2xvZ2luX3N0
-YWdlOiAtIDEKAAAAAAAAAAAAAAAAAABhc3luY19wZHU6IGxvZ291dCByZXF1ZXN0ZWQgYmxvY2tp
-bmcgc2Vzc2lvbgoAAABhc3luY19wZHU6IHNlc3MvY29ubiBkcm9wIHJlcXVlc3RlZCBibG9ja2lu
-ZyBzZXNzaW9uCgAAAAAAAAAAAAAAY3BsX3R4X3BrdDogdmxhbmlkIFsweCV4XQoAAAAAAAByZWlu
-aXQgbGluay1sb2NhbCBhZGRyZXNzCgAAAAAAAG5ldF9sMmRldl9maW5kX2J5X2FkZHI6IGwyZGV2
-X2ZjLT5mbG93Y19pZCBbMHgleF0sIGwyZGMtPmxwb3J0IFsldV0sIGwyZF9mYy0+Zmxvd2NfaWQg
-WzB4JXhdLCBsMmRjLT5pbjRfZGV2LmluX2FkZHIuYWRkciBbMHgleF0sIGFkZHIgWzB4JXhdCgAA
-AG5ldF9sMmRldl9tdHVfY29uZmlnOiBsMmRldl9mYy0+Zmxvd2NfaWQgWzB4JXhdLCBtdHUgJXUK
-AAAAAAAAAABuZXRpZl9kb19kaGNwOiB3ci0+cGFyYW0udmxhbmlkIFsldV0sIGwyZGV2X2ZjLT5m
-bG93Y19uZXRfbDJkZXZfdmxhbmRldiBbMHgleF0KAGNwbF90eF9wa3Q6IHZsYW5pZCBbMHgleF0K
-AAAAAAAAZW5jb2RlIGhleCBzdHJpbmc6IGRsZW4gWyVkXQoAAABjaG5ldF9maW5kX2wydF9lbnRy
-eTogZGFkZHIgWyUwOHhdLCBbMHglMDh4XSwgbG9jYWwgbmV0d29yayBbJWRdCgAAAAAAAAAAAAAA
-AAAAAGwydGVudCBbJTB4XSwgbDJ0ZW50LT5pZHggWyVkXQoAdGNwX3NlbmRfYW9wZW5fcmVxOiBj
-c2tfZmMtPmZsb3djX2lkIFsweCV4XSwgY3NrX2ZjLT5mbG93Y19zdGF0ZSBbMHgleF0sIGJ1ZmZl
-cmVkIFsldV0sIHJlc19jbnQgWzB4JXhdLCBpcV9pZHggWzB4JXhdCgAAAAAAAAAAAAB0Y3Bfc2Vu
-ZF9hb3Blbl9yZXE6IGNza19mYy0+Zmxvd2NfaWQgWzB4JXhdLCBjc2tfZmMtPmZsb3djX3N0YXRl
-IFsweCV4XSwgbm8gdmFsaWQgbDJ0X2VudHkuIERlbGF5aW5nIGFub3RoZXIgcmV0cnkgZm9yIDEg
-c2Vjb25kcy4KAAAAAAAAAAAAAAAAAABhb3Blbl9yZXE6IGh3X2xlX2ZpbHRlcl9jdHVwbGUgZmFp
-bGVkCgAAAAAAAAAAAABvZmxkX3RjcF9zZW5kX2FvcGVuX3JlcTogY3BsX3JlcS0+RmlsdGVyX2hp
-IFsweCUweF0sIGNwbF9yZXEtPkZpbHRlcl9sb19GQ29FTWFzayBbMHglMHhdLCBjdHVwbGVzWzBd
-IFsweCV4XSwgY3R1cGxlc1sxXSBbMHgleF0KAGxhZGRyX3JldDogbDJkYy5hZGRyIDoweCV4LCBz
-cmNfYWRkcjoweCV4CgAAAAAAAGl0dF90b190YXNrX2lkeDogdGFnIFsweCUwOHhdLCBoaSBbJXVd
-LCBsbyBbJXVdLCBubWFza2JpdHMgWyV1XSwgdGFza19pZHggWyV1XQoAV0FUQ0hET0c6IE5vIHRl
-bXBlcmF0dXJlIHNlbnNvciBhdmFpbGFibGUuCgAAAAAAV0FUQ0hET0c6IEFjdGl2YXRpbmcKAAAA
-AAAAAAAAAABXQVRDSERPRyAtIEVuYWJsZSBhY3Rpb24gJXUgdGltZSAldQoAAAAAAAAAAAAAAABX
-QVRDSERPRyAtIERpc2FibGUgYWN0aW9uICV1CgAAAFdBVENIRE9HOiBEZS1hY3RpdmF0aW5nCgAA
-AAAAAAAAcG9ydFsldV0gc2V0IFBBVVNFIFBBUkFNUzogcHBwZW4gJXUgdHhwZSAlI3ggcnhwZSAl
-I3gKAAAAAAAAAAAAAG1wc19saW5rX3VwWyV1XSBhY2FwcyAlI3ggKDgwMi4zICUjeCkgKyBscGFj
-YXBzICUjeCA9PiAlI3gKAAAAAABpcHY2X2hhbmRsZV9saW5rX2Rvd24gZmxvd2NfaWQgMHgleAoA
-AAAAAAAAAAAAAABpcHY2X2hhbmRsZV9saW5rX3VwIGZsb3djX2lkIDB4JXgKAAAAAAAAAAAAAAAA
-AABmb2lzY3NpIGNvbm5fZmMgWzB4JXhdLCBmbG93Y19zY2hlZGNsIFsweCV4XSwgaW5nX2NoIFsw
-eCV4XSwgZWdyX2NoIFsweCV4XQoAAAAAAGwyZGV2X25vdGlmeSB3aXRoIHVua25vd24gZmxhZyBb
-MHgleF0KAAAAAAAAAAAAAEZDb0UgRkNCIGxpbmtkb3duOiBpb19yZXEgMHgleCV4IGlxaWQgMHgl
-eCBmbG93aWQgMHgleCBvcCAweCV4CgBjYW5jZWwgZmNiOiV4IHNjYjoleCBzdGF0ZToleAoAAFJE
-RVYgbXNnIGZsb3djOiV4IHN0YXRlIDB4JXggZXZlbnQgMHgleAoAAAAAAAAAAHZuMnZuOiBwb3J0
-IDB4JXggZGlkOjB4JXgleCV4IFVQCgAAAAAAAAAAAAAAAAAAAHZuMnZuOiBwb3J0IDB4JXggZGlk
-OjB4JXgleCV4IERPV04KAAAAAAAAAAAAAAAAAGZjX3NlbmRfYWxsb2NfY3BsOiBmYWlsZWQgdG8g
-c2V0dXAgZmlsdGVyIGN0dXBsZQoAAAAAAAAAAAAAAAAAAABmY29lX2NvbXB1dGVfY3R1cGxlIDB4
-JXg6JXgKAAAAAGNvbXB1dGVfY3R1cGxlKCk6IGZhaWxlZCB0byBzZXR1cCBmaWx0ZXIgY3R1cGxl
-CgAAAAAAAAAAAAAAAAAAAABmY29lX2NvbXB1dGVfY3R1cGxlIHZsYW4gJXggdmlpZCAleCBwb3J0
-ICV4IG1wc19pZHggJXgKAAAAAAAAAAAAY2hfY2xfcmF0ZVsldS8ldV06IGNhcHBlZCBkZWZpY2l0
-X2luY3IgZnJvbSByZXF1aXJlZCAldSB0byAldTsgcmF0ZSAldSAoZWZmICV1KSBkZWZpY2l0X21h
-eCAldQoARENCWDogc3VtIG9mIHJhdGVzIG9uIGFsbCBjbGFzc2VzIG11c3QgYmUgMTAwIChhY3R1
-YWw6ICV1KQoAAAAAAGZjX3NlbmRfYWxsb2NfY3BsOiBmYWlsZWQgdG8gc2V0dXAgZmlsdGVyIGN0
-dXBsZQoAAAAAAAAAAAAAAAAAAABmY29lX2NvbXB1dGVfY3R1cGxlIDB4JXg6JXgKAAAAAGNvbXB1
-dGVfY3R1cGxlKCk6IGZhaWxlZCB0byBzZXR1cCBmaWx0ZXIgY3R1cGxlCgAAAAAAAAAAAAAAAAAA
-AABGQ29FIEZDRiB0aW1lcjogZmxvd2Mgc3RhdGUgMHgleCwgcG9ydCAweCV4ICxmY2YgMHgleCwg
-Zmxvd2NfaWQgMHgleAoAAAAAAAAAAAAAAHJpX3dyX2luaXRbJXVdOiBtc3MgJXUgaXMgbm90IDgt
-Ynl0ZSBhbGlnbmVkCgAAAGNvcmVfcHJvZ3JhbV90Y2I6IHRpZCAlI3ggdF9zdGF0ZSAlI3ggcmN2
-X2FkdiAweCUwOHggcmN2X3NjYWxlICUjeCB0eF9tYXggJSN4IHJjdl9ueHQgJSN4IGF0aWQgJSN4
-CgAAAAAAAAAAAAAAAAAJb3B0MCAlI3gleCBvcHQyICUjeCBpcHY2ICUjeCBmbGFnc190aW1lciAw
-eCUwOHgKAAAAAAAAAAAAAAAAAAAAb2ZsZF9jb25uZWN0aW9uX3dyOiBjb25uZWN0aW9uIHdpdGgg
-NS10dXBsZSBscCAweCUwNHggZnAgMHglMDR4IGxpcCAweCUwOHglMDh4IHBpcCAweCUwOHglMDh4
-IGZpbHRlciAweCUwOHggZXhpc3RzIEAgTEUgaW5kZXggJXUKAAAAAAAAAAAAAAAAAAAAb2ZsZF9j
-b25uZWN0aW9uX3dyOiBjb25uZWN0aW9uIHdpdGggNS10dXBsZSBscCAweCUwNHggZnAgMHglMDR4
-IGxpcCAweCUwOHggcGlwIDB4JTA4eCBmaWx0ZXIgMHglMDh4IGV4aXN0cyBAIExFIGluZGV4ICV1
-CgAAAAAAAABvZmxkX2Nvbm5lY3Rpb25fd3I6IGNvbm5lY3Rpb24gd2l0aCA1LXR1cGxlIGxwIDB4
-JTA0eCBmcCAweCUwNHggbGlwIDB4JTA4eCUwOHggcGlwIDB4JTA4eCUwOHggZmlsdGVyIDB4JTA4
-eAoAAAAAb2ZsZF9jb25uZWN0aW9uX3dyOiBjb25uZWN0aW9uIHdpdGggNS10dXBsZSBscCAweCUw
-NHggZnAgMHglMDR4IGxpcCAweCUwOHggcGlwIDB4JTA4eCBmaWx0ZXIgMHglMDh4CgAAAAAAAAAA
-AAAAAElRRkxJTlQgcGZuICV1IHZmbiAldTogaXFpZCAldSB0b28gbGFyZ2UgKG1heCAldSkKAAAA
-AAAAAAAAAAAAAABJUUZMSU5UIHBmbiAldSB2Zm4gJXU6IGlxaWQgJXUgbm90IGFsbG9jYXRlZAoA
-AABJUUZMSU5UIHBmbiAldSB2Zm4gJXU6IGZsMGlkICV1IHRvbyBsYXJnZSAobWF4ICV1KQoAAAAA
-AAAAAAAAAAAASVFGTElOVCBwZm4gJXUgdmZuICV1OiBmbDBpZCAldSBub3QgYWxsb2NhdGVkCgAA
-SVFGTElOVCBwZm4gJXUgdmZuICV1OiBmbDFpZCAldSB0b28gbGFyZ2UgKG1heCAldSkKAAAAAAAA
-AAAAAAAAAElRRkxJTlQgcGZuICV1IHZmbiAldTogZmwxaWQgJXUgbm90IGFsbG9jYXRlZAoAAElR
-RkxJTlQgcGZuICV1IHZmbiAldTogZmwxaWQgJXUgaXMgdmFsaWQgYnV0IG5vdCBmbDBpZCAldQoA
-AAAAAABJUUZMSU5UIHBmbiAldSB2Zm4gJXU6IGZsMWlkICV1IGlzIHZhbGlkIGJ1dCBoZWFkZXIg
-c3BsaXQgZmVhdHVyZSBpcyBub3QgZW5hYmxlZAoAAAAAAAAAAAAAAAAAAABod191bHB0eF93b3Jr
-YXJvdW5kX3ByMTY5NDlfZW5hYmxlZF9wZjogcGYgJXUgZW5hYmxlZCAldQoAAAAAAAAAaHdfdWxw
-dHhfd29ya2Fyb3VuZF9wcjE2OTQ5X2VuYWJsZWRfdmZpZDogdmZpZCAldSBlbmFibGVkICV1CgAA
-AEVRIHBmbiAldSB2Zm4gJXU6IGNyZWF0aW5nIEVUSCBlcWlkICV1IHdpdGggcGVuZGluZyBXUihz
-KSAobnVtX2J5dGVzICV1IGFuZCBmbGFncyAweCUwOHgKAAAAAAAAAEVRIHBmbiAldSB2Zm4gJXU6
-IGNyZWF0aW5nIENUUkwgZXFpZCAldSB3aXRoIHBlbmRpbmcgV1IocykgKG51bV9ieXRlcyAldSBh
-bmQgZmxhZ3MgMHglMDh4CgAAAAAAAEVRIHBmbiAldSB2Zm4gJXU6IGVxaWQgJXUgdG9vIGxhcmdl
-IChtYXggJXUpCgAAAEVRIHBmbiAldSB2Zm4gJXU6IGVxaWQgJXUgbm90IGFsbG9jYXRlZAoAAAAA
-AAAAAGRjYnhfcG9wdWxhdGVfY3RybCBjb2RlIGluY29tcGxldGUKAAAAAAAAAAAAAAAAAHZpX3Rj
-YW1fcmF3IGlkeCAldSBtYWMgMHglMDR4ICUwOHgKAAAAAAAAAAAAAAAAAHBvcnRfYmxpbmtfbGVk
-X3Jlc3RvcmUKAAAAAAAAAAAAcG9ydF9ibGluazogYmxpbmtkdXI9MHgleCBibGlua19yZWZjbnQK
-AAAAAAAAAAAAcG9ydF9ibGluazogCWJsaW5rX3JlZmNudD0weCV4CgBwb3J0X2JsaW5rOiAJYmxp
-bmtfcmVmY250PTB4JXgKAG1paV9hbnJlc3RhcnRbJXVdOiBhY2FwcyAweCV4CgAAcG9ydF9jbWRf
-aGFuZGxlcjogdW5rbm93biB1LmRjYi50eXBlIDB4JXgKAAAAAAAAcG9ydFsldToweCUwMng6MHgl
-MDJ4XTogbDFjZmcsIGludmFsaWQgcmVxdWVzdCwgcGNhcHMgMHgleCBhY2FwcyAweCV4IHJjYXBz
-IDB4JXgKAAAAAAAAAAAAAAAAAAAAcG9ydFsldToweCUwMng6MHglMDJ4XTogbDFjZmcsIHBjYXBz
-ICUjeCBhY2FwcyAlI3ggcmNhcHMgJSN4IG1jYXBzICUjeAoAAAAAAAAAAABwb3J0WyV1OjB4JTAy
-eDoweCUwMnhdOiBsMWNmZywgbWRpIGlzc3VlIHBjYXBzIDB4JXggYWNhcHMgMHgleCByY2FwcyAw
-eCV4CgAAAAAAAHBvcnRbJXU6MHglMDJ4OjB4JTAyeF06IGwxY2ZnLCBjYW5ub3QgZm9yY2Ugbm8v
-bXVsdGlwbGUgc3BlZWQocyksIHBjYXBzIDB4JXggYWNhcHMgMHgleCByY2FwcyAweCV4CgAAAAAA
-AAAAAAAAAABldGhfZmxvd2NfaGFuZGxlclsweCV4XTogZmxhZ3MgMHglMDh4IG51bV9ieXRlcyAl
-dSBzY2hlZGNsIDB4JXggLT4gMHgleAoAAAAAAAAAAHRhc2tfaWR4X3RvX2l0dDogdGFza19pZHgg
-WyV1XSwgaGkgWyV1XSwgbG8gWyV1XSwgbm1hc2tiaXRzIFsldV0sIHN3X3RhZyBbMHglMDh4XSwg
-cHBvZF9pZHggWyVkXQoAAAAAAAAAAAAAAAAAAABzY3NpX2NtZDogcmVjZWl2ZWQgVE1GIG9wIFsw
-eCV4XSBmdW5jIFsweCV4XSBvbiBjb25uIFsweCV4XSB0aHJvdWdoIGNvbW1hbmQgcGF0aC4KAAAA
-AAAAAAAAAAAAAABzY3NpX2NtZDogY29ubl9mYyBbMHgleF0sIHN0YXRlIFsweCV4XSwgc2Vzc19m
-YyBbMHgleF0gaW4gcmVjb3ZlcnkuIFNraXBwaW5nIGlzdGFza19mYyBbMHgleF0gZnJvbSBUWC4K
-AAAAAAAAAAAAc2NzaV9yZWFkOiBjb25uX2ZjIFsweCV4XSwgc3RhdGUgWzB4JXhdLCBzZXNzX2Zj
-IFsweCV4XSBpbiByZWNvdmVyeS4gU2tpcHBpbmcgaXN0YXNrX2ZjIFsweCV4XSBmcm9tIFRYLgoA
-AAAAAAAAAHNjc2lfd3JpdGU6IGNvbm5fZmMgWzB4JXhdLCBzdGF0ZSBbMHgleF0sIHNlc3NfZmMg
-WzB4JXhdIGluIHJlY292ZXJ5LiBTa2lwcGluZyBpc3Rhc2tfZmMgWzB4JXhdIGZyb20gVFguCgAA
-AAAAAABkY2J4X2NvbnRyb2xfc21bJXVdIENPTlRST0xfTElOS1VQCgAAAAAAAAAAAAAAAABkY2J4
-X2NvbnRyb2xfc21bJXVdIENPTlRST0xfVVBEQVRFX0RDQlhfVExWCgAAAABkY2J4X2NvbnRyb2xf
-c21bJXVdIENPTlRST0xfUEVFUl9OT1RfQURWRVJUSVNFX0RDQlgKAAAAAAAAAAAAAAAAZGNieF9j
-b250cm9sX3NtWyV1XSBDT05UUk9MX1VQREFURV9PUEVSX1ZFUlNJT04KAAAAAAAAAAAAAAAAAAAA
-AGRjYnhfY29udHJvbF9zbVsldV0gQ09OVFJPTF9QUk9DRVNTX1BFRVJfVExWCgAAAGRjYnhfY29u
-dHJvbF9zbVsldV0gQ09OVFJPTF9BQ0tfUEVFUgoAAAAAAAAAAAAAAGRjYnhfaWVlZV92YWxpZGF0
-ZVsldV0gZXJyb3IgKG91aSAlI3ggc3VidHlwZSAlI3ggbGVuICUjeCkKAAAAAABkY2J4X2NlZV92
-YWxpZGF0ZVsldV0gZXJyb3IKAAAAAGNobmV0X2wydF91cGRhdGU6IGwyZGV2X2ZjIFsweCV4XSwg
-bDJkZXZfZmMtPmZsb3djX2lkIFsldV0gbDJkZXZfZmMtPmZsb3djX2ZsYWdzIFsweCV4XSwgaW50
-ZiBbMHgleF0KAAAAAAAAAAAAAABjaG5ldF9sMnRfdXBkYXRlOiBsMmRldl9mYy0+Zmxvd2NfaWQg
-WyV1XSBhbHJlYWR5IHNjaGVkdWxlZAoAAAAAY2huZXRfbDJ0X3VwZGF0ZTogaW4gZGVsYXllZF9w
-cm9jZXNzaW5nLCBsMnRlbnQgWyUwOHhdCgAAAAAAAAAAAERIQ1B2NiBSRVBMWSByZWNlaXZlZCBz
-dGF0ZSAldQoAZGhjcCByZXBseSByZWNlaXZlZCBpbiB3cm9uZyBzdGF0ZSAlZAoAAAAAAAAAAAAA
-dW5rbm93biBzZXJ2ZXJpZC4gSWdub3JpbmcgZGhjcCByZXBseQoAAAAAAAAAAAAAcmVjZWl2ZWQg
-cmVwbHkgd2l0aCBkaWZmZXJlbnQgYWRkcmVzcy4gaWdub3JpbmcgZGhjcCByZXBseQoAAAAAAERI
-Q1B2NiBBRFZFUlRJU0UgcmVjZWl2ZWQKAAAAAAAAZGhjcCBhZHZlcnRpc2UgcmVjZWl2ZWQgaW4g
-d3Jvbmcgc3RhdGUgJWQKAAAAAAAAaWdub3JpbmcgcmN2ZCBhZHZlcnRpc2UgcHJlZmVyZW5jZSAl
-dQoAAAAAAAAAAAAAcHJlZml4IG5vZGUgMHgleCwgdmFsaWRfbGlmZXRpbWUgJXUsIGN1cnJlbnRf
-dGltZSAldSBleHBpcmVkLCBkZWxldGluZyBpdAoAAAAAAABEZWxldGVkIHByZWZpeDogMHhbJTA0
-eCAlMDR4ICUwNHggJTA0eF0KAAAAAAAAAABTdGFydCBESENQdjYgdG8gZ2V0IHRoZSBpcCBhZGRy
-ZXNzCgAAAAAAAAAAAAAAAABObyBkaGNwLCBkaGNwIHN0YXRlICVkLCBhZGRyIHN0YXRlICVkCgAA
-AAAAAAAAAABwaW5nIHJlcSBwYXlsb2FkIHRvbyBsYXJnZSAldS4gSWdub3JpbmcgcmVxLgoAAABS
-UiByY3ZkCgAAAAAAAAAAY2huZXRfaXB2Nl9yZF9pbnB1dDogSW52YWxpZCBSZWRpcmVjdAoAAAAA
-AAAAAAAAY2huZXRfaXB2Nl9uYV9pbnB1dDogSW52YWxpZCBOQQoAAAAAAAAAAAAAAAAAAAAAaXB2
-NiBOQSByY3ZkCgAAAGNobmV0X2lwdjZfbmFfaW5wdXQ6IER1cGxpY2F0ZSBhZGRyZXNzIGRldGVj
-dGVkIQoAAAAAAAAAAAAAAAAAAABOQSBpbiByZXBvbnNlIG9mIE5TCgAAAAAAAAAAAAAAAGNobmV0
-X2lwdjZfbnNfaW5wdXQ6IEludmFsaWQgTlMKAAAAAAAAAAAAAAAAAAAAAGNobmV0X2lwdjZfbnNf
-aW5wdXQ6IEludmFsaWQgTlMgaXB2NmgtPnBsZW4gJXUKAGlwdjYgTlMgcmN2ZAoAAABjaG5ldF9p
-cHY2X25zX2lucHV0OiBEdXBsaWNhdGUgYWRkcmVzcyBkZXRlY3RlZAoAAAAAAAAAAAAAAAAAAAAA
-Y2huZXRfaXB2Nl9uc19pbnB1dDogc29tZWJvZHkgdHJ5aW5nIHRvIHVzZSBvdXIgYWRkcmVzcwoA
-AAAAAAAAAGNobmV0X2lwdjZfbnNfaW5wdXQ6IHJlcSBmb3IgYWRkciByZXNvbHV0aW9uCgAAAEhv
-cCBieSBIb3Agb3B0aW9uCgAAAAAAAAAAAAAAAAAAcHJvY2Vzc19kaGNwX29wdHM6IHJvb3QgcGF0
-aCBsZW4gWyVkXSBieXRlcwoAAAAAbmV0aWZfcHJvY2Vzc19kaGNwX29wdHM6IGwyZGV2X2ZjLT5m
-bG93Y19pZCBbMHgleF0sIE1TR19UWVBFIFslZF0sIGRoY3R4dC0+c3RhdGUgWyVkXQoAAAAAAAAA
-AAAAaWNtcF9yZWN2OiBsMmRldl9mYy0+Zmxvd2NfaWQgWzB4JXhdLCBwaWQgWzB4JXhdLCBpY21w
-IHR5cGUgWzB4JXhdCgAAAAAAAAAAAAAAAABBQlRTIEFDQyBhd2FpdGluZyBQUkxJIFJzcDogZmxv
-d2NfaWQgMHgleCBveF9pZCAweCV4IHJ4X2lkIDB4JXggaXFpZCAweCV4CgAAAAAAAHBvcnQgMHgl
-eCwgc3RhdGUgMHgleCwgY29tbWFuZCBmYWlsZWQgcmV0cmllcyAweCV4CgAAAAAAAAAAAAAAAABh
-cnBfcmVjdjogaXBpZCBbMHgleF0sIGluX2FkZHIuYWRkciBbMHgleF0sIHNpcCBbMHgleF0sIHJp
-cCBbMHgleF0sIGFycF9vcCBbMHgleF0KAAAAAAAAAAAAAAAAAABjaG5ldF9hcnBfcmVjdjogaXAg
-Y29uZmxpY3QgZGV0ZWN0ZWQKAAAAAAAAAAAAAABjaG5ldF9hcnBfcmVjdjogcGlkIFsldV0sIHZs
-YW4gWzB4JXhdLCBhcnAgb3AgWzB4JXhdLCBzaXAgWzB4JXhdLCByaXAgWzB4JXhdCgAAAGNobmV0
-X2lwdjZfcmVjdjogdmxhbiBleHRyYWN0ZWQsIHZsYW5pZCBbJXVdLCBsMmRldl9mYy0+Zmxvd2Nf
-bmV0X2wyZGV2X3ZsYW5kZXYgWzB4JXhdCgAAAAAAAAAAAEludmFsaWQgZGF0YSBsZW5ndGggZGxl
-biAldSwgcGFja2V0IGluZGljYXRlcyAldSBieXRlcwoAAAAAAAAAAABVbmtub3duIElQdjYgbnh0
-IHByb3RvY29sICV1CgAAAEludmFsaWQgZGlkOnglMnglMnglMnggcmN2ZCBvbiBwb3J0OiVkLkRy
-b3BpbmcgZnJhbWUKAAAAAAAAAAAAAAByY3Q6eCV4IHNpZDp4JTJ4JTJ4JTJ4IHJjdmQgb24gZmxv
-d2M6JWQuRHJvcGluZyBmcmFtZQoAAAAAAAAAAAAAY3NvY2tfZnJlZTogc2l6ZW9mKGNza19mYy0+
-dS5jc29jaykgWyV1XSwgYnl0ZXMKAAAAAAAAAAAAAAAAAAAAAEdvdCBDT05OX0VYSVNUIGZvciB4
-aWQ6MHgleCwgdGFnOjB4JXgsIHJldHJ5aW5nLgoAAAAAAAAAAAAAAAAAAABjc29ja19wZWVyX2Ns
-b3NlOiBjc2tfZmMtPmZsb3djX2lkIFsweCV4XSwgdGNiX2ZjLT5mbG93Y19pZCBbMHgleF0sIGNz
-a19mYy0+Zmxvd2Nfc3RhdGUgWzB4JXhdLCB0Y2JfZmMtPmZsb3djX3N0YXRlIFsweCV4XQoAAAAA
-AGNzb2NrX3BlZXJfY2xvc2U6IGNza19mYy0+Zmxvd2NfaWQgWzB4JXhdLCBjc2tfZmMtPmZsb3dj
-X3N0YXRlICBbMHgleF0KAAAAAAAAAAAAdGNwX2Nsc19hYnJ0X3JwbDogdGNiIHRpZCBbMHglMDZ4
-XSwgZmxvd2NfdHlwZSBbMHgleF0sIGNwbG9wIFsweCV4XSAKAAAAAAAAAAAAAABjaF9yYXRlWyV1
-XTogY2FwcGVkIHRpY2sgZnJvbSByZXF1aXJlZCAldSB0byBzdXBwb3J0ZWQgJXU7IHJhdGUgJXUg
-KGVmZiAldSkgZGVmaWNpdF9pbmNyICV1IHRpY2sgJXUKAAAAAAAAAAAAAAAAcGt0c2NoZWRfY2hf
-cmxbJXVdOiBjaGFubmVsIHJsIG5vdCBhdmFpbGFibGUgaW4gY29uanVuY3Rpb24gd2l0aCBmbG93
-IHNoYXBpbmcKAABwa3RzY2hlZF9jaF9ybFsldV06IHJhdGUgJXUgbWF4ICV1CgAAAAAAAAAAAAAA
-AABwa3RzY2hlZF9jbF93cnJbJXU6JXVdOiB3ZWlnaHQgJXUKAAAAAAAAAAAAAAAAAABlcV9wYXJh
-bXNbMHgleDoweCV4XTogZG1hcSAweCV4IHJlYWQgJXUgcGYgJXUgZXFpZF9hcGkgJXUgcmV0ICVk
-CgAAAAAAAAAAAAAAAAAAAHdhaXRfZm9yX2NhbGliX2RvbmU6IHJldCAlZCBpbiAldSBhdHRlbXB0
-cwoAAAAAAGh3X21hX2FkZHJfdG9fbWVtX3R5cGVfb2ZmOiBNQSBhZGRyZXNzIDB4JTA4eCBpcyBu
-b3QgbWFwcGVkCgAAAABod19tYV9hZGRyX3RvX21lbV90eXBlX29mZjogTUEgYWRkcmVzcyAweCUw
-OHggbWFwcyB0byB0eXBlICV1IG9mZnNldCAweCV4CgAAAAAAAG1lbV9tYWxsb2NfdGVtcDogZmFp
-bGVkIHRvIGFsbG9jYXRlICV1IGJ5dGVzLCByZXR1cm5pbmcgTlVMTAoAAABtZW1fbWFsbG9jOiBm
-YWlsZWQgdG8gYWxsb2NhdGUgJXUgYnl0ZXMsIHJldHVybmluZyBOVUxMCgAAAAAAAAAAbGUgY29u
-ZmlndXJhdGlvbjogaGFzaCBtb2RlIHJlcXVpcmVzIGF0IGxlYXN0IDE2IGVudHJpZXMsIG5oYXNo
-ICV1CgAAAAAAAAAAAAAAAABsZSBjb25maWd1cmF0aW9uOiBoYXNoIG1vZGUgcmVxdWlyZXMgYXQg
-ZW50cmllcyB0byBiZSBhIHBvd2VyIG9mIDIsIG5oYXNoICV1CgAAAGxlIGNvbmZpZ3VyYXRpb246
-IHJlcXVlc3RlZCAldSB0Y2FtIGVudHJpZXMgYnV0IG9ubHkgJXUgYXZhaWxhYmxlIChucm91dGUg
-JXUgbmNsaXAgJXUgbmZpbHRlciAldSBuc2VydmVyICV1CgAAAABsZSBjb25maWd1cmF0aW9uOiB0
-Y2FtIHJlZ2lvbnMgbXVzdCBoYXZlIG11bHRpcGxlIG9mIDMyIGVudHJpZXMsIG5yb3V0ZSAldSBu
-Y2xpcCAldSBuZmlsdGVyICV1IG5zZXJ2ZXIgJXUKAAAAAAAAaHdfdHBfdGNwX3R1bmluZ3M6IHR1
-bmluZyBmb3IgY2x1c3RlciBlbnZpcm9ubWVudAoAAAAAAAAAAAAAAAAAAGh3X3RwX3RjcF90dW5p
-bmdzOiB0dW5pbmcgZm9yIExBTiBlbnZpcm9ubWVudAoAAGh3X3RwX3RjcF90dW5pbmdzOiB0dW5p
-bmcgZm9yIFdBTiBlbnZpcm9ubWVudAoAAGh3X3RwX3RjcF90dW5pbmdzOiBtYW51YWwgdHVuaW5n
-CgAAAAAAAAAAAAAAAAAAAF9od19jaW1fZmxhc2hfbWVtY3B5OiBtZW1jcHlYIHN0YXJ0CgAAAAAA
-AAAAAAAAAF9od19jaW1fZmxhc2hfbWVtY3B5OiBkc3QgMHglMDggb2Zmc2V0IDB4JTA4eCBzaXpl
-ICV1LCB3aWR0aCBvZiAldSBpcyBub3Qgc3VwcG9ydGVkCgAAAAAAAAAAAAAAAF9od19jaW1fZmxh
-c2hfbWVtY3B5OiBtZW1jcHlYIGVuZAoAAAAAAAAAAAAAAAAAAGNvbmZpZ3VyYXRpb24gZmlsZSBw
-YXJzZXIgZW5jb3VudGVyZWQgZXJyb3IgQCBsaW5lICV1OgoAAAAAAAAAAABIT1NUIFBBR0VfU0la
-RSBbMHglMGx4XSB0b28gc21hbGwsIG1pbiBbMHglMGx4XSByZXF1aXJlZAoAAAAAAAAAcGFnZSBz
-aXplIFslbHVdIG1pc21hdGNoCgAAAAAAAABQQUdFIHNpemUgJWx1IHVuc3VwcG9ydGVkLCBkZHAg
-ZGlzYWJsZWQKAAAAAAAAAABIb3N0IHBhZ2Vfc2l6ZSAlbHUsIGRkcF9pZHggJXUKAEZDb0UgRERQ
-IGluaXQ6IGZjb2UgbGxpbWl0IDB4JXgsIGZjb2UgdWxpbWl0IDB4JXggZ2JsIGxsaW1pdCAweCV4
-IGdibCB1bGltaXQgMHgleCBwY2JzeiAleAoAAAAAAEZDb0UgRERQIGluaXQ6IGZjb2UgcHBvZCBv
-ZmYgMHgleCwgZmNvZSBzdCBwcG9kIGFkZHIgMHgleCBmY29lIG51bSBwcG9kcyAweCV4CgAAZmNv
-ZSB4Y2hnIG1nciBpbml0OiBOdW1iZXIgb2YgRERQIGV4Y2hhbmdlcyBmb3IgRkNvRSBpcyAleAoA
-AAAAAGZjb2UgeGNoZyBtZ3IgaW5pdDogTnVtYmVyIG9mIHR1bm5lbCBleGNocyBmb3IgRkNvRSBp
-cyAleAoAAAAAAABmY29lX2wydF9pbml0OiBObyB1bHB0eCBjcmVkaXQgY2g6WyV1XQoAAAAAAAAA
-AABmY29lX2wydF9pbml0OiBjaDpbJXVdIGwydF9pZHggWyV1XQoAAAAAAAAAAAAAAABubyBsMnQg
-ZW50cmllcyBjb25maWd1cmVkOyBmb3JjaW5nICV1IGVudHJpZXMsIHN0YXJ0aW5nIGF0ICV1CgAA
-ZGNieF9pZWVlX2NvbnN0cnVjdFsldV0gZXRzICV1IHBmYyAldSBhcHAgJXUKAAAAZGNieF90aW1l
-b3V0WyV1XQoAAAAAAAAAAAAAAAAAAABkY2J4X3J1bl92ZXJzaW9uX3NtWyV1XSBEQ0JYX1ZFUl9T
-VEFURV9SVU5fSUVFRQoAAAAAAAAAAAAAAAAAAAAAZGNieF9ydW5fdmVyc2lvbl9zbVsldV0gRENC
-WF9WRVJfU1RBVEVfUlVOX0NFRQoAZGNieF9ydW5fdmVyc2lvbl9zbVsldV0gRENCWF9WRVJfU1RB
-VEVfUlVOX05PTkUKAAAAAAAAAAAAAAAAAAAAAE1BQyBmYWlsZWQgdG8gcmVzeW5jIHR4CgAAAAAA
-AAAAcG9ydFsldV0gbGluayB1cCAoJXUpIChzcGVlZCAlI3ggYWNhcHMgJSN4IGxwY2FwcyAlI3gp
-CgAAAAAAAAAAAHBvcnRfaHNzX3NpZ2RldFsldV06IGhzc19zaWdkZXQgY2hhbmdlZCB0byAweCV4
-CgAAAAAAAAAAAAAAAAAAAABwb3J0WyV1XSBpbml0aWFsaXppbmcgS1IKAAAAAAAAAGRpc2FibGlu
-ZyB0eCAlI3ggcnggJSN4CgAAAAAAAAAAQ2FsY3VsYXRpb24gb3V0IG9mIGJvdW5kcyBmdXJpbmcg
-aW5pdDogJSN4ICUjeCAlI3gKAAAAAAAAAAAAAAAAAF9od190cF9wZ21uZ3Q6IHR4X3BhZ2VfbWF4
-ICV1IHJ4X3BhZ2VfbWF4ICV1IHBzdHJ1Y3RzICV1IHNpemUgJXUKAAAAAAAAAAAAAAAAAAAAbXBh
-cnRpdGlvbl9vdGhlcnNfdG90YWw6IGRkcCAldSBkZHBfaXNjc2kgJXUgc3RhZyAldSBwYmwgJXUg
-cnEgJXUgcnF1ZHAgJXUgLT4gJXUKAAAAAAAAAAAAAAAAAAAAX21wYXJ0aXRpb25fYmFua3NfbWNY
-OiBuYmFua3NfcG10eCAldSAoJXVNQikgbmJhbmtzX3BtcnggJXUgKCV1TUIpIG5iYW5rc19vdGhl
-cnMgJXUgKCV1TUIpIG5iYW5rc19mdyAldSAoJXVNQikKAF9tcGFydGl0aW9uX2JhbmtzX21jMTog
-bmJhbmtzX3BtdHggJXUgKCV1TUIpIG5iYW5rc19vdGhlcnMgJXUgKCV1TUIpIG5iYW5rc19mdyAl
-dSAoJXVNQikKAAAAAAAAAF9tcGFydGl0aW9uX2JhbmtzX21jMDogbmJhbmtzX3BtcnggJXUgKCV1
-TUIpIG5iYW5rc19vdGhlcnMgJXUgKCV1TUIpCgAAAAAAAAAAAAAAbWVtX21hbGxvY19pbnRlcm5h
-bDogZmFpbGVkIHRvIGFsbG9jYXRlICV1IGJ5dGVzLCByZXR1cm5pbmcgTlVMTAoAAAAAAAAAAAAA
-AAAAAABod19lZGNfYmlzdFsldV06IGJpc3RfY21kWzB4JTA4eF0gYWRkciAweCV4IGxlbiAweCV4
-CgAAAAAAAAAAAAAAaHdfZWRjX2Jpc3RbJXVdOiBkb25lLCBlbmNvdW50ZXJlZCAldSBlcnJvcnMg
-b24gZmlyc3QgYW5kICV1IGVycm9ycyBvbiBzZWNvbmQgYXR0ZW1wdCAoJXVnYnBzKQoAbWVtX2lu
-aXRfY2FjaGVzOiBjYWNoZV9zaXplICV1IGZsb3djX2J1Zl90Y2JfY2FjaGVfc2l6ZSAldSBidWZs
-bDY0X2NhY2hlX3NpemUgJXUKAAAAAAAAAAAAAAAAAAAAbXBhcnRpdGlvbl9wbXR4OiBtIDB4JTA4
-eCBzaXplICV1CgAAAAAAAAAAAAAAAAAAbXBhcnRpdGlvbl9wbXJ4OiBtIDB4JTA4eCBzaXplICV1
-CgAAAAAAAAAAAAAAAAAAbXBhcnRpdGlvbl9lZGMgKG5vIGV4dG1lbSk6IG0gMHglMDh4IHNpemUg
-JXUKAAAAbXBhcnRpdGlvbl9lZGNfZXN0aW1hdGU6IGh3IG1vZHVsZXMgcmVxdWlyZSAlZCBieXRl
-cyBpbiBFREMKAAAAAFRlbXBlcmF0dXJlL1ZvbHRhZ2UgU2Vuc29yOiBDb3JlIGNsb2NrICVkID4g
-NTAwOyB1c2luZyA1MDAgdG8gc3RheSBpbiBjb21wbGlhbmNlIHdpdGggaGFyZHdhcmUuCgAAAAAA
-AAAAAAAAAAAAAABjaG5ldF9ieWU6bDJkZXZfZmMtPmZsb3djX2lkIFsweCV4XSwgbDJkZXZfZmMt
-PmZsb3djX3BjaWVfcGZuIFsweCV4XSwgbDJkZXZfZmMtPmZsb3djX3BjaWVfdmZuIFsweCV4XSwg
-cG9ydCBbMHgleF0KAAAAAAAAAAAAAAAAAGNobmV0X2J5ZTp2bGFuZGV2X2ZjLT5mbG93Y19pZCBb
-MHgleF0sIHZsYW5kZXZfZmMtPmZsb3djX3BjaWVfcGZuIFsweCV4XSwgdmxhbmRldl9mYy0+Zmxv
-d2NfcGNpZV92Zm4gWzB4JXhdLCBwb3J0IFsweCV4XQoAAAAAAAAAaHdfbWFjX2FlY19jb21wbGV0
-ZVsldV0gb24gbGFuZXMgJSN4IChzaWdkZXQgJSN4KQoAAAAAAAAAAAAAAAAAAGFlY19mc21bJXVd
-IDogc3RhdGUgU1RBUlQgKHNpZ2RldCAlI3gpCgAAAAAAAAAAAGFlY19mc21bJXVdIDogdHJhbnNp
-dGlvbmluZyB0byBUUkFJTklORwoAAAAAAAAAAGFlY19mc21bJXVdIDogVFJBSU5JTkdfQ09NUExF
-VEUKAAAAAAAAAAAAAAAAAAAAAGFlY19mc21bJXVdIDogRE9ORQoAAAAAAAAAAAAAAAAAYWVjX2Zz
-bVsldV0gOiB0aW1lZCBvdXQgdHJhaW5pbmcKAAAAAAAAAAAAAAAAAAAAYmVhbl9mc21bJXVdIDog
-c3RhdGUgU1RBUlQgKGNvdW50ID0gJXUpCgAAAAAAAAAAYmVhbl9mc21bJXVdIDogZW50ZXJpbmcg
-c3RhdGUgV0FJVF9TSUdERVQKAAAAAAAAYmVhbl9mc21bJXVdIDogZW50ZXJpbmcgc3RhdGUgTlhQ
-X0hBTkRMRQoAAAAAAAAAYmVhbl9mc21bJXVdIDogZW50ZXJpbmcgc3RhdGUgV0FJVF9DT01QTEVU
-RQoAAAAAYmVhbl9mc21bJXVdIDogREwgNDBHIE5lZ290aWF0aW9uIEVycm9yIC0gQXR0ZW1wdGlu
-ZyB0byBjb250aW51ZQoAAAAAAAAAAAAAAAAAAABiZWFuX2ZzbVsldV0gOiBzdGF0ZSBET05FCgAA
-AAAAAGJlYW5fZnNtWyV1XSA6IHN0YXRlIFJFU1RBUlQKAAAAYmVhbl9mc21bJXVdIFRJTUVPVVQ7
-IHN0YXRlICV1IGV0aF9zdGF0dXMgJSN4IGJlYW5fc3RhdHVzICUjeCBoc3Mgc2lnZGV0ICUjeCBy
-ZXRyeV9jbnQgJXUKAAAAAAAAcG9ydCAldSBuZWdvdGlhdGVkIHVuc3VwcG9ydGVkIHNwZWVkICUj
-eAoAAAAAAAAAYmVhbi9hZWMgY29tcGxldGUgKHJldHJ5OiAldSkKAABwb3J0WyV1XSByZXNldHRp
-bmcgS1IKAAAAAAAAAAAAAFJhbmdlIGNhbGM6IEF2ZXJhZ2VkICUjeCBidXQgaWdub3JlZCB2YWx1
-ZSAlI3ggKGl0ZXJhdGlvbiAldSkKAABNQyBjYWxpYnJhdGlvbiBmYWlsZWQ6IERGSSBpbml0IG5v
-dCBnb2luZyB0byAwCgBNQyBjYWxpYnJhdGlvbiBmYWlsZWQ6IERGSSBpbml0IG5vdCBjb21wbGV0
-aW5nCgBNQyBjYWxpYnJhdGlvbiBmYWlsZWQ6IENhbGlicmF0aW9uIGRpZG4ndCBjb21wbGV0ZS4K
-AAAAAAAAAAAAAAAATUMgY29tbWFuZCBmYWlsZWQgdG8gY29tcGxldGUob3Bjb2RlICUjeCBjYWRk
-ciAlI3ggYmFkZHIgJSN4IGRlbGF5ICVkKQoAAAAAAAAAAABwZm5fYml0bWFwIDB4JXgKAAAAAAAA
-AAAAAAAAAAAAAGJhZCBtYWlsYm94IGNtZDogcGZuIDB4JXggdmZuIDB4JXg7IG9wY29kZSAweCV4
-ID4gTEFTVEMyRSAweCV4CgBtYWlsYm94IGNtZCBub3QgeWV0IHN1cHBvcnRlZDogcGZuIDB4JXgg
-dmZuIDB4JXg7IG9wY29kZSAweCV4CgAAYmFkIG1haWxib3ggY21kOiBwZm4gMHgleCB2Zm4gMHgl
-eDsgb3Bjb2RlIDB4JXggaXMgdmFsaWQgcG9zdCBkZXZpY2UgaW5pdCBvbmx5CgBiYWQgbWFpbGJv
-eCBjbWQ6IHBmbiAweCV4IHZmbiAweCV4OyBvcGNvZGUgMHglMDJ4IHJhbWFzayAweCV4IGNtZCBy
-YW1hc2sgMHgleAoAAGJhZCBtYWlsYm94IGNtZDogcGZuIDB4JXggdmZuIDB4JXg7IG9wY29kZSAw
-eCUwMnggbGVuMTYgMHgleCB2ZXJzdXMgZXhwZWN0ZWQgbGVuMTYgMHgleAoAAAAAAAAAAGluc3Vm
-ZmljaWVudCBjYXBzIHRvIHByb2Nlc3MgbWFpbGJveCBjbWQ6IHBmbiAweCV4IHZmbiAweCV4OyBy
-X2NhcHMgMHgleCB3eF9jYXBzIDB4JXggcmVxdWlyZWQgcl9jYXBzIDB4JXggd19jYXBzIDB4JXgK
-AAAAAAAAAAAAaW5zdWZmaWNpZW50IGNhcHMgdG8gcHJvY2VzcyBtYWlsYm94IGNtZDogcGZuIDB4
-JXggdmZuIDB4JXg7IHJfY2FwcyAweCV4IHd4X2NhcHMgMHgleCByZXF1aXJlZCByX2NhcHMgMHgl
-eCB3X2NhcHMgMHgleAoAAAAAAAAAAABkb3dubG9hZF9zcmFtOiBlcnJvciwgcmV0ICVkCgAAAGRv
-d25sb2FkX3RjYW06IGVycm9yLCByZXQgJWQKAAAAaHdfcG93ZXJfcHJlcDogVkREPU5PTkUgYnV0
-IFZDUz0lZAoAAAAAAAAAAAAAAAAAaHdfcG93ZXJfcHJlcDogdW5zdXBwb3J0ZWQgZXh0ZXJuYWwg
-YWRqdXN0YWJsZSBwb3dlciByZWd1bGF0b3JzIFZERD0lZCwgVkNTPSVkCgBod19wb3dlcl9wcmVw
-OiB1bnN1cHBvcnRlZCBWREQ9JWQKAAAAAAAAAAAAAAAAAABod19wb3dlcl9wcmVwOiB1bnN1cHBv
-cnRlZCBWQ1M9JWQKAAAAAAAAAAAAAAAAAABod19wb3dlcl9wcmVwOiBpMmMgd3JpdGUgZXJyb3Is
-IFZERD0lZCxyZXQ9JWQKAABod19wb3dlcl9wcmVwOiB1bnN1cHBvcnRlZCBWREQ9JWQKAAAAAAAA
-AAAAAAAAAABod19wb3dlcl9wcmVwOiBpMmMgd3JpdGUgZXJyb3IsIFZDUz0lZCxyZXQ9JWQKAABo
-d19wb3dlcl9wcmVwOiB1bnN1cHBvcnRlZCBWQ1M9JWQKAAAAAAAAAAAAAAAAAABWUEQgcmVnaW9u
-IGlzIHRvbyBzbWFsbCAoU0VSQ0ZHX1NSX1BGTlZQRFNJWkUgMHgleCkKAAAAAAAAAAAAAAAAY2Zf
-cHJlcDogZXJyb3IsIHJldCAlZAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAIIAAAEgAAAAAAAAAIIAAAEAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAaAgAAAAAAAAAAAAAAAAIAAAAAAAAAAAAcAAAAAAAAAAAAAAAEAAAAAEAAAAAAAAAAD
-AAAAAAAAAAAAAAADAAAAAAAAAAAAgBADAAAAAAAACAAAAAACAAAAAAAAAAAAIAAAAAAAAAAAAAAA
-AQADgAAAAAAAAAAAAAACAAAAAAAAAAAAIAOAAAAAAAAAAAAAEAKAAIAAAAAAAAAAgAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAIAAAAAAAAAAAAAAAgAACgAAAAAAAAAAAAAACgAAA
-AAAAAAAAgAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACgAAAAAAAAAAAAQADAAAAAAAAAAAAAAKD
-AAAAAAAAAAAAEAKAAAAAAAAAAAAAMAADAAAAAAAACAAAMAADAAAAAAAAAAAAMAWDAAAAAAAACAAA
-MAWDAAAAAAAAAAAAMASDAAAAAAAACAAAMASDAAAAAAAAAAAAMAMDAAAAAAAACAAAMAMDAAAAAAAA
-AAAAOAMDAAAAAAAAAAAAOAWDAAAAAAAAAAAAOASDAAAAAAAAAAAAOAADAAAAAAAAAAAANAaCAAAA
-AAAAAAAAPAOCAAAAAAAAAAAAPAADAAAAAAAACAAAPAADAAAAAAAAAAAAPASDAAAAAAAAAAAAPAUD
-AAAAAAAAAAAAPQQDAAAAAAAAAAAAPAODAAAAAAAAAAAALAACAAAAAAAAAAAALAWCAAAAAAAAAAAA
-LAUCAAAAAAAAAAAAEAaAAAAAAAAAAAAAEAaCgAAAAAAAAAAAAA6CAAAAAAAAAAAAEAeCgAAAACAA
-AAAAAAeCAAAAACAAAAAAEAcCgAAAAAAAAAAAEAcCgAAAAAAAAAAAEAcCgAAAAAAAAAAAAAcCAAAA
-ACAAAAAAEBeDAAAAAAAACAAAEBeDAAAAAAAACAAAEAAAAAAAAAAAAAAAEAYDgAAAAAAAAAAAAA4D
-AAAAAAAAAAAAEAYDQAAAAAAAAAAAEAYDAAAAAAAAAAAAEAYAAAAAAAAAAAAAAAYDgAAAAAAAAAAA
-AAYDAAAAAAAAAAAAAA4CAAAAAAAAAAAAAA4CAAAAAAAAAAAAEAYCAAAAAAAAAAAAEAYCAAAAAAAA
-AAAAEAYCgAAAAAAAAAAAEAYCgAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAgAAAAAAAAAAABADAAAAAAAACAAAAAAAAAAAAAAAAAAA////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-AAAAIAAAAADAAAAAAAAAIAAAAADgAAAAAAAAAAIAAAAAAAAAQAAAAAAAAAAAAAAAAAABIQAAAAAA
-AAAAAAEBIAAAAAAAAAAAAAACAAAABAAEAAAAAACBQAAAAAAAAAAAAAaAAAAEAAAAAAAAAIAAQAAA
-AAAAAgAAAIAAIAAAAAAAAgAACIAAAAAAAEAAAAACAQBAAAAAAAAAAAAAAQBCAAAAAAAAAAAAAAAg
-AAAAAAAAAAAAAhAgAAAAAAAAAAAAAgwCAAAAAAAAAAAAAIUCAAAABAAAAAAAAIBCAAAAAAAAAAAA
-gIBCAEAAAAAAAAAAgIBCAAAAAAAAAAAAAgAiAAAAAAAAAAAAAIBBAAAAAAAAAAAAgIBBAAAAAAAA
-AAAAAIBBgAAAAAAAAAAAgIBBgAAAAAAAAAAAAgAhAAAAAAAAAAAAABAggAAAAAAAAAAAAiUAgAAA
-AAAAAAAAAAUAAAAAAAAAAAAACIgEgAAAAAAAAAAACIgEgAAAAAAAAAAACKIAgAAAAAAAAAAACKIA
-gAAAAAAAAAAACKMAgAAAAAAAAAAACKMAgAAAAAAAAAAACKSAgAAAAAAAAAAACKSAgAAAAAAAAAAA
-BKSAwAAAAAAAAAAABKIAwAAAAAAAAAAABKMAwAAAAAAAAAAABIgEwAAAAAAAAAAAAAkBgAAAAAAA
-AAAAAgwAgAAAAAAAAAAAAIgEwAAAAAAAAAAAAIgEgAAAAAAAAAAAAgsAgAAAAAAAAAAAAIqAgAAA
-AAAAAAAAAAuAgAAAAAAAAAAAAIwAgAAAAAAAAAAAAiAQgAAAAAAAAAAAAgoAgAAAAAAAAAAAAgqA
-gAAAAAAAAAAAAAkCgAAAAAAAAAAAAAEBAAAAAAAAAAAAAAEAgAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAgAAAAAAAAAAAAACBEAAAAAAAAAAAAACBCAAAAAAAAAAAAACBBAAAAAAAAAAAAACBgAAAAAAA
-AAAAAIAAwAAAAAAAAAAAAIAAoAAAAAAAAAAAAAAIAAAAAAAAAAAAAIGAAAAAAAAAAAAAAIGAgAAA
-AAAAAAAAAImAgAAAAAAAAAAAAImAwAAAAAAAAAAAAAGCAAAAAAAAAAAAAgGAAAAAAAAAAAAAAgGA
-gAAAAAAAAAAAAEGBgAAAAAAAAAAAAgGBgAAAAAAAAAAAAEmBgAAAAAAAAAAAAgmBgAAAAAAAAAAA
-AgGBAAAAAAAAAAAAAEGBAAAAAAAAAAAAIAAAAAAAAAAAAAAAEAAAAgEAAAAAAAAAEAAAAgAAAAAA
-AAAAEAAAAAAAAAAAAAAAAIAAwAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////AAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAIAJIAAAAAAAAAA2YAIABAAAAAAAgAkgAAAAAAAAADcgElBEAA
-AAAAAAAAAAAAAAAAAAOWACAAQAAAAAAIAAAAAgCIA4cAAFYAIABAAAAAAAAAAAAAAAAAAAADlgAg
-AEAAAAAAAAAAAAAAAAAAAAOWACAAQAAAAAAAAAAAAAAAAAAAA5YAIABAAAAAAAAAAAAAAAAAAAAD
-lgAgAEAAAAAAAAAAAAAAAAAAAAOWACAAQAAAAAAAAAAAAAAAAAAAA5YAIABAAAAAAAAAAAAAAAAA
-AAADlgAgAEAAAAAACAAAAAIAiAOFAACWASAAQAAAAAAIAAAAAgCIA4UAAJYBIABAAAAAAAAAAAAA
-AAAAAAADlgAgAEAAAAAAAAAAAAAAAAAAAAOWACAAQAAAAAAIAAAAAgCIA4UAAJYBIABAAAAAAAAA
-AAAAAAAAAAADlgAgAEAAAAAAAAAAAAAAAAACAAOWACYEQAAAAAAIRyABBAAAArAAAtIFQCREAAAA
-AAhHIAEEAAACsgAC0gVGJEAAAAAACAAAAAIAiAOHAACWASYEQAAAAAAAAAAAAAAAAAAAA5YAIABA
-AAAAAABHIAEGDKGCskABkgRAJEQAAAAACAAAAAIAiAOHAACWASYEQAAAAAAARyABBAygQrGAAhIF
-QCREAAAAAAgAAAACAIgDhwAAlgEmBEAAAAAACAAAAAIAiAOFAACWASAAQAAAAAAIAAAAAgCIA4UA
-AJYBIABAAAAAAAgAAAACAIgDhQAAlgEgAEAAAAAAAAAAAAAAAAAAAAOWACAAQAAAAAANxRK6ArCA
-0xRUi+JKRiRAAAAAAAXFEroCt4DTFFSLYkmmJEAAAAAABcUSogawgNMUVIviSkYkQAAAAAANxRKi
-BreA0xRUi2JJpiRAAAAAAAXFEqIGsIDTFFSL4kpGJEAAAAAADcUSoga3gNMUVItiSaYkQAAAAAAF
-xRKiBrCA0xRUi+JKRiRAAAAAAA3FEqIGt4DTFFSLYkmmJEAAAAAACcQQoAIAgJAAAItiacYkQAAA
-AAABxBCgBrCAkwZUi2JpxiRAAAAAAAHEEKAGsICTBlSLYmnGJEAAAAAAAcUQuAawgJMWVItiSMYk
-QAAAAAAIoRCIAgCBWBIAC1IApiRAAAAAAAnAEJACsIADFlSKkgHGJEAAAAAACcAQuAawgAMQlIvi
-AkYkQAAAAAAJwBC4ArSAAxCUi2IBpiRAAAAAAAnAELgCtIADEJSLYgGmJEAAAAAACcAQuAK0gAMQ
-lItiAaYkQAAAAAAJwBC4ArSAAxCUi2IBpiRAAAAAAAGgEJAGtIADEJSLYgGmJEAAAAAAAcAQgAKw
-gAMUVIpSAMYkQAAAAAABwBCAArCAAxRUilIAxiRAAAAAAAHAEIACsIADFFSKUgDGJEAAAAAACEcg
-AQQAAAKwAALSBEAkQAAAAAAAgQAAAgCFWAdAC1IApiRAAAAAAAAAAAAEAKBAAYAB1gAgAEAAAAAA
-AAAAAAYAoYAAQAFWACAAQAAAAAAAAAAABACgQAGAAdYAIABAAAAAAAiBAAACAIVZgAQLUgCmJEAA
-AAAACgFAAAAAABgCAANCASakQgAAAAAAAAAAAAAAAAAAA5YAIABAAAAAAAAAAAAEAKBAAYAB1gAg
-AEAAAAAACAAAAAIAiAOFAAPWACAAQAAAAAAIAAAAAgCIA4UAA9YAIABAAAAAAAAAAAAAAAAAAAAD
-lgAgAEAAAAAAAAAAAAAAAAAAAAOWACAAQAAAAAAAAAAABACgQAGAAdYAIABAAAAAAAnAELgCtIAD
-EJSLYgGmJEAAAAAAAAAAAAAAAAACAAOWACYEQAAAAAAAAAAAAAAAAAAAA5YAIABAAAAAAAgAAAAC
-AIgDhQAAlgEgAEAAAAAAAAAAAAQAoEABgAHWACAAQAAAAAAAAAAABACgQAGAAdYAIABAAAAAAAAA
-AAAEAKBAAYAB1gAgAEAAAAAACKEQiAIAgVgQAAkSAaYkQAAAAAAAAAAABACgQAGAAdYAIABAAAAA
-AAAAAAAGAKGAAEABVgAgAEAAAAAACAAAAAIAiAOHQAjSAkYkQgAAAAAJxRKiApSI0hKAiyJJxiRA
-AAAAAAHAEIAGpIgBBVSLUgDGJEAAAAAACcAQgAKkiACFVItSAMYkQAAAAAAJwBCABrSIAwEUi1IB
-piRAAAAAAA3AAAACsIDDFlSL4gNGJEAAAAAAAAAAAAAAAAAAAAOWACAAQAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAACAAwAAQAAAACAAACACYkQAAAAAAARzAABgMgArcACAIBwCRAAAAAAAgD
-AAACBqAKtwAIAgHGJEYAAAAAAAAAAAAAAAACAAACACYkQAAAAAAAIFAABAAAAAAAAAIBJiRGAAAA
-AAhgIACEAAAAAAAABgAgAEAAAAAACGAgAIQAAAACATACACYlQAAAAAAIYAAABACEAYIEBAIBxiTC
-AAAAAAHAAAACQ4ADAgyIAgGmJEAAAAAACABgAAQAAAACAAACACYkQAAAAAAIAGAABAAAAAAAAAQB
-IABAAAAAAAAAAAAAAAAAAAAABAEgAEAAAAAABAgUgAYKAAAHAUwCIKYmQAAAAAAIgAAABgCEAYAE
-CAIBpiTAAAAAAABAAAACAKAAAEAIAgCmJEYAAAAAAAAAAAAAAAACAAACACYkQAAAAAAEAAAAAoQA
-AwKKCAIEwCRAAAAAAAAAAAAAAAAAAgAABgEgSEAAAAAAACBQAAQAAAACAAACACYkQAAAAAAIYCAA
-hAAAAAIAAAYAJgRAAAAAAAhgIACEAAAAAgAAAgEmJUAAAAAACGAAAAQAhAGABAQCAcYkwAAAAAAI
-AGAABAAAAAAAAAQBIABAAAAAAAAAgAAgAAAAAAAAAgAmTHAAAAAAAACAACAAAAAAAAAGASAAAAAA
-AAAAAIAAIAAAAAAAAAIAJkxwAAAAAAAAgAAgAAAAAAAABgEgAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnAAAAItIwECRYEAgTGJEAAAAAACcAAAAw0gAQJ
-FgQCBMYkQAAAAAAECHSATAkAAFAAXAJh5iRAAAAAAAwIdIBEAAAAUgBAAmEmJEAAAAAACAIQoAQA
-AAAAAQACACYkQAAAAAAIAhCgBAAAAAABAAIAJiRAAAAAAAQIdABCAQAABwCIAmDGJEAAAAAADcgU
-AAIJAAAEQJwCYOYkQAAAAAAJyBCAArSABAKUiAJlxiRAAAAAAA3IdABMtIADAJSIAmCmJMAAAAAA
-Bch0AEg0kAMAlIgCYKYkwAAAAAAIRwAABAAAAAAAAAIBICRAAAAAAAhHAAAEAAAAAAAAAgRAJEAA
-AAAAAEcgAQwHIcK3AAgCAMAkRAAAAAAARyABDAchwrcACAIAwCREAAAAAABHIAEMByHCtwAIAgDA
-JEQAAAAAAAAgAQgAhAAFQIgCAcYkwAAAAAAAACABCACEAAVAiAIBxiTAAAAAAAAAIAEIAIQABUCI
-AgHGJMAAAAAAAAAgAYaCAAECwIgCA8YkwAAAAAAAACABgoIAAALAiAIDxiTAAAAAAAnAIAGCpIAB
-BUCIAgHGJMAAAAAACAAAAAwAhAAFQIgCAcYkwAAAAAAAACABhoIAAQLAiAIDxiTAAAAAAAAAIAGC
-ggAAAMCIAgKmJMAAAAAACcAgAYKkgAEFQIgCAcYkwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAgAAAAEAAQQJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAW2dsb2JhbF0KcnNz
-X2dsYl9jb25maWdfbW9kZT1iYXNpY3ZpcnR1YWwKcnNzX2dsYl9jb25maWdfb3B0aW9ucz10bmxt
-YXBlbixoYXNodG9lcGxpdHosdG5sYWxsbGtwCnBsX3RpbWVvdXRfdmFsdWU9MTAwMDAKcmVnWzB4
-MTAwOF09MHg0MDgxMC8weDIxYzcwCnJlZ1sweDEwMGNdPTB4MjIyMjIyMjIKcmVnWzB4MTBhMF09
-MHgwMTA0MDgxMApyZWdbMHgxMDQ0XT00MDk2CnJlZ1sweDEwNDhdPTY1NTM2CnJlZ1sweDEwNGNd
-PTE1MzYKcmVnWzB4MTA1MF09OTAyNApyZWdbMHgxMDU0XT05MjE2CnJlZ1sweDEwNThdPTIwNDgK
-cmVnWzB4MTA1Y109MTI4CnJlZ1sweDEwNjBdPTgxOTIKcmVnWzB4MTA2NF09MTYzODQKcmVnWzB4
-MTBhNF09MHhhMDAwYTAwMC8weGYwMDBmMDAwCnJlZ1sweDEwYThdPTB4NDAyMDAwLzB4NDAyMDAw
-CmJhcjJ0aHJvdHRsZWNvdW50PTUwMApzZ2VfdGltZXJfdmFsdWU9NSwxMCwyMCw1MCwxMDAsMjAw
-CnJlZ1sweDExMjRdPTB4MDAwMDA0MDAvMHgwMDAwMDQwMApyZWdbMHgxMTMwXT0weDAwZDVmZmVi
-CnJlZ1sweDExM2NdPTB4MDAwMmZmYzAKcmVnWzB4N2QwNF09MHgwMDAxMDAwMC8weDAwMDEwMDAw
-CnJlZ1sweDdkNmNdPTB4MDAwMDAwMDAvMHgwMDAwNzAwMApyZWdbMHg3ZDc4XT0weDAwMDAwNDAw
-LzB4MDAwMDAwMDAKcmVnWzB4N2RjMF09MHgwZTJmODg0OQpmaWx0ZXJNb2RlPWZjb2VtYXNrLHNy
-dnJzcmFtLGZyYWdtZW50YXRpb24sbXBzaGl0dHlwZSxwcm90b2NvbCx2bGFuLHBvcnQsZmNvZQpm
-aWx0ZXJNYXNrPXByb3RvY29sLGZjb2UKdHBfcG1yeD0zMAp0cF9wbXJ4X3BhZ2VzaXplPTY0Swp0
-cF9ucnhjaD0wCnRwX3BtdHg9NTAKdHBfcG10eF9wYWdlc2l6ZT02NEsKdHBfbnR4Y2g9MAp0cF9t
-dHVzPTg4LDI1Niw1MTIsNTc2LDgwOCwxMDI0LDEyODAsMTQ4OCwxNTAwLDIwMDIsMjA0OCw0MDk2
-LDQzNTIsODE5Miw5MDAwLDk2MDAKcmVnWzB4N2QwOF09MHgwMDAwMDgwMC8weDAwMDAwODAwCnJl
-Z1sweDdkNDhdPTB4MDAwMDAwMDAvMHgwMDAwMDQwMApyZWdbMHg3ZDYwXT0weDA2MDAwMDAwLzB4
-MDcwMDAwMDAKcmVnWzB4MTkxNjhdPTB4MDQwMjAxMDAKcmVnWzB4MTljMDRdPTB4MDA0MDAwMDAv
-MHgwMDQwMDAwMAptY19tb2RlX2JyY1swXT0xCm1jX21vZGVfYnJjWzFdPTEKcmVnWzB4OGRjMF09
-MHgwMDAwMDAwNC8weDAwMDAwMDA0CltmdW5jdGlvbiIwIl0KbnZmPTE2Cnd4X2NhcHM9YWxsCnJf
-Y2Fwcz1hbGwKbnZpPTEKbmlxZmxpbnQ9OApuZXRoY3RybD04Cm5lcT0xNgpuZXhhY3RmPTgKY21h
-c2s9YWxsCnBtYXNrPTB4MQpbZnVuY3Rpb24iMSJdCm52Zj0xNgp3eF9jYXBzPWFsbApyX2NhcHM9
-YWxsCm52aT0xCm5pcWZsaW50PTgKbmV0aGN0cmw9OApuZXE9MTYKbmV4YWN0Zj04CmNtYXNrPWFs
-bApwbWFzaz0weDIKW2Z1bmN0aW9uIjIiXQpudmY9MTYKd3hfY2Fwcz1hbGwKcl9jYXBzPWFsbApu
-dmk9MQpuaXFmbGludD04Cm5ldGhjdHJsPTgKbmVxPTE2Cm5leGFjdGY9OApjbWFzaz1hbGwKcG1h
-c2s9MHg0CltmdW5jdGlvbiIzIl0KbnZmPTE2Cnd4X2NhcHM9YWxsCnJfY2Fwcz1hbGwKbnZpPTEK
-bmlxZmxpbnQ9OApuZXRoY3RybD04Cm5lcT0xNgpuZXhhY3RmPTgKY21hc2s9YWxsCnBtYXNrPTB4
-OApbZnVuY3Rpb24iNCJdCnd4X2NhcHM9YWxsCnJfY2Fwcz1hbGwKbnZpPTI4Cm5pcWZsaW50PTE3
-MApuZXRoY3RybD0xMDAKbmVxPTI1NgpucXBjcT0xMjI4OApuZXhhY3RmPTQwCmNtYXNrPWFsbApw
-bWFzaz1hbGwKbmV0aG9mbGQ9MTAyNApucm91dGU9MzIKbmNsaXA9MzIKbmZpbHRlcj00OTYKbnNl
-cnZlcj00OTYKbmhhc2g9MTIyODgKcHJvdG9jb2w9bmljX3ZtLG9mbGQscmRkcCxyZG1hYyxpc2Nz
-aV9pbml0aWF0b3JfcGR1LGlzY3NpX3RhcmdldF9wZHUsaXNjc2lfdDEwZGlmCnRwX2wydD0zMDcy
-CnRwX2RkcD0yCnRwX2RkcF9pc2NzaT0yCnRwX3N0YWc9Mgp0cF9wYmw9NQp0cF9ycT03CltmdW5j
-dGlvbiI1Il0Kd3hfY2Fwcz1hbGwKcl9jYXBzPWFsbApudmk9NApuaXFmbGludD0zNApuZXRoY3Ry
-bD0zMgpuZXE9NjQKbmV4YWN0Zj0xNgpjbWFzaz1hbGwKcG1hc2s9YWxsCm5zZXJ2ZXI9MTYKbmhh
-c2g9MjA0OAp0cF9sMnQ9MTAyMApwcm90b2NvbD1pc2NzaV9pbml0aWF0b3JfZm9mbGQKdHBfZGRw
-X2lzY3NpPTIKaXNjc2lfbnRhc2s9MjA0OAppc2NzaV9uc2Vzcz0yMDQ4CmlzY3NpX25jb25uX3Bl
-cl9zZXNzaW9uPTEKaXNjc2lfbmluaXRpYXRvcl9pbnN0YW5jZT02NApbZnVuY3Rpb24iNiJdCnd4
-X2NhcHM9YWxsCnJfY2Fwcz1hbGwKbnZpPTQKbmlxZmxpbnQ9MzQKbmV0aGN0cmw9MzIKbmVxPTY2
-Cm5leGFjdGY9MzIKY21hc2s9YWxsCnBtYXNrPWFsbApuaGFzaD0yMDQ4CnRwX2wydD00CnByb3Rv
-Y29sPWZjb2VfaW5pdGlhdG9yCnRwX2RkcD0yCmZjb2VfbmZjZj0xNgpmY29lX252bnA9MzIKZmNv
-ZV9uc3NuPTEwMjQKZmNvZV9uZmNiPTI1NgpbZnVuY3Rpb24iMTAyMyJdCnd4X2NhcHM9YWxsCnJf
-Y2Fwcz1hbGwKbnZpPTQKY21hc2s9YWxsCnBtYXNrPWFsbApuZXhhY3RmPTgKbmZpbHRlcj0xNgpb
-ZnVuY3Rpb24iMC8qIl0Kd3hfY2Fwcz0weDgyCnJfY2Fwcz0weDg2Cm52aT0xCm5pcWZsaW50PTQK
-bmV0aGN0cmw9MgpuZXE9NApuZXhhY3RmPTQKY21hc2s9YWxsCnBtYXNrPTB4MQpbZnVuY3Rpb24i
-MS8qIl0Kd3hfY2Fwcz0weDgyCnJfY2Fwcz0weDg2Cm52aT0xCm5pcWZsaW50PTQKbmV0aGN0cmw9
-MgpuZXE9NApuZXhhY3RmPTQKY21hc2s9YWxsCnBtYXNrPTB4MgpbZnVuY3Rpb24iMi8qIl0Kd3hf
-Y2Fwcz0weDgyCnJfY2Fwcz0weDg2Cm52aT0xCm5pcWZsaW50PTQKbmV0aGN0cmw9MgpuZXE9NApu
-ZXhhY3RmPTQKY21hc2s9YWxsCnBtYXNrPTB4NApbZnVuY3Rpb24iMy8qIl0Kd3hfY2Fwcz0weDgy
-CnJfY2Fwcz0weDg2Cm52aT0xCm5pcWZsaW50PTQKbmV0aGN0cmw9MgpuZXE9NApuZXhhY3RmPTQK
-Y21hc2s9YWxsCnBtYXNrPTB4OApbcG9ydCIwIl0KZGNiPXBwcCxkY2J4CmJnX21lbT0yNQpscGJr
-X21lbT0yNQpod209MzAKbHdtPTE1CmR3bT0zMApkY2JfYXBwX3RsdlswXT0weDg5MDYsZXRoZXJ0
-eXBlLDMKZGNiX2FwcF90bHZbMV09MHg4OTE0LGV0aGVydHlwZSwzCmRjYl9hcHBfdGx2WzJdPTMy
-NjAsc29ja2V0bnVtLDUKW3BvcnQiMSJdCmRjYj1wcHAsZGNieApiZ19tZW09MjUKbHBia19tZW09
-MjUKaHdtPTMwCmx3bT0xNQpkd209MzAKZGNiX2FwcF90bHZbMF09MHg4OTA2LGV0aGVydHlwZSwz
-CmRjYl9hcHBfdGx2WzFdPTB4ODkxNCxldGhlcnR5cGUsMwpkY2JfYXBwX3RsdlsyXT0zMjYwLHNv
-Y2tldG51bSw1Cltwb3J0IjIiXQpkY2I9cHBwLGRjYngKYmdfbWVtPTI1CmxwYmtfbWVtPTI1Cmh3
-bT0zMApsd209MTUKZHdtPTMwCmRjYl9hcHBfdGx2WzBdPTB4ODkwNixldGhlcnR5cGUsMwpkY2Jf
-YXBwX3RsdlsxXT0weDg5MTQsZXRoZXJ0eXBlLDMKZGNiX2FwcF90bHZbMl09MzI2MCxzb2NrZXRu
-dW0sNQpbcG9ydCIzIl0KZGNiPXBwcCxkY2J4CmJnX21lbT0yNQpscGJrX21lbT0yNQpod209MzAK
-bHdtPTE1CmR3bT0zMApkY2JfYXBwX3RsdlswXT0weDg5MDYsZXRoZXJ0eXBlLDMKZGNiX2FwcF90
-bHZbMV09MHg4OTE0LGV0aGVydHlwZSwzCmRjYl9hcHBfdGx2WzJdPTMyNjAsc29ja2V0bnVtLDUK
-W2ZpbmldCnZlcnNpb249MHgxNDI1MDAxYwpjaGVja3N1bT0weGE0YTgwMTU2CgAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAW2dsb2JhbF0KcnNzX2dsYl9jb25m
-aWdfbW9kZT1iYXNpY3ZpcnR1YWwKcnNzX2dsYl9jb25maWdfb3B0aW9ucz10bmxtYXBlbixoYXNo
-dG9lcGxpdHosdG5sYWxsbGtwCnBsX3RpbWVvdXRfdmFsdWU9MTAwMDAKcmVnWzB4MTAwOF09MHg0
-MDgxMC8weDIxYzcwCnJlZ1sweDEwMGNdPTB4MjIyMjIyMjIKcmVnWzB4MTBhMF09MHgwMTA0MDgx
-MApyZWdbMHgxMDQ0XT00MDk2CnJlZ1sweDEwNDhdPTY1NTM2CnJlZ1sweDEwNGNdPTE1MzYKcmVn
-WzB4MTA1MF09OTAyNApyZWdbMHgxMDU0XT05MjE2CnJlZ1sweDEwNThdPTIwNDgKcmVnWzB4MTA1
-Y109MTI4CnJlZ1sweDEwNjBdPTgxOTIKcmVnWzB4MTA2NF09MTYzODQKcmVnWzB4MTBhNF09MHhh
-MDAwYTAwMC8weGYwMDBmMDAwCnJlZ1sweDEwYThdPTB4NDAyMDAwLzB4NDAyMDAwCmJhcjJ0aHJv
-dHRsZWNvdW50PTUwMApzZ2VfdGltZXJfdmFsdWU9NSwxMCwyMCw1MCwxMDAsMjAwCnJlZ1sweDEx
-MjRdPTB4MDAwMDA0MDAvMHgwMDAwMDQwMApyZWdbMHgxMTMwXT0weDAwZDVmZmViCnJlZ1sweDEx
-M2NdPTB4MDAwMmZmYzAKcmVnWzB4N2QwNF09MHgwMDAxMDAwMC8weDAwMDEwMDAwCnJlZ1sweDdk
-NmNdPTB4MDAwMDAwMDAvMHgwMDAwNzAwMApyZWdbMHg3ZGMwXT0weDBlMmY4ODQ5CmZpbHRlck1v
-ZGU9ZmNvZW1hc2ssc3J2cnNyYW0sZnJhZ21lbnRhdGlvbixtcHNoaXR0eXBlLHByb3RvY29sLHZs
-YW4scG9ydCxmY29lCmZpbHRlck1hc2s9cHJvdG9jb2wsZmNvZQp0cF9wbXJ4PTMwCnRwX3Btcnhf
-cGFnZXNpemU9NjRLCnRwX25yeGNoPTAKdHBfcG10eD01MAp0cF9wbXR4X3BhZ2VzaXplPTY0Swp0
-cF9udHhjaD0wCnRwX210dXM9ODgsMjU2LDUxMiw1NzYsODA4LDEwMjQsMTI4MCwxNDg4LDE1MDAs
-MjAwMiwyMDQ4LDQwOTYsNDM1Miw4MTkyLDkwMDAsOTYwMApyZWdbMHg3ZDA4XT0weDAwMDAwODAw
-LzB4MDAwMDA4MDAKcmVnWzB4N2Q0OF09MHgwMDAwMDAwMC8weDAwMDAwNDAwCnJlZ1sweDdkNjBd
-PTB4MDYwMDAwMDAvMHgwNzAwMDAwMApyZWdbMHgxOTE2OF09MHgwNDAyMDEwMApyZWdbMHgxOWMw
-NF09MHgwMDQwMDAwMC8weDAwNDAwMDAwCm1jX21vZGVfYnJjWzBdPTEKbWNfbW9kZV9icmNbMV09
-MQpbZnVuY3Rpb24iMCJdCnd4X2NhcHM9YWxsCnJfY2Fwcz1hbGwKbnZpPTI4Cm5pcWZsaW50PTE3
-MApuZXRoY3RybD05NgpuZXE9MjUyCm5xcGNxPTIwNDgKbmV4YWN0Zj00MApjbWFzaz1hbGwKcG1h
-c2s9YWxsCm5ldGhvZmxkPTEwMjQKbnJvdXRlPTMyCm5jbGlwPTMyCm5maWx0ZXI9NDgKbnNlcnZl
-cj0zMgpuaGFzaD0yMDQ4CnByb3RvY29sPW5pY192bSxvZmxkLHJkZHAscmRtYWMsaXNjc2lfaW5p
-dGlhdG9yX3BkdSxpc2NzaV90YXJnZXRfcGR1LGlzY3NpX3QxMGRpZgp0cF9sMnQ9NDA5Mgp0cF9k
-ZHA9Mgp0cF9kZHBfaXNjc2k9Mgp0cF9zdGFnPTIKdHBfcGJsPTUKdHBfcnE9NwpbZnVuY3Rpb24i
-MSJdCnd4X2NhcHM9YWxsCnJfY2Fwcz1hbGwKbnZpPTQKbmlxZmxpbnQ9MzQKbmV0aGN0cmw9MzIK
-bmVxPTY2Cm5leGFjdGY9MzIKY21hc2s9YWxsCnBtYXNrPWFsbApuaGFzaD0yMDQ4CnByb3RvY29s
-PWZjb2VfaW5pdGlhdG9yCnRwX2wydD00CnRwX2RkcD0yCmZjb2VfbmZjZj0xNgpmY29lX252bnA9
-MzIKZmNvZV9uc3NuPTEwMjQKZmNvZV9uZmNiPTI1NgpbZnVuY3Rpb24iMTAyMyJdCnd4X2NhcHM9
-YWxsCnJfY2Fwcz1hbGwKbnZpPTQKY21hc2s9YWxsCnBtYXNrPWFsbApuZXhhY3RmPTgKbmZpbHRl
-cj0xNgpbZnVuY3Rpb24iMC8qIl0Kd3hfY2Fwcz0weDgyCnJfY2Fwcz0weDg2Cm52aT0xCm5pcWZs
-aW50PTQKbmV0aGN0cmw9MgpuZXE9NApuZXhhY3RmPTQKY21hc2s9YWxsCnBtYXNrPTB4MQpbZnVu
-Y3Rpb24iMS8qIl0Kd3hfY2Fwcz0weDgyCnJfY2Fwcz0weDg2Cm52aT0xCm5pcWZsaW50PTQKbmV0
-aGN0cmw9MgpuZXE9NApuZXhhY3RmPTQKY21hc2s9YWxsCnBtYXNrPTB4MgpbcG9ydCIwIl0KZGNi
-PXBwcCxkY2J4CmJnX21lbT0yNQpscGJrX21lbT0yNQpod209MzAKbHdtPTE1CmR3bT0zMApkY2Jf
-YXBwX3RsdlswXT0weDg5MDYsZXRoZXJ0eXBlLDMKZGNiX2FwcF90bHZbMV09MHg4OTE0LGV0aGVy
-dHlwZSwzCmRjYl9hcHBfdGx2WzJdPTMyNjAsc29ja2V0bnVtLDUKW3BvcnQiMSJdCmRjYj1wcHAs
-ZGNieApiZ19tZW09MjUKbHBia19tZW09MjUKaHdtPTMwCmx3bT0xNQpkd209MzAKZGNiX2FwcF90
-bHZbMF09MHg4OTA2LGV0aGVydHlwZSwzCmRjYl9hcHBfdGx2WzFdPTB4ODkxNCxldGhlcnR5cGUs
-MwpkY2JfYXBwX3RsdlsyXT0zMjYwLHNvY2tldG51bSw1Cltwb3J0IjIiXQpkY2I9cHBwLGRjYngK
-YmdfbWVtPTI1CmxwYmtfbWVtPTI1Cmh3bT0zMApsd209MTUKZHdtPTMwCmRjYl9hcHBfdGx2WzBd
-PTB4ODkwNixldGhlcnR5cGUsMwpkY2JfYXBwX3RsdlsxXT0weDg5MTQsZXRoZXJ0eXBlLDMKZGNi
-X2FwcF90bHZbMl09MzI2MCxzb2NrZXRudW0sNQpbcG9ydCIzIl0KZGNiPXBwcCxkY2J4CmJnX21l
-bT0yNQpscGJrX21lbT0yNQpod209MzAKbHdtPTE1CmR3bT0zMApkY2JfYXBwX3RsdlswXT0weDg5
-MDYsZXRoZXJ0eXBlLDMKZGNiX2FwcF90bHZbMV09MHg4OTE0LGV0aGVydHlwZSwzCmRjYl9hcHBf
-dGx2WzJdPTMyNjAsc29ja2V0bnVtLDUKW2ZpbmldCnZlcnNpb249MHgxNDI1MDAxZApjaGVja3N1
-bT0weDY1MGJiMWEwCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-====
Property changes on: user/ngie/bsnmp_cleanup/sys/dev/cxgbe/firmware/t5fw-1.15.28.0.bin.uu
___________________________________________________________________
Deleted: fbsd:nokeywords
## -1 +0,0 ##
-yes
\ No newline at end of property
Index: user/ngie/bsnmp_cleanup/sys/dev/cxgbe/firmware/t4fw-1.15.37.0.bin.uu
===================================================================
--- user/ngie/bsnmp_cleanup/sys/dev/cxgbe/firmware/t4fw-1.15.37.0.bin.uu (nonexistent)
+++ user/ngie/bsnmp_cleanup/sys/dev/cxgbe/firmware/t4fw-1.15.37.0.bin.uu (revision 299697)
@@ -0,0 +1,9522 @@
+/*-
+ * Copyright (c) 2016 Chelsio Communications, Inc.
+ * 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.
+ */
+begin-base64 644 t4fw
+AAAEIQEPJQAAAQkEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAABAQEEwQbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAENoZWxzaW8gRlcgUlVOTUVNIERFQlVHPTAgKEJ1aWx0IFRodSBBcHIgMjEgMDc6
+MDA6MzMgUERUIDIwMTYgb24gdm5jNC5hc2ljZGVzaWduZXJzLmNvbTovaG9tZS9maXJtd2FyZS9j
+dnMvZnctcmVsZWFzZSksIFZlcnNpb24gVDR4eCAwMS4wZi4yNS4wMAAAAAAAAAAAAAAAAP2v38Zg
+AMgA4QB78AAQAADhADC4eP///x/84UCAAAAB4QB7cAAAEAAf//2U4QGUcCAAAADhAZwE4QB5AAAC
+AEDhAHmAAAYAQAACAAoABgAK4QB5BAAMAACAAAEC4QB7POEAe0ThAHvk4gAAAAABAADhAHuQIAAA
+AAAAgADhAHsAAABAAeEAe5wAAEAAREREQuAAAADjAARzREREQOMACAAgAAJcAAAAAB//ktAAAAAA
+H/+S1AAAAAAf/5LYAAAAAB//ktwf/8AAAAAAAAAAAADAABL/zRP/zZMgEv/NE//NhCAEMwGTIBH/
+zBL/zJIQEf/MEv/MkhAR/8wB9DER/8siCv+SEADkMQAFMQECABL/yALnMQIWABH/x4EQAQFfwCEC
+EQHJERH/xBL/xJIQEf/EEv/EkhBgAA8R/78S/8OSEBH/vxL/wpIQgRAR/8HAIJIREv/AkhLAIJIT
+Ev+/khCCEALyUGUv9xH/vccvkhAR/7ySEBL/vBP/vJMgwDKTIRP/u5MigiIS/7oT/7qTICMiIRT/
+uQQzAck4E/+4gzADgxQIMxEU/7akM5MhE/+qkyJgAAjCMJMhE/+nkyIS/7GQIJAhkCKQI5AkkCWQ
+JpAnkCiQKZAqkCuQLJAtkC6QLyAmECAmEYIiEv+kwDAtNzAtNzQtNzgtNzwjPQFyM+0AAgAS/6HA
+MC83AC83EC83IC83MCM9AXIz7QACABL/l8AwKDcwKDc0KDc4KDc8Iz0BcjPtEv+VwDAnNwAnNxAn
+NyAnNzAjPQFyM+0S/5AV/5AW/5HAMNcgBWYBYAAZAAAAAAAAAAQ2BQACANMP0w8FMwxuOxQHRxQH
+BEN2MeYENgUFMwxvO+0AAgAS/4MV/4EjCgACJwIHBEMEPgUFMwwHRxRvO/ADAgAS/33JLoMghCGF
+IrwidDsOhlC0VZYwtDN0M/Rj/+YAZT/iZV/fEv9xwDIDLgUDAgAS/2jAMCg3QCg3RCg3SCg3TCM9
+AXIz7QACABL/ay0nAMARAUkxAEgxAQIAwAAU/2gE0jEV/2eUUBT/ZwTTMRX/ZpRQFP9mBNQxFf9m
+lFAU/2UE1TEV/2WUUBD/ZQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/AAA
+H/wAAOMACfgf/AAAH/wAAOMACfgf/AAAH/wAAOMACfgf/4AAH/+KUOMACfgf/4pQH/+KUOMAFEgf
+/4pQH/+KUOMAFEgf/4pQH/+L8OMAFEgf/4vwH/+SxOMAFegf/5LQH/+0jOMAHMgf/7SMH/+0jOMA
+PoQf/8AAH//+geMAPoQgAAAAIAABauMAfQggAAF4IAABfOMAfnQgAAF8IAABheMAfnggAAGYIAAB
+nOMAfoQgAAGcIAABpeMAfoggAAG4IAABvOMAfpQgAAG8IAABxeMAfpggAAHYIAAB2OMAfqQgAAHc
+IAAB4uMAfqQgAAH4IAAB+OMAfqwgAAH8IAAB/OMAfqwgAAIYIAACGOMAfqwgAAIcIAACHOMAfqwg
+AAI4IAACOOMAfqwgAAI8IAACPOMAfqwgAAJYIAACWOMAfqwgAAJcIAACYuMAfqwgAAJ4IAACeOMA
+frQgAAJ8IAACguMAfrQgAAKYIAHumeMAfrwgAwAAIAMU0OMCasAgAxTQIAMU0OMCf5AgAxTQIAbU
+tOMCf5AgBtTAIAbYMOMGP4AgCAAAIAgOUOMGQvAgCA5QIAklXuMGUUAgCSVgIAkmLOMHaFAgCwAA
+IAsAAOMHaRwgCwAAIAsAAOMHaRwgCwAAIAueSOMHaRwAAAAAAAAAAAAAAAAgABGGIAAReCAAFWIg
+ABF4IAAU3SAAEXggABIqIAAUdSAAE/ogABF4IAATqSAAE2IgABL1IAARZSAAEp8gABF4IAAReCAA
+EXggABJKAAAAAP///////w/8///w////APwgAKezIACpGiAAqUogAKkQIACo0SAAqMcgAKiRIACo
+hyAAqHYgAKgiIACpSCAAqBggAKfrIACpSiAAp+EAAAAAARAYAQAEAAAAAAAAAAAAAAAAAAoAAAAK
+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
+H/+qGCABv1ggAcuE4AUAAAP/AAAf/6lkIAMMWB/8v/88AAAAAAX//4MAAAAf/6jcIAHhGCALYoAf
+/65EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgYAAAAAAAAD/////////////////////H//8
+iB///Igf//xQH//8UB///FAf//xQH//12B//+QAf//dcH//3XB//91wgBqnIAAAAAAAAAAAAAAAA
+AAAAACAGrRAgBq0QAAAAAAAAAAAAAAAAAAAAACAGqcggBqnIH//59B//+fQf//n0H//59B//+fQf
+//n0AAAAACABwHAAAAAAAAAAAAAAAAAAAAAAAgEAAAAAAAAAAAAAAAAAAAQAAAAAAAAAgYAAAAAA
+ABAFAAAAAAAABAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAGAUAAACAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgCgAR8pMT8pPTDwPm
+MQECABbykRfykndrBpBgtGZ3Y/hUDzNVxPYPFABj//kAAABsEAgoIAUnIAcpMQX4IIYV4BlFAPkA
+DoVhdwEAiiIW8oT95QgF4AyVAPFXvA3gD6UA6vKBG8cCgACmiCuCngp5CimSv/1gDYOiAJ0AKIKd
+CYgB6BYFJA1RgAAo0gj3AA2okgCdACtiruzydRWKuYAAKmKtLMJ/7KsBBHP9AAD9QAoeIgCdAC7W
+CP1ACh4iAJ0ALyAUpP8PD0cvJBT14Axd0gCdABnyZy4iFiwhKYgVH/JlrsyfgOoiHi5nwoAA/QBm
+FaANJQD9AEYV4AtlAO3yXh1WAoAAC6oCixSagekAFQRAQQAAiRUIAIooPBD9IMYV4EwFAP0g5hWg
+DEUA7Ls2BMiBAABtuQUIAIYJAmHu8k8VoIeAAIgV7gAFDc8CgACpiOiMICWkNQAAC8kMbZkCCAJh
+LSEp0w/qISgm6AUAAA0NTy0lKf1AB3RiAJ0A/+SABeAMFQD6IKgV4B7lAOoiHi7NQoAA+CAmFeAI
+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
+IASyaCAEs9sgBLPbIAS0wSAEs9sAAAAAAAAAAAAAAAAgBNkGIATZBiAE17ogBNkGIATUdSAE2Pwg
+BNjYIATUdSAE1HUgBNR1IATUdSAE1HUgBNeeIATZBiAE1HUgBNeeIATZBgAAAAAAAAAAAAAAACAE
+6WsgBOf0IATr2yAE65sgBOtjIATrJSAE6wMgBOhIIATq3yAE6qMgBOpLIATp9SAE6asgBOmDARAY
+AQACAAABEBgBAAIAAAAAAAAAAAAAIAWWLyAFkcwgBZYDIAWV1yAFlaogBZWVIAWR8yAFkgogBZV8
+IAWSPyAFkisgBZHzIAWSPyAFkfMgBZHzIAWR8yAFli8AAAAAAAAAAAAAAAAAAAAAIAXlgCAF38gg
+Bd90IAXdKCAF2ZAAAAAAAAAAACAF37EgBd+tIAXfrSAF360gBd+xIAXfrSAF360gBd+tIAXfrSAF
+360gBd+tIAXfrSAF37EgBd+tIAXfrSAF360gBd+tIAXfrSAF360gBd+tIAXfrSAF360gBd+tIAXf
+rSAF360gBd+tIAXfrSAF360gBd+tIAXfrSAF360gBd+tIAXfrSAF360gBd+tIAXfrSAF360gBd+t
+IAXfrSAF360gBd+tIAXfrSAF360gBd+tIAXfrSAF360gBd+tIAXfrSAF360gBd+tIAXfrSAF360g
+Bd+tIAXfrSAF360gBd+tIAXfrSAF360gBd+tIAXfrSAF37EgBd+tIAXfrSAF360gBd+xIAXfrSAF
+360gBd+tIAXfsSAF360gBd+tIAXfrSAF37EgBd+tIAXfrSAF360gBd+xIAXfrSAF360gBd+tIAXf
+sSAF360gBd+tIAXfrSAF37EgBd+tIAXfrSAF360gBd+xIAXfrSAF360gBd+tIAXfsSAF360gBd+t
+IAXfrSAF37EgBd+tIAXfrSAF360gBd+xIAXfrSAF360gBd+tIAXfsSAF360gBd+tIAXfrSAF37Eg
+Bd+tIAXfrSAF360gBd+xIAXfrSAF360gBd+tIAXfsSAF360gBd+tIAXfrSAF37EgBd+tIAXfrSAF
+360gBd+tIAXfrSAF360gBd+tIAXfrSAF360gBd+tIAXfrSAF360gBd+tIAXfrSAF360gBd+tIAXf
+rSAF360gBd+tIAXfsSAF360gBd+tIAXfrSAF360gBd+tIAXfrSAF360gBd+tIAXfrSAF360gBd+t
+IAXfsSAF360gBd+tIAXfrSAF360gBd+tIAXfrSAF360gBd+tIAXfrSAF360gBd+tIAXfrSAF360g
+Bd+tIAXfrSAF360gBd+tIAXfrSAF360gBd+tIAXfrSAF360gBd+tIAXfsSAF360gBd+tIAXfrSAF
+37EgBd+tIAXfrSAF360gBd+xIAXfrSAF360gBd+tIAXfrSAF360gBd+tIAXfrSAF360gBd+tIAXf
+rSAF360gBd+tIAXfrSAF360gBd+tIAXfrSAF360gBd+tIAXfrSAF360gBd+tIAXfrSAF360gBd+t
+IAXfrSAF360gBd+tIAXfrSAF360gBd+tIAXfrSAF360gBd+tIAXfrSAF360gBd+tIAXfrSAF360g
+Bd+tIAXfrSAF360gBd+tIAXfrSAF360gBd+tIAXfrSAF360gBd+tIAXfrSAF360gBd+tIAXfrSAF
+360gBd+tIAXfrSAF37EAAAAAAAAAAAAAAAAgBd/9IAXhVSAF4wsgBeL9IAXi6CAF4togBeLFIAXi
+tyAF4qIgBeKVIAXigiAF4nUgBeJiIAXiVSAF4kIgBd/2IAXiLiAF4iEgBeIOIAXiACAF4esgBeHi
+IAXh0yAF4eIgBeHTIAXhxSAF4bAgBd/2IAXf9iAF3/YgBd/2IAXhoyAF4BYgBd/2IAXf9iAF3/Yg
+BeGGIAXhbSAF4WMgBeFEIAXf9iAF4TEgBeEXIAXhBCAF4OogBeDXIAXgvyAF4KwgBeCZIAXgMwAA
+AAAAAAAAIAXlySAF5dMgBedKIAXnISAF5xogBecTIAXnDCAF5wUgBeb+IAXm9yAF5vAgBebmIAXm
+3CAF5sQgBeadIAXmciAF5mkgBeZOIAXmRCAF5jogBeYqIAXmIyAF5hAgBeYJIAXltyAF5eAAAAAA
+AAAAACAGecggBnccIAZ1tCAGc0wgBnDoIAZsSCAGbuAgBm+QIAZq5CAGcbQDDwgSg46TklJWAAAQ
+AAAAY29uZmlndXJhdGlvbiBmaWxlIHBhcnNlciBmb3VuZCBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRp
+b24gYWZ0ZXIgW2ZpbmldCgAAMAAAAGZjb2UAAAAAdm5pY19pZAB2bGFuAAAAAHRvcwBldGhlcnR5
+cGUAAABtYWNtYXRjaAAAAABtcHNoaXR0eXBlAABmcmFnbWVudGF0aW9uAAAAYmFzaWN2aXJ0dWFs
+AAAAAHN5bm1hcGVuAAAAAHN5bjR0dXBlbmlwdjYAAABzeW4ydHVwZW5pcHY2AAAAc3luNHR1cGVu
+aXB2NAAAAHN5bjJ0dXBlbmlwdjQAAABvZmRtYXBlbgAAAAB0bmxtYXBlbgAAAAB0bmxhbGxsa3AA
+AABoYXNodG9lcGxpdHoAAAAAbGFuAHdhbgBjbHVzdGVyAG1hbnVhbAAAdHBfcGlvAAB0cF90bV9w
+aW8AAABuaWNfdm0AAG5pY191bQAAbmljX3VtX2lzZ2wAbmljX2hhc2hmaWx0ZXIAAG9mbGQAAAAA
+cmRkcAAAAAByZG1hYwAAAGlzY3NpX2luaXRpYXRvcl9wZHUAaXNjc2lfdGFyZ2V0X3BkdQAAAABp
+c2NzaV9pbml0aWF0b3JfZm9mbGQAAABpc2NzaV90YXJnZXRfZm9mbGQAAGZjb2VfaW5pdGlhdG9y
+AABmY29lX3RhcmdldABwb2Zjb2VfaW5pdGlhdG9yAAAAAHBvZmNvZV90YXJnZXQAAABpc2NzaV90
+MTBkaWYAAAAAaXNjc2lfaW5pdGlhdG9yX2NtZG9mbGQAaXNjc2lfdGFyZ2V0X2NtZG9mbGQAAAAA
+dGxza2V5cwBwcHAAZGNieAAAAABiMmIAc29ja2V0bnVtAAAAY2VlAGllZWUAAAAAYXV0bwAAAABh
+bl9kaXMAAHBkbGl0ZV9kaXMAACADFHAABAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAIAZqqAAA
+AAAgBmoAIAZnoCAGZnggBkbgIAXsKCAF2OggBdfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIARM
+3CAEWVggBFlYIARZWCAEaXggBH/AIASOaCAEl9QgBEngIARHUCAD/mQgBLFAIAP8FCAD+NggBdek
+IAXWfCAFz7ggBFlYIAXO4CAFzYQgBcy4IAawKCADa4AgA8HMIAaEJAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAIAQhxCAECywgBBuEIAQY8CAEF3QAAAAAIAQVHCAEIPwAAAAAIAPwzAAA
+AAAAAAAAAAAAAAAAAAAAAAAAIAa33CAGnlAgBrfMIAaeYCAGnnQgBp2AIAafHCAGnRT/GDBgYAAA
+AAABAgMAAAAAIAZ6cCAES0AgAGHwAAAAAAAAAIEAAAAAAAAAAAAAAAAgA9ykIAPeMCAD3cwgA95E
+IAPcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgA91UAAAAAAAAAAAAAAAAMDEyMzQ1Njc4
+OWFiY2RlZkFCQ0RFRgAAAAAAAAAAAABBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdo
+aWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvAAAAAAAAAAAAAAAAAAAAACAAIIwAAQAAIAAg
+bAAFAAEgACBQAAMABSAAIDAABwAAY4JTYwAAAAD///////8AAAAAAAgAAAAFAAAABwAAAAAAAACI
+AAAAhQAAAIcAAAAAAAAAQAAAAQAAAAKAAAAAAAAEBAgABAQIAAQECAAAAAAAAAAAAAAAgAAAAgAA
+AAKAAAdDAAAAAAAAAAAAAAAAAP////////////////////8AIQAJAIEAQQAhAAkAIQAJAIEAQQCB
+AEEAgQBBAIEAQQAhAAkAgQBBACEACQAhABEAgQBBAIEAQQAhAAkAgQBBACEACQAhAAkBAQBBAIEA
+IQCBACEAEBBhAQEAgQEBAIEDAgEAAAAAAAAAAAAAAAAAAAAAgAAAAQAAAAIAAAAEAAAACAAAABAA
+AAAAAAAAAAAgAwfgAAAAACADDmgAAAAAIAMH5AAAAAEgAw7UAAAAAiADB+wAAAAEIAMH9AAAAAgg
+Awf8AAAAECADDtwAAAAgIAMIAAAAAEAgAwgMAAAAgCADCBgAAAEAIAMIJAAAAgAAAAAFAAAAAwAA
+AAEAAAACIAZ92CAGfZQgBnx8IAZ7PCAGevwgBnrQIAZ7JAAAAAAAAAIAAAAEAAAACABZZXMAMDEy
+MzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6AAAAAG5vbmUAAAAAYWxsACoAAABkaXNh
+YmxlZAAAAABlbmFibGVkADB4AABOQQAAVjAAAFYxAABWMgAAVjMAAFY0AABWNQAAVjYAAFY3AABW
+OAAAVjkAAFZBAABWQgAAVkMAAFZEAABWRQAAVkYAAHBvcnQAAAAAcHJvdG9jb2wAAAAAZ2xvYmFs
+AABmdW5jdGlvbgAAAABmaW5pAAAAAHJlZwBmaWx0ZXJNb2RlAABmaWx0ZXJNYXNrAAByc3NfZ2xi
+X2NvbmZpZ19tb2RlAHJzc19nbGJfY29uZmlnX29wdGlvbnMAAHNnZV90aW1lcl92YWx1ZQB0cF9w
+bXJ4AHRwX3BtcnhfcGFnZXNpemUAAAAAdHBfcG1yeF9mbGFncwAAAHRwX25yeGNoAAAAAHRwX3Bt
+dHgAdHBfcG10eF9wYWdlc2l6ZQAAAAB0cF9udHhjaAAAAAB0cF9tdHVzAHRwX3RjcHR1bmluZwAA
+AAB0cF90aW1lcnJlcwB0cF90aW1lcnZhbHMAAAAAdHBfYmFja29mZnZhbHMAAHNjaGVkX2lvcXR4
+X2JwX3ByaW9yaXR5AG52ZgB3eF9jYXBzAHJfY2FwcwAAbmlxZmxpbnQAAAAAbmVxAG5ldGhjdHJs
+AAAAAG52aQByc3NudmkAAG5leGFjdGYAbnJhd2YAAABjbWFzawAAAHBtYXNrAAAAbmV0aG9mbGQA
+AAAAbnJvdXRlAABuY2xpcAAAAG5maWx0ZXIAbnNlcnZlcgBuaGFzaAAAAHRwX2wydAAAdHBfZGRw
+AAB0cF9kZHBfaXNjc2kAAAAAdHBfc3RhZwB0cF9wYmwAAHRwX3JxAAAAaXNjc2lfbnRhc2sAaXNj
+c2lfbnNlc3MAaXNjc2lfbmNvbm5fcGVyX3Nlc3Npb24AaXNjc2lfbmluaXRpYXRvcl9pbnN0YW5j
+ZQAAAGlzY3NpX21heF9zZ2UAAABwcG1fbWF4X3pvbmVzAAAAcHBtX3pvbmVfcmFuZ2UwAHBwbV96
+b25lX3JhbmdlMQBwcG1fem9uZV9yYW5nZTIAcHBtX3pvbmVfcmFuZ2UzAGZjb2VfbmZjZgAAAGZj
+b2VfbnZucAAAAGZjb2VfbnNzbgAAAGZjb2VfbmZjYgAAAGRjYgBkY2JfYXBwX3RsdgBkY2JfZGNi
+eF9wcm90b2NvbAAAAGJnX21lbQAAbHBia19tZW0AAAAAaHdtAGx3bQBkd20AZGVib3VuY2V0aW1l
+AAAAAHZlcnNpb24AY2hlY2tzdW0AAAAAU2Vzc2lvblR5cGUAT0ZNYXJrZXIAAAAASUZNYXJrZXIA
+AAAARGF0YURpZ2VzdAAASGVhZGVyRGlnZXN0AAAAAEVycm9yUmVjb3ZlcnlMZXZlbAAASW1tZWRp
+YXRlRGF0YQAAAERhdGFQRFVJbk9yZGVyAABEYXRhU2VxdWVuY2VJbk9yZGVyAEluaXRpYWxSMlQA
+AE1heENvbm5lY3Rpb25zAABNYXhSZWN2RGF0YVNlZ21lbnRMZW5ndGgAAAAASW5pdGlhdG9yTmFt
+ZQAAAEluaXRpYXRvckFsaWFzAABEZWZhdWx0VGltZTJXYWl0AAAAAERlZmF1bHRUaW1lMlJldGFp
+bgAATWF4QnVyc3RMZW5ndGgAAEZpcnN0QnVyc3RMZW5ndGgAAAAATWF4T3V0c3RhbmRpbmdSMlQA
+AABUYXJnZXROYW1lAABUYXJnZXRBbGlhcwBUYXJnZXRBZGRyZXNzAAAAVGFyZ2V0UG9ydGFsR3Jv
+dXBUYWcAAAAAQXV0aE1ldGhvZAAAU2VuZFRhcmdldHM9QWxsAENIQVBfQQAAQ0hBUF9JAABDSEFQ
+X0MAAENIQVBfTgAAQ0hBUF9SAABEaXNjb3ZlcnkAAABOb3JtYWwAAE5vbmUAAAAAQ1JDMzJDAABD
+UkMzMkMsTm9uZQBOb25lLENSQzMyQwBDSEFQAAAAAENIQVAsTm9uZQAAAE5vbmUsQ0hBUAAAAE5v
+dFVuZGVyc3Rvb2QAAABJcnJlbGV2YW50AABSZWplY3QAAE5vAAA1AAAAQ0hOZXQgMS4wMAAAAAAA
+DAAAAAABAAF8AAwBAAAAABAAAAAUIAbQEAAAAxUOQAAAH/wAAB/8AAAf/7SQH/+0kCAG2DAgBtvw
+IAkmMCAJJjAgCgAAIAqAACAKgAAgCuaAAABAAAAAgAAAAAgA4QGOAAABkQyAAAAAIAtksCALZGAg
+C2Tg///z/yALZJAgCwFgAABADh//kyAAAEAaIAsBkAAAEAAAAP/pAAD/4AAAUAAAAP/4AABADQAA
+//cAAA//AAAPQgAA//UAACBAAAAgAAAAxBAAAMABAADIICALAfAgCwIQAADEAAAAyAAAAMQwAADE
+MQACEAjg//4AIAsCMP//9/8AAOgAIAsCUAAAyBAAAMRFAAAQAQAAIHwAADIAAADMAAACSe8AAP//
+AAJJ8OEAXgDhAC4AIAtoMCALaJAIAAAAH/zgdCADRNAf/61wIAsDICALBFAf/60gIAsDUA88AAAg
+CwPgIAOvICADsQAgCwSwDwAAACALBRAf/4cQH/+FQB//iAAgCwWAH/+wECALBcAgCwYAIAMHkCAD
+DCAgAwugIAtqICADC4AgC2pQIAtpACALaWAgC2nAH/+tzB//k6QBAAAAKAAAAOAAAAAAD0JAIAAg
+rAACAAAf/67UAP///yALanAgCwaQIAsG8CALB0AgCwbAIAOM9AAIAAAgA5HYIAsI0CAG1mAAD/wA
+H/+ZKB//mnAAADAAIAsJECALCaAgCwpAVQAAABAAAAAOAAAAIAtrECADDJgAAAgGIAsK0AAAD/4g
+A21sAgAAACADcjwf/640IAsLIB//rbgf/6o0IAsL4CALazAgCwuAIANeYCADaDQgCwxAH/+teCAL
+DLAgCw0AIAtrwEAAAAAAAPAAIAsNQAAehIAgCw2wIAsOECALDoAgBtuwIAbYcCALDwAgCw9A7///
+/yALD6AgCw/w/f///+EAAAAgCxLAIAsQUCALEMAgCxEgIAN0tCALEYAgCxHgIAsSMCALEnAgC2wA
+IAMMkB/83gAf/6u0IAMMUAQAAAiBAAAADAAAAB//h3Af/4hwIAMOQB//h1A/////z////yALEyAf
+/4gsIAsTYCALE6AgC2wgIAsUIH///6v//y5cAADRpP//0E0AAJxOIAsUoCALFGAgCxPgH/+HbAAA
+SAAgAwxUH/+HaB//h9AgCxTgIAOVhCALFZAf/61sH/+thCALbLAgC2xAIAtskCADmFQD/9AAAEAA
+AABQB/8AAQAAIAttwB//mfAgC20wIANeOCALbfAgCxYgH/+tdP/9//8gCxZgH/+tvCALF3AgCxaw
+AExLQCADlUAgCxcAIAsXsAQBAAgAIAAAIAN3NCALF+AgCxgwIAsYkCALatAgA6fkIAtqoCALHBAA
+AI4CIAscgCALHNAgCx0gIAscQCALHXADgAAAH/+wICALHcAgCx4Q//f//yALHwAgA6LwIAsfwCAL
+IIAgC26AH/+r7CALblAgC26wIAOmKCALbtAgA6b0IAOhCCADlaAgC28AIAtvQCALb4AgCyDAIAsh
+AAAAF3AgAwnkIAtw4CALcJAgC3BwAAAnECADw2QgC3BAIAtwwCADCcQAAeKAIAsh4B//rWjhAhYA
+4QIaAP//yP///xf///8f/wACGRwAAhl8AAIZnAACGfwf/62A///x/wACGQDAAAAAAAIaJAACGqQA
+AhooAAIaqAACGjQAAhq0AAIaMAACGrDhAg4AAAAThyADCrQgAwqkBAAAAeECEgAAACHBIAsiMAAC
+EOD//7//AAIcIOEAegAgCyJgH/+sDCALIoAgCyKwIAsi0B//quQgCyMAH/+qAOEAfgAf/6wcAADz
+/wQAAAAUAAAAKgAAACAD44Qf/6/AGgAAACALJACD/7cAg/+2ICALcgAf/64UH/+w6DAAABAgC3Lg
+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
+AAAADxMAAAAAAAAQBAAAAAAAAB8UAAAAAAAAIAUAAAAAAAA/FQAAAAAAAEAGAAAAAAAAgAcAAAAA
+AADAFgAAAAAAAQAIAAAAAAACAAkAAAAAAAMAFwAAAAAABAAKAAAAAAAIAAsAAAAAAAwAGAAAAAAA
+EAAMAAAAAAAYABoAAAAAACAADQAAAAAAQAAOAAAAAACAAA8AAAAAAMAAGgAAAAAA4AAbAAAAAAEA
+ABAAAAAAAYAAHAAAAAABwAAdAAAAAAHgAB4AAAAAAgAAEQAAAPLVEpjy1RKY8tUSmPLVEpjy1RKY
+8tUSmPLVEpjy1RKY8tUSmPLVEpjy1RKYA4UbGAOFG5jy1RKY8tUSmPLVEpjy1RKY8tUSmPLVEpjy
+1RKY8tUSmAAAAAAAAAAAAAAAAP//AAUABgAHAAgACQAKAAsADAANAA4ADwAQ////////AAAAMgAA
+A+gAAAAoAABOIAAAAAAAA9CQAJiWgAAPQkAAmJaAAAAcIAAAAEsAPQkAAAPQkACYloABAQAAAwMC
+AgUFBAQHBwYGAAAAMgAAA+gAAABkAADDUAAAAAAAA9CQA9CQAABMS0AD0JAAAAAcIAAAAEsAPQkA
+AA9CQCPDRgADAgEABwYFBAsKCQgPDg0MAAAAMgAAA+gAAAAKAAAB9AAAAAAAAAPoAJiWgAAPQkAA
+mJaAAAAcIAAAAEsAPQkAAAPQkACYloADAgEABwYFBAkJCAgLCwoKAAAAAAAAAAAACgAUAIwAggBk
+AFoAoACWAHgAbgBQAEYAPAAyACgAHgAKBM4EkgnOCZICsgRWBOIEpgO2BBoHsglWBl4CdgniCaYH
+TgI6CLYJGggWBiICxgRqAJYDegFyB3YAvgPeBPYEugRCA6ICYgc6Bg4AggPKBC4AbgBaAyoBNgHq
+Az4HxglqAUoHEgWWCHoGwgH+BnICigNSBeYFvgjeAZoH2gn2CboJfgeeCUIIogkGAV4HYgJOByYD
+FgEiBYIIZgWqCMoJLgiOAQ4FbgVaBUYG1ggqBjYCEgHCBuoIPgDmBoYC2gR+Ap4EBgZKAiYIAgNm
+AKoDjgX6AEYB1gb+Bq4F0gGGB4oI8gMCCFIA+gUyAa4A0gPyB+4AMgaaAu4FHgAeBQoAAAnECYgE
+2AScB6gJTAnYCZwIrAkQArwEYAFoB2wE7ASwAlgHMAPABCQDIAEsB7wJYAWMCHAGaAKABbQI1Ans
+CbAJOAiYB1gCRAEYBXgIwAkkBWQFUAggBiwG4Ag0AtAEdAZAAhwAoAOEAcwG9AF8B4AISADwAMgD
+6AaQAuQFAATEBIgCqARMA6wEEAZUAmwHRAIwCAwGGACMA3AAtAPUBDgDmAYEAHgAZABQAeADNAFA
+BwgGuAH0A0gF3AGQB9AJdAeUCPwBVAccAwwIXAWgCIQBBAU8BswCCAG4ANwGfAKUA/wH+ANcBfAA
+PAakBcgI6AL4BSgBpAfkACgFFAAUAAAEyQSNCckJjQKtBFEE3QShA7EEFQetCVEGWQJxCd0JoQdJ
+AjUIsQkVCBEGHQLBBGUAkQN1AW0HcQC5A9kE8QS1BD0DnQJdBzUGCQB9A8UEKQBpAFUDJQExAeUD
+OQfBCWUBRQcNBZEIdQa9AfkGbQKFA00F4QW5CNkBlQfVCfEJtQl5B5kJPQidCQEBWQddAkkHIQMR
+AR0FfQhhBaUIxQkpCIkBCQVpBVUFQQbRCCUGMQINAb0G5Qg5AOEGgQLVBHkCmQQBBkUCIQf9A2EA
+pQOJBfUAQQHRBvkGqQXNAYEHhQjtAv0ITQD1BS0BqQDNA+0H6QAtBpUC6QUZABkFBQAACb8JgwTT
+BJcHowlHCdMJlwinCQsCtwRbAWMHZwTnBKsCUwcrA7sEHwMbAScHtwlbBYcIawZjAnsFrwjPCecJ
+qwkzCJMHUwI/ARMFcwi7CR8FXwVLCBsGJwbbCC8CywRvBjsCFwCbA38BxwbvAXcHewhDAOsAwwPj
+BosC3wT7BL8EgwKjBEcDpwQLBk8CZwc/AisIBwYTAIcDawCvA88EMwOTBf8AcwBfAEsB2wMvATsH
+AwazAe8DQwXXAYsHywlvB48I9wFPBxcDBwhXBZsIfwD/BTcGxwIDAbMA1wZ3Ao8D9wfzA1cF6wA3
+Bp8FwwjjAvMFIwGfB98AIwUPAAAACgCMAG4AlgB4ADwAUACgAIIAZAAyAEYAWgAoAB4AFAAAAIcA
+aQCRAHMANwBLAJsAfQBfAC0AQQBVACMAGQAAAAAwBAAAMBAAAFkIAABZpAABlDAAABAkAAAQMAAA
+EDwAABDcAAB7LAAAezQAAeKMAAHmjAAB6owAAe6MAAHyjAAB9owAAfqMAAH+jAAAjcwAAH50AACP
+3AABkVgAAI/8AAB1HAAAdRgAAHUQAAB34AAAd+QAAHf0AAGcPAABEHQAARCEAACUCAAAmFwAAJYM
+AACWFAAAliAAAJYsAADQKAAAkAgAAhDcAAIw3AACUNwAAnDcAAGQVAAAYBwAAaDYAAGQkAAAd+AA
+AHfkAAB39AAAeXgAAHn4AAGUBAAB48AAAefAAAHrwAAB78AAAfPAAAH3wAAB+8AAAf/AAAGUDAAA
+MAA////AAAAwCD///8AAAFkQrIAAAAAAWax+JQAAAAGUEB////8AAZQ0AAAAEQABlAgf////AAGU
+OAAAABEAABAof////wAAECx/////AAAQNH////8AABA4f////wAAEEAPRAAAAAB7KAAf/+IAAHsw
+P//u/wAAezgAAAABAAB7QD//7v8AAHwkAB//4gAB4ogACAAAAAHmiAAIAAAAAeqIAAgAAAAB7ogA
+CAAAAAHyiAAIAAAAAfaIAAgAAAAB+ogACAAAAAH+iAAIAAAAAI3I/////wAAjdD/////AAB+cH+/
+//8AAH54f7///wAAfgACwAAAAAGRVAH///8AAZGcAf///wAAj9gAf//9AACP+P////0AAHUUAAAA
+BwAAdQwAAAALAAB33AAAAAMAAHfw/////wABnDgAAYBAAAGc+AAAAAMAAJAEAAAAPgABEHgA////
+AAEQfAD///8AARCIAAAAAAAAlAQAAP//AACUEAAA//8AAJhUAAAB/wAAmFgAAAH/AACWCAAAAAAA
+AJYQAB///wAAlhgAH///AACWHAAP//8AAJYkAA///wAAligA////AACWMAD///8AANAgAAAABwAA
+0CQAAAAHAAIQ2AAAAAMAAjDYAAAAAwACUNgAAAADAAJw2AAAAAMAAZBQAAAALwABoNQAAAGDAAGQ
+jAA4AAAAAZCYADgAAAAAeXQAAAAvAAB5cAAAAAUAAHn0AAAALwAAefAAAAAFIAMPBCAI02wgAw8I
+IAji0CADDxQgCOH4IAMPICAI4aggAw80IAjg+CADD0wgCN+QIAMPXCAI3nggAw9kIAjeUCADD3gg
+CN4oIAMPiCAI3fggAw+UIAjc3CADD5wgCNy0IAMPsCAI3IAgAw+8IAjbFCADD8QgCNpsIAMP1CAI
+2WggAw/gIAjYWCADD/AgCNdQIAMQACAI1iQAAAAAAAAAACADEBggCNM0IAMQHCAI0rggAxAkIAjS
+gCADECwgCNJIIAMQOCAI0hAgAxA8IAjR2CADEEggCNGgIAMQTCAI0vAgAxBUIAjRaCADEFwgCNEw
+IAMQZCAI0PggAxBsIAjOKCADEHQgCNCoIAMQgCAI0KAgAxCIIAjQaCADEJAgCNAwIAMQmCAIz/gg
+AxCgIAjPwCADDtwgCMxMIAMQqCAIzBQgAxCwIAjL3CADELggCMukIAMQyCAIy2wgAxDQIAjLNCAD
+ENggCMr8IAMQ4CAIytQgAxDsIAjKrCADEPggCMp8IAMRECAIylQgAxEsIAjKLCADETwgCMoEIAMR
+TCAIydwgAxFcIAjJtCADEWwgCMmMIAMRfCAIyWQgAxGMIAjJPCADEZggCMkUIAMRpCAIyOwgAxGw
+IAjIsAAAAAAAAAAAIAMRvCAIx5AgAxHAIAjFxCADEcwgCMTgIAMR4CAIxLAgAxHoIAjEgCADEfQg
+CMRQIAMR+CAIxCAgAxH8IAjD8CADEgAgCMPEIAMPgCAIwtAgAxIQIAjCqCADEhggCMKAIAMO6CAI
+5cAgAw7wIAjk8CADDtQgCORAIAMO/CAI45gAABAhIEIwY0CEUKVgxnDngQiRKaFKsWvBjNGt4c7x
+7xIxAhAycyJSUrVClHL3YtaTOYMYs3ujWtO9w5zz/+PeJGI0QwQgFAFk5nTHRKRUhaVqtUuFKJUJ
+5e71z8Ws1Y02UyZyFhEGMHbXZvZWlUa0t1unepcZhzj33+f+153HvEjEWOVohninCEAYYSgCOCPJ
+zNnt6Y75r4lImWmpCrkrWvVK1Hq3apYacQpQOjMqEtv9y9z7v+uem3mLWLs7qxpspnyHTORcxSwi
+PAMMYBxB7a79j83s3c2tKr0LjWidSX6XbrZe1U70PhMuMh5RDnD/n+++393P/L8brzqfWY94kYiB
+qbHKoevRDMEt8U7hbxCAAKEwwiDjUARAJXBGYGeDuZOYo/uz2sM90xzjf/NeArESkCLzMtJCNVIU
+YndyVrXqpcuVqIWJ9W7lT9UsxQ004iTDFKAEgXRmZEdUJEQFp9u3+oeZl7jnX/d+xx3XPCbTNvIG
+kRawZld2dkYVVjTZTMlt+Q7pL5nIiem5iqmrWERIZXgGaCcYwAjhOIIoo8t921zrP/sei/mb2Ku7
+u5pKdVpUajd6FgrxGtAqszqS/S7tD91szU29qq2LneiNyXwmbAdcZExFPKIsgxzgDMHvH/8+z13f
+fK+bv7qP2Z/4bhd+Nk5VXnQukz6yDtEe8CALAAAf/6qQH/+VIAAAE4gf/5PsAAALuAAAQA0gCwCQ
+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
+H/+rCCADCAAgAwogH/+C4B//rgQgC1oQH/+qKB//qiwf/6owH/+qZB//qmAf/6pcH/+qWB//qlQf
+/6pMH/+qPB//qkAf/6pEH/+DEB//qbAf/4PAH/+uJCALWlAf/5xIIAtaoB//nBwgC1rQIAtbAB//
+g9Af/5uMAAAlgCALWzAgC1twH/+bNB//g/Af/5swH/+ZyB//mRwf/4P4//8AAAPn/BggC1ugH/+E
+AB//qvAgAwg0H/+q7A////8gAw2gH/+a7CALXAAgCAok///04CAICdT///UwIAgIlCAICcz///Zw
+IAgH9CAICIz///cQ4QBqAAAAgID//wj6AABDBAAAfTP//8P/AIAAAP8A/wAf/4RQAQEBAQAAZAwf
+/4RwVapVqgAAqqpaWlpapaWlpTMiEQAAESIziBIAAyADDgDhAGYAAABqGP//f3+AEAAAH/+EkAAA
+amAAACEBAABigB//hKAACAApAAB0BAAAYkQAAGIAAABi1B//hLAAAGLYAABi6AAAYtwAAGL4AABi
+5B3NZQAAAAnDAABi7B//hNAAAGLwH/+E4AAAYvQf/4UAAABi/AACCNUAAGMAAAEEawAAYwQAAgjW
+AABjCAAAYwwf/4UQAABjEAAAosMAAGMUAABjGAAAYyAAAYagAABjJAAAYygf/4UgAABjLAAAYzAA
+ACcQAABjNAAAYzgAAGKQABEREwF9eEAAAGoAAAB1AB//hTAAAGKMAABhqAAAdFAAAE4gAAB0HAAA
+YsAAAGLMAABixAAAYsjhABIAIAtfMOEB3gDhAeYA4QHqAOEB7gDhAfIA4QH2AOEB+gAf/6xY//x/
+/x//k7yAAAUAAAB+6IAABwAgC53QgAAEAIAABgAgC52wD//wD//w8ADf//4AH/zAAAAAgGD//9ff
+IAklYCALX6Af/5QwIAkmLCADB5Af/5O4IAtf0B//rYggBtX4H/+smB//q5Af/66wH/+VIx//q/wA
+lAAAIAwAAAAMAAAgC2AAIAbWECAG1Wgf/5OwAEQAAPgAA/8f/5ogAABACQgAAAEAAAnEH/+cdN6t
+vu8gCAWEAAJiWiADDjAgC2BQIAud8CALYCAgC2BwH/+rWCAKAAAACgAAIAtgkOL//gAf/5i8IAqg
+AB//rawgCuBAbBAGwKT9+qwFoBtFAFutNsBQ9/qoBeAEBQD3+qYFoACaAAAAACpgfPVABHQiAJ0A
+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
+9WBABXC1TQALqgEc4irqZiMpaASAAOSvCAnwBIAA/iCGFeALZQD+7wAP8ApVAFuQooIU0Q8qZheU
+FFuOjPtABADQCRUA5BIELMgKgAD4ycYV7/rOAAAAAGwQEJMU4uGwGUgEgAAV4aqZFSsiZidSmipS
+kixSkS1SkOhSmS1WQoAA6noIDmZCgADsfAgO7kKAAK19/CJGFeAGBQD8ImYVr8MFAOoWFCxGQoAA
+6HcIDYCOAAAvIpnO+/ggiBXgAjoA2mBbbL4Z4XsJqQgokoBngAttCAUqkoBnoAJj//MpIpkPAgDJ
+nsChW2y1GeFyqakrkoBnsAxtCAUqkoBnoANj//MAKSKZJla2LyJmHOGOG+GOK1ax+rZmFeAKJQAq
+VrksVroJ/wgvVrKr9PS2hhWgDQUA5Fa4J/j9AADz4AQH8A4VAFtsZYkUKyJmKZw/A5kB6VarJaGh
+gAAuUqovUq3TDwnuDA/uDLHtDu07HuHTDR0SDt00ZtRzLwpkD98s/+ABB/AKVQDs4c0f9wKAAO4W
+CC//goAA/iDGFeALBQBbkEZbbIgT4ZAmVn8vMsgkMsQoMsMpMsIqMsErMsAtMr4uMr0sMr8uVoCu
+3S4yxS1Wga3MLFaCrLstMscrVoOrqiwyxipWhKqZKzLRKVaFqYgqMtIoVoaoRCky0yRWh6T/KDLU
+L1aIr+4kMtUuVomu3S8y1i1Wiq3MLjLXLFaLrLstMtgrVoyrqiwy2SpWjaqZKzLbKVaOqYgqMtwo
+Vo+oRCky3yRWkKT/L1aRKDLgr+4uVpIkMuGu3S1Wk63MLFaUrLsrVpWrqipWlqqZKVaXqYgoVpio
+RCRWmVuJ3yoWEFuJ3SlSrSRSri1Sqvkv4BXvjgUA7pkBAgBpgAAvUqsP3QwNTTYoUqjIjwmoEaiY
+eNMI+LWmFaAAHgAAwJDpFg8kltGAAIwfZMM4LFaaLTLWJFKSKlKQKFKR61KZKiZCgADkxAgNVkKA
+AOrJCAxGQoAA6MgIDd5CgACry5sa6BYJLu5CgAD4IkgVpK0dAG2pBQgAhgkCYfoiSBWmvR0AW2wi
+LTLX6RIJLu5CgAD4ImgVpK0dAG2pBQgAhgkCYfoiaBWmvR0AW2wYLTLY0w8J3RH4IogVpK0dAG2p
+BQgAhgQCYfoiiBWmvR0AW2wPLTLd0w/pEgou7kKAAPjgaB2krR0AbakFCACGCQJh+uBoHaa9HQBb
+bAUnUqoqUq6aG+p3DAsgBIAABOQWAQIA23BbkWEE5BYqCgFba/iXEBThQ48b/cKABaALhQD6IiYV
+oA0VAOT/CA1wBIAA/iGGFeAKVQBbj7bZYBjgtCoSEYscqKgoFhUrhoEnhoImhoMJ5BaZHQECACiC
+gwTqMCsaAltr3gjqMCkSFSmSiOkWDiSAqYAABOow+iIoFaELJQBba9YI6jCKHQrkFgSKDFtry9ig
+jh7+IqgV4ApVAOzhIBunQoAACEQs//EIFeALhQD0IAYVoA0VAFuPlSgyvSlSqiZWripSqyZWqxbh
+FvsvAAy/xwUA6VaqJAq5gAAsUfXAs3ywD/QAQh3gLQUA/CDmFeAAOgDA4P4g5hWgBWUAhBYqEhAf
+4QmLGC82qe82qif4MQAALzasLzatW/syixcqYgEFuwjrqigKWASAAFv6t+agoW0YBIAAW/ozLGL2
+ZMBAKmL9LGL+JGL1HuD4K2L8HeD4L2L4rrsNuwErZvcrZvsL/wwEtAz1gABGMA4VAOxm/if4/QAA
+9+AEB/ANBQBba2wvImZk8JnAgCli7MyX8AD0DaAIBQAAKmLzKWLwJWLxK2LtqJioVexi9CKo/QAA
+B1UB+q8AD/ANBQDlZu4n+P0AAPfgBAfwDhUAW2tZ2FCKFSimAFuKAluQ19Iw0Q8AKyKZZbvJ/++U
+DaANBQAAAClSuCxSsgmrEQuZDO6ZAQYAwYAALVK3LFKzDdw5fJMH+LcGFeAAGgDAkPgh5hXv8/IA
+LyKZZf9f+cASBa/9egD6IggVoAsFAFv66v/75A2gAwUAwKX9wXYFoAtlAFuPMP2//gXv7e4A/UgA
+FrALZQD9wUQFoAoFAFuPKRzgs/Qh6BWgChUA9LNGFaALZQBbjyTHJNEPAAAAbBAGW2uIFuCZ0w8m
+YX8Gpjdba3Ic4Kgb30UX4Kcd4KcY3+cU4HIKbzcogX796AAXsA4VAP6DJhXgBQUA5YAdZrPRAAAa
+394voX/ooYAvgH4AAOmhgSwAPgAAZJGiW2tb+76qBeQNBQD7oAjzoD71APmgaB3gChUACZ0P/6AC
+Br/OBQAO3QEtRhcc34kpQhcd3yf7niYVoAglAOrgiByJ+gAAKaB8LKB9LdCACVk3DJk3LKB+KqB/
+0w/9IEAEsP0RAPsgQASw7QEA+SAgFeAMFQD/jQAMsK0JAPsNAAyw3RkA+O+QFaAONQD/zQAM8ApF
+AA2pOe1CDCTj9QAADKk4CFg3KnB9JUDLLHB+Cog3KnB/J0DKDIg3Cog36Xc3BEAFAAAIVTcoQm36
+gagVp3cBAPaZRh3nVQEA5UTLJAOhgAAc4F0NPiymXy/wgAotLK7bpnr7UBAVoBKFAALYLALpLKuq
+qv8C8iyvmamIqCL8UAARMAtlAPIgBhWgClUAW47C8oPmFaACBQDRDx3f5+rTD37IBIAA//t8DaAK
+JQAAAADqsyZ9yASAAP/7MA2gCjUAKEKgik2NTGWPhQq6Ng29NppN/IGGFe/96gAd33Xq0xB+yASA
+AP/6fA2gCkUA0pDRDx3f4+rTDH7IBIAA//ogDaAKVQAZ30b/+fQNoAoFAAApoX16nwUvoYJk8PUo
+0Hwp0H0q0H4IWDcJiDcp0H8tsIAKiDf5AEAEcAIlAPkAIBWgnQEA+c0ADHD9EQD475AV4D0JAPJN
+AAxwDjUA/80ADHAKRQDymVAV4N0ZAA2oOS1wfelZNwRb9QAAC6g4JUDLKnB/CDM3+u/QFeczAQAG
+MggNmTcLmTcKmTfiIIAkyAUAAAlVN/KZRh3nVQEA5l8ICW1CgAD/8BAV690dAPSZZh3gFYUABdgs
+6t8XH/VCgAD6gaYVq+4dAAXpLA3jCAMiCAL/CAX1LA+ZCAmICPigAEKwC2UA6kYMKq6CgAD0IAYV
+4ApVAFuOZPSD5hXgAgUA0Q/SUNEPAABsEAwU3ysc3+wS3n0T35eOx4XGhsWIxCnAAuvBACDQQQAA
+K6UA6aQCIPiBAACY8JbxJfYC/+BmFaANNQAX3+AuIizmQqQmYIEAAOjAAiDYwQAAKLQC/YAEFaAK
+FQDstQAgyEEAAPLABAXxZnEA+MAARPAFBQD7QgAK8AiFAOUkqSDggQAA+SAQFeAKdQDpJKgqgQqA
+AG2KDyvBByslVe67CHZj+QAAsKrHr+zfAh3wCoAALiYtLkKkGd/CK8F/LyCpLCFV6e4BDUVCgADo
+7gIPgQqAAO5GpC5gCoAALCYt+6ANEOIAnQAvIkYtcnQLPznvJkYmkbmAAPWgEsCSAJ0A9aAT4RIA
+nQD1oBTpkgCdAPWgFfISAJ0A9aAW+pIAnQD1oBgDEgCdAPWgGSOSAJ0A+GFgFaAKRQD7AAQA0AMV
+APxgAQHQC2UA7N+fGfAEgABbjgv6SMgVoDj1AO7ekRD4wQAA/sAAR/GTHQDqkzkKggqAAPnVyBXh
+M50A6uKrIYXhgAAqIisDqixbi+oX30gocqMOiBH7AAQA0AX1AOCrGgqoCoAALEKE+kXIFa/49QAI
+VQMMXAEMuwIrRoQDqixbi90tcqMO3REA0QQAqxosQr3p3nMQ0MEAAKpqKqAADFwBLZKrDLsCK0a9
+LJKuKZKtDd0J/YAAhjA79QDqmSgO7oKAAPxuAA7/ygUA65kLBuj9AADq3QEOZoKAAPxIBhXjzB0A
+6pkBBmD9AAAKzAEsJkL4SIYV4AIFANEPL/AALuKtCZkJ6qoJDM6CgAD9UAAVM5kdAPkn4BXjqh0A
+/8MAD3/PBQDvmQEFUP0AAA+qASomQCkmQgjuCw/uAf5IhhWgAgUA0Q8rIi76RWgVpAwFAAy7Nysm
+LguqN1tqLOrfSx0oBIAAJSYrKaJBJSYuJXZw5XZyJI4pgAAroX8JnAkPzBH7u8QFoswdAKy7q1sL
+qjYqJisqJi5bah0uIi4c3zz8RWgV4AtlAOXoDA14BIAA+CAGFaAKRQBbjaIqIitbahPqIi4tSASA
+ACkmK1tqEComLhveaAWtDCwiKy12cyuxfwXKDPruJhWv9wIAJUKDKgp49GAAAvALZQD0oUAV4Bz1
+AFuINu1ydC0YBIAA/kjIFe/3ggAlQoMqCpgPAgD0ZAAC8AulAPShQBXgHPUAW4gr7XJ0LRgEgAD+
+SMgV7/bSACVCgyoKuPRoAALwC+UA9KFAFeAc9QBbiCHtcnQtGASAAP5IyBXv9i4AJUKDKgrY9GwA
+AvAbJQD0oUAV4Bz1AFuIF+1ydC0YBIAA/kjIFe/1igAlQoMqCvj0cAAC8BtlAPShQBXgHPUAW4gM
+7XJ0LRgEgAD+SMgV7/TmACVCgyoaDPR0AALwG7UA9KFAFeAc9QBbiALtcnQtGASAAP5IyBXv9EIA
+JUKDKhokDwIA9HgAAvALBQD0oUAV4Bz1AFuH9+1ydC0YBIAA/kjIFe/zkgAlQoMqGjj0fAAC8AtV
+APShQBXgHPUAW4ft7XJ0LRgEgAD+SMgV7/LuACpyjgWqCSomK/pFxhWv+UIAAABsEAYZ3bzi3s8Z
+OASAACiSEuYicyQA+YAAIgoA3WD+wQgVoApVAP29kAWgOwUAW40x0Q8AJiKLKyKF+FDIFe8oBQD4
+wABDP/oFAOpmAQWAuYAAKyKKC7k5eWMJ9lFmFaAAIgAAAMBgZGBj5hYBIwUxgADaYPwcAh2gCwUA
+W4XSjREa3gz8TmYV4UsFAFt3COoSAS1wBIAA23DsNAAKaASAAO6mCCrwBIAAW/Io+UBoHeALFQDq
+uTkNEASAAOkWACUDYYAAwPAJvzhl/0/RDyYigCsigSgifukifSMwPQAA6mYBBYUJgAAImAwIuzYp
+InsqbQHkkBVlU4EAAHqzDfpQBhWv/aIAAAAAAAAA//1oDaAGBQD9u1IFoAoFAPwcAh3gC2UAW4zz
+xyTRDwCKEet0AAngBIAA7UQACvAEgABb8Ocd3Wz+IAgV4AsFAPNAaB2gDhUA7NISKUgEgADzzQAM
+sAoVAA+rOALsOOzWEiX68YAAwIAJqDhljqFj/04AAAAAAAAA+yBoHe/9lgBsEAwZ3m8rIAwY3Vcq
+kt0pktPogg0ltLEAABvdcOuwfSzOQoAAqakjnQHjPIAl/ByAAGAAAiOdA/EBgA3gAgUA0Q+pswkz
+EfNAAEH//7YAAAAAAAAb3lvTD+uyBinQBIAAW1ZFHd5X69IFLWAEgADs1uIp0ASAAFtWQB/eUevy
+BC1wBIAA7vbhKdAEgABbVjoY3kwZ3ksrgvsqhuAogvX7egAl7/wFAAy7Aeq0AAQA2YAALJL6KZL2
+DMk5ebMKHN5A+59mFeAAGgDAoOKkAAUKiYAA7d1WEQzJgAAe3jri5j0p0ASAAFtv3OKkAAnQBIAA
+W2/cAq8Msfr14BAwEgCdABvdwxjeMZsc+gAIHeAJxQBtmgIIAmEW3i8X3SES3iwU3gEe3QoY3icc
+3ij8IeYVoI8FAJ8bHN4oKoUjKoU7KoVT+w1kHaALNQArhDcrhGcrhJcrhMf7GIYd4A8lAP8Shh3v
++fUAKYQ2KYRmKYSWKYTG/CGmFaANFQD9DIYd79oBAA7dAu0WDiZjQQAA/CFGFaAJBQAphDQuQp6I
+H/fAI5lQBQUAKIK/L0KdCP0B+eAjFiIAnQCKHOoABQ7IBIAACQJhCQJhjB0e3f+IHhreA5LQ/mAI
+FeAZBQCZ05bUJ9UMmtKY1f3gABewCCUA+eYAD7A7JQD/oCYV4ApVAP/EZBWgDQUAW4xYwLL6k6YV
+4AoFAGVfguKkAAUDeYAA0Q8AGd3oKpLwK5Lxx8Dpku0lUD0AAOyqAQWOyYAAHN3hLMLuDJwMDLs2
+Hd3eLdLryN8srTB8swoe3dr93gYVoAAaAMCg80BoHa/5tgAAAAAAAAD6AAIdoAtlAO3d2h7gBIAA
+W4w5Y/5UAAAY3c6IhsEgCCI26jQACVgEgABbVbcZ3LLqlgstAEYAAMck0Q8U3c4qQhOLTQItEf1P
+AA1//AUA7KoBBYDBgAAsQhKLTgzLOXujCPqCZhWgAB4AAMCg5aQABQnZgABkoWwd3KD5/oId4AIF
+AAWSOOXWDCEBQYAA0Q8AAADAo/27cAWgOyUA/7lIBaANFQBbjBT/95QNoAoVAAAAG92yEt2yF921
+Ft2ylhnm3bITqCEAACpiHicmf5sYKKECJyaAJSaB5SaCJAZZgABaRHAd3Rst0oQsYhqq3e8SCC7u
+QoAArcwuwAf/8BAV4PjFAAjuAf27RAXn7gEAD+4CLsQHnRSJwIrH+iIAFeANFQDsJoMszgKAAO2Z
+AgVQgQAA+CCmFeAMFQBaTQOLGI4Z4iwwIqjBAADrvAEjuMEAAP7/+5UiAJ0AAzoCW28q66QACdAE
+gABbVWfqRoMp0ASAAFtvJf1AaB3gOyUA/bsKBaAKVQBbi9woQoP//oId4AIFAAjyOGQgZdEPAAAA
+APsgaB3v+M4AxyTRD4pIi0mJRftB4BWv/AUA7KoBBYHRgACMRgycDAy7No5DyOuq3n6zB/6BBhWg
+ABoAwKDlpAANdL4AAMCg/bjqBaALZQBbi8Jj/oIAAAD7IGgd7/86ABXcsyJS2+VS3CnQBIAAW1U7
+6kbDKdAEgABbVTMqRsT4mGgV4AgFAChGxylGxQmrDPMvAAy2ux0A+pAmFeaZHQDpRsYp0ASAAFtV
+L+pGgC0AdgAAxyTRDwAAAAAAABzdTu5CxCl4BIAA/JhoFeAKVQD0IAYV4GgFAPggJhWgOyUAW4ud
+HN1GLULG/pioFaAKVQD+kCgV4DslAFuLlyIKAPu5DAWhSwUAW3WDKkb8+7kEBaFLFQBbdX8sGgAM
+rAL7uPwFoUsVAFt1f/4H4h2sDAUA+gDCHaAJBQAY3AcpZq8pZq4pZrApZrUpZrQpZropZrwpZsEp
+ZsApZsIpZsYpZsgpZtMpZtIpZtgpZtosZs0sZs/82qYVoA8VAC9mvipmwypm2S5mzP7ZxhWv/fUA
+/NYmFeALNQArZrj81uYV4AsFAPraxhXgG7UA+tiGFeAdBQAtZtAe26SfjRrdEipmx/7WxhWgH6UA
+L2ayHdyd/boYBaAY5QAoZqz816YVoBgVAChmyi1mu/23zAXj//UA/tqGFeAO9QAuZtst0sIZ3QMp
+ZsnRD44b0w/TD//f4BWgDxUA7hYLJygFAAAF9Tn5398IUgCdAPoAoh2gOyUA/CFIFaANBQBbi0j/
+7xgNoBoFAGwQBBXbxShSFfEAsA3gAgUA0Q8AAAAAAPu4YAWhSxUAW3UsE9zqHdzq/mQEFaACBQD5
+rSgV4Q8FAOrcJx1gBIAA/4YADnDuIQD+TQAMsBQFAPmtJhXhSxUAW3UiJDbkHNzdGNzXGdxmG9tn
+HdzXIjbqHtzULjbb/HumFewCBQAiNuEiNuPyfSYVr//1AC82xf55ZhXgOvUAKjbgKjbiKzbKKTbP
++HomFaP59QD4fQYV4Aj1APh95hWgGxUA+nvGFeAKBQAqNsMqNsIqNsQqNskqNsgqNs4qNtAqNtUq
+NtQqNtYqNtoqNtwqNucqNuYqNuz6fcYVoA9lAP565hXgK+UA/n2mFeAS5QDyeAYVoAIVAPJ6RhWg
+H6UA/njGFeAftQD+ewYV4Ao1APp5hhWgCkUAW4r58qKmFaACBQDRDwAAbBAE87lKBeH6xQAU2+gK
+Cz8pQt8JWRQpNhwoQuEIaBQoNh0kQuMEVBQkNh4S23UiIt4CAkDycgYdoAIFANEPAGwQBPW5LAWg
+AgUAIkZFIkZEIkZDIkZCI0JLI0V8I0V9I0V+8o/kHeMzHQAjRYAjRYEjRYIjRYPRDwAAAGwQBhXc
+ihvbEBTch/O5DAXgBgUA+7f6BaAdBQDqFgAiOA8AAOJMCCpIBIAA6DQACVAEgAAc3H/TD23aIOyG
+YSRAwQAAK4W0KYZR6YZSJMjBAAAqhlPqhlQlUMEAAP247AWgCwUAK1Z/69xzE1BJAABbVFnr2vUT
+MAUAAPwgCBWgHQUA4i0DIiAPAADjPQMjuA8AAOVdAyO4gQAA5VwgIZiBAADkTCAhEIEAAOokAApI
+BIAA7wIACcAEgAD8v/utIgCdABLcWhjbuxbcXPW2ggXgAwUA9wwAFeMkBQArgpUqcoIuUH2rO+lS
+IC3eQoAA66oIB3xMgAAc2roMnCj8UIYVoAA6AAAtCn0NnSgtJoTbYFuF8o4QGNunpCLuKb1xmAUA
+AMAg0Q8AbBAEFNxFKkJ587YoBaAJBQD6fAAFNAgFAG2KCgybEOsm+yTIBQAAZKBRaaFOI0J6KkJh
+W2bzW4hs6tshHSgEgABbiGn+ZyAF0C0FABzcNBvcNAN+QNMP7ss5AeQogAAf2sAPuwJ6NwUY2skI
+uwJ7NxIZ25j5ZgAN8AAyAMAg0Q8AG9wo/mGABxAMhQAe2znTDw67Av5kQAdQCUUAH9wj0w8PAgDv
+uwIB+EiAAChAfQ8CANMPf48CDbsCfzcCCbsCDLsCKyb8BaYMBGMQIyb9GtwXCjoCKib+Iyb/KS0E
+iZAa20Ub3BT9uCQFrz31AA2ZAeuZAgFoEwAA+aAGFeA7hQBbdD/q2zwbQwKAAORvEQtnAoAA7GwC
+C3YCgADv7gILagKAAO09Agt8AoAACP8CD90CDt0C/YYADnA7lQBbdDAoQl32oAATMDMFANMP8QKQ
+DeAFBQAY2rDTDw8CAAhmAtxg6tskGdgEgABbdCUpQl2xVelT6nGYBQAAwDD6YGgdoAsFAPwAAh2g
+DQUAW1PdsTNpPucjCgDaMFtTzLEzaTv1KiLBG9uFC6oC+lgmFaACBQDRD2wQBMAg0Q8AbBAIFtve
+Fdo+KGIh87TKBaAEBQD7t7YFoA0FAPMSQA3gDBUAKhYBnRUd29bsFgQlUVEAAJoS7RYDJvFRAACe
+EBfbJA8CACdylCNi4KdHCXcRBzMIJzIHJ3IOK2If+uoAFaAMBQBbg1D6YyYVoAwFAOtiHyPRwQAA
+W4NL+mNGFaAJBQApdiQpdiUnYtrB4S40BKdHlzAnUID6ACId4B0FAP4Aoh3v/PUA9sAABHXq5QD9
+AoAmVOcBAPhkhh3gGPUA+GQmHaAAPgArNCT+ZCYdperlABjbrSQ0Ii5QUCk1HCs0LSw0Syk0ICk1
+HSk1Hik1ICk0RSk0Kik0Kyk0SSk2Gyo1GSk0NC80KSk0LCk0NSk0Qyk1JvhqZh3k7gEACOgKiIAt
+NFArNFHuNCMsACKAAAAAGdt/+GNmFeDPBQD+Y8Qd4BgFAPhkBB2gygUAW2R4KzEeCroC+mPEHaAE
+cgAAAABvQwssIrgd2mcNzAIsJrj6gGgdoAsFAFtkF2ABcfm22AWgD4UA/mQEHeDOBQAuNR74Y2YV
+oMoFAFtkZSkxHgqZAvhjxB3gA0IALlCIixL9w0AB0AqFAPoAQh2gG4UA7NtzGmgEgABbiaxgASIr
+Nhv6ZAQdoAKKAC5QiI0R/cNAAtAMhQD6AEIdoBuFAOzbaBpoBIAAW4mgYAD0LTYb/GQEHaAB0gAA
+AACOFMjtW2QO6hYFLQnqAADA8J8ULlCIiBD9w2AEUAklAPoAQh2gG4UA7NtYGmgEgABbiY9gALAA
+KDYb+GQEHeAAvgAAAAAAAIwT/GNmFaDKBQD6Y8QdoAuFAPpkBB3gygUAW2QxLTEeCt0CLTUe2jBb
+Y9EKCk0qNRxbZCsuMRwK7gIuNRz+Y6Qdr+4BAO41HynQBIAAW2PC6hYFLQVqAAAsMSDaQPpkcBXl
+zAEAW2NA6hYFLQSqAAD6YGgdoAsVAFtipeoWBS0EEgAAAzoCW2GeKTEce58wfJ89fpdv+oBoHaAL
+JQBbY7otYiEiLSDlXAEiIAUAAPyf6fPiAJ0AYAA+AAAAAAAAAPqAaB2gGwUAW2OvY//RAAD6gGgd
+oAuFAFtjq2P/wfoAQh2gG4UA7NsYGmgEgABbiU5j/6vA4J4VH9npL/B9e/8HghXRD8Yq0Q9bYVqC
+FdEPbBAUH9sPFdsPHNsMK/IrKvIqKfIsLcF+LsF8KFIimBOeEp0RLMGALVIYLlIWnhQtFhacEC/y
+1C8WF6uqLFIcLBYVCpkIK1Ie+iKGFeAHBQD6pAgVoAIFAOoWEySeaYAA+CCmFe/GBQD7tfAFoAgF
+APgiRhWv8vUA+iMGFaALBQAY2jwc2u8ogpCKFCTC7qh47MISLEZCgACoRINHKRIX/7XQBaANBQDj
+Mg4mAWmAAB3ZvSxBMJwzmTKpyS/iEekWFyVI/QAABpkBf9MU/mCGFeAAWgAAAAAA/IYEHe//TgAA
+L0IanzSZNShQnOgWHCQDMYAAK1IXKkBsmh6bH1uKWvwjiBXgDAUAW4mRAqoB/AAiHeAMBQAM3DkK
+2jkMqgLmvgEFASmAACwSGC0SD/4hyBWgCiUA/iOIFeALBQBbiPbwADANr+ulAP5gxhWgCwUAZrLR
+iTUqEhaINg8CAOmICAVQ/QAABqoBKjYH71CdJED9AAAGiAEoFgTvFhsng0GAACtSGSpAbSoWDCsW
+DVuKNvwjaBXgDAUAW4ltAqwB/gAiHaANBQAN7TkM7DkNzALmvwEGASmAACwSGC0SDf4hiBWgCiUA
+/iNoFeALBQBbiNLwADANr+ulAP5hBhXgCwUAZrJBijcpEhWMOA8CAOrMCATI/QAABpkBKTYL6FCf
+JmD9AAAGzAEsFhboFhokA0GAACtSHSpAbyoWCisWC1uKEvwjSBXgDAUAW4lJAqoB/AAiHeAMBQAM
+3DkK2jkMqgLmvQEFASmAACwSGC0SC/4hSBWgCiUA/iNIFeALBQBbiK7wADANr+ulAPxhhhXgCwUA
+ZrGxiTsuEhSIPA8CAOmICAdw/QAABu4BLjYN71CgJED9AAAGiAEoFhXvFhkng0mAACtSHypAcCoW
+CCsWCVuJ7vwjKBXgDAUAW4klAq8B+AAiHeAIBQAImDkPnzkI/wLmuQEHgSmAACwSGC0SCf4hCBWg
+CiUA/iMoFeALBQBbiIrwADANr+ulAPhhxhXgCwUAZrEhLjINjT4qEhOPEq7d7hIBJVD9AAAGqgEq
+Ng8sUKDqFh0m6P0AAAbdAe0WFCYEOYAALFChK1IhKkBxKhYGKxYHLBYQW4nI/CIIFeAMBQBbiP8C
+rQH+ACId4A4FAA7+OQ39OQ7dAuoSHSaBeYAALBIYLRIH/iDIFaAKJQD+IggV4AsFAFuIZIo//mII
+Fe/rpQD+IiYV4ABKAAa4ASgWEfhiBhWgCwUAjRCOEY8S/CBoFaAAOgCNEIwTKTIQKRYRKUE6LDYR
+KEBzLzUsKTYUKDYSrIwoEhKcEyg2E6iYKBYSKUExLjUuKTUtKEEyr5+fEi01MCg1LylBM66OnhEp
+NTEoEhGtnZ0QqKjpEgUkQP0AAAaIAegWEyO4BQAA+P/i/WIAnQDSsNEP0Q8AbBAGGtjd+bQMBaAJ
+dQAPAgBtqgfphsAkQBEAABvaAiuyOBbaARfZ/vFhPA3gAwUAYABwABvZ/CuyOLEzeztkFNlBEtn4
+JEKQIiL8pDQJRBGkIiUhByQhEyogDPpBsBXjVWEAW4IJKSEHKCESBpkB9SYADLALBQDpJQckfcmA
+AOdMCgruAoAADaoCbQgSLiES6sbAJdgFAADuu5h2YBEAAGP/5gDA8O8WACWGqYAAGNlP+CBGFaAA
+igAb2dorsjiMEI0SsczsFgAm6AUAAJ0S+4AFYuIAnQCIEBnZGo4SH9nRKZKQLuB9L/L8qYgJiBH5
+4ABHsAoFAO8WAS8AzgAAY/+8ixLTDw8CACuwfes7qXnQBIAA6hIBJRgFAADTD+qgDCnYBIAAW4VB
+JaEH5KETLRAEgAArIA37QZAVo1VhAFuB0ikhByghEgaZAfiGAAzwCwUA6SUHJH1ZgADnTAoK7gKA
+AA2qAm0IEi4hEurGwCXYBQAA7ruKdmARAABj/+Yf2amP8uLZLReDoYAAHdkj7dKjJuATAAAswpAr
+Il6tzOTZoR5mQoAArLsjsQeEQyqwDPthsBXjM2EAW4GzHdmajdLxo3AN4AsFAOdMCgn2AoAA/0YA
+DTf99QBtCBp00xwf2ZEqxsCP8uRMASXYBQAA77sJdmARAABj/94AACghfm+EAdEPGtmKwJUppr/R
+DwAAbBAGW/Gc5qHabRAEgABb8Sbmoc9tEASAABPZgRXYidMPKDJLmFEPAgBb8EDmobRtEASAAC0y
+svuxPAWv/vUA0w8O3Qn3svAFpt0dACyi2QrdEdMP+naIFeXMAQANzAIsptkpYnbrpuUszgKAACui
+kAsLRwuZAimmkFvvE+ahZG0QBIAAW+3s5qFZbRAEgAAY2BYvMkoPAgAI/wgY2EQvhqtb7b7zsfoF
+4AIFAP3+gh3giAUA9AACHaAHNQApMp4sYk8PAgD3IAeZ0gCdACoynQyrAf1ABy4iAJ0A+gACHaAM
+FQD8AAId4AkFAPggJhXgDgUA+CBGFeAIFQD4IAYVoA8FAFpINic2nenX/hkGvgAAHthKHdlFLeYt
+K1J5x8cMuwErVnktktMe2G8a2UAY2UD7sNIF7//1APumAA6wTAUA7ZbTJFP/AABtyhEpon+rnf8g
+BDwiAJ0AL9aAtKopCkZtmg/pgn8kQCEAACqCfquZKpaAGtg90w8qoID9QsBBUAwlAC1SdgzdAi1W
+ditSfgy7AitWfipir8a/+0AEBXAbBQALqgIqZq9biQEd2Bgs0oLA4Q7MAizWgtEPsIj/ACAV4AoV
+AO+vOQRIBQAA6dI4D/dWAABj/y8AAAD1sAYVr/3yANEPAABsEAQd2Gcs0h7LyyjM/wjKAejAGn5Y
+BIAAbQgMsKnpqgENWASAAHmwAmP/7A+7ER7ZBy/MH/vPhh3l/x0A/8+mHeAKBQAq5H75vCgVoIoF
+AAgAP1uFFQoBP9EPAGwQIlv4xeakiG0QBIAAGtj5Kq0VLKLhK6LgLaLfrLssotwuotutzC2i2S+i
+2K7dLqLXIqLWr+4votUjotSi/yKi0ySi0qMiI6LRJaLHpDMkosYmosilRCWixSeixKZVJqLDKKLC
+p2YnosEpor+odyiiwKiZKKK9KqK+qoga2FKpiKh3p2Yqot2mVaVEpDOjIqL/E9jZr+6u3a3MLTKr
+/WAARbAJBQD+bwgV78cFAPtAAEVwBYUA5NjPFVD9AADnqgEOsASAAOo2ASegcYAAKzD1ZNQL8WGc
+DeMvHQAlMYHdkPagABKwDwUA9SEACvACggAsMPwrMP0tMPguMPkvMPsqMP+t6a+ZmhKbEZwQrJmr
+mRzYXaqZ+CWGFeALZQD4IGYV4ApVAFuG3CoSLMyoxKDwAOgNoA8FAMCx+iVmFeALhQBbiCkuMPUt
+EizTDw8CAP+gAEawDAUAW4ddKBIr+WBAB7CITQD54AQHsEoFACgxgfiAMBXgDYUAD90MDSUo6pkC
+DEMCgAAIVTYpRAEPKCj6AKIdq+WhAP2xMgWriKEA+CAGFaALZQBbhrsGMhTqJAAJWASAAFpCqCsw
+9CkxgPyAMBWgDoUA+88ADrCOBQDkt5NsywKAAA0rKAm7NtawDswCLEQB/bEMBauCoQD6ICYVoA8F
+APoAoh2r66EA/iAGFeALZQD4IEYVoA8FAFuGoupkAArYBIAAW/d95qJzbRAEgABbYwQpMuPvMngl
+aP0AAAfdAe02aiSAUYAADJ4RLjbmFdfvZPc0LFF/JjIqKUKEGtcZiDErQoIqosYJiAgpQoALqgkr
+MiQKmQgJiAgqMuYLZggIZggK0gjmIggGaCiAAAsiDAoiDPoAoh2gC2UA7NhdGWgEgABbhn/qHCAp
+WASAAFv15eah6G0QBIAAFtfXHNgEGNb8iRga2FMlMngf19DomQgFU9EAAOkWCCK16YAAKPF/8QAN
+/pIAnQAvQobulAAHgLGAAK+e/9/gFaCPTQAI7gEuRoWv7ihCiCtChC1Cgikw9u5CgCd4/QAAB/8B
+L0Z/r+6mmSmQgI8xLkaBrt0tRoOtuytGhy4yaquIr4gtMhgtFjcoNmmo7p4wDZkoKRYur+77IFmw
+EgCdACk2Jq3l/L/gFeD9TQAP3QHtNiUsqASAAC8w9yQyF6b/L/CArV4E+SiZGfsgWXASAJ0AKTYo
+LxYbpO7/3+AVoIRNAAjuAe42JyzoBIAALxIbKDIYKjD2/6AARLAbhQAE3iwL7SzuNhkkoP0AAAdE
+AaaqCFgsKDYaKqCAC4ksroWqVaX/C/Usr92tmfigAELwClUA/LAAErALZQDlFgAsaASAAFuGKSQ2
+KSU2KioyJCsy5qRcLDblrLv7b+AV74wFAAy7ASs2I6uqW2IT0Q+l7f2/4BXgxU0ADc0Bf9tmKDJC
+f49gGNc7nhgtMPcO/gwI7jam3S3QgA7+DK5e6TIoJ3P9AAAOzgEF3SguNif9IE7S4gCdAK5e7TYo
+J3P9AAAOzgEuNicoQAHApP2vygWgKQUA+QYADHALZQDoRAEv6ASAAFuGAtEPAAAAAO0yqyK9OYAA
+6dQABrz5gAAoMPX4JaYV49UdAO0WNSwGjgAAKDGB+gACHeAPBQD3AAAUMAoFAPlBAA0wBUoAAADm
+1AAGtTmAAAb7Nws7FOsWKC3QBIAAWkHaLDD8KzD9LTD4LjD5LzD7KTD/reiviJkSmxGcEKyIC4gI
+HNdd6YgIDRAEgAD4JEYVoApVAPggZhWgC2UAW4XaKTD1AlsM5jD0LegEgAD7IEjgEgCdACkWHyoS
+IvjAAEbwDAUALBYh7a0IDfAEgADtFiAtKi4AAP8gaB3gCgUA+iRmFaAIFQD4JWYVr/j1APgkphWg
+FW4AACsw/Sww/C0w+C4w+S8w+yow/63pr5maEpsRnBCsmauZHNc4qpn4JSYV4AtlAPggZhXgClUA
+W4W2KhIpzKbwANANoA8FAMCx+iVmFeALhQBbhwQuMPUtEinTD/+gAEawDAUAW4Y5KBIr0w/5YEAH
+sIhNAAj/ASwxgS5AAfwmqBXgC4UA/28ADfBIBQAI7gIL2ijuRAEuYwKAAAyqNhzXdioWNv+jAAx7
+6qEA/WBoHeALZQD4IgYVq4ihAPggBhWgClUAW4WTKRI2ZJU8Hta0KTYoLjYnrp4pEhAtEi3v1ucU
+gFGAAC42Kyk2LCvyeSryeguqDPomZhWjvR0AKxYqWkF0LjD0KTGA/CZoFaANhQAK3Qzk5PpsywKA
+AC4SKg3uKAnuNi9AASgKgAj/Ai9EAcDw+iAmFaAJBQD+IeYVq7yhAP2umgWr7qEA+iBGFeAKVQD4
+IAYV4AtlAFuFbYkfyJkc1o8pNiasXCw2JS0yJWTQqC0yJ2TQoi0WNBzXQ/5lCBWgClUA/iTGFaAL
+ZQBbhWAvMPcoMiIlMhem/y/wgC4SJi0SNAX/KAjuDP/AJPLiAJ0ALzYopd7/3+AVoIVNAAjuAe42
+Jy/oBIAAHNcwrt8vNiEtMiUuMib+JkYVoApVAPwk5hXgC2UAW4VJLzD2JTIYpv8v8IAuEjIF/yj/
+wCOS4gCdACgSJy82JqWI+R/gFaCVTQAJiAEoNiUqMivIpCsyLFv0DS9ChuUSCCeAsYAAr1X0v+AV
+4I9NAAhVASVGha9VKEJ/JVw/51UBBB7JgAAoQoMpQoIlRoHllQgEHrGAAClCiMiUKkKHZKPUKzIl
+iDGVMCwyaqWFJTZp5cUIBYPhgAApMidkkHEc1qwvMhcuMigpMPYoMhgtMiammSmQgAjdLA/uLC42
+GS8w967YqYim///wEBXgGYUACessCdosqP8J+SyvuwuqCAqZCO02GizOgoAA+CSGFeALZQD4IAYV
+4ApVAFuFCigSJOg2KiKo/QAAB1UBJTYpqFUrMuYlNuUqMiSlu/tv4BXvjAUADLsBKzYjq6oqFjhb
+YPAvMifuEjgn3zmAACUyF///2yqiAJ0AJDD3pkQkQICeGCwyKAVNKC42J/2AGlriAJ0ALTYoLxYY
+pej5H+AVoJVNAAmIASg2JykyGCgyJiwyKSow9gXeLP5jJhWgG4UAC+0spqrs1m8WKP0AACqggAmI
+LAdVASg2GguJLK6Pqv+vTwv0LA/dCA2ZCPiAAEJwClUA/JAAEjALZQDkFgAsaASAAFuE1CU2KSQ2
+Ki0SGP5k6BWgCkUA/a1eBaALZQBbhM3RD8BgCWY29aAnLBIAnQDbYP/hmA2gDQUAKDKrZYjE/+RQ
+DaACBQAoMqvpFgssSgYAAB7V4+2UAAyQBIAA7NaeHKgEgAD5zwAPcApVAP4hxhWgC2UAW4S3L0KG
+yfCvJfS/4BXgj00ACFUBJUaFr1UpMiIqMuYrMmqMMS1CiC5ChC9CguVCgCLA/QAAB4gBKEZ/qFUo
+MPQlRoGl/y9Gg6/uLkaHJTIkrt2dMK3MLDZprLsrNuWrqio2IaqZ+S/gFe+KBQAKmQEpNiPpVQgM
+AFYAACkw9WSWZJUcKzD9LDD8LTD4LjD5LzD7KjD/remvmZoSmxGcEKyZq5kc1gqqmfghphXgC2UA
++CBmFeAKVQBbhIkiMPYlMhgqMPSmIiIggCoWEeUiKA0lngAA9kfgDeAPBQAiFi4oMPX4I+YVoBOm
+AAAAAAD6I6YV4AkVAPglZhXv+fUAKRYlW4XLLRIgLBIhW4UCLBIr0w8MvDcrEiUuEh0vEh8MuwEr
+FiPtEiMv0ASAAO0WHi9YBIAAW4W+LRIgLBIhW4T2LBIeLRIjLxIrKBIlrS0PvzcI/wGt/Q1dDCkx
+gORjTmzLAoAAKhIoCtooCao21qArMnhksvAuQAEoCkAI7gIuRAEpEigoMYGSE5wR/yMACvvqoQD9
+IwANsApVAP2sZAWrmaEA6RYELEMCgAD4oQAKu7uhAPogRhXrlaEA+CAGFeALZQBbhEZj9owV1WgW
+1Wdj9oMAAAAA/6rKBa/rKgDA4AnuNvWgGjwSAJ0A/+wIDaANBQAvQoAlRn/14ABC//CGAChChCVG
+g/UAAEL/8JIAJUaH+KAAQv/wkgAa1hQuNijtNicq4ASAAOusBC/oBIAAW2APLTIo/mToFa/tegAA
+ABrWC+42JirgBIAA6RInL+gEgADpNiUlWBEAAFtgBGP7hgAa1gIvFhguNifrrAQq4ASAAFtf/iQw
+9yUyFy0yKKZE9JAQFa/ysgAs8nkq8noNWzcLOxQrFhoMqgwqFhVaP/8sMPwrMP0tMPguMPkqFhwv
+MPsqMP+t6a+ZmhKbEZwQrJmrmRzVgvsgAESwC2UA+CXmFeAKVQDpFgMmKYEAAFuD/y8SLy4w9CwS
+HCow9foj5hWgC4UADLsM7bQABRMJgAD7wABEsAgFACgWF++ZCA3oBIAA6RYWL4FGAAD+IiYVoAsF
+APojJhXgChUA+iVmFa/69QD6JKYVoAEGAAAAAAArFhL+IiYVoAwVAPwlZhWv/PUA7BYlL9AEgABb
+hTQtEhYsEhdbhGwvEisuEiUtEhIPvzcP7gEuFhkqEh8oEhnoFhMu2ASAAFuFKS0SFiwSF1uEYSkS
+GSgSHC8SK6mIKRIlLhIRD783Cf8B+eAARDANhQAI3QwpMYArEhPk4a9sywKAAC4SGg7eKAnuNigy
+eGSBbilAASoKQAqZAilEAS4WFCoSGigxgZsR66UoCuAEgADoEhwsWwKAAA+qKJgTC6o2KhYx+iKo
+FeuqoQD6IAYVq6WhAPogRhWr7qEA+3QABfAKVQD6IIYV4AtlAFuDrCkSMWSRACk2KB7UzCUWMC42
+J66eLRIw6RIUJoBhgAAtNiwuNiuu3mSY3y42JfhkxhXv42YAAAAoMqtkjRQpQAErCoALmQL4gCYd
+7/QiAAAa1XsvFhjrrAQq4ASAAFtfeC8SGP5k6BWv2IoA22D/ziwNoA0FAMDw//K8DaAMBQDAYAlm
+NvWgEnwSAJ0A2mD/8rgNoA0FAAAuNiUb1Wr9oGgdoAgFAOg2JizoBIAAW19kHNUKJTIm/GSoFe/T
+DgAAAAAa1V7uNicqYASAAPwhKBXgCQUA6TYoJVgRAABbX1gc1P8kMhctMigqMPcuMiclMiamqiqg
+gPojZhWv0uIAAP/fLA2gDQUAHtSN9CYGFe/8GgAsMqtkzpYoQAEpCoAJiAL4gCYdr/oqAAAAAAAA
+AP4AAh3gCgUA+iJmFa/5LgDA4AnuNvWgDrwSAJ0A//k0DaANBQCLHo0cLBILLzD1/iPmFeAIFQAo
+FisNzAwMuwhbhKMvEh8uEhGNHa/u/6AARrAMBQBbg9goEisiFi75YEAHsIhNAAj/AfPgDFqiAJ0A
+jRwiEi71oABG8OVNAOI2Jibr/QAADt0BLTYlLzD3LhIfJTIXpv8v8IAvFhvl/ygPAKYAAPHwkA3g
+DAUA/EAARvABMgCfGSoSH4sejBv8QABG8A4VAC4WK50aDcwMrLtbhH8uEh+NHf+gAEawDAUAW4O1
+LhIrjRqPGf9gQAYw7k0ADswB/4AF2uIAnQAvNiil3v/f4BWghU0ACO4B7jYnL+gEgAAc1KUvEhso
+MhgqMPb/oABEsBuFAAXeLAvtLO42GSSo/QAAB1UBpqoIKCwoNhoqoIALiSyugqoiov8L8iwP3QgN
+mQj4QABBcApVAPxQABEwC2UA4hYALGgEgABbgwQlNikiNiqMG4sepSoKzAysu1vx0dWgHdQgddsK
+LkABwvAP7gIuRAEY1Bz1H57S4AIFAMck0Q/aYP/p1A2gDQUArS0a1NYtNifsNigv6ASAAOusBCrg
+BIAAW17RJTIXLTIoKTD3LjInIjImppkpkID4I2YV7/zCAAAAAAAAAAD/8jANoA0FAIocKjYlGtTE
+7FQACWgEgADvNiYlWBEAAFtevyIyJi0yJSsw9foj5hXv+bIAAAAAAGwQBtog+iBoHeA81QBbbt0Y
+1LiJECKCfwqSO+KGfy0QBIAA0Q8AAABsEAbaIPogaB3gPNUAW27TGNSviRAign8Kkjvihn8tEASA
+ANEPAAAAbBAKH9Spi/SI9uLyBylQBIAAifWM843yjvGeEZ0SLBYDKRYFIhYHKBYGKxYE7/IAKhgE
+gAD+IAYV4DvVAFtwEOWkAAUB8YAAKKAA6dSYFAPZgAAmHCDyIQYV4AQFANIQgyADOgJbcBTrNAAN
+OASAAOpUAAvgBIAAW30vyKe4InYp3cYq0Q+lfCvAAMLc7bEKflAEgABlv+RgAAGxyukiASV/CYAA
+LqAA1aDklAIPfYYAAC8K/39JJxnUfYgY+QAARHACBQAihIDRD5MY+GAARXAEBQD1UAYdoAIFANEP
+AAAb1HOKGKuq9VAGHaACBQDRDwAAAGwQBtog+iBoHeA81QBbbozo1DodAJIAAIIQqEjihIAtEASA
+ANEP0qDRDwAAbBAG2iD6IGgd4DzVAFtugenUYB0AqgAAghAESAmpiOKEfi0QBIAA0Q/SoNEPAAAA
+bBAG2iD6IGgd4DzVAFtudenUVB0AqgAAghAESAmpiOKEfS0QBIAA0Q/SoNEPAAAAbBAG2iD6IGgd
+4DzVAFtuaenUSR0AqgAAghAESAmpiOKEgC0QBIAA0Q/SoNEPAAAAbBAG2iD6IGgd4DzVAFtuXenU
+Ph0AqgAAghAESAmpiOKEfS0QBIAA0Q/SoNEPAAAAbBAG2iD6IGgd4DzVAFtuUenTkh0AqgAAghAE
+SAmpiOKEgC0QBIAA0Q/SoNEPAAAAbBAKHtQqi+OI5YnkjOIt4gEtFgEsFgIpFgQoFgXrFgMpUASA
+AO7iACoYBIAA/iAGFaA71QBbb47lpAAFBGmAAC+gAGTwhvYjABXgBAUA8iEGFeABTgC4InchbYMg
+DwIADwIA2jBbb5DrNAANMASAAOpUAAtgBIAAW3yrZa/XpWwrwADCnOmxJ35QBIAAZb/F6SIBJQGp
+gAAroADVoOSUAgWAuYAA8iBoHa/+ygAAAAD7gCAVr/9yAB3T/owYrcz1kAYdoAIFANEPxirRDx/T
++P6AAEfwDgUA//AGHaACBQDRDwAAbBAIJgoAJhYA5hYBKVAEgAD2IEYVoFu1AFtvXOOkAAUIIYAA
+wLD+IgAVoFrVAPXAaB3gCLUAbYoco78s8ADqwRx96ASAAOTAL2XYBQAA7OQAJ3AFAAD+YWAV4A21
+AOocECeYBQAA5dkICNgEgAD3IAYdoAwFAFtt8ooQDwIADwIA9UAE+lIAnQD6YGgdoDvVAFtvPuOk
+AAUEYYAAHtL0KOKU7uKaIOBBAAD1AABCMA0FAPyIABIwKsUA9cAAQjALtQBtuhej3yvwAHqxF+Sw
+8WboBQAA68QAJmAFAAD+YWAV4A21AOP8ASDQQQAA5d8IANgRAAD34AYdoAwFAFtt0GagxBLTswIq
+AltvLtyg6yQACdAEgABbfEvMq/AAjA2gBwUAAMYq0Q8S06vaIFtvJdyg6yQACdAEgABbfEJlr+PA
+cfpgaB2gK8UAW28Q/10wDeANBQD4IgAV4Ai1AG2KFSugAOSwEWVQBQAAK5QA7dwBJMgFAADA2yoc
+EOXZCADYIQAA9yAGHaAMBQBbba3uEgItAbIAAIsRjBD7wAQA0A0VAOB+EQ7oCoAA5MwKDuoCgAAO
+3QINuwLrxhUtEASAANEPxqrSoNEP0qDRD2wQDB/Tgov0iPbi8gkpUASAAOTyCCoYBIAAhfeJ9Yzz
+jfKO8Z4RnRKcE5kVlRckFggiFgkoFgYrFgQv8gD+IAYV4DvVAFtu3uakAAUCMYAAKKAAwJDq0pUU
+BTmAAAmUAuMWDCCQoQAA0xCFMA8CAA8CAAVaAltu4OtUAA04BIAA6mQAC+AEgABbe/vIp7gzcjnX
+xirRD6Z8K8AAwtztsQp+UASAAGW/5GAAAbHK6TIBJX8JgAAuoADWoOSUAg99VgAAG9J6ihz7QABF
+cP/1AH9BPhnTTySkgP6BoAfQChUALJF/CswCLJV/fkcgLZF/wOQO3QL9L+Qd4AIFANEPAAD6YABH
+sAIFACL0gNEPwCDRD8Ag81AGHaACBQDRDwAAAGwQBNogW260/aZ2BaALFQDzQABEsA2lAP0gBh3g
+CAUA+SAmHaAKJQBbgT/cIPoAQh2gCxUAW4E8wCDRD2wQBtog+iBoHeA81QBbbUIY0yuJECKCfwqS
+O+KGfy0QBIAA0Q8AAABsEAbaIPogaB3gPNUAW204GNMiiRAign8Kkjvihn8tEASAANEPAAAAbBAG
+2iD6IGgd4DzVAFttLhjTGYkQIoJ/CpI74oZ/LRAEgADRDwAAAGwQBtog+iBoHeA81QBbbSQY0xCJ
+ECKCfwqSO+KGfy0QBIAA0Q8AAABsEAbaIPogaB3gPNUAW20aGNMHiRAign8Kkjvihn8tEASAANEP
+AAAAbBAG2iD6IGgd4DzVAFttEBjS/okQIoJ/CpI74oZ/LRAEgADRDwAAAGwQBtog+iBoHeA81QBb
+bQYY0vWJECKCfwqSO+KGfy0QBIAA0Q8AAABsEAbaIPogaB3gPNUAW2z8GNLsiRAign8Kkjvihn8t
+EASAANEPAAAAbBAG2iD6IGgd4DzVAFts8hjS44kQIoJ/CpI74oZ/LRAEgADRDwAAAGwQBtog+iBo
+HeA81QBbbOgY0tqJECKCfwqSO+KGfy0QBIAA0Q8AAABsEAbaIPogaB3gPNUAW2ze6NLQHQCyAACJ
+ECKCgAkiKOKGfi0QBIAA0Q/SoNEPAABsEAbaIPogaB3gPNUAW2zSGNLFiRAign8Kkjvihn8tEASA
+ANEPAAAAbBAG2iD6IGgd4DzVAFtsyBjSvIkQIoJ/CpI74oZ/LRAEgADRDwAAAGwQBtog+iBoHeA8
+1QBbbL7moB9tEASAAOo0AApYBIAA/KBoHaB9FQD+IAgV4A4VAFgWTtEPAAAAbBAG2iD6IGgd4DzV
+AFtssOagH20QBIAA6jQAClgEgAD8oGgdoH0FAP4gCBXgDhUAWBZA0Q8AAABsEAbaIPogaB3gPNUA
+W2yi5qAfbRAEgADqNAAKWASAAPygaB2gbfUA/iAIFeAOFQBYFjLRDwAAAGwQBtog+iBoHeA81QBb
+bJTmoB9tEASAAOo0AApYBIAA/KBoHaBt1QD+IAgV4A4VAFgWJNEPAAAAbBAG2iD6IGgd4DzVAFts
+huagH20QBIAA6jQAClgEgAD8oGgdoG3FAP4gCBXgDhUAWBYW0Q8AAABsEAbaIPogaB3gPNUAW2x4
+5qAfbRAEgADqNAAKWASAAPygaB2gfUUA/iAIFeAOJQBYFgjRDwAAAGwQHBvSYvogaB2grIUAW3kJ
++kBoHaA71QBbbbripAAFDZGAACigACMWLiUWLeQWLCQEWYAA9C/gFaAlxQD0hSAVoAkFAPgl5hXg
+AX4AuGb0wAv8IgCdAIdgDwIADwIA2nBbbbbrdAANGASAAOokAAngBIAAW3rRZa/SojctcADl0TF7
+8ASAAGXfwuliAScKIYAAKhIvKOAA6poCDxAEgADqFi8kAOmAAPYgaB2v/q4AAAAAAP7gIBWv/0oA
+wLArFi8qEi4sEi36JYgV4F2FAP4l6BXgDkUAWBXRLBIv+aKCBeAOJQAPAgD/gaAH0A0VAC+R8w7/
+Ai+V8ygSL/8BoAdQCoUAK5HzCrsCK5XzLBIv/4GgBxATBQAvkfMD/wIvlfMoEi/TD9MP/wGgBpAi
+BQAqkfMCqgIqlfMrEi/TD9MPebcNLJH00w8PAgANzAIslfQvEi/TD9MPePcNKJH10w8PAgANiAIo
+lfUqEi93pwgrkfUOuwIrlfUY0gYqEiwsEi8vgn8rGoALywELrznvhn8mWDSAACyR9g3MAiyV9i0S
+L3XXCC+R9g7/Ai+V9igSL3SHCCqR9gOqAiqV9isSL3O3EyyR9gLMAv0+xB2gAgUA0Q/GKtEPwCDR
+DwAAbBAK2iD6IGgd4DzVAFtr8+agvW0QBIAAG9APK7CA/CIAFaAPFQD6AAAD8A5FAPYhBhXgCSUA
++WAEA/ANhQDxYAS30AYlAJ8U8WAFp5IAnQDa8J8UDK8KlvDutgEFUAUAAO6wDnf4EQAAsaru9gAn
++BEAAA28AX2wB+32ACVQBQAAZKBMiRD/IkAH0A8FAIsYiBTA8fsCAA/wABIAfpcK8OvQDeAIJQAI
+/wJ9lwVkYMcO/wJ8lwVkwHYN/wLaMOtEAArgBIAA/AuiHeAOFQBYFVzRDwAAAAAA/2GAB5AKBQBj
+/24AAAAAAO62AQX0sIAA38D//cwNoAoFAAAAAAAAAO62AQX1EIAA2vD+IoAV7/1uAAAAAAAAAO28
+AQXy1IAALxwQ//1IDaAKBQAAAAAAAPoiABXgCTUACpkuC5kKiZD/JgAP//3iAO28AQXxEIAA2vD+
+IoAV7/yOAAAAAAAAAPgiABWgCxUACrsuCLsKi7D/ZgAP//zaAPgiABWgDiUACu4uCO4KjuD/xgAP
+//yeAPvgaB2v+8IAbBAG2iD6IGgd4DzVAFtrjeagH20QBIAA6jQAClgEgAD8oGgdoG2FAP4gCBXg
+DkUAWBUd0Q8AAABsEAbaIPogaB3gPNUAW2t/5qAfbRAEgADqNAAKWASAAPygaB2gbWUA/iAIFeAO
+JQBYFQ/RDwAAAGwQBtog+iBoHeA81QBba3HmoB9tEASAAOo0AApYBIAA/KBoHaBtRQD+IAgV4A4l
+AFgVAdEPAAAAbBAG2iD6IGgd4DzVAFtrY+agH20QBIAA6jQAClgEgAD8oGgdoG0lAP4gCBXgDiUA
+WBTz0Q8AAABsEATAINEPAGwQBtog+iBoHeA81QBba1PmoDdtEASAAOo0AApYBIAA/KBoHaBtBQD+
+IAgV4A4lAFgU44gQGtCY8QDwDeBLBQApoX8LmQIppX/RD9EPAAAAbBAG2iD6IGgd4DzVAFtrP+ag
+H20QBIAA6jQAClgEgAD8oGgdoF3FAP4gCBXgDhUAWBTP0Q8AAABsEAbaIPogaB3gPNUAW2sx5qAf
+bRAEgADqNAAKWASAAPygaB2gfbUA/iAIFeAOFQBYFMHRDwAAAGwQBtog+iBoHeA81QBbayPmoB9t
+EASAAOo0AApYBIAA/KBoHaBdRQD+IAgV4A4lAFgUs9EPAAAAbBAG2iD6IGgd4DzVAFtrFeagH20Q
+BIAA6jQAClgEgAD8oGgdoF0FAP4gCBXgDhUAWBSl0Q8AAABsEAbaIPogaB3gPNUAW2sH5qAfbRAE
+gADqNAAKWASAAPygaB2gTQUA/iAIFeAORQBYFJfRDwAAAGwQBtog+iBoHeA81QBbavnmoB9tEASA
+AOo0AApYBIAA/KBoHaAtxQD+IAgV4A5FAFgUidEPAAAAbBAG2iD6IGgd4DzVAFtq6+agH20QBIAA
+6jQAClgEgAD8oGgdoC1FAP4gCBXgDiUAWBR70Q8AAABsEAbaIPogaB3gPNUAW2rd5qAfbRAEgADq
+NAAKWASAAPygaB2gLRUA/iAIFeAOFQBYFG3RDwAAAGwQBtog+iBoHeA81QBbas/moB9tEASAAOo0
+AApYBIAA/KBoHaAtBQD+IAgV4A4VAFgUX9EPAAAAbBAG2iD6IGgd4DzVAFtqweagH20QBIAA6jQA
+ClgEgAD8oGgdoF3lAP4gCBXgDhUAWBRRGdBmKJB9wKEKiAIolH3RDwBsEAZoMQPGKtEP2iD6IGgd
+4DzVAFtqrujP4x0AygAAiRCoSCKAfQkiNuKEfS0QBIAA0Q8A0qDRD2wQDBzQnMffnRSLwYjDicIp
+FgIoFgMrFgHswgApUASAAPwgBhWgW7UAW2vu4qQABQrRgAAqoAAuCmB662wvCnp682bTEPQiABXg
+N6UAhDDaQFtr8utEAA0wBIAA6iQAC2AEgABbeQ3Ko7gzdTne8gACHaADBQD4ACId4AoFAPMiAA0w
+CAUACpg4zY9gAPuibCvAANrA92APXGIAnQBlv8hgAeIAAAAAAAAAwDD8AAIdoF3VAPokABXgBAUA
+9WBoHeAOtQDTD23qF6LOKuAAfaEX5KAvZmAFAADqtAAl2AUAAP5BYBWgDLUA6hwgJxAFAADlzwgA
+2MEAAPXgBh2gDAUAW2pl+kBoHaA71QBba7XipAAFA7mAACugAPFhwA3gLfUACqwCbQgNfbFiK8AB
+5LAIZmAFAABj/+sAiBRkgFDAwPgkABXgCrUAbaoVKiAA5KARYRAFAAAqlADszAEkyAUAAMDLpcv6
+JAAVoAwFAOS0ACDY0QAAW2pICv5Q/AAiHeAMBQAO3DhlwKrGKtEPlBTAwPokABWgD7UAbfoXos4r
+4AB9sRfksJtmYAUAAOukACVQBQAA/kFgFaAMtQDqHCAnEAUAAOXICADY0QAA9QAGHaAMBQBbajDx
+TIgN4Gr5AMDA+CQAFeAKtQBtqhUqIADkoBFhEAUAACqUAOzMASTIBQAAwMuly/okABWgDAUA5LQA
+INhBAABbaiD6ACId4AwFAAa8OP+WEA3gmvkAwNAJvThk31TJM2g7VcHhfjE0wCDRDwD//kANr+ql
+ABjPB4IcqCIoIoCJFP4hqBXv+vUACpkDCYgBCP8C/lAGFeACBQDRDwAazuuLHIwUjR1baf3AINEP
+scrSoPJgKBXv96oAGs7nixyMFI0dW2n2wCDRDwAAAAD6ACIdoAkFAAapOGWfgmP+1AAAAGwQCvpA
+aB2gO9UAW2tI46QABQh5gAD2IGgdoAUFAPIiABWgBwUA9AWCHaAKBQD+IgAVoAi1AG2KHKOsK8AA
+5LEcfWgEgADksGJlUAUAAOvkACdwBQAA/GFgFaANtQDqHBAg2IEAAOLZCAYYBQAA9yAGHeAMBQBb
+adpmoC/qEggiqAUAAOpkACMwBQAA/LPAgVAKBQAcz8srEAEtEAAtxHz7j6Yd4AIFANEPAAD4YGgd
+4AoFAPoiABXgDrUA0w9t6hwukADdoOqsASzgBIAA5OAUZMgFAADutAAl2AUAAPxhYBWgDbUA6hwQ
+INiBAADi3wgGGAUAAPfgBh3gDAUAW2m4ZqAg9L/7oJIAnQCxXf2fWgWgCkUA+gAiHeAOJQBbfaXG
+KtEP0qDRDwAAAGwQBvpAaB2gO9UAW2r946QABQeRgAD1n0IF4AYFAPIgaB2gBwUA9AWCHaAItQD8
+IGgdoAoFAG2KHKOtK9AA5LEcfXAEgADksJZlUAUAAOvEACZgBQAA/GFgFeAOtQDqFAAGmAUAAOLp
+CArYBIAA9yAGHeAMBQBbaY/xROQN4A4FANkQ/GBoHeAKtQDTD22qFCrQAMmm6pQAJ3AFAADt3AEk
+yAUAAPxhYBXgDrUA49wBKNAEgADi7QgK2ASAAPegBh3gDAUAW2l7ZqAc5VwEIzAFAAD43/q6UAi1
+ANKg0Q8A//5UDa/qpQBoZO/dYP2e2AWgCiUA+gAiHeAORQBbfWLGKtEPwCDRD2wQBvpAaB2gO9UA
+W2q746QABQfRgAAVz2HyIGgdoAYFAPYAAh3gJMUA8ABYDaAJtQC0VfbAIBWgCLUA+MAGTCAJtQD+
+IGgdoAoFAG2aHKOsK8AA5LEcfWgEgADksKFlUAUAAOvkACdwBQAA/GFgFaANtQDqFAAK2ASAAOLd
+CAYYBQAA96AGHeAMBQBbaUj/WfQN4A0FAAM8AvggaB3gDrUAbeoUKsAAyabqlAAm6AUAAOzMASTI
+BQAA/GFgFaANtQDqFAAK2ASAAOLfCAYYBQAA9+AGHeAMBQBbaTRnr1HAi3hhI91g/Z5cBaAKJQD6
+ACId4A61AFt9IsYq0Q8AAAD//igNr+qlANKg0Q/AINEPbBAG+kBoHaA71QBbanfjpAAFB3GAAPWc
+QgXgBgUA8iBoHaAHBQD0BYIdoAi1APwgaB2gCgUAbYoco60r0ADksRx9cASAAOSwlmVQBQAA68QA
+JmAFAAD8YWAV4A61AOoUAAaYBQAA4ukICtgEgAD3IAYd4AwFAFtpCfFE5A3gDgUA2RD8YGgd4Aq1
+ANMPbaoUKtAAyabqlAAncAUAAO3cASTIBQAA/GFgFeAOtQDj3AEo0ASAAOLtCArYBIAA96AGHeAM
+BQBbaPVmoBzlXAQjMAUAAPjf+rnQCLUA0qDRDwD//lQNr+qlAGhj791g/Z3SBaAKJQD6ACId4A41
+AFt83MYq0Q9sEAgfzuSL9Ij24vIHKVAEgACJ9YzzjfKO8Z4RLRYCLBYDKRYFIhYHKBYGKxYEL/IA
+/iAGFeA71QBbairkpAAFAbGAAMJ84hQAAKiBAACDIA8CAA8CAAM6AltqMOs0AA0wBIAA6kQAC2AE
+gABbd0vIp7gidSnXxirRD6RsK8AA57EKflAEgABlv+ZgAAGxyujOwhV/GYAAiSHAIAqSOfMQBh2g
+AgUA0Q9sEAz6QGgdoDvVAFtqDOSkAAUIeYAA9iBoHaADBQD3nWoF4AIFAPQFgh3gCgUA8ACwDaAL
+tQAAjhzFp/9AB2qiAJ0A/uAHK6AKBQAuZQDjPAEjMAkAAPRgB2WQC7UALRwgbbocpKwrwADlsRx9
+cASAAOSwMmVQBQAA69QAJugFAAD8gWAVoA61AOscMCDQgQAA6u0IBiAFAADzoAYdoAwFAFtok2ev
+j/iAaB3gCgUA+iQAFeAOtQDTD23qHC2QAN6g6qwBLOAEgADk0BRkyAUAAO20ACXYBQAA/IFgFaAO
+tQDrHDAg0IEAAOrvCAYgBQAA8+AGHaAMBQBbaH3xRogN4Aj1APh/+XwiAJ0AsT39nPQFoApFAPoA
+Ih3gHgUAW3xpxirRDwAAAAAAAAD6AIIdoAsVAOzOchnoBIAAW3xhxirRDwAAABrNnfggaB2gGQUA
+bZoP6YEAJVAJAADppb0kQAkAAMAg0Q/SoNEPbBAG2iD6IGgd4DzVAFtoXeagF20QBIAAiBAbzl4I
+CUfotH4kqCeAAGiTAdEPxirRDwAAAGwQBtog+iBoHeA81QBbaFAYzaOJECKCfwqSO+KGfy0QBIAA
+0Q8AAABsEAgZzk4PAgAPAgCIkSgWAemSAClQBIAA+CAGFeA71QBbaZTjpAAFB4GAAMBQ5xQAAJBB
+AAD2AAIdoCTFAPAAPA2gC7UAALFV9KAFuVALtQD8IgAVoAoFAG26HKOtK9AA5LEcfXAEgADksI9l
+UAUAAOvEACZgBQAA/GFgFeAOtQDnWwoGmAUAAOLtCADQQQAA96AGHaAMBQBbaCP/WnQN4A4FACkc
+EPxgaB3gD7UA0w9t+hQq0ADJpuqUACdwBQAA7dwBJMgFAAD8YWAV4A61AOdbCgaYBQAA4ugIANBB
+AAD3AAYdoAwFAFtoD/9VdA3gBSUA0qDRDwAAAAD//nANr+qlABvOD4kRjBAstIDptUYtEASAANEP
+xirRD2wQBtog+iBoHeA81QBbZ//moBRtEASAAIkQG84ACQhH6bR/JBgbgADRD8Yq0Q8AAGwQBtog
++iBoHeA81QBbZ/MYzfqJECKCfwqSO+KGfy0QBIAA0Q8AAABsEAbaIPogaB3gPNUAW2fpGM3xiRAi
+gn8Kkjvihn8tEASAANEPAAAAbBAIGc3rDwIAiJGYEemSAClQBIAA+CAGFeA71QBbaS7jpAAFB4GA
+AMBQ5xQAAJBBAAD2AAIdoCTFAPAAPA2gC7UAALFV9KAFuVALtQD8IgAVoAoFAG26HKOtK9AA5LEc
+fXAEgADksI9lUAUAAOvEACZgBQAA/GFgFeAOtQDnWwoGmAUAAOLtCADQQQAA96AGHaAMBQBbZ73/
+WnQN4A4FACkcEPxgaB3gD7UA0w9t+hQq0ADJpuqUACdwBQAA7dwBJMgFAAD8YWAV4A61AOdbCgaY
+BQAA4ugIANBBAAD3AAYdoAwFAFtnqf9VdA3gBSUA0qDRDwAAAAD//nANr+qlABvNp4kRjBAstH3p
+tUUtEASAANEPxirRD2wQCPpAaB2gO9UAW2jt46QABQqJgAAXzFj3l4wFoAQFAPQFgh3gCgUA+AFi
+HeALBQD6IKYV4ADaAAAZy74EHxQH/wot8q7H7w6YAwjdAf1mAA7wCgUA7fauIiAFAAD0gAf7UAm1
+AIgVZYD13RBtmhyjrivgAOWxHH14BIAA5LC3ZVAFAADr1AAm6AUAAP5hYBWgD7UA2hDj7AEg2EEA
+APHgAEdwDQUA/cAGHeAMBQBbZ3HSoOcgWGnwBIAA2RD+AAId4Ai1AG2KFCvgAMm265QAJ/gFAADu
+7AEkyAUAAP5hYBWgD7UAsePrHBAo0ASAAPHgAEbwCQUA+aAGHeAMBQBbZ1zmoFptEASAAMDhLhYF
+Gsy5jhQqon8OqygsOugMuyx7Yxvyn/iX0gCdABnNXPlgABW//CoAAP/94A2v4qUAH81Y/ZqwBaAL
+FQAK/yz8gGgd4ApFAFt7PPuW7AXv/x4A0Q/RDwAAAGwQDhvNT/ogaB2gTIUAW3Pe+kBoHaA71QBb
+aI/ipAAFBAGAACigAA8CAA8CAGSAb/YpABWgBwUA8iBoHeAANgAAAAAAuDN2MVaEMNpAW2iQ60QA
+DSgEgADqJAAK4ASAAFt1q2Wv3aJcKsAAwtztoTd+WASAAGWvy+kyASWBIYAALrAA0rDnlwIPfX4A
+AC8aDH9wDBLNLPZP5hXgAgUA0Q/GKtEPAAAAAPuAIBXv/zIAbBAE+kBoHaA71QBbaGfipAAFANmA
+ABPNINowW2hx3KDrNAAJUASAAFt1jciixirRDxjNGhrNGyKCfxnMWAoiAQkiAvMP5hWgAgUA0Q8A
+AABsEBIbzRT6IGgdoGwFAFtznvpAaB2gO9UAW2hP5KQABQOBgAAooAAPAgAPAgBkgJn2LAAVoAcF
+APIgaB2gADYAAAAAALgidiFGgyDaMFtoUOs0AA0oBIAA6kQACuAEgABbdWtlr92kXCrAAMLc7aFP
+flgEgABlr8vpIgElgKGAAC6wANSw55cCD31+AABgADvGKmYgMhrM8C0SGC+hfn38Bi2lf9EPAAD/
+T+QVoAsVAP2Z1gWgCkUAW3rJxirRDwD7gCAV7/7SANEPwHAnFhj//vwNoAIFAABsEBAbzN76IGgd
+oGwFAFtzaPpAaB2gO9UAW2gZ5KQABQPRgAAooAAPAgAPAgBkgIf2LAAVoAcFAPIgaB2gADYAAAAA
+ALgidiFQgyDaMFtoGus0AA0oBIAA6kQACuAEgABbdTVlr92kXCrAAMLc7aE/flgEgABlr8vpIgEl
+gPGAAC6wANSw55cCD31+AAASzLz2T8Qd4AIFANEPGcy5KJF++S/EHa/ipQDRDwAAAAAAAPuAIBXv
+/xIAG8yywKD7b8QdoAIFANEPAGwQBi0gAOs0AApgBIAA+qBoHaA/1QD/pSYN4AYFAMU7c9Ef3iBt
+CBXk0EhjMAUAAC3gAe/RDHdwBQAAc9EEY//jAAAXzJ+bEvwgJhWgAwUA6hYAI6BBAAAlcn/bIOxk
+AArQBIAAW3UCyKy4d+R56HGYIQAAxirRD9pQW2fddqnpGss6GMyQqjp4oejrEgIlQC8AAIiJjBHt
+EgApUASAAAuAANKg0Q8AAGwQBtxA6iAAKugEgADyIGYVoAcFAP5gaB2gP9UA76EqeRgEgADFK3Kh
+IAM7Am0IFeSgSGO4BQAAKrAB76EMddgFAAByoQRj/+MAABbMdZ4S/CAmFaACBQDtFgAjKUEAACRi
+f9sw7HQAClAEgABbdNbIrLhm5WnocRAhAADGKtEP2kBbZ7F3qekayw4YzGaqKnih6OsSAiVAKwAA
+KII1jBHtEgAp0ASAAAuAANKg0Q8AbBAG3EDqIAAq6ASAAP5gaB2gP9UA4hYDKRgEgAD/RQYN4AIF
+AMVLdKEeAzsCbQgV5KCYYRAFAAAqsAHvoQp12AUAAHShAmP/4xXMTJ0SnBH3mJQFoAcFAP4gBhWg
+ADoAuGblYWZzuCEAACRif9sw7CQAClAEgABbdKhlr+LaQFtnhnKp2hrK4hjMPg8CAKp6eKE4ixBp
+sRcsEgEtOv99yQ4ey1Av4oAu4n8P7gguFgHrEgAlQCcAACiCJYwR7RICKdAEgAALgADSoNEPxirR
+D2wQBtxA6iAAKugEgAD+YGgdoD/VAOIWAykYBIAA/0UmDeACBQDFS3ShHwM7Am0IFeSgRGEQBQAA
+KrAB76ELddgFAAB0oQNj/+MAFcwbnhIWzBmcEfwgBhXgBwUAJGJ/2zDsJAAKUASAAFt0d8ituGbl
+aehzuCEAAMYq0Q8A2kBbZ1Jyqegayq4YzA2qenih5+sSAiVAIwAAKII9jBHtEgAp0ASAAAuAANKg
+0Q8AAAAAbBAEwCDRDwBsEAQjIAb0QPAVoAoVAFgEu/OUjgWv9bUA9UAHPGAGBQAay/kDSQwmJoLk
+Ox15xgKAAPsAAEQwGvUAbZkNKYJACpkC6YZAJEAHAAAsIsAdy+8NzAIsJsApIscby+0ay+0LmQEK
+mQL4WOYV4AQFAMChW24cJEwBaUn0/ljoFaAEBQDAoVtuGLFEaUn1FMvjJCbKLwpO/kaGFeAEBQDA
+oVtuEbFEaUn1+EaIFaAEBQDAoVtuDLFEaUn1KRoA+EjmFeAEBQDAoVtuB7FEaUn1+kjoFaACBQDA
+oVtuA7EiaSn1wKNYBIZ1oRz5l5AFoAIFANMPbTkNJoZAJoZ85oZ+JEAHAADRD8cl0Q9sEAQTygkZ
+y74IKBGpiCmCQSiCUSQyghXLv+VEAQkVgoAABCIC8nBGFaACFQDRDwBsEBgcyf2KJiYgBiggB/gk
+RhWgCxUAKcKCC5kCKcaC+MAqaqIAnQAUy6onEiIIbRGk3QZ3DG15Ii7SQSzSQw7oCXyLEw7uEXzr
+CP+PAAywAB4AAMCQKdZDLd0B+iMGFaADBQCmNdpQW//aZKDU4lsJCuYCgACkzC3CUS21HsCgKsZR
+KrUnKrUw6rU5IZgFAAB3Oc8Yy5UvEhjAwCwWGfngBAewDhUA/iKGFeANBQAP7TgtFhUeydEt4oIj
+Ehkfy4krEiKmM+/dAQn9goAAD90C7eaCK1AEgABYAunAoP2XBgWgCwUAWAFwZqBW6xIiK1AEgABY
+AuPAoP2UpAWgCwUAWAFpZqA7IxYTWAFIZKSlGspM/CJoFaALBQD6JGYV4AMFAPokJhWgCQUA6RYg
+LmaCgAD1gAEGMAUFAPwj5hWgAI4AxyvRD7FVLhIjLRIgDwIA7uwBIZhBAADuFiMug94AACkSH+WW
+UiTwEQAA5eZSJOghAADl1lIk4DEAAOXGUiTYQQAA5bZSJNBRAADlplIkwGEAAOWGUiT4cQAAJfZS
+6xIiK1AEgABYArYsEiHH/+/MAwnQBIAA7BYhKdgEgABYATpmr3xYARllr3rAkfgkBhXv/d4AAAAA
+4xIhL18CgAArFh4rFhL8ImgV4AkFAPgjphXgDwUA/iFmFeAOBQD+IuYVoAUFAPQjZhXgDgUALhYa
+AtgJ6BYWLu4CgAD1oABGsAwFAPwiBhXgBQUA/aomFaAA3gAAAAAA9KAFYZIAnQArCgHrFhsiqAUA
+AC4SHC0SHSwSGi7sEO4WHibIBQAA6RYdLgS2AAD6JEgV7//1AO8zAwtQBIAAWAKCKxIe3DDrFhwt
+0ASAAFgBCGautFgA52WvpIobDwIADwIA9V/1HdIAnQAtEhsrEhaxrA3KOSuxHiwSF+oWCy3fwoAA
+/WAXQ6IAnQCxzCwWFy4SEC0SFisSIizmUezVJytQBIAAWAJo//2cDaAFBQApEh0rEhYqEhfqtSck
+yAUAAB/K/Y3yjvGL9IjwjPOK9ZoVnBOYEJsUnhH8IEYV4A4FAJ4eLRITKxISiPboFgYs5wKAAOy7
+CA7ugoAABN0KLRYfj/efF9Ow6xIiK1AEgABYAk3aMOzK5xnYBIAAWADUZq3m8iGmFeAMhQD5lcQF
+4AsFAPoiJhXgCgUA6hYPKegEgADpFiEumASAAO0SHyjwBIAA0w9tyiIv0lIoCn/5/+1EIgCdAIng
+CQlA6fkIB3ARAADp1lIm6BEAAOsSIitQBIAAWAIxLBIh8iGGFe/69QDqzAMJ2ASAAOwWISnQBIAA
+WACz7RIfLWsSAADyIGgd4AUFAIsw0w/1YAxgkgCdAOM8BCKoBQAA6VjoZugRAACNEPghABWgDgUA
+/gAiHeAMBQD94gAOcAk1APwgKBXgzAEADwIAbZog+QAIFeAKBQAN/jjtggEkQCEAAAzrAfniAA1w
+DgUAC6wBDf44jRx84Ar+IcYV4A4VAC4WDy4SEYkf/aIAFeAMhQDu7AEumASAAO4WEST4MYAAgx2P
+HgzoEagz6zQAB/WBgAArEiIpEhXpFggrUASAAFgB9yUSIceP6FUDCdAEgADrNAAK4ASAAFgAe+UW
+JC1kGgAAJRIWKRIUDwIAJVEe5JBlYqvBAACTGiMSJCgSECsSIuWGUStQBIAAWAHlixr6ISYV7/n1
+AAkzA+w0AA3QBIAAWABpZqw5WABIZKCxLBIWLMEe78wRAqgFAAD1gAUD4gCdAI4ZjRjjFiQncEEA
+AO4WCib9QYAA6xIiK1AEgABYAc8pEhYPAgAqkTkokSeqiAgYEioSEC8SGSimUeiVMCf4BQAALxYZ
+9//aRWIAnQDrEiIrUASAAFgBwcAg0Q8A7RYlKtAEgABYABDtEiUtc04AAMDgnjAr0lKwvAvLOPuq
+RhXv+VYAACISFvxE5B2v8rUA0Q8TySL/8JANoAsFACgSFvUHJB3v/cYAAGwQBOjKSRFBQ4AAwGDl
+yIcZAQqAAP0AAQFQA0UAbToYKVKECSkBKlKJ6ioBAzARAADqmSJyqBEAABzIfCrCJfpABAUwCwUA
++4SmFeeqAQDxQJAN4AIVAMAg0Q8A0Q8AAGwQBBvIctewJrKIx48IZgP34AADMAIFAChyhPpAgBWg
+BQUA+PEoFeAMRQDTD23KJQAgBAYNGe/XGnEQBQAAAFAE+J8AD3H4nQD+4AAH9+4BAH/pH7hVJ3wE
+6au7bRAEgAAisiXy4AABMAMFAOO2JSEAQYAAwCDRD8Ah0Q9sEAQZyFPTDySWhCSWhSSWhiSWhyKW
+gCOWgSiSg/uUGAWgDAUA+gAiHePthQD7BgAMcA4VAPkwZhWgDwUAWjbQ+AACHe/yVQAKkjvRDwAA
+AGwQFCQgByUgBiIWGnRbORnJ8gJaCeVMDArGAoAA+QAARHALBQBtyRspgkEppULrhkElUAkAAOul
+SiRABwAAK6VTK6VcCQpPmhAZyC3AwSuSggy7AiuWgvSgJWqgCgUAIhIAKhYPBU8MLxYXGcglKJKC
+IxIPGsneBTMI6ogBCdWCgADqiAIKWASAAOiWgirQBIAAWAE9wKD9k64FoAsFAFv/xGakoupUAApY
+BIAAWAE2wKD9kUoFoAsFAFv/vWakh9pQ4xYRKlgEgABYAS8oEhopEhEPAgAPAgAImAkoFhsogULA
+oCoWHRrJvOPIlxzOAoAADwIACpkI+COGFeAKBQD6IwYVoAYFAPkoJhWgBwUA6lQAClgEgABYARvH
+n+kzAwtQBIAA62QACeAEgABb/6BmpBRb/4DsEhslIJGAACzBQg8CAA/MESzMEPOAH9OiAJ0AsSIu
+Eh0vEhwtEhj2wgAVoAcFAOL2QSdIBQAA6RYdJvz5gAAnCgD4IYYV4AYFAOYWGSy3AoAA6lQAClgE
+gABYAP3Hj+gzAwtQBIAA62QACeAEgABb/4Jmo5xb/2Lko2ZjuAUAACwSHCsSGy0SGSzCQSuxXfbC
+ABWgGgUA7LsMBugFAAD7QBt74gCdAO0WGSvCnAAAKRIbHsmHIpVdiOCK5IvjjOLt4gEg+EEAAJ3x
+nPKb85r0mPCJ5Zn1iOaY9u7iByrQBIAA7vYHKlgEgABYANmIHCcSGah37Ml3G58CgADqNAAJ2ASA
+AFv/XWajByISHCIiT7Eilx0ax635kt4F4AsFACsWFvlRBhXgBgUA6lQAClgEgABYAMcZx6XaMP2Q
+bAWgCAUA6JaIKdgEgABb/0tmosHqVAAKWASAAFgAvh7HmxzJWO3JXhnQBIAA7eaIKdgEgABb/0Jm
+oppb/yHXoBnHkxzIJOjJVxnQBIAA6JaIKdgEgABb/zlmonlb/xn3QBSeYgCdALEiLBIWLRIcsWnm
+lAABmEEAAOLWTyZ7iYAAHcgVnR4sEhzAgCjGTy8SEf4hqBWgCgUAKhYTGsd8rp4uFhD5UQYVoAsF
+AOjJLh93AoAA6xYSJ3BBAADuFhQv/oKAAAj/Cv4iphXgD4UA6RIVIPBBAABt+iIvkkcoCn/54A+U
+IgCdAIrgCgpA6voIB3ARAADqlkckyBEAAOpUAApYBIAAWACEgx4r+v8LMwMrEhTsNAAN0ASAAFv/
+COMWDi0NogAAIxwQ9iKoFeAGBQCMMA8CAPWADBCSAJ0A53wEIzAFAADpaOdhmBEAACgcEImA/gAC
+HaAPFQD9ACgV4AwFAOn8OARAIQAA/AAABjAJNQBtmiD5AAgV4AoFAA3+OO2CASRAIQAADOsB+eIA
+DXAOBQALrAErEhQqEhIN/jgM7QH+ImgVoAwVAP2NAA1wD4UA6hYSJdhBAADrFhQncAUAAO4WEyV4
+QYAALxIc+qBoHaAGBQDi9k8qWASAAFgATScSECMSE6czJxIODDMR8mIAFe/49QDodwMJ0ASAAOs0
+AAvgBIAAW/7NIxYe5hYfLQYqAADiZAAJsASAACMSHCMyQSM88CgSHNpQ44ZBKlgEgABYADjHn+l3
+AwtQBIAA62QAC+AEgABb/r1moIdb/pxkoLGwM2QwrOQvyWMwQQAAKRIbDwIADwIAKZFLLBIbIsFd
+qSICEhItEhyKHysSFyLWQeLFVCVQBQAAKhYP+1/bPWIAnQDqVAAKWASAAFgAHcAg0Q8AKRIcKJJB
++R/gFaAHBQD5KCYVr/IyANpgW/5oZa55wKCaMClyR7CZ+OjmFe/5tgAAxyXRDywSHCkSHSsSG+LG
+QSTIBQAA82ukHa/wXgAAAADpbAEhU/0AAPNNAAk/9f4AKxIbAwlP+WlkHe/9dgAAAGwQBOTIkxlG
+AoAA8kNyDe369QACOQwEiAhtmQ0pgnwKmQHphnwkQAcAAMChW2q/4jkMCUYCgAD1AABEMgoFANMP
+bZoNKYJ8CpkC6YZ8JEAHAAAqCgFbarXAINEPbBAK5iAGKSAEgAD2QPAV4Ao1AFgBNccr80AIlCIA
+nQDzjX4F4AoVAPXgAh3gDQUALTaCLTaIKDKCCogCKDaC9sAL+uIAnQAcyHCdFSQWAgZ+DJ4WLzKC
+hRUpEgIM/wEGVQjpWQgKrYKAAPXmAA/wBAUA/nBGFeAFBQCZESWUIYgR9QVGHaAKFQBYARfzQAT0
+IgCdACkyJAxKEfqmAA0/CwUAC5kBCpkC+GSGFeAKNQBYAQ1yoXfqZAAL2ASAAFv/uc1azUjA0C02
+gC02gRzIWSw2hBvIWSs2hSw2his2hygygxrITvoAIh3gDAUA+AAiHePthQD5BgAMcA4VAPhwZhWg
+DwUAWjURZqAiKjIl4qcgciAFAAD4n/st0gCdAOkSASKoBQAA+L/6glAEBQDHJdEPixWNFuzINBXY
+BQAAmxX9f/iFYgCdAI4W+CBIFaAPFQD+IGYV4AUVACUWBPjAAEQwCgUA+CAGFa8FBQBt6UCEEqap
+pJQrQCovQCGr/g4ORy5EM3lrHihAIClAKQ+EDIgU+y8ADPAPBQAJ+DmJE5gUBPk5mRNkoK0MvDYN
+7TexqokUZJDVihPTD+QSAiUGcYAAp2oKGhKqSiygKiqgISsyJAzMEQysAgW7AQy7Ais2JPRkiBWg
+ChUAWAC/81/59CIAnQDAwy4yJMDw9CAABbOEIQDl7gEEQ/0AAOj/NQXYCQAA7Ls0D/8CgAAPvwIP
+7gIuNiQsMjotMjsNzAz7YEAVoMwBAAyqAwoKQKq6sqoqNjgpMkj9ZCBBUpkBAKm6+1/gFaAAZgCN
+ECzQKv2mcBXv/T4AAAAAAAAA2pAqNkjA4P5wRhWgCjUAWACb81/1dCIAnQDAINEPAAAAAP2vAA0/
+/P4AbBAOGMfXIyAG5CAHKNAEgAD2QHAV4AsFAPxAqBXgDDUA84wyBaAJlQBtmg4pgkGZoOuGQSRA
+BwAAtKoZx9sYx9vAoComI46DhYLmggEg+MEAAJbxlfKe84iAmPANWkHsqjYA2MEAAAuqCoqgDfVQ
+/rgAErBqCQD80AATMIoBAP8QABQwqhEA6FUCDVXCgAAKZgL2pgAKsIgFAAhYAgyIEQmIAvhCBhWg
+BgUAwKFbaeOxZmlp9fpCCBXgBgUAwKFbad+xZmlp9RrF9BvF9Px9Ah3gDAUA/igAFeAOFQBaNHbx
+UhgN4BwFAPxEZhWgBgUAwKFbadImbAFpafT8RGgV4AYFAMChW2nNsWZpafXAoVtpyxbHpxjHktMP
+DwIAiIAax6X5jx4F4AxFAPoAgh3j7YUA+wYADHAOFQD5IAYVoA8FAFo0XWagueQ7HnnOAoAAG8eE
+A0oMC5kIbakNLJJhKZ0B84AE/tIAnQAubQSO4MeL6O4BA3gTAACe8MDQ/ERmFeAKFQBbaa0Tx4gM
+XxED/wL+QgYV4AMFAMChW2mosTNpOfX4QggVoAMFAMChW2mjsTNpOfUaxbgbxbn8fQId4AwFAP4o
+ABXgDhUAWjQ7ZqAz+47GBaAJhQDpJiMowASAAPIAAh2gCZUA0w/TD22aD+mCACRAEQAA6aZBJVAH
+AADRD2V/Qscr0Q8AAABsEAQjIAckIAYYx1IZxZzkMwwKLgKAAPigAEE/5AUA0w9tOg0jIkAEMwHj
+JkAhEAcAACiSwBrHXQqIAfk4BhWgAgUA0Q8AAABsEAQUxYzCMCpCAg8CAAoKQsinaKEFaKMCaaUX
+80bGDa/1tQBkIJFoITFoI19pJRhgAPQAsDNkMOrAoVtpa2P/xmQw38ChW2loi0ILC0LrKe9xm/0A
+AMAg0Q8AAPVABbqSAJ0AwMH8gCYVoAUFAMChW2ldsVVpWfX8gCgV4AUFAMChW2lZsVVpWfVj/7tp
+pVPA5P6AJhWgBQUAwKFbaVKxVWlZ9f6AKBXgBQUAwKFbaU6xVWlZ9WP/j8ChW//RdaFiwFCVQcCh
+W2lIsVVpWfX4gCgVoAUFAMChW2lDsVVpWfVj/2TAoVv/xnWhNykKAviAJhXgBQUAwKFbaTuxVWlZ
+9fqAKBWgBQUAwKFbaTexVWlZ9WP/MgDAo1v/ufVf+iViAJ0AxyvRD8CjW/+1daHzwLP6gCYV4AUF
+AMChW2kqsVVpWfX8gCgVoAUFAMChW2kmsVVpWfVj/u8AAABsEAYWxTXoWRAKQ8KAAOmIAgnPAoAA
+CYgCGcb8CCgCCYgC+MIGFaACBQDAoVtpF7EiaSn1+sIIFaACBQDAoVtpE7EiaSn1+4pSBeAMBQD+
+ACIdo+2FAOrFJBj4BIAAWjOq+gACHe/ytQAKsjvRDwAAbBAKG8bngiWIs4myirGaEZkSKBYD+2AI
+FeAMVQDrFgAhXByAACwWAwKNUQHdCo3Q+426BaADNQD8IAAGct0dAOfdEQ5mQoAA/YYADnOLBQBY
+AawUxQXAUCVGIytCOyu8+/NggAXwCjUA+kAABfAMJQD/aAAVsA2lAFv/xcioxyvRDwAAAAAAAPoA
+Yh2gCwUA/ABiHaANpQBb/71lr9/9jXYFofIpAOP/NgDIQQAACf8Ki8GKwojDmJOakpuRjMCckC/y
+AAL9UA/dEf4BAAdwCjUA/dAAFzC/AQD/cAAVsP8RAO27Ag/9woAA/8YAD3AMFQD/ZgANsA2lAFv/
+pWWvffIAAh2gBvUAwKFbaMSxInYp9cCIJ0I6KkJBeotA/0egB9CaAQCaGZkY/UBAFaAaBQAMqjT6
+iCYVoAIFAMChW2i3sSJpKfX8iCgV4AIFAMChW2iysSJpKfWLGYoYq6rAyHrDDyqs+/AAMA2iqgEA
+AAAAAAAKGkLsQiAj6/EAAPoAYh2i6gEA+9gAFzK9AQD/YAAVsN0ZAO67Ag7vgoAA/WYADfDMiQD7
+gAAWMA2lAP1mAA2xDAUA/WYADbAMBQBb/3RlrrnAIMChW2iUIiwBdin0+gCiHaALBQD8AAIdoA0F
+AFv/a2WulsAgwKFbaIwiLAF2KfT0hoYV4AIFAMChW2iHsSJpKfX+hogV4AIFAMChW2iCIiwBaSn0
+EsZj8pjmFaACBQDAoVtofbEiaSn1+JjoFaACBQDAoVtoeLEiaSn1wKFb/vzHm3mhOBXEhipSwQOq
+Avq4JhWgAgUAwKFbaG+xImkp9fq4KBXgAgUAwKFbaGuxImkp9cDI/IRmFaACBQDRD8cl0Q8AbBAY
+hiSHJoUlHcZHGsZGG8ZHiNOJ0ozRnBGZEpgTjdCdEFgBjQWaQfVAIYFSAJ0A+gACHaALBQAFzEdb
+aE3SoPuMeAWhCwUAWAGD+4x0BaALFQBYAYH7iMYFoAs1APx9Ah3gDDUA/gAiHaAPBQBaMuhmo/D7
+jGIFoCsFAFgBdh/GDsDgKvIeK+oH+0AEBXH7BQALqgIq9h6I8Snq2wmIAZjxnvIu9gMaxiX/4IYV
+oAt1AFgBaRvESRnGIiuyyYKSjZSPk+iSASDwQQAAmOGf4+3mBCDgQQAA88BGFaK7MQAMuwqJkOnm
+ACsXwoAA67IAKVAEgABaL7bqxhMdWASAAFgBVRvEjQd6QwuqCSqhMAeLUSsWJApqKOG7Cg2ngoAA
+67IALVeCgABaL6noXxR9GASAAAoJQPgAIh2gAwUACYM4qjPqxgEZ2ASAAFgBQ383AbEz6sX+GdgE
+gABYAT/qxfwZ2ASAAFgBPCMSJPuL9AWgCwUAWAE4HMX4/4vwBaALdQD6AKIdoAVlAAbMLOzrB3ro
+BIAACq0CLnpS/cDyDaXftQAN2wLA2P3g0g2k6BUA3bD9ANINoAuVANvQGsXpWAEmHMXojcGOwu/C
+AyDYwQAAn7Oesp2xjMCcsKtL67IAKVAEgABaL3rvpwZ9WASAALGrGsXdWAEY/Yu6BeC3cQDrOwkA
+4QEAAAy7Co7Wj9eK1YnUiNOYw5nEmsWfx57Gj9KO0S7GAS/GAo3QLcYA67IAKVAEgABaL2YWw+kr
+YjwsYjcaxcusu1gBBBzFyo3BjsLvwgMg2YEAAC+2Ay62Ai22ASzCACy2AAtLCOuyAClQBIAAWi9X
+wDQDqTfvlwZ80ASAALGawH4HqzQaxbtYAPLrxbsZUASAAFovTQOpN++XBnzQBIAAsZoFqzQaxbVY
+AOrrxbQZUASAAFovRdOgJmI7/sEgD9CWAQB/pwGxo8iTfz8BsTP7i1gFoBsFAAO7NFgA3cAz68Wp
+GVAEgABaLzgGqwMLC0CrqxrFplgA1/uLSgWiCwUAWADUHMWjjcGOwu/CAyDZwQAAn7MutgIttgEs
+wgAstgCrS+uyAClQBIAAWi8nA6k375cGfNAEgACxmgWrNBrFllgAxOvFlRlQBIAAWi8fKQoKCak3
+75cHfNAEgAAqnAHDvgurNBrFjlgAuvuLHAWgSwUAWAC3+4sYBaALJQBYALUmCgXrxYkZUASAAFov
+DwapN++XB3zQBIAAKpwBB6M06sWDGdgEgABYAKrqxYIZ2ASAAFgApxzFgI3B7sICINn9AADvwgMl
+2AUAAC+2Ay62Ai22ASzCACy2AAtLCOuyAClQBIAAWi75wJMJqTfvlwd80ASAACqcAQWrNBrFcFgA
+levFXxlQBIAAWi7wwJwJqTfvlwZ80ASAALGaB6s0GsVoWACM68VnGVAEgABaLufvpwZ9WASAALGr
+GsVjWACF+4rGBaILBQBYAIIaxWEbxWFYAIDAINEPaKIIaKMPY/vS0Q8AwKD/7ygNoAsVAMCh/+8A
+DaALFQBsEAQVw+OlJShSgCn6/wk5AwmIAQhIAviwBhWgAgUAwKFbZz2xImkp9fiwCBWgAgUAwKFb
+ZzmxImkp9dEPAAAAbBAEKyIEGsVGWi7CFMT880BoHeDWBQD2g0YVoAIFAMChW2ctIiwBaSn0+INI
+FaACBQDAoVtnKLEiaSn1wKFbZyYaxQf6AIId4AxFAFv/3Ckq0fiDRhXgAgUAwKFbZx4iLAFpKfT6
+g0gVoAIFAMChW2casSJpKfXyAAIdoFUFAMChW2cVIiwBdSn0KwrX+oNGFeACBQDAoVtnECIsAWkp
+9PyDSBWgAgUAwKFbZwuxImkp9cAgwKFbZwgiLAFpJfQtCtX8g0YV4AIFAMChW2cCIiwBaSn0/oNI
+FaACBQDAoVtm/rEiaSn1wKFbZvv2g0YVoAIFAMChW2b4sSJpKfX+g0gV4AIFAMChW2bzsSJpKfXA
+oVtm8SIK0fKDRhWgAgUAwKFbZu2xImkp9fiDSBWgAgUAwKFbZuixImkp9fQMgh3gAgUAwKFbZuSx
+InUp9RrE9foYQh3gjCUAW/+ZZDAMIgoAwKFbZtyxInMp9fOF3AXgAgUA8AA4DaA1JQDAqltm1rEi
+dSERiUZ/l/B8l+0pMhJ+l+fAINEPxyXRD2wQBBTDbAQkCPKQBhXgAgUAwKFbZsqxImkp9fiQCBWg
+AgUAwKFbZsWxImkp9dEPAGwQBhPDsRTC0+MyVSHj2wAALMJWHcMn/ECmFaIzHQDyQIYV5MwBAA3M
+CozAnCYaxMsZxMv4mSgVoAuVACskB4mQ+CAGFeKICQAoJAMBiAgogAD4QMYdoAs1AFv/3cChW2ar
++4mABaAbBQBb/9nqxLkZ2ASAAFouNBvEvAs7LOrEuxXYCQAAW//S9YTABeACBQDAoVtmnrEidSn1
+LAoB/JAGFaACBQDAoVtmmCIsAWkp9PyQCBXgAgUAwKFbZpSxImkp9fQMgh3gAgUAwKFbZo+xInUp
+9cBg0mAmRoDAoVtmi7EiaSn1/pAIFaACBQDAoVtmhrEiaSn19Yk8BeACBQDAoVtmgrEidSn1+4k0
+BaELBQD8IAIdo+2FAP4AIh2gDwUAWjEZ8U74DeACBQAlOujAoVtmdrEidSn1wPL+mAYV4AIFAMCh
+W2ZxsSJpKfX4mAgVoAIFAMChW2ZsIiwBaSn0wCDAoVtmaSIsAWkl9CkKA/iYBhXgAgUAwKFbZmQi
+LAFpKfT6mAgVoAIFAMChW2ZfsSJpKfXAIMChW2ZcsSJpKfUdxCOP0SLq2wL/AZ/RltIm1gOW1IzV
++n0CHe7OlQD/gAQGMSMdAOzWBSlQBIAAWi3df6cBsar7iNAFr7oBAFv/e+vEVxlQBIAAWi3Xf6cB
+sar7iMQFr7oBAFv/dfuIwAWgy4UAW/9y+4i8BaH7RQBb/2/AINEPxyXRDwAAAABsEAQdwlwbwlwN
+LQj/oGgd4AIVACqydn+nFSyycPeAABYwCQUA7ctbfvgEgAAM3wz/RMAHkA4lACyycQzMEH/LTOz/
+DAV0YoAAwKH9hJgFoAsFAFtxxcYq0Q99p+sosnIICF8MiBB/g9+eMJ9A/mAIFaAKVQD9hIQFoAsF
+AFtxusAg0Q+ZMPyABhXv/44AkjD+gAYV7/9mAGwQBBzCNPxD4BXv7gUADt0BKsKC6MJ8Idh9AAAO
+uwH9TwANcLtNAOqyAQQAgYAAL8KBLsJ9D/45fisQwCDAoP2ETAWgC2UAW3Gi0Q8ixoJ6uPdj/+cA
+AABsEAQZxB3mTBEJ2UKAAOy7AgrWwoAACnoCCSkLC6oCKpZAKBwgiIAAahEKiAIolkHRDwAAbBAG
+W2wV84WcBaAJBQD1g1oF4AMVAOTDYh1wBIAA9gGiHeAGtQD6sAYdoAiFAG2KEgCQBA4KG++nB3TY
+BQAAKyZ/sZnzwAgH0gCdAMAw88ALd5IAnQDzwA7/UgCdAPPAEn8SAJ0A88AV7tIAnQDzwBg+kgCd
+APPAGqZSAJ0AeOdVKhow/YNWBaALtQBbbBTqRdAtYASAAPpgAAS3ugEA92FGDeAO5QB+sQJpvg4v
+QAEoCggPAgAI/wIvRAH3IOYNo6wBAGmqDCtAAcHA0w8MuwIrRAEuUIAcw9wtIn8jJoApUIErUIIq
+UIMoUITguxEMygKAAOuZAg1WAoAACogCCYgCmBAqUIUvUIYrUIcpUIjg/xENUgKAAO+qAg3eAoAA
+C5kCCpkC6RYBKfgEgAD4sjAVoAsFAPggRhWgCkUAW3FB0Q8AAAAAACoKcP2C8gWgC8UAW2vjHMF2
+/UBoHeAbJQD8mSQd4IpFAFtr3SpUgStBySNUkfNAaB3gCAUA+LEmHaerAQD3QYYN5zMBAMCeeaEC
+aa4OKkABLAoIDwIADKoCKkQB/rAQFaOrAQD3QBMMIgCdAPVAEs0SAJ0AY/6OACoKkP2CtgWgGwUA
+W2vFHMFY/UBoHeAbZQD8mUQd4KpFAFtrvypUgitByvKxRh3gDyUA/rImHefqAQD+YABBt6sBAHeh
+B8COeKECaa4KKUABwKgKmQIpRAELCkP3QBAUIgCdAPVAD9USAJ0A/rAQFa/4ngAAAAAAAAAqCrD9
+gnoFoBtFAFtrphzBOv1AaB3gG6UA/JlkHeDKRQBba6EqVIMrQcvysWYd5/oBAP5gAEHwDjUA/rIm
+HaerAQB3oQfAjnihAmmuCilAAcCoCpkCKUQBCwpD90AMzCIAnQD1QAyNEgCdAC5QgNMP8d/tzxIA
+nQAqCtD9gj4FoBuFAFtriBzBHP1AaB3gG+UA/JmEHeDqRQBba4MqVIQrQczysYYd4A9FAP6yJh3n
+6gEA/mAAQberAQB3oQfAjnihAmmuCilAAcCoCpkCKUQBCwpD90AJjCIAnQD1QAlNEgCdAC5QgPHf
+6l7SAJ0AKgrw/YICBaAbxQBba2v6maQdp7oBAOexDH1gBIAAwN59sQJpvgouQAHA+A/uAi5EAQoI
+Q/cAB5QiAJ0ADAlD9SAHPRIAnQAuUIDx3+gOkgCdACoaCP2B2gWgCxUAW2tW+pnEHae6AQDnsQx9
+YASAAMDefbECab4NLkABwPgPAgAP7gIuRAEKCEP3AAVsIgCdAAwJQ/UgBRUSAJ0ALlCA8d/lplIA
+nQAqGhz9ga4FoAtlAFtrQfqZ5B2nugEA57EMfWAEgADA3n2xAmm+Ci5AAcD4D+4CLkQBCghDdoFr
+DAlDaJplLlCAY/xsKkABwbALqgL6gCYdr/Z+ACxAAcHQDcwC/IAmHa/3+gAuQAHB8A/uAv6AJh2v
++Z4AKEABwZAJiAL4gCYdr/s+ACpAAcGwC6oC+oAmHa/8RgAsQAHB0A3MAvyAJh2v/VoALkABwfAP
+7gL+gCYdr/46AAAAAGwQChnAj8Ag5xwBKJgEgADqkIAgsAkAAPWCPAXgBAUAACAECggbf4dQ+kBo
+HaALBQBbakqaGOs0AAvgBIAA/MBoHeAOBQBbajErMACKGC0wASwxAQWqC+jdEA3ZAoAA7bsCDk0C
+gAAJSQILmQIppsAZwHSxzKxEKpCAtDPmbAQhEAUAAOkomGO4EQAA80AGb9/yNQDzQAgXkgCdAPNA
+Ca9SAJ0A80ALVxIAnQDzQAzu0gCdAPNADpaSAJ0A80AQLlIAnQDzQBHWEgCdABrBfCqif/FIQA3g
+BwUAFsF58CEmFeADBQAsYH3xhUAN4AIVAOp0AAlYBIAAW2oY2KCOGSngACrgAS7hAQWIC+iqEAzJ
+AoAA6pkCD30CgAAPTwIJ/wIvhsAtYH0u7AHuRAgBmAUAAO0zunEQBQAAGsFgKqJ/ixnmbAEl2BEA
+AOsWCSO4BQAA+vH2DaADBQDRDwAqCnz8H+IdoBtFAFtqvO3ClxVj/QAA7q8RDmeCgAAK/Dgu0pAZ
+wC/TDwLuASqQgA7MAizWkPFf+DeSAJ0AKgqc/B/iHaAbhQBbaq3uwUwVa/0AAO6oEQ7vgoAACo04
+L+KQGcAgAv8BKpCAD90CLeaQ8V/2n1IAnQAqCrz8H+IdoBvFAFtqnu/CehVz/QAA7qkRD3eCgAAK
+njgo8pAZwBHTDwKIASqQgAjuAi72kPFf9PcSAJ0AKgrg/B/iHaALBQBbao/owmwVe/0AAO6sEQ//
+goAACs84K4KQGcACArsBKpCAC/8CL4aQ8V/zXtIAnQAqGgD8H+IdoAtFAFtqgOvCXhVD/QAA7q0R
+DEeCgAAK2DgsspAZv/PTDwLMASqQgAyIAii2kPFf8baSAJ0AKhoU/B/iHaALlQBbanHswlAVW/0A
+AO6uEQ3fgoAACus4LcKQGb/kAt0BKpCADbsCK8aQ8V/wHlIAnQAqGij8H+IdoAvlAFtqYu3CQhVj
+/QAA7qsRDmeCgAAKvDgu0pAav9XTDwLuASqggA7MAizWkPFf7nYSAJ0AKho8/B/iHaAbNQBbalPu
+wjQVa/0AAO6oEQ7vgoAACo04L+KQAv8BD90C/dIGFe/2cgBsEAQYwD8Vv+YTwCj5D7AVoAYVAPmE
+TgXv9/UA+gGiHeASFQDzAAsv0AQFAPUj5hWgGnUA9SPGFaAcNQD1MAYdoAEaAAAAAAAAa9YCa9QU
+aNgRaNkOaNo+fSICe9oFfaIafNIXLlKEAEEEAG0aAN0RB98DD+4BDt0CLVaEsUToSyphmAkAAC0x
+kNMPDT1EaNHSa9S0atKx2kBbae76AuIdoAvVAP//UA2gHDUA84AABaADBQD2AoId4CZ1APAAvA2g
+FAUAAAo6RGiiUGiqeXehAmmhCvpgaB2gCxUAW2mt4zwBIiP9AADkQIZhEAkAACohkHapzxjAAiiC
+WhnAMwjoUQGIEQmIAilSlhzB6gyZAQmIAviyxhWv/yIAANowW2nGZa+6LyGQHcHi/bAQFaL/AQD7
+4AQA0A4VAADuGg7MAv2wBh2v/m4A2jBbabtlr44qIZAbwdkKCkKrqyuwgAsLRFtpmB3B08DP/bAG
+Ha/9ygBbapFbaocfwc4q9h4r9h8uUof+sOYVoAIFANEPwCDRDwAAAGwQBhrAexvAJxy/xRTAWRXA
+V/OAIgXgCAUA9JhEFaAZBQBtmhULiQIpxvnpwvklUAkAALGICQlNKaW958G7GiXCgAClRPQgBhWg
+BQUAi0KKQSs2O4lAKjY8KTY9GsG0+gAiHeAMFQD+uAATMA2lAPbGAAxwDgUA+GdGFaAPBQBaLh7m
+oEptEASAABzBqfuDTgWgCxUA/AFCHeAOBQD8xgAOMA8FAPxnRhWgDBUAWi4S5qAcbRAEgACxVele
+j2IgMQAAjRAPAgAPAgAt3QYtFgDtwZkZFqIAABfBmPQgCBWgBQUAi0KKQSs2O4lAKjY8KTY9GsGO
++gAiHeAMFQD+uAATMA2lAPbGAAxwDgUA+GdGFaAPBQBaLfjmoixtEASAABzBh/uDBAWgCxUA/AFC
+HeAOBQD8xgAOMA8FAPxnRhWgDBUAWi3t5qH+bRAEgACxVelej2IgMQAAjRD3fsAFoAUFAOfBdxbo
+GwAA7RYALQ7SAAAN1AKNRCxCAy02OytCAiw2PCpCASs2PSlCACo2Pik2PxrBZvoAIh3gDBUA/rgA
+FDANpQD3BgAMMA4FAPhnRhWgDwUAWi3Q5qGkbRAEgACxVeRMFCr2vAAAhBD3f5YFoAUFAC1NCo3U
+LE0KjMMtNjsrTQqLsiw2PCpNCoqhKzY9KU0KiZAqNj4pNj8awUz6ACId4AwVAP64ABQwDaUA9wYA
+DDAOBQD4Z0YVoA8FAFottuahUm0QBIAAJVwB5EwUKuaMAAAkEgD3fyoFoAUFAC1NDC3SJCxNDCzC
+Iy02OytNDCuyIiw2PCpNDCqiISs2PSlNDCmSICo2Pik2PxrBL/oAIh3gDBUA/rgAFDANpQD3BgAM
+MA4FAPhnRhWgDwUAWi2Z5qD5bRAEgACxVeRMFCrmfAAAHr8xLuB9f+dDGL8cKYLgL4Lg+4JGBeOp
+IQD7QCAVo8nhAP2AIBWjmUEA6ZwBLmECgADr/wEMzgKAAOyZAg1XAoAACv8CCf8CL4bg0Q8bvwsq
+suAtsuD6cAAHM8pBAOzMAidwCQAA4O4RDmYCgAD/hgAOM/ohAO7BCxf4CQAADP8R/4YADnOqAQDu
+3QEFUAkAAA2qAgyqAiq24NEPAAAAAAAAAPoAAh2gC4UA7MD5GWgEgABbbmfRDwAAAPoAAh2gC4UA
+7HQACWgEgABbbmHRDwAAAPoAAh2gC4UA7HQACWgEgABbblvRDwAAAPoAAh2gC4UA7HQACWgEgABb
+blXRDwAAAPoAAh2gC4UA7NQACWgEgABbbk/RDwAAAGwQBBTA4hO/dvWBwgXgCBUA+JAGFaACBQDa
+IFtoyAoJQWmRI+opEQVwgoAAAwCHpZkJAmEJAmEJAmEJAmH6QGgdoAsFAFtoubEiaSjLKkKAG8DR
+C6oC+pAGFaACBQDRD2wQBFv8pBq+6CyihR3Ay/2ABAZwLQUADcwCLKaFKaKXG79WC5kCKaaXGL8O
+H77lKICA///iHaAJBQD5V2YV7/rVAP0DABFQCYUAGMClbZoNKYKQCpkB6YaQJEATAAAu9iAu9iEu
+9iIu9iMu9iQu9iUu9ib/5OYVoAIFANEPAAAAbBAIAioCW0pLlBAcv5X8QGgd4AuFAO80AA0wBIAA
+/sBoHaAKVQBbbgzAgBW/CqVlI1aBJFaCKFaDCOQWmBQBAgAjUoMD6jD6wGgdoQslAFtKNQrqMCdS
+iMh82mAD6jArGgJbSjAK6jCIFAjkFgOqDFtKJNig7SQAC/AEgAD9fvQFoApVAO9SiCpPQoAACJks
++CAGFeALhQBbbe/AINEPAGwQBBPAhv18KgWgDRUA+mBoHaAYFQBtigoroAV7IAJ/t2K8qhrAcC7A
+gCmggC2keP9QMBXgG+UAebMFDe4CLsSALaCC/2G2DeAJJQAowIAJiAIoxIAooIP9YbYN4A9FAC7A
+gA/uAi7EgPlilg2gCoUAKcCACpkC+ZAGHeACBQDRD8Ag0Q+OoBzAZv3AEBXgC4UA/8AwFaAKJQBb
+bcfZMP4CIh3g+uUA0w9t+g0okAUKiAHolAUkyDEAAMcr0Q8AAGwQBiggAPpAaB2giSUA6YEIcRAT
+AADHLtEPJqwW8sAHuqIAnQAUwFATwE+TEfOAngXghQUA+iAGFaABsgC8M3QxVSgwBQWIAekwBCx3
+xAAAd5np2mD6YAgV4AwlAFtoMvwAAh2v66UACss4Zr/OjREsMQOIMtpw7cwIA1gNAAALgADxSqgN
+4A8VAC4wBdMPD+4CLjQFJ2AC48A1E8ANAACoZnJrctsw+sBoHaAMJQBbaB7jwCoVAGmAAPbAUBXv
+/hIAAIkQtGp6m10JaQy0mf8iAAfQCgUAixDqsAAl2AUAAJsQCRsUyriIEC2AAOyAASXL/QAA6t0I
+BEAJAABtmQ4pgACtyuyAASRACQAAqp0NyggewBcq5H0qCoBb/4nSoNEPAAAAAAAA//+YDaAKBQCO
+MBzAEP3AEBXgCiUA/8AwFaALhQBbbWxj/0kAbBAEGcAKKpJ/KZKACasRq5n7IAYVoBi1ACiUBFtn
+DMCgW2cFW2cAW2bGwCDRDwAAbBAE837CBeCppQD0AMIdoAUFAAUJPwUGPwUHPwUKPwQIPwkEPwUF
+P/hrKBWgigUACAA/0w9baz4Yv/Qbv/EKAT/tv/Aa8ASAAP4D4h3gChUA+2+mHaAMhQDltH4m0aEA
+AOy0fCbJ0QAA/AGiHaALBQBtyj7uhmEl4FkAAOmGYCRAgQAA6YZXJuiBAADuhlYl2AUAAOqGVSTI
+gQAA6oZUJVCBAAAu1GAu1GEu1hkPzDYs1GL0b4YdoA0lAC00fVtm3Bi9th+/0h6+2ggAhw8CYQ8C
+YQ4CYQ4CYdEPAGwQBBi+UiKCHcD4+3rABaANBQDwU5AN7/71ANbQ9gACHeAEBQD6ACId4AnVAG0I
+QyyC1yWC4axsCcIRolUuVHgqVSmXXCRVEyZUIitUICtUIS1UDSZUDC9UBZxQKVQELFEShVsjgh2s
+ROV3CAMwBQAAc2sDY/+1ACKCHmQgjRW/rfX/4h2gCQUA8ADkDaAGBQAAAILLJMQMK8QNJsQil8wq
+xSn/jwYdr4MFACPEICPEISOCHrCZ4ncIAzAFAADja0p12AUAACOC2CyC4aNjCTIRoszzgAYV4ALl
+ACLEBO/EBSz9jgAAKVB+9IAgFaALFQDln55iqAUAAG0IDClQfrFE5Z+OYqgFAABj/+wpgh/Ll/V6
+uAXgBgUA+ADiHeAH9QBtCCIsgtkrguGsbAnOEa67nLAlthYttA0ptAwntAQqgh+xZnprAmP/1sAg
+0Q8AAPegaB3v/JIAbBAEEr31HL95E791G793H791Lzbx+n4GFeAKFQAqNvgrNvIrNvYsNvnyfmYV
+oA4VAPJ+5hWgAgUA4jb1KWgEgABbSMkiNsiKPYs8jDuNOo45iDeJNo84KTbJqYgpMhEoNsqo/y82
+y6/uiD4uNsyu3S8yEC02za3Mjj8sNs6suy0yGis2z6uqLDIbKjbQqpkrMhwpNtGpiCoyHSg20qj/
+KTIeLzbTr+4oMh8uNtSu3S8yIC021a3MLjIhLDbWrLstMiIrNterqiwyJCo22KqZKzIlKTbZqYgq
+MigoNtqo/y822ykyKa/uLjbcKDIqrt0tNt2tzCw23qy7Kzbfq6oqNuAKmQgpNuEJiAgoNuJbZl3s
+MvEtaASAAOoy9y7uQoAA/aPgFe/uBQAO3QH9TwANf4sFAOuiAQYAkYAALzL2LjLy0w8P/jl+KxrA
+IMCg/XoABaALZQBbbHzJIfJ8ZhWgAgUA0Q8iNvd7qO9j/90iNuP9fkAFoAoFAPoAAh3v/UUAW2xx
+xyTRDwBsEAQavxoWvO4SvIwdvhsYvxjyT+gVoAuVAPV96AXgDOUA6YxUJDqxAABtKRokUIDTD9MP
+BAREa0IVZkASJ2ac5VwBIzBRAADAINEPAAAAAOJQuCIVEQAA71C4Ihy9AADuULgiJHEAAGtHAmtF
+CHtBBXTCy2pKyPzThhXv/xYAAGnjvPrThhWv/uYAafWx+NOGFe/+ugAAAGkopPjThhWv/oYAAGwQ
+BBW9XRa8yRq8ifN94gXgBAUAJKaBJKaDJKaAJKaCKDBxwZDppookfM6AAC1STf95iAWg31UAD90o
+H75NDt0sKGLAD4gBCNgCKGbALmLgD+4BDt0CLWbgLGLgG77Z/X26BaAKBQBb/hfAof16nAWgCwUA
+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
+hQBbY60duugcvSXs1kMmYAsAACzWRNEPbBAEGruJ66yoIQ1ZAABoIm7kkIRkkAUAAPxCYBFQBBUA
+YAA4aWQFBagIJ4YAckss6jQAClgEgABbZ53oYRRiIAUAAOWpCAsXdAAA9yAEHe//egClq/dgBh3v
+/1IA0Q8AK6J6KaKEo7sJuxHrmQgDDd0AAGhidmlk46Wcl8DRDwAZu3ypOSmQfWhANuSQZWIQBQAA
+ckOZY//DLLKQKaKEo8zpzBECIAUAAOyZCAMMbQAAaGIdaGQk8p/7q6IAnQBj/5pln0tj/5SlmPcA
+Bh3v/6YApZr3QAQd7/9+AKWb92AGFe//VgClnCfEANEPpZ0n1QDRD9EPAAAgAw6QDMAABiAGsTwg
+Aw6UCMAADCAGsTwgAw6YIMAAECAGsMQgAw6cBsAAOCAGsqAgAw6gCMAAPCAGsTwgAw6kAsAAQCAG
+sqAgAw6oCMAARCAGsTwgAw6sCIAASCAGscwgAw6wGIAAXCAGscwgAw60GIAAbCAGscwgAw64GIAA
+fCAGscwgAw68GIAAjCAGscwgAw7AGIAA3CAGscwgAw7EGIAA6CAGscwgAw7IGIAA9CAGscwgAw7M
+GIABACAGscwgAw7QCIABPCAGscxod19iY204NDM0X2NoZWNrcmFtOiBTdGFydAoAAAAAAFBIWSBw
+cm9jZXNzb3Igbm90IHJ1bm5pbmcsIHN0aWxsIGluIHJlc2V0IGZvciA1bXMsIHBvcnRfYml0X21h
+cD0ldSAKAAAAAAAAAAAAAAAAUEhZIEZXIGhhcyBiYWQgQ1JDLCBva19jcmM9JXUKAABQSFkgZmly
+bXdhcmUgbG9hZCBzdWNjZXNzZnVsIQoAAGh3X2JjbTg0ODM0X2xvYWRzZXF1ZW5jZTogU3RhcnRl
+ZAoAAAAAAAAAAAAAAAAAAGh3X2JjbTg0ODM0X2xvYWRzZXF1ZW5jZTogVXBsb2FkIGltYWdlIHRv
+IFBIWSBvbi1jaGlwIG1lbW9yCgAAAABod19iY204NDgzNF9sb2Fkc2VxdWVuY2U6IGRvbmUgbG9h
+ZGluZyBpbWFnZSAoaSA9ICV1KQoAAAAAAAAAAAAAaHdfYmNtODQzNF9sb3dwb3dlclsldV06IGVu
+YWJsZT0lZAoAAAAAAAAAAAAAAAAAaHdfYmNtODQzNF9sb3dwb3dlclsldV0sIGZhaWxlZCB0byBz
+ZXQgMzAuMHg0MDFBYml0IDcgc2luY2UgMzAuMHg0MDBFIGJpdD0xIGFmdGVyIDVtcywJcmVnPSV4
+CgAAaHdfY2w0NV9pbml0WyV1XSBhY2FwcyAlI3gKAAAAAABod19jbDQ1X3VwZF9zcGRfYWR2ICUj
+eAoAAAAAAAAAAGh3X2FxMTIwMl9saW5rX3VwWyV1XSB1cAoAAAAAAAAAcFsldV0gUEhZIE9WRVJI
+RUFURUQgLSBmb3JjZWQgcG93ZXIgZG93biAodGVtcD0lZCkKAAAAAAAAAAAAAAAAAEZMQVNIIG5v
+dCByZWFkeTogaSAldSBudnJSZWcgJSN4CgAAAAAAAAAAAAAAAAAAAEFRX0ZMQVNIX1JlYWR5IC0g
+VGltZW91dCAoMSkKAAAAQVFfRkxBU0hfUmVhZHkgLSBUaW1lb3V0ICgyKQoAAAAJQVFfUmV0dXJu
+Q29udHJvbE9mRkxBU0gKAAAAAAAAAGdhdGhlcl90YXNrc190b190eF9saXN0OiB0YXNrIGluIHVz
+ZSBbJXVdCgAAAAAAAGdhdGhlcl90YXNrc190b190eF9saXN0OiBpZHggWyV1XSwgdGFzayBmaWQg
+WzB4JXhdLCB0YXNrIHN0YXRlIFsweCV4XSwgdGFzayBjb25uIFsweCV4XSwgdGFzayBmZmxhZ3Mg
+WzB4JXhdLCBjb25uIGZpZCBbMHgleF0sIGRkcCBbJWRdCgAAAAAAAAAAAGdhdGhlcl90YXNrc190
+b190eF9saXN0OiB0YXNrIFsweCV4XSwgc3RhdGUgWzB4JXhdIG9uIGNvbm4gWzB4JXhdIG5vdCB2
+YWxpZCB0byBnYXRoZXIsIHNraXBwaW5nCgAAAAAAAAAAAAAAAAAAAABnYXRoZXJfdGFza3NfdG9f
+dHhfbGlzdDogdGFzayBbMHgleF0sIHN0aWxsIHF1ZXVlZCBvbiB0eCBwZW5kaW5nIGxpc3QuIFJl
+bW92aW5nIGl0LgoAAAAAAAAAAAAAAABnYXRoZXJfdGFza3NfdG9fdHhfbGlzdDogY29ubl9mYy0+
+Zmxvd2NfZmxhZ3MgWzB4JXhdLCBsaXN0X2VtcHR5IFsweCV4XSwgYWRkX3Rhc2tfY291bnQgWzB4
+JXhdCgB0b190eF9saXN0OiBubyB0YXNrIHRvIGNsb3NlIGZvciBjb25uIFsweCV4XSwgYmFpbGlu
+ZyB0byByZWNvdmVyeSBzdGF0ZSBbMHgleF0KAHNldF9kaWdlc3Q6IHVwbHN1Ym1vZGU6JXgKAAAA
+AAAAYXV0aGVudGljYXRlX3RhcmdldDogS0VZX0NIQVBfUkVTUCAtIFsweCV4JXgleCV4JXgleCV4
+JXhdCgAAAAAAAGF1dGhlbnRpY2F0ZV90YXJnZXQ6IEtFWV9DSEFQX1JFU1AgLSBbMHgleCV4JXgl
+eCV4JXgleCV4XQoAAAAAAABhdXRoZW50aWNhdGVfdGFyZ2V0OiBJbmNvcnJlY3QgcGFzc3dvcmQK
+AAAAAAAAAABDSEFQX0M6IGRpZ2VzdCBleHBhbnNpb24gZXJyb3IKAENIQVBfTjogVGFyZ2V0IHVz
+ZXJpZCBtaXNtYXRjaAoAQ0hBUF9SOiBkaWdlc3QgZXhwYW5zaW9uIGVycm9yCgBpU0NTSSBTZWMt
+cGFyYW1zIHJlY2VpdmVkIGhhdmUgZXJyb3JzISEKAAAAAAAAAABUYXJnZXQgbW92ZWQgdGVtcC4g
+Y29ubiAleCwgc2VzcyAleAoAAAAAAAAAAAAAAABMb2dpbiBGYWlsZWQhIS4gY29ubl9mYyBbMHgl
+eF0sIHNlc3NfZmMgWzB4JXhdLCBzdGF0dXNfY2xhc3MgWzB4JXhdCgAAAAAAAAAAAAAAAFByb3Rv
+Y29sIEVycm9yIGNiaXQgJWQgdGJpdCAlZCBjc2cgJWQgbnNnICVkCgAAAHJlY3Zfbm9waW46IGN0
+cmwgdGFzayBhbHJlYWR5IHBlbmRpbmcKAAAAAAAAAAAAAG9mbGRfcnhfZGF0YTogYWllZSwgaXNj
+c2kgY29ubiBbMHgleF0gZm9yIHNlc3MgWzB4JXhdLCB0eXBlIFsweCV4XSB0cmFuc2l0ZWQgaW4g
+dG9lIG1vZGUuIEtpY2tpbmcgcmVjb3ZlcnkgCgAAAABvZmxkX3J4X2RhdGE6IGNvbm4gdGlkIFsw
+eCV4XSwgcnhfZGF0YS0+c2VxIFsweCV4XSwgcnhfZGF0YS0+bGVuIFsweCV4XSwgcnhfZGF0YS0+
+c3RhdHVzIFsweCV4XQoAAAAAAAAAAAAAAAAAAAAAb2ZsZF9yeF9kYXRhOiBjc2sgeyBpZCBbMHgl
+eF0sIGNzb2NrX29mZnNldCBbMHgleF0sIGRsZW4gWzB4JXhdIH0KAAAAAAAAAAAAAAAAAABhY3Rf
+ZXN0OiB0Y2JfZmMgWzB4JXhdLCBmbG93Y19pY29ubl9mbGFncyBbMHgleF0KAAAAAAAAAAAAAAAA
+AAAAYWN0X2VzdGFiOiB0Y2JfZmMtPmZsb3djX2J1ZiBbMHgleF0sIHRjYl9mYy0+Zmxvd2NfdHlw
+ZSBbMHgleF0gdGNiX2ZjLT5mbG93Y19zdGF0ZSBbMHgleF0sIG5wYWdlcyBbMHgleF0sIGZsb3dj
+X3RwX3NuZF9tYXggWzB4JXhdCgAAAAAAAAAAAAAAAAAAYWN0X2VzdGFiOiBhdGlkIFsweCV4XSwg
+dGlkIFsweCV4XSwgb3AgWzB4JXhdLCByY3ZfaXNuIFsweCV4XSwgc25kX2lzbiBbMHgleF0sIGNz
+b2NrLT5mbG93Y19zdGF0ZSBbMHgleF0sIHRjcF9vcHQgWzB4JXhdLCB0Y2JfZmMtPmZsb3djX2lk
+IFsweCV4XSAKAAAAAAAAAAAAAAAAAGNza19mYy0+Zmxvd2NfY3NvY2tfY29va2llIFsweCV4XSAK
+AAAAAAAAAAAAAAAAAGNobmV0X3F1ZXVlX3htaXQ6IGZjLT5mbG93Y19pZCBbMHgleF0sIGJ1Zl9s
+ZW4gWzB4JXhdLCBidWZmZXJlZCBbMHgleF0sIGZpZm8ubnVtX2J5dGVzIFslMHhdCgAAAG5ldGlm
+X2RvX2RoY3A6IHdyLT5wYXJhbS52bGFuaWQgWyV1XSwgbDJkZXZfZmMtPmZsb3djX25ldF9sMmRl
+dl92bGFuZGV2IFsweCV4XQoAbDNpbjRfZGV2X2NvbmZpZzogd3ItPnBhcmFtLnZsYW5pZCBbJXVd
+LCBsMmRldl9mYy0+Zmxvd2NfbmV0X2wyZGV2X3ZsYW5kZXYgWzB4JXhdCgAAAAAAAAAAAAAAAAAA
+bmV0X2wzaW40X2Rldl9jb25maWc6IGwyZGV2X2ZjLT5mbG93Y19pZCBbMHgleF0sIGFkZHJlc3Mg
+YWxyZWFkeSB1c2VkIGJ5IHBvcnQgJWQKAAAAAAAAAAAAAAAAAAAAbmV0X2wzaW40X2Rldl9jb25m
+aWc6ICBhZGRyIFsweCV4XSwgbWFzayBbMHgleF0sIGd3IFsweCV4XSwgcmVmX2NudCBbMHgleF0g
+aW4gdXNlCgAAAAAAAAAAAAAAAAAAd3JoX2NobmV0X2lmY29uZjogbDJkZXZfZmMtPmZsb3djX2lk
+IFsweCV4XSwgbDJkZXZfZmMtPmZsb3djX3R5cGUgWyUweF0sIGlmY29uZl93ci0+c3Vib3AgWzB4
+JXhdCgAAAAAAAAAAAAAAAAAAAHdyaF9jaG5ldF9pZmNvbmY6IGwyZGV2X2ZjLT5mbG93Y19pZCBb
+MHgleF0sIHVua25vd24gc3Vib3AgWzB4JXhdCgAAAAAAAAAAAAAAAAAAd3JoX2NobmV0X2lmY29u
+ZjogbDJkZXZfZmMtPmZsb3djX2lkIFsweCV4XSwgcmMgJWQKAAAAAAAAAAAAAAAAAG5ldGlmX2lw
+X2NvbmZsaWN0X3RpbWVyX2NiOiBsMmRldl9mYy0+Zmxvd2NfaWQgWzB4JXhdLCBpbmRldmN0eHQt
+PnN0YXRlIFslZF0sIGluZGV2Y3R4dC0+cmV0cnlfY250IFslZF0KAAAAAAAAAABuZXRpZl9pcF9j
+b25mbGljdF90aW1lcl9jYjogbDJkZXZfZmMtPmZsb3djX2lkIFsweCV4XSwgaW5kZXZjdHh0IFsw
+eCV4XSwgaW4gZnJlZSBzdGF0ZQoAAAAAAAAAAABjbWRoX2NobmV0X2lmYWNlOiBmYyBbMHgleF0s
+IGZjLT5mbG93Y19pZCBbMHgleF0sIGZjLT5mbG93Y190eXBlIFsweCV4XSwgcCBbMHgleF0sIGxl
+bjE2IFsldV0sIGxvYyBbMHgleF0KAAAAAAAAY21kaF9jaG5ldF9pZmFjZTpsMmRldl9mYyBbMHgl
+eF0sIGwyZGV2X2ZjLT5mbG93Y19pZCBbMHgleF0sIGwyZGV2LT5mbG93Y190eXBlIFsldV0sIGwy
+ZGV2X2ZjLT5mbG93Y19uZXRfbDJkZXZfZmxhZ3MgWyUweF0KAAAAAABjbWRoX2NobmV0X2lmYWNl
+OiByMlswXToldSByMlsxXToldSwgc3Vib3A6MHgleAoAAAAAAAAAAAAAAAAAAAAAY21kaF9jaG5l
+dF9pZmFjZTogbDJkZXZfZmMtPmZsb3djX25ldF9sMmRldl9mbGFncyBjaGFuZ2VkIGZyb20gWyUw
+eF0gdG8gWyUweF0sIHJjIFslZF0KAAAAAAAAAAAAY2huZXRfbDJkZXZfdXBfbWJfY2I6IHJjIFsl
+ZF0sIHBvcnQgWyV1XSwgc3RhdGUgWyV1XSwgY29va2llIFsweCV4XQoAAAAAAAAAAAAAAABkaGNw
+X3Byb2Nlc3NfY2I6IGwyZGV2X2ZjLT5mbG93Y19pZCBbMHgleF0sIGRoY3R4dC0+c3RhdGUgWyUw
+eF0sIGRoY3R4dC0+cnRyeV9jbnQgWyV1XQoAAAAAAAAAAABkaGNwX3RpbWVyX2NiOiBESENQRElT
+Q09WRVIgc2VudCwgYnV0IG5vIHJlcGx5IGZyb20gYW55IHBvc3NpYmxlIHNlcnZlciBvbiB0aGUg
+bmV0d29yay4gUmV0cnlpbmcgYWdhaW4KAAAAAAAAAAAAZGhjcF90aW1lcl9jYjogbDJkZXZfZmMt
+PmZsb3djX2lkIFsweCV4XSwgc2VuZGluZyBESENQRElTQ09WRVIgZm9yIGRoY3R4dCBbMHgleF0g
+b24gcGlkIFslZF0KAAAAZGhjcF90aW1lcl9jYjogbDJkZXZfZmMtPmZsb3djX2lkIFsweCV4XSwg
+REhDUE9GRkVSIHJlY2VpdmVkIGZvciBkaGN0eHQgWyV4XSBwaWQgWyVkXQoAAAAAAAAAAAAAZGhj
+cF90aW1lcl9jYjogbDJkZXZfZmMtPmZsb3djX2lkIFsweCV4XSwgIERIQ1BBQ0sgcmVjZWl2ZWQg
+Zm9yIGRoY3R4dCBbJXhdLCBwaWQgWyVkXQoAAAAAAAAAAAAAZGhjcF90aW1lcl9jYjogbDJkZXZf
+ZmMtPmZsb3djX2lkIFsweCV4XSwgZGhjdHh0LT5pcGFkZHIgWzB4JXhdCgAAAAAAAAAAAAAAAAAA
+AABkaGNwX3RpbWVyX2NiOiBzdGFydGluZyB0aW1lciBmb3IgbGVhc2UgWyV1XSBzZWNvbmRzCgAA
+AAAAAAAAAAAAZGhjcF90aW1lcl9jYjogbGVhc2UgdGltZSBvZiBbJXVdIHNlY29uZHMgZXhwaXJl
+ZCwgc2VuZGluZyByZW5ldyByZXF1ZXN0CgAAAAAAAABkaGNwX3RpbWVyX2NiOiBsMmRldl9mYy0+
+Zmxvd2NfaWQgWzB4JXhdLCBubyByZXBseSBmcm9tIGRoY3Agc2VydmVyLCB0aW1pbmcgb3V0CgAA
+AAAAAAAAAAAAAAAAAABhdXRoX25lZ29fc2VjdXJpdHk6IHNlbmRfZmxhZyBbMHgleF0sIGF1dGhf
+cG9saWN5IFsweCV4XQoAAAAAAAAAYXV0aF9uZWdvX3NlY3VyaXR5OiBLRVlfQ0hBUF9SRVNQIC0g
+aGFzaFsweCV4JXgleCV4JXgleCV4JXhdCgAAAGF1dGhfbmVnb19zZWN1cml0eTogS0VZX0NIQVBf
+UkVTUCAtIGhhc2hbMHgleCV4JXgleCV4JXgleCV4XQoAAABhdXRoX25lZ29fc2VjdXJpdHk6IEtF
+WV9DSEFQX1JFU1AgLSBlcnJvciBlbmNvZGluZyB0byBoZXgKAAAAAAAAYXV0aF9uZWdvX3NlY3Vy
+aXR5OiBLRVlfQ0hBUF9SRVNQIC0gZWxlbiBbMHgleF0KAAAAAAAAAAAAAAAAAAAAAGF1dGhfbmVn
+b19zZWN1cml0eTogS0VZX0NIQVBfQ0hBTCAtIGVycm9yIGVuY29kaW5nIHRvIGhleAoAAAAAAABh
+dXRoX25lZ29fc2VjdXJpdHk6IEtFWV9DSEFQX0NIQUwgLSBlbGVuIFsweCV4XQoAAAAAAAAAAAAA
+AAAAAAAAbG9nb3V0X3RpbWVkb3V0OiBsb2dvdXQgcmVxdWVzdCB0aW1lZG91dCwgcG9zc2libGUg
+bmV0d29yayBpc3N1ZXMuIEZvcmNlZnVsbHkgYnJlYWtpbmcgcGF0aCBmb3Igc2VzcyBbMHgleF0K
+AAAAAHBpbmdfdGFyZ2V0OiBwaW5nIHRpbWVvdXQsIGtpY2tpbmcgcmVjb3ZlcnkgZm9yIHNlc3Mg
+WzB4JXhdCgAAAABjc29ja19mYWlsZWQ6IGNza19mYy0+Zmxvd2NfaWQgWzB4JXhdLCBjc2tfZmMt
+PmZsb3djX3N0YXRlIFsweCV4XSwgc2Vzc19mYy0+Zmxvd2NfaWQgWzB4JXhdLCBzZXNzX2ZjLT5m
+bG93Y19zdGF0ZSBbMHgleF0sIGV2dCBbMHgleF0KAAAAAAAAAAAAAAByYyBbJWRdLCBjc2tfZmMg
+WzB4JXhdLCBjc2tfZmMtPmZsb3djX2lkIFsweCV4XQoAAAAAAAAAAAAAAAAAAAAAcmVjb3Zlcnlf
+dGltZW91dDogc2VzcyBpZCBbMHgleF0gc3RhdGUgWzB4JXhdLCByY291bnQgWyVkXSwgZmxhZ3Mg
+WzB4JXhdCgAAAAAAAAByZWNvdmVyeV90aW1lb3V0OiBzZXNzIGlkIFsweCV4XSBpbiBsb2dvdXQs
+IGFib3J0IHRoZSBjb25uZWN0aW9uCgAAAAAAAAAAAAAAAAAAAHJlY292ZXJ5X3RpbWVvdXQ6IHNl
+c3NfZmMtPmZsb3djX2ZvaXNjc2lfc2Vzc19mbGFncyBbMHgleF0sIGNvbm5lY3Rpb24gcmVxdWVz
+dCBwZW5kaW5nLCBiYWlsaW5nIG91dAoAAAAAAAAAAAAAAABmb2lzY3NpOiBSZWNvdmVyeSB0aW1l
+ZCBvdXQgYWZ0ZXIgWyV1XSByZXRyeSwgYmFpbGluZyBvdXQKAAAAAAAAVENQIGNvbm4gZXN0YWJs
+aXNobWVudCBmYWlsZWQgJWQKAAAAAAAAAAAAAAAAAAAAZGlzY292ZXJ5X2RhdGE6IHNlc3MgeyBp
+ZCBbMHgleF0sIGZsYWdzIFsweCV4XSwgYnVmZmVyZWQgWyV1XS4gfQoAAAAAAAAAAAAAAAAAAABk
+aXNjb3ZlcnlfZGF0YTogc2VzcyB7IGlkIFsweCV4XSB9LCB1bHB0eGNoIFsldV0gbm8gY3JlZGl0
+cyBhdmFpbGFibGUsIHJlc2NoZWR1bGluZyByZXF1ZXN0LgoAAABJbnZhbGlkIG9wY29kZSAweCV4
+IGluIGN0cmwgcGF0aAoAAAAAAAAAAAAAAAAAAABERFAgZXJyb3IgWzB4JXhdLCBhYm9ydGluZyBj
+b25ubiBbMHgleF0KAAAAAAAAAAByeF9kYXRhX2RkcDogUmVzcG9uY2UgcmVjaWV2ZWQgZm9yIHRh
+c2sgWzB4JXhdIHdoaWxlIGludmFsaWQgdGFzayBvciBjb25uZWN0aW9uIHN0YXRlLiB0YXNrIHN0
+YXRlIFsweCV4XSwgY29ubiBzdGF0ZSBbMHgleF0sIGNvbm4gZmxhZ3MgWzB4JXhdCgBpaGRyOiBS
+ZXNwb25jZSByZWNpZXZlZCBmb3IgdGFzayBbMHgleF0gd2hpbGUgaW52YWxpZCB0YXNrIG9yIGNv
+bm5lY3Rpb24gc3RhdGUuIHRhc2sgc3RhdGUgWzB4JXhdLCBjb25uIHN0YXRlIFsweCV4XSwgY29u
+biBmbGFncyBbMHgleF0KAAAAAAAAAABpaGRyOiBJbnZhbGlkIHRhc2sgc3RhdGUgMHgleCBmb3Ig
+dGFzayAweCV4LCBpdHQgWzB4JXhdLCBvcGMgWzB4JXhdCgAAAAAAAAAAAAAAAHByb2Nlc3NfdG1m
+X3Jlc3BvbnNlOiBidWZmZXJlZCBbMHgleF0sIGlzdGFza19mYy0+Zmxvd2NfYnVmLT5zY2hlZF9u
+b2RlLm5leHQgWzB4JXhdLCBpc3Rhc2tfZmMgWzB4JXhdLCBpc3Rhc2tfZmMtPmZsb3djX2lkIFsw
+eCV4XQoAAAAAAAAAAAAAAAAAAHByb2Nlc3NfdG1mX3Jlc3BvbnNlOiB3ciBvcCBbMHgleF0sIHRt
+ZiBvcCBbMHgleF0KAAAAAAAAAAAAAAAAAAB0bWZfcmVzcDogZmxvd2M6MHgleCwgaWQ6MHgleCwg
+c3RhdGU6MHgleCwgeWllbGQ6MHgleAoAAAAAAAAAAAAAdG1mX3Jlc3A6IHRfdGFzazoweCV4IGZy
+ZWVkLgoAAABzY3NpX2NtZF9yZXNwOiBmbG93YzoweCV4LCBpZDoweCV4LCBzdGF0ZToweCV4LCB5
+aWVsZDoweCV4CgAAAAAAZGF0YV9pbl9yZXNwOiBmbG93YzoweCV4LCBpZDoweCV4LCBzdGF0ZTow
+eCV4LCB5aWVsZDoweCV4CgAAAAAAAHJldHVybl9wZW5kaW5nX3Rhc2s6IGNvb2tpZSBbMHglMDh4
+XSwgWzB4JTA4eF0KAHJldHVybl9wZW5kaW5nX3Rhc2s6IGRlbGF5IHByb2Nlc3NpbmcsIGNvbm4g
+ZmxhZ3MgWzB4JXhdCgAAAAAAAAByZXR1cm5fcGVuZGluZ190YXNrOiBEb25lIHNlbmRpbmcgdGFz
+ayBlcnJvciB0byBob3N0LCB1bHB0eGxlbjE2IFsldV0KAAAAAAAAAAAAAHJldHVybl9wZW5kaW5n
+X3Rhc2s6IGRlcXVldWUgdGFzayBbMHgleF0sIHN0YXRlIFsweCV4XSBmcm9tIHR4X2xpc3QKAAAA
+AAAAAAAAAAAAcmV0dXJuX3BlbmRpbmdfdGFzazogYWxsIHRhc2tzIHJldHVybmVkLCByZWNvdmVy
+eSBzdGF0ZSB0cmFucyB0byBbMHgleF0KAAAAAAAAAABjbGVhcl9kZHBfbWFwOiBpc3Rhc2tfZmMg
+WzB4JXhdLCBpc3Rhc2tfZmMtPmZsb3djX2lkIFsweCV4XSBidWZmZXJlZCAldQoAAAAAAAAAAGNs
+ZWFyX2RkcF9tYXA6IGlzdGFza19mYy0+Zmxvd2NfaXRhc2tfbnBwb2QgJXUsIG5wcG9kICV1LCBw
+cGRhZGRyIFsweCV4XQoAAAAAAAAAY2xlYXJfZGRwX21hcDogYWxsIHJldHVybmVkIHRhc2tzIGRk
+cCBjbGVhcmVkLCByZWNvdmVyeSBzdGF0ZSB0cmFucyB0byBbMHgleF0KAAB3cmhfZm9pc2NzaV9u
+b2RlOiBub2RlX3dyLT5mbG93aWRfbGVuMTYgMiBbJXhdCgB3cmhfZm9pc2NzaV9jaGFwOiBpZF9s
+ZW4gWyV4XSwgc2VjX2xlbiBbJXhdCgAAAAB3cmhfZm9pc2NzaV9jaGFwOiB0Z3RfaWRfbGVuIFsl
+eF0sIHRndF9zZWNfbGVuIFsleF0KAAAAAAAAAAAAAAAAc2Vzc2lvbl9ibG9jazogc2Vzc19mYy0+
+Zmxvd2NfaWQgWzB4JXhdLCBzZXNzX2ZjLT5mbG93Y19zdGF0ZSBbMHgleF0sIGNvbm5fZmMtPmZs
+b3djX2lkIFsweCV4XSwgY29ubl9mYy0+Zmxvd2Nfc3RhdGUgWzB4JXhdLCBjc2tfZmMtPmZsb3dj
+X2lkIFsweCV4XSwgY3NrX2ZjLT5mbG93Y19zdGF0ZSBbMHgleF0KAAAAAAAAAAAAAAAAAAAAc2Vz
+c2lvbl91bmJsb2NrOiBzZXNzX2ZjLT5mbG93Y19pZCBbMHgleF0sIHNlc3NfZmMtPmZsb3djX3N0
+YXRlIFsweCV4XSwgY29ubl9mYy0+Zmxvd2NfaWQgWzB4JXhdLCBjb25uX2ZjLT5mbG93Y19zdGF0
+ZSBbMHgleF0sIGNza19mYy0+Zmxvd2NfaWQgWzB4JXhdLCBjc2tfZmMtPmZsb3djX3N0YXRlIFsw
+eCV4XQoAAAAAAAAAAAAAAAAAc3RhcnRfbG9nb3V0OiBTZXNzLWlkIFsweCV4XSBhbHJlYWR5IGxv
+Z2dpbiBvdXQuCgAAAAAAAAAAAAAAAAAAAHBlZXJfY29uOiBjc2tfZmMgPT4gZmxvd2lkIFsweCV4
+XSwgZmxvd2NfYnVmIFsweCV4XQoAAAAAAAAAAAAAAABhbGxvY19zZXNzOiBsb2dpbl9yZXRyeSBb
+JWRdLCByZWNvdl90aW1lb3V0IFslZF0KAAAAAAAAAAAAAAAAAAAAZm9pc2NzaV9jdHJsOiBzdWJv
+cCBbMHgleF0sIHNlc3NfdHlwZV90b19lcmwgWzB4JXhdLCBzZXNzX3R5cGUgWzB4JXhdCgAAAAAA
+AAAAAABmb2lzY3NpX2N0cmw6IHJlY2VpdmVkIGJsb2NrZWQgZnJvbSBkcml2ZXIsIHRyaWdnZXJp
+bmcgcmV0dXJuIHRhc2tzIG5vdy4KAAAAAAAAAFdBVENIRE9HX2Rpc3BhdGNoIGNhc2UgdG8gYXZv
+aWQ6IENvdW50ZXJfd2F0Y2hkb2cgJXUgQ291bnRlcl9zY2hlZCAldSAKAAAAAAAAAAAAeGdtYWNb
+JXVdIHNldHRpbmcvdW5zZXR0aW5nIGhzcyByZXN5bmMgYml0CgAAAAAAV0FUQ0hET0c6IGRldmlj
+ZSBzaHV0ZG93bgoAAAAAAABXQVRDSERPRzogcG9ydFsldV0gcGF1c2Ugd2F0Y2hkb2cgdGltZW91
+dAoAAAAAAABXQVRDSERPRzogYnlwYXNzIHRpbWVvdXQKAAAAAAAAAFdBVENIRE9HOiBGTFIgLSBu
+b3QgaW1wbGVtZW50ZWQgeWV0CgAAAAAAAAAAAAAAAFdBVENIRE9HOiB0ZW1wZXJhdHVyZSBvZiAl
+ZEMgZXhjZWVkcyB0aHJlc2hvbGQgb2YgJWRDCgAAAAAAAAAAAABmaWx0ZXI6IHBvcmdyYW1taW5n
+IHRpZCAldSAobGUgdGNhbSBpbmRleCAldSkuLi4KAAAAAAAAAAAAAAAAAAAAZmlsdGVyOiByZXF1
+ZXN0aW5nIGNvbXBsZXRpb24uLi4KAAAAAAAAAAAAAAAAAAAAbDJkZXZfc2VuZF9wb3J0X2V2ZW50
+OiB3ciBbMHgleF0gcGVuZGluZyBvbiBwb3J0IFslZF0sIGN1cnJlbnQgdHJ5IFslZF0KAAAAAAAA
+AABGQ09FIEZyZWU6IHN0aWxsIHlpZWxkZWQgd2hlbiBmcmVlaW5nLi4uZmxvd2NfaWQgJXggZmxv
+d2NfZmxhZ3MgJXggCgAAAAAAAAAAAAAAAEZDIHhjaGcgYWxsb2MgZmFpbGVkOiBhdmFpbCAlZAoA
+ZGNieF9pZWVlX2NtZGhbJXVdIHdyaXRlIG9ubHkgcGVybWl0dGVkIG9uIGxvY2FsIGNvbmYKAAAA
+AAAAAAAAAGRjYnhfaWVlZV9jbWRoWyV1XSBjYW5ub3Qgd3JpdGUgJXUgYXBwcyAoTUFYOiAldSkK
+AAAAAAAAAAAAAAAAAABkY2J4X2llZWVfY21kaFsldV0gcmVxdWVzdGluZyBEQ0JfSUVFRV9DTUQK
+AAAAAABkY2J4X2llZWVfY21kaFsldV0gdW5rbm93biBmZWF0dXJlIHdyaXRlOiAldQoAAABkY2J4
+X2llZWVfY21kaFsldV0gdW5rbm93biBmZWF0dXJlIHJlYWQ6ICV1CgAAAABGQ29FIEREUCBmYWls
+ZWQgOiBveF9pZCAweCV4IHJ4X2lkIDB4JXgKAAAAAAAAAABGQ29FIEREUCBmYWlsZWQgOiBEZHBS
+ZXBvcnQgMHgleCBEZHBWYWxpZCAweCV4CgBQUkxJIFJzcCB0aW1lZG91dCA6IGZsb3djX2lkIDB4
+JXggb3hfaWQgMHgleCByeF9pZCAweCV4IAoAAAAAAAAAY2Fubm90IGFsbG9jYXRlIG9mZmxvYWRl
+ZCBmaWx0ZXIgY29ubmVjdGlvbgoAAAAAY2Fubm90IGFsbG9jYXRlIG9mZmxvYWRlZCBmaWx0ZXIg
+SVB2NiBjb25uZWN0aW9uCgAAAAAAAAAAAAAAAAAAAGRpc3BhdGNoX2RlZmVycmVkX2NsYXNzX2Ns
+YXNzX3NoYXBpbmdbJXU6JXVdOiBsaXN0X2VtcHR5CgAAAAAAAABsb29wYmFjayBidWZmZXIgZ3Jv
+dXBbJXVdIGlzIGRpc2FibGVkCgAAAAAAAAAAAABpbnZhbGlkIGJ1ZmZlciBncm91cFsldV0gY29u
+ZmlndXJhdGlvbjogbXR1ICV1IGx3bSAldSBod20gJXUgZHdtICV1CgAAAAAAAAAAAAAAAGZjICV1
+IHZmICV1IGdvdCBpdmY9MHgleCxyYW5nZTogJSN4LSUjeCAoJXUvJXUgdXNlZCkKAAAAAAAAAAAA
+AABWSSAldSBjYW5ub3QgZ2V0IFJTUyBzbGljZTogTm8gbW9yZSBzbGljZXMgYXZhaWxhYmxlICh1
+c2VkICV1LyV1KQoAAAAAAAAAAAAAAAAAAHBmbiAldSB2Zm4gJXUgd2l0aCBwb3J0IG1hc2sgMHgl
+eCBjYW5ub3QgYWNjZXNzIHBvcnQgJXUsIHJldCAlZAoAAAAAAAAAAAAAAAAAAAAAcGZuICV1IHZm
+biAldSBjb3VsZCBub3QgYWxsb2NhdGUgdmlpZCwgcmV0ICVkCgAAcGZuICV1IHZmbiAldSBjb3Vs
+ZCBtYXAgdmlpZCAgMHgleCB0byBmbG93YywgcmV0ICVkCgAAAAAAAAAAAAAAAHBmbiAldSB2Zm4g
+JXUgY291bGQgbm90IGFsbG9jYXRlIHV3aXJlIGZ1bmMgJWQgbWFjIGFkZHIsIHJldCAlZAoAAAAA
+AAAAAAAAAAAAAAAAbWlpX2ZvcmNlX3NwZWVkWyV1XTogcmNhcHMgMHgleAoAAAAAAAAAAAAAAAAA
+AAAAbWlpX3Bkb3duWyV1XTogcG93ZXJkb3duIGVuICV1CgBwb3J0X2NtZF9oYW5kbGVyOiB1bmtu
+b3duIHUuZGNiLnR5cGUgMHgleAoAAAAAAABwb3J0WyV1OjB4JTAyeDoweCUwMnhdOiB1bmtub3du
+IGFjdGlvbiAweCV4CgAAAABwb3J0WyV1OjB4JTAyeDoweCUwMnhdOiB1bmtub3duIHJlYWQgYWN0
+aW9uIDB4JXgKAAAAAAAAAAAAAAAAAAAAY3BsX2Vycl9ub3RpZnk6IHRpZCAldSBjcGwgMHglMDh4
+JTA4eAoAAAAAAAAAAAAAY3BsX2Vycl9ub3RpZnk6IHRpZCAldSBjcGwgMHglMDh4JTA4eCAweCUw
+OHglMDh4CgAAAAAAAAAAAAAAAAAAAGNwbF9lcnJfbm90aWZ5OiB0aWQgJXUgbGVuICV1CgAARkNP
+RSBGcmVlOiBzdGlsbCB5aWVsZGVkIHdoZW4gZnJlZWluZy4uLmZsb3djX2lkICV4IGZsb3djX2Zs
+YWdzICV4IAoAAAAAAAAAAAAAAABGQ09FIEJQIFdSIEVSUjogV1Igd2l0aCBjb29raWUgJXgleCBl
+cnJvcmVkIGJhY2sgCgAAAAAAAAAAAAAAAAAAc2NzaV9hYm9ydDogRW50ZXJpbmcgQWJvcnRfdGFz
+aywgYnVmZmVyZWQgWyV1XQoAc2NzaV9hYm9ydDogcmMgWzB4JXhdIHJlZiB0YXNrIG5vdCBvdXRz
+dGFuZGluZwoAc2NzaV9hYm9ydDogaWRhdGEtPm9wIFsweCV4XSwgZmxhZ3MgWzB4JXhdLCBmdW5j
+IFsweCV4XSwgbHVuX2lkeCBbMHgleF0KAAAAAAAAAABzY3NpX2Fib3J0OiB3ci0+aXFpZCBbMHgl
+eF0sIGlzdGFza19mYy0+Zmxvd2Nfc2dlX2lxaWQgWzB4JXhdLCBpc3Rhc2tfZmMgdGFzayBmbGFn
+cyBbMHgleF0KAAAAAABzY3NpX2FicnQ6dGFzayBmbG93Y1sweCV4XSwgdG1mX2xpc3RfZW1wdHk6
+CgAAAABzY3NpX2Fib3J0OiBjb25uIFsweCV4XSwgY21kc24gWzB4JXhdLCBzZW50X2NtZHNuIFsw
+eCV4XSwgbWF4X2NtZHNuIFsweCV4XSwgaXR0IFsweCV4XQoAAAAAAAAAAABhYm9ydC9jbG9zZSBX
+UiB3aXRoIGNvb2tpZSAweCVseCB3YXMgaXNzdWVkIG9uIHNzbiAweCV4IGluIHdyb25nIHN0YXRl
+IDB4JXgKAAAAAGFib3J0IFdSIG9uIHNzbiAweCV4IGRpZCBub3QgZmluZCBXUiB3aXRoIGNvb2tp
+ZSAweCV4JXgKAAAAAAAAAABjbG9zZSBXUiB3aXRoIGNvb2tpZSAweCVseCBvbiBzc24gMHgleDtk
+aWQgbm90IGZpbmQgV1Igd2l0aCBjb29raWUgMHglbHgKAAAAAAAAAGFib3J0IFdSIG9uIHNzbiAw
+eCV4IHdhcyBpc3N1ZWQgb24geGNoZyAweCV4IHdpdGggcnhfaWQgMHgleCBpbiB3cm9uZyBzdGF0
+ZSAweCV4CgAAAAAAAAAAAAAAAAAAAHNjc2lfbHVyOiBFbnRlcmluZyBMVVIgaGFuZGxlciwgYnVm
+ZmVyZWQgWyV1XQoAAHNjc2lfbHVyOiBpZGF0YS0+b3AgWzB4JXhdLCBmbGFncyBbMHgleF0sIGZ1
+bmMgWzB4JXhdLCBsdW5faWR4IFsweCV4XQoAAAAAAAAAAAAAc2NzaV9sdXI6IHdyLT5pcWlkIFsw
+eCV4XSwgaXN0YXNrX2ZjLT5mbG93Y19zZ2VfaXFpZCBbMHgleF0sIGlzdGFza19mYyB0YXNrIGZs
+YWdzIFsweCV4XQoAAAAAAAAAc2NzaV9sdXI6IGNvbm4gWzB4JXhdLCBjbWRzbiBbMHgleF0sIHNl
+bnRfY21kc24gWzB4JXhdLCBtYXhfY21kc24gWzB4JXhdLCBpdHQgWzB4JXhdCgAAAAAAAAAAAAAA
+ZGNieF9hcHBseV9hcHBfY2ZnWyV1XU5FVyBBUFAgVExWIAoAAAAAAAAAAAAAAAAAZGNieF9jZWVf
+ZmVhX3NtWyV1XSBGZWF0dXJlWyV1XSBGRUFUVVJFX0xJTktVUAoAZGNieF9jZWVfZmVhX3NtWyV1
+XSBGZWF0dXJlWyV1XSBTRVRfTE9DQUxfUEFSQU1FVEVSUwoAAAAAAAAAAAAAAGRjYnhfY2VlX2Zl
+YV9zbVsldV0gRmVhdHVyZVsldV0gRkVBVFVSRV9OT19BRFZFUlRJU0UKAAAAAAAAAAAAAABkY2J4
+X2NlZV9mZWFfc21bJXVdIEZlYXR1cmVbJXVdIEZFQVRVUkVfUEVFUl9OT1RfQURWRVJUSVNFX0RD
+QlgKAAAAAAAAAAAAAAAAAAAAAGRjYnhfY2VlX2ZlYV9zbVsldV0gRmVhdHVyZVsldV0gRkVBVFVS
+RV9QRUVSX05PVF9BRFZFUlRJU0VfRkVBVFVSRQoAAAAAAAAAAAAAAAAAZGNieF9jZWVfZmVhX3Nt
+WyV1XSBGZWF0dXJlWyV1XSBGRUFUVVJFX1VQREFURV9PUEVSX1ZFUlNJT04KAAAAAGRjYnhfY2Vl
+X2ZlYV9zbVsldV0gRmVhdHVyZVsldV0gRkVBVFVSRV9QRUVSX1VQREFURV9PUEVSX1ZFUlNJT04K
+AAAAAAAAAAAAAAAAAAAAZGNieF9jZWVfZmVhX3NtWyV1XSBGZWF0dXJlWyV1XSBGRUFUVVJFX0dF
+VF9QRUVSX0NGRwoAAAAAAAAAAAAAAGRjYnhfY2VlX2ZlYV9zbVsldV0gRmVhdHVyZVsldV0gRkVB
+VFVSRV9DRkdfTk9UX0NPTVBBVElCTEUKAAAAAABkY2J4X2NlZV9mZWFfc21bJXVdIEZlYXR1cmVb
+JXVdIEZFQVRVUkVfVVNFX0xPQ0FMX0NGRwoAAAAAAAAAAAAAZGNieF9jZWVfZmVhX3NtWyV1XSBG
+ZWF0dXJlWyV1XSBGRUFUVVJFX1VTRV9QRUVSX0NGRwoAAAAAAAAAAAAAAGRjYnhfY2VlX2ZlYV9z
+bVsldV0gRmVhdHVyZVsldV0gRkVBVFVSRV9GRUFUVVJFX0RJU0FCTEVECgAAAAAAAABkY2J4X2Nl
+ZV9mZWFfc21bJXVdIEZlYXR1cmVbJXVdIEZFQVRVUkVfRVJST1JfQ0hBTkdFCgAAAAAAAAAAAAAA
+ZGNieF9pZWVlX3Byb2Nlc3NbJXVdIHJlY2VpdmVkIEJXcyBkbyBub3QgYWRkIHVwIHRvIDEwMCEK
+AAAAAAAAAFdBUk5JTkc6IHJlY2VpdmVkIEFwcCBUTFYgY29udGFpbnMgbW9yZSB0aGFuRlcgY2Fu
+IGhhbmRsZSAobWF4OiAldTsgdGx2IGNvbnRhaW5zOiAldQoAAAAAAAAAAAAAAGRjYnhfaWVlZV9w
+cm9jZXNzWyV1XSBzdWJ0eXBlICUjeCByZW1fZnRfY2hhbmdlZCAldSBzbV9jaGFuZ2UgJXUKAAAA
+AAAAAAAAAAAAAAAAZGNieF9pZWVlX3Byb2Nlc3NbJXVdIHN1YnR5cGUgdW5rbm93bgoAAAAAAAAA
+AAAAZGNieF9wYXJzZV9wa3RbJXVdIGVycm9yICVkCgAAAABjaG5ldF9sMnRfdXBkYXRlOiBsMmRl
+dl9mYyBbMHgleF0sIGwyZGV2X2ZjLT5mbG93Y19pZCBbJXVdIGwyZGV2X2ZjLT5mbG93Y19mbGFn
+cyBbMHgleF0sIGludGYgWzB4JXhdCgAAAAAAAAAAAAAAY2huZXRfbDJ0X3VwZGF0ZTogbDJkZXZf
+ZmMtPmZsb3djX2lkIFsldV0gYWxyZWFkeSBzY2hlZHVsZWQKAAAAAGNobmV0X2wydF91cGRhdGU6
+IGluIGRlbGF5ZWRfcHJvY2Vzc2luZywgbDJ0ZW50IFslMDh4XQoAAAAAAAAAAABjaG5ldF9hcnBf
+dXBkYXRlX2NhY2hlOiBhcnAgaXA0IGVudHJ5IGZvdW5kIAoAAABjaG5ldF9hcnBfdXBkYXRlX2Nh
+Y2hlOiBhcnAgaXA2IGVudHJ5IGZvdW5kIAoAAABjaG5ldF9hcnBfdXBkYXRlX2NhY2hlOiBib3Ro
+IGlwNCBhbmQgaXA2IGFkZHIgY2Fubm90IGJlIG51bGwKAAAAY2huZXRfbDJ0X3VwZGF0ZTogbDJ0
+X3VwZGF0ZSByZXF1ZXN0IHNlbnQgbDJ0ZW50IFslMDh4XSwgbDJ0ZW50LT5pZHggWyVkXSwgbDJ0
+ZW50LT52bGFuIFslZF0KAAAAbmV0aWZfcHJvY2Vzc19kaGNwOiBsMmRldl9mYy0+Zmxvd2NfaWQg
+WzB4JXhdLCBwcm9jZXNzaW5nLCBvcHRfbGVuICV1CgAAAAAAAAAAAABjaG5ldF9kaGNwX3JlY3Y6
+IHZsYW5pZCBbJXVdLCBsMmRldl9waWRfZmMtPmZsb3djX25ldF9sMmRldl92bGFuZGV2IFsweCV4
+XSwgbDJkZXZfZmMgWzB4JXhdCgAAAABjaG5ldF9kaGNwX3JlY3Y6IGwyZGV2X2ZjLT5mbG93Y19p
+ZCBbMHgleF0sIGRoY3R4dC0+c3RhdGUgWyVkXSwgbWFsYWNpb3VzIGRoY3AgcmVjdiBmb3Igbm8g
+cmVxdWVzdAoAAAAAAAAAAAAAAAAAZGhjdHh0LT5zdGF0ZSA6ICVkCgAAAAAAAAAAAAAAAABsMmRl
+dl9mYy0+Zmxvd2NfaWQgWzB4JXhdLCBCYWQgREhDUCBjb29raWUgcmVjaWV2ZWQsIGFib3J0aW5n
+CgAAQ291bGQgbm8gYWxsb2NhdGUgcGNiISEgRnJlZWluZyBmY2YgISEhCgAAAAAAAAAAdm5fcGFy
+c2UgdW5rbm93biBzdWJjb2RlICV1CgAAAAB2bl9wYXJzZSB1bmtub3duIGR0eXBlICV1CgAAAAAA
+AGlnbm9yaW5nIGZpcCByZWN2IGZvciBwY2IgZmxvdzoleCBpbiBvZmZsaW5lIHN0YXRlCgAAAAAA
+AAAAAAAAAABmaXBfdm4ydm5fcmVjdl9lcnIgCgAAAAAAAAAAAAAAAENvdWxkIG5vdCBhbGxvY2F0
+ZSBmbG93YyEhISEKAAAAQ291bGQgbm90IGFsbG9jYXRlIFNDQiBmbG93YyEhISEKAAAAAAAAAAAA
+AAAAAAAAQ291bGQgbm90IGZpbmQgcmlnaHQgc2NiIGZvciBsb2dvCgAAAAAAAAAAAAAAAAAAaWdu
+b3JpbmcgZmlwIHJlY3YgZm9yIGZjZiBmbG93OiV4IGluIG9mZmxpbmUgc3RhdGUKAAAAAAAAAAAA
+AAAAAENvdWxkIG5vdCBmaW5kIHJpZ2h0IHNjYiBmb3IgZmxvZ2kKAAAAAAAAAAAAAAAAAHBvcnQg
+MHgleCwgc3RhdGUgMHgleCwgcmV0cnkgbm90IHN1cHBvcnRlZAoAAAAAAEZsb2dpIHJlc3AgcmN2
+IHdpdGggdW5rbm93biB4Y2hnIG94X2lkJXggc2lkICUyeCUyeCUyeCBkaWQgJTJ4JTJ4JTJ4CgAA
+AAAAAAAAAAAATl9QT1JUIDB4JXgleCV4IHJlamVjdGVkIFBMT0dJIHdpdGggcmVhc29uIGNvZGUg
+JXgKAAAAAAAAAAAAAAAAAEFCVFMgd2hpbGUgYXdhaXRpbmcgUFJMSSBSc3A6IGZsb3djX2lkIDB4
+JXggb3hfaWQgMHgleCByeF9pZCAweCV4IAoAAAAAAAAAAAAAAAAAQUJUUyBmYWtlIFJzcDogbG9j
+IDB4JXggb3hfaWQgMHgleCByeF9pZCAweCV4CgAAbGxkcF9yeF9wa3RfaGFuZGxlclsldV0gZHJv
+cCBwcmUtaW5pdCAoY291bnQgPSAldSkKAAAAAAAAAAAAAAAAACV4JXgleCBSZWNpZXZlZCBMT0dP
+IGZyb20gJXgleCV4IAoAAAAAAAAAAAAAAAAAAGNhbm5vdCBhbGxvY2F0ZSBQT0ZDT0UgZmlsdGVy
+IGNvbm5lY3Rpb24gZm9yIHhfaWQgJXggCgAAAAAAAAAAAABGYWlsZWQgdG8gcG9zdCB4Y2hnIGVy
+cjogc3NuaSAweCV4IGNvb2tpZSAweCVseCBydmFsICV4IAoAAAAAAAAAdGNwX3JlbGVhc2VfdGlk
+OiB0aWQgWzB4JXhdLCBmbG93YyBmbGFncyBbMHgleF0sIGJ1ZmZlcmVkIFsweCV4XQoAAAAAAAAA
+AAAAAAAAAAB0Y3BfcmVsZWFzZV90aWQ6IHNpemVvZih0Y2JfZmMtPmZsb3djX2ljb25uKSBbJXVd
+LCBieXRlcwoAAAAAAAAAYWN0X29wZW5fcnBsOiBhdGlkIFsweCV4XSwgdGlkIFsweCV4XSwgdGNi
+X2ZjLT57IGlkIFsweCV4XSwgc3RhdGUgWzB4JXhdLCB0eXBlIFsweCV4XSB9LCBjcGxfb3AgWzB4
+JXhdLCBzdGF0dXMgWzB4JXhdCgAAAAAAAAAAAABhY3Rfb3Blbl9ycGw6IGNza19mYy0+eyBpZCBb
+MHgleF0sIHN0YXRlIFsweCV4XSwgY3NvY2tfZmxhZ3MgWzB4JXhdIH0gCgAAAAAAAAAAAGFjdF9v
+cGVuX3JwbDogcmVjdmQgbmVnIGFkdmljZSBbMHgleF0KAAAAAAAAAAAAAHNlbmRfYWJvcnRfcnBs
+OiBjc2tfZmMtPmZsb3djX3R5cGUgWzB4JXhdLCBjc2tfZmMtPmZsb3djX2lkIFsweCV4XSwgdGlk
+IFsweCV4XSwgdWxwdHhjaCBbJXVdLCBidWZmZXJlZCBbJXVdCgAAAAB3cmhfb2ZsZF90Y3BfY2xv
+c2VfY29uX3JlcGx5OiB0Y2JfZmMtPmZsb3djX2lkIFsweCV4XSwgdGNiX2ZjLT5mbG93Y190eXBl
+IFsweCV4XSwgbGVuMTYgWyV1XSwgbG9jIFsldV0KAAAAAAAAAAAAd3JoX29mbGRfdGNwX2Nsb3Nl
+X2Nvbl9yZXBseTogcnBsLT5vcF9UaWQgWzB4JXhdLCBycGw+c3RhdHVzIFsweCV4XSwgcnBsLT5z
+bmRfbnh0IFsweCV4XSwgcnBsLT5yY3Zfbnh0IFsweCV4XQoAAHRjcF9hYm9ydF9ycGxfcnNzOiB0
+aWQgWzB4JXhdLCBzdGF0dXMgWzB4JXhdCgAAAHRjcF9hYm9ydF9yZXFfcnNzOiB0aWQgWzB4JXhd
+LCBzdGF0dXMgWzB4JXhdCgAAAG9mbGRfYWJvcnRfcmVxX25lZ2FkdlsldV06IHdyIDB4JTA4eCBj
+cGxfYWJvcnRfcmVxIERFTElWRVJFRAoAAABob3N0X3dyWyV1XTogd3IgMHglMDh4IGNwbF9hYm9y
+dF9yZXEgc3RhdHVzIDB4JXgKAAAAAAAAAAAAAAAAAAAAcGt0c2NoZWRfY2xfcmxbJXU6JXVdOiBt
+b2RlIHwgdW5pdCB8IHJhdGUgMHglMDZ4IG1pbiAldSBtYXggJXUgcGt0c2l6ZSAldQoAAAAAAABw
+YXJhbV9jaG5ldFsweCV4OjB4JXhdOiBjaG5ldCAweCV4IHJlYWQgJXUgcGYgJXUgcmV0ICVkCgAA
+AAAAAAAAcGFyYW1fZG1hcVsweCV4OjB4JXhdOiBkbWFxIDB4JXggcmVhZCAldSBwZiAldSByZXQg
+JWQKAAAAAAAAAAAAAE1DWyV1XSBpbml0X3N0YXRlX21hY2hpbmUgMHglMDJ4CgAAAAAAAAAAAAAA
+AAAAAE1DIGluaXRpYWxpemF0aW9uIG5vdCBjb21wbGV0aW5nLCBNQyBjdXJyZW50IGluaXQgc3Rh
+dGUgaXMgMHglMDJ4CgAAAAAAAAAAAAAAAAAATUNbJXVdIF9od19tY19pbml0X21jCgAAAAAAAAAA
+AABfaHdfbWNfaW5pdF9tYzogZXJyb3IsIHJldCAlZAoAAHBoeTogZmFpbGVkIHRvIGFsbG9jYXRl
+ZCBtZW1vcnkgZm9yIHBoeSBmdyBmaWxlLCByZXQgJWQKAAAAAAAAAABod19sZV9maWx0ZXJfY3R1
+cGxlOiB0dXBsZSAldSBub3Qgc3BlY2lmaWVkIGJ1dCByZXF1aXJlZCBmb3IgbWFzayAweCV4CgAA
+AAAAAAAAAGh3X3RwX3RjcF9zZXR0aW5nc193OiB0aW1lcl9ycyAldXVzIHRpbWVzdGFtcF9yZXMg
+JXV1cyBkZWxheWVkYWNrX3JlcyAldXVzCgAAAAAAaHdfdHBfdGNwX3NldHRpbmdzX3c6IGRhY2tf
+dGltZXIgJXV1cyBtc2wgJXV1cyByeHRfbWluLG1heCAldSwldXVzIHBlcnNfbWluLG1heCAldSwl
+dXVzCgAAAAAAAAAAaHdfdHBfdGNwX3NldHRpbmdzX3c6IGtlZXBfaWRsZSxpbnR2bCAldSwldXMg
+bWF4cnR0ICV1dXMgaW5pdHNydHQgJXV1cyBmaW53YWl0Ml90aW1lciAldXVzCgAAAAAAaHdfdHBf
+dGNwX3NldHRpbmdzX3c6IGNhcHBpbmcgZGFja190aW1lciBmcm9tICV1IHRvICV1AAAAAAAAAAAA
+AGh3X3RwX3RjcF9zZXR0aW5nc193OiBjYXBwaW5nIG1zbCBmcm9tICV1IHRvICV1AGh3X3RwX3Rj
+cF9zZXR0aW5nc193OiBjYXBwaW5nIHJ4dF9taW4gZnJvbSAldSB0byAldQAAAAAAAAAAAAAAAABo
+d190cF90Y3Bfc2V0dGluZ3NfdzogY2FwcGluZyByeHRfbWF4IGZyb20gJXUgdG8gJXUAAAAAAAAA
+AAAAAAAAaHdfdHBfdGNwX3NldHRpbmdzX3c6IGNhcHBpbmcgcGVyc19taW4gZnJvbSAldSB0byAl
+dQAAAAAAAAAAAAAAAGh3X3RwX3RjcF9zZXR0aW5nc193OiBjYXBwaW5nIHBlcnNfbWF4IGZyb20g
+JXUgdG8gJXUAAAAAAAAAAAAAAABod190cF90Y3Bfc2V0dGluZ3NfdzogY2FwcGluZyBrZWVwX2lk
+bGUgZnJvbSAldSB0byAldQAAAAAAAAAAAAAAaHdfdHBfdGNwX3NldHRpbmdzX3c6IGNhcHBpbmcg
+a2VlcF9pbnR2bCBmcm9tICV1IHRvICV1AAAAAAAAAAAAAGh3X3RwX3RjcF9zZXR0aW5nc193OiBj
+YXBwaW5nIGluaXRfc3J0dF9tYXhydHQgZnJvbSAldSB0byAldQAAAABod190cF90Y3Bfc2V0dGlu
+Z3NfdzogY2FwcGluZyBpbml0X3NydHRfaW5pdHNydHQgZnJvbSAldSB0byAldQAAaHdfdHBfdGNw
+X3NldHRpbmdzX3c6IGNhcHBpbmcgZmlud2FpdDJfdGltZXIgZnJvbSAldSB0byAldQAAAAAAAGxl
+IGNvbmZpZ3VyYXRpb246IG5lbnRyaWVzICV1IHJvdXRlICV1IGNsaXAgJXUgZmlsdGVyICV1IGFj
+dGl2ZSAldSBzZXJ2ZXIgJXUgaGFzaCAldQoAAAAAAAAAAAAAAGxlIGNvbmZpZ3VyYXRpb246IG5l
+bnRyaWVzICV1IHJvdXRlICV1IGNsaXAgJXUgZmlsdGVyICV1IHNlcnZlciAldSBhY3RpdmUgJXUg
+aGFzaCAldSBuc2VydmVyc3JhbSAldQoAAAAAAAAAAAAAAABod19zZ2VfcXVldWVfYmFzZV9tYXBb
+JXVdOiBleGNlZWRlZCBudW1iZXIgb2YgZWdyZXNzIHF1ZXVlcywgJXUKAAAAAAAAAAAAAAAAAAAA
+AGh3X3NnZV9xdWV1ZV9iYXNlX21hcFsldV06IGV4Y2VlZGVkIG51bWJlciBvZiBpbmdyZXNzIHF1
+ZXVlcyB3aXRoIGZyZWVsaXN0IGFuZCBpbnRlcnJ1cHQsICV1CgAAAGh3X3NnZV9xdWV1ZV9iYXNl
+X21hcFsldV06IGV4Y2VlZGVkIG51bWJlciBvZiBpbmdyZXNzIHF1ZXVlcywgJXUKAAAAAAAAAAAA
+AAAAAAAAY2ZfcGFyc2U6IGZpbGUgbWVtdHlwZSAweCV4IG1lbWFkZHIgMHgleCBtYXBwZWQgQCAl
+cDoKAAAAAAAAAAAAAGNvbmZpZ3VyZWQgd2l0aCBjYXBzIG5ibXxsaW5rIDB4JTA4eCBzd2l0Y2h8
+bmljIDB4JTA4eCB0b2V8cmRtYSAweCUwOHggaXNjc2l8ZmNvZSAweCUwOHgKAAAAAAAAAG5ldCBW
+SSBhbGxvY2F0aW9uIGZhaWxlZCBmb3IgZmNfaWQgJXUgd2l0aCBlcnJvciAlZAoAAAAAAAAAAAAA
+AABuZXQgVkkgbWFjIGFkZHJlc3MgcHJvZ3JhbW1pbmcgZmFpbGVkIGZvciBmY19pZCAldSB3aXRo
+IGVycm9yICVkCgAAAAAAAAAAAAAAAAAAAG5ldCBWSSByeG1vZGUgcHJvZ3JhbW1pbmcgZmFpbGVk
+IGZvciBmY19pZCAldSB3aXRoIGVycm9yICVkCgAAAABuZXQgVkkgcnNzIGluZGlyZWN0aW9uIHRh
+YmxlIHByb2dyYW1taW5nIGZvciBmY19pZCAldSBmYWlsZWQgd2l0aCBlcnJvciAlZAoAAAAAAG5l
+dCBWSSByc3MgY29uZmlnIGNvbW1hbmQgZmFpbGVkIGZvciBmY19pZCAldSB3aXRoIGVycm9yICVk
+CgAAAABuZXQgVkkgY29tbWFuZCBmYWlsZWQgZm9yIGZjX2lkICV1IHdpdGggZXJyb3IgJWQKAAAA
+AAAAAAAAAAAAAAAAcHJvZ3JhbW1lZCBIVyB0YWdtIFsweCUwOHhdLCBIVyBwZ3N6IGZhY3RvciBb
+MHglMDh4XSwgRk9pU0NTSSB0YWdtIFsweCUwOHhdLCBydGFnbSBbMHglMDh4XSwgbWF4c3pfYml0
+cyBbJXVdLCBzel9iaXRzIFsldV0uCgAAAABiYXNlIFsgMHglMDh4XSwgbGxpbWl0IFsweCUwOHhd
+LCB1bGltaXQgWzB4JTA4eF0sIHNpemUgWyV1XSwgbWF4X3R4c3ogWyV1XSwgbWF4X3J4c3ogWyV1
+XSwgaW9zaXplIFsldV0KAAAAAAAAAAAAbnBwb2RzIFsldV0sIGlkeF9tYXNrIFsweCUwOHhdLCBp
+ZHhfZmlyc3QgWyV1XSwgaWR4X2xhc3QgWyV1XSwgc2NzaV9wbGRfc2l6ZSBbJXVdLCBBTElHTihz
+Y3NpX3BsZF9zaXplLCAxNikgWyV1XSwgcHBkX3pvbmVzIFsldV0uCgAAAAAAAAAAAAAAAAAAZm9p
+c2NzaV9pbml0OiBpbml0X2RvbmU6JXUsIGZvaXNjc2lfbnRhc2tzOiV1LCBmb2lzY3NpX25zZXNz
+OiV1LCBuY3NvY2s6JXUsIG5zcG9ydHM6JXUsIGZvaXNjc2lfbmluaXQ6JXUsIHJjOiVkCgAAAAAA
+AAAAAAAAAAAAAABjaF9jbF9yYXRlWyV1LyV1XTogY2FwcGVkIGNsYXNzIHJhdGUgZnJvbSByZXF1
+ZXN0ZWQgJXUgdG8gY29uZmlndXJlZCAoZWZmZWN0aXZlKSBjaGFubmVsIHJhdGUgJXUKAAAAAAAA
+AAAAAAAAAAAAY2hfY2xfcmF0ZVsldS8ldV06IGluY3JlYXNlZCBkZWZpY2l0X2luY3IgZnJvbSBy
+ZXF1ZXN0ZWQgJXUgdG8gcmVxdWlyZWQgbWluIG9mICV1OyByYXRlICV1IChlZmYgJXUpIGRlZmlj
+aXRfbWF4ICV1CgAAAAAAAAAAAAAAAABwa3RzY2hlZCBjaGFubmVsICV1IHNldHMgc3BlZWQgKGZy
+b20gJXUpIHRvICV1IGticHMKAAAAAAAAAAAAAAAAbmV0X2wyZGV2X25vdGlmeTogbDJkZXZfZmMt
+PmZsb3djX2lkIFsweCV4XSwgcG9ydCBbJWRdLCBldmVudCBbMHgleF0sIHVscHR4Y2ggWyV1XSwg
+Y2xhc3MgWzB4JXhdLCB2cHJpbyBbMHgleF0sIHZpZCBbMHgleF0sIHZpX3JlYWR5IFsldV0KAAAA
+AAAAbmV0X2wyZGV2X25vdGlmeTogcGdpZCBbMHgleF0sIHByaW8gWzB4JXhdLCBjaCBbMHgleF0K
+AAAAAAAAAAAAAFsldV0gdW5hYmxlIHRvIGV4ZWN1dGUgaW50ZXJuYWwgRENCX0lFRUVfQ01ECgAA
+AGRjYnggdXBkYXRlWyV1XSBzZW50IHRvIGRyaXZlciAodHlwZSAlI3ggc3VidHlwZSAlI3ggbG9j
+YXRpb24gJXUgZmxvd2NpZCAldSkKAAAAcG9ydFsldV0gbGluayBkb3duICgldSkgKGxzdGF0dXMg
+JSN4KQoAAAAAAAAAAAAAaTJjIGVycm9yIGNhdXNlZCBieSBtb2R1bGUgdW5wbHVnCgAAAAAAAAAA
+AAAAAAAAc2VuZHRvIHBlbmRpbmc6IHdyX3BlbmQgJXAgZm9yIHBvcnQgJXUsIHdhbnQgdG8gc2Vu
+ZCB0byBwb3J0ICV1CgAAAAAAAAAAAAAAAAAAAABwb3J0WyV1XSB1cGRhdGUgKGZsb3djaWQgJXUg
+cmMgJXUpCgAAAAAAAAAAAAAAAABwb3J0X3NldF9sb29wYmFjayBwb3J0ICUjeCBjdXJyZW50ICUj
+eCBtb2RlICUjeAoAAAAAAAAAAAAAAAAAAAAAcG9ydFsldV0gc3BlZWQgdXBkYXRlOiAlI3gKAAAA
+AABwb3J0WyV1XSBiZWdpbm5pbmcgZGVib3VuY2UKAAAAAHBvcnRfbGlua19zdGF0ZV9oYW5kbGVy
+WyV1XSBwb3dlcmluZyBkb3duCgAAAAAAAHBvcnRfbGlua19zdGF0ZV9oYW5kbGVyWyV1XSBwb3dl
+cmluZyB1cAoAAAAAAAAAAHBvcnRfbGlua19zdGF0ZV9oYW5kbGVyWyV1XSB1bmtub3duIHN0YXRl
+IChzdGF0ZSA9ICUjeCkKAAAAAAAAAABwb3J0X2xpbmtfc3RhdGVfaGFuZGxlcjogU29tZXRoaW5n
+IHdlbnQgdGVycmlibHkgd3JvbmcuIHJldCA9ICVkCgAAAAAAAAAAAAAAAAAAAGxlIGluaXRpYWxp
+emF0aW9uOiBuZW50cmllcyAldSByb3V0ZSAldSBjbGlwICV1IGZpbHRlciAldSBhY3RpdmUgJXUg
+c2VydmVyICV1IGhhc2ggJXUKAAAAAAAAAAAAAGxlIGluaXRpYWxpemF0aW9uOiBuZW50cmllcyAl
+dSByb3V0ZSAldSBjbGlwICV1IGZpbHRlciAldSBzZXJ2ZXIgJXUgYWN0aXZlICV1IGhhc2ggJXUg
+bnNlcnZlcnNyYW0gJXUKAAAAAAAAAAAAAABod190cF9pbml0OiB0Y2IgcmVnaW9uIChzdGFydCAw
+eCUwOHMgc2l6ZSAldSkgbXVzdCBiZSBpbiBmaXJzdCAyNTZNQiBvZiBNQSBtZW1vcnkKAAAAAAAA
+AAAAAAAAAABod190cF9pbml0OiBwZ21uZ3QgcmVnaW9uIChzdGFydCAweCUwOHMgc2l6ZSAldSkg
+bXVzdCBiZSBpbiBmaXJzdCAyNTZNQiBvZiBNQSBtZW1vcnkKAAAAAAAAAAAAAABod190cF9pbml0
+OiBUUCBwZ21uZ3QgaW5pdGlhbGl6YXRpb24gZGlkIG5vdCBjb21wbGV0ZQoAAAAAAAAAAAAAYnVm
+bV9pbml0OiBuICV1IGJ1ZmxsNjRpbnRfc2l6ZSAweCV4CgAAAAAAAAAAAAAAYnVmbV9pbml0OiBu
+b3QgZW5vdWdoIG1lbW9yeSB0byBhbGxvY2F0ZSBpbnRlcm5hbCBidWZsbDY0IGJ1ZmZlcnMKAAAA
+AAAAAAAAAAAAAABidWZtX2luaXQ6IG5vdCBlbm91Z2ggbWVtb3J5IHRvIGFsbG9jYXRlIGJ1Zmxs
+NjQgYnVmZmVycwoAAAAAAAAAbWVtX2luaXRfYnVmOiBub3QgZW5vdWdoIG1lbW9yeSB0byBhbGxv
+Y2F0ZSBmbG93IGJ1ZmZlcnMKAAAAAAAAAG1lbV9pbml0X2J1Zjogbm90IGVub3VnaCBtZW1vcnkg
+dG8gYWxsb2NhdGUgdGNiX2NhY2hlIChvZmZlcmVkICV1IHRyeWluZyB0byB1c2UgJXUgYXZhaWxh
+YmxlICV1KQoAAAAAAAAAAAAAAAAAAABtcGFydGl0aW9uX290aGVyczogc3RhcnQgMHglMDh4IHNp
+emUgJXUgKHVudXNlZCAldSkKAAAAAAAAAAAAAAAAbXBhcnRpdGlvbl9vdGhlcnM6IHN0YXJ0IDB4
+JTA4eCBzaXplICV1ICh1bnVzZWQgJXUpCgAAAAAAAAAAAAAAAG1lbV9pbml0OiBFREMgb3ZlcmNv
+bW1pdHRlZCBieSAlZCBieXRlcwoAAAAAAAAAAG1lbV9pbml0OiBub3QgZW5vdWdoIG1lbW9yeSB0
+byBhbGxvY2F0ZSBmbG93IHRhYmxlCgAAAAAAAAAAAAAAAABjeGNuaWNfZGV2aWNlX2luaXQ6IGN4
+Y25pYyBbMHglMHhdLCBjeGNuaWMtPmZpbHRlciBbJTB4XQoAAAAAAAAAcG9mY29lIGluaXQgZG9u
+ZQoAAAAAAAAAAAAAAAAAAABQb3J0WyV1XTogVW5rbm93biBTR01JSSBzdWItdHlwZSAlI3gKAAAA
+AAAAAAAAAABQb3J0WyV1XTogVW5rbm93biBCVF9YRkkgc3ViLXR5cGUgJSN4CgAAAAAAAAAAAABQ
+b3J0WyV1XTogVW5rbm93biBCVF9YQVVJIHN1Yi10eXBlICUjeAoAAAAAAAAAAABwb3J0X2luaXRb
+JXVdOiBwb3J0IHR5cGUgMHgleCBpcyBub3Qgc3VwcG9ydGVkCgBtcGFydGl0aW9uX2luaXQ6IG1v
+dmVkIHBtcnhfc3RhcnQgZnJvbSAweCUwOHggdG8gMHglMDh4IHRvIG1ha2Ugcm9vbSBmb3IgTEUg
+SEFTSCBhbmQvb3IgVFAgVENCcwoAAAAAAAAAAAAAAAAAAAAAbXBhcnRpdGlvbl9pbml0OiBtb3Zl
+ZCBwbXJ4X3N0YXJ0IGZyb20gMHglMDh4IHRvIDB4JTA4eCAoRURSQU0pCgAAAAAAAAAAAAAAAAAA
+AABFUSBwZm4gJXUgdmZuICV1OiBkZXN0cm95aW5nIGVxaWQgJXUgd2l0aCBwZW5kaW5nIFdSKHMp
+IChudW1fYnl0ZXMgJXUgYW5kIGZsYWdzIDB4JTA4eAoAAAAAAAAAAABsMmRldl9mYy0+Zmxvd2Nf
+aWQgWyV1XSwgbDJkYy0+cGZuIFsldV0sIGwyZGMtPnZmbiBbJXVdLCBsMmRjLT5scG9ydCBbJXVd
+LCBsMmRldl9mYy0+Zmxvd2lkIFsldV0gbDJkYy0+dHhfY2ggWyV1XSwgZGV2LnZwZC5wb3J0dmVj
+IFsleF0KAAAAAAAAAABwb3J0dmVjIFsldV0KAAAAbDJkZXZfdmlfZnNtOiBtYiBbMHgleF0sIGRl
+ZmVycmVkLCBzdGF0ZSBbMHgleF0sIHBvcnQgWzB4JXhdCgAAAGwyZGV2X3ZpX2ZzbTogdmlpZCBb
+MHgleF0gcG9ydCBbMHgleF0sIG1hYy1pZCBbJTAyeDolMDJ4OiUwMng6JTAyeDolMDJ4OiUwMnhd
+LiAKAAAAAAAAAAAAAAAAAAAAAGwyZGV2X3ZpX2ZzbTogc2dlX2VxaWQgWzB4JXhdLCBzZ2VfaXFp
+ZCBbMHgleF0sIHNnZV9lcWNyIFsweCV4XSwgcnNzX3N6IFsweCV4XQoAbDJkZXZfdmlfZnNtOiBs
+MmRldl9mYy0+Zmxvd2NfbmV0X2wyZGV2X210dSBbJXVdLCBtYl9zY3JhdGNoIFsweCV4XSwgcG9y
+dCBbMHgleF0KAAAAAAAAAAAAAAAAAAAAbDJkZXZfdmlfZnNtOiB2aWlkIFslZF0sIHZpX2ZjLT5m
+bG93Y192aV9mbGFncyBbMHgleF0KAAAAAAAAAAAAAGwyZGV2X3ZpX2ZzbTogcGZuIFsweCV4XSwg
+dmZuIFsweCV4XSwgbDJkZXZfZmMtPmZsb3djX2lkIFsweCV4XSwgbHBvcnQgWzB4JXhdLCB2aWlk
+IFsweCV4XSwgZmxhZ3MgWzB4JXhdCgAAAAAAAABsMmRldl92aV9mc206IEVycm9yIGZyZWVpbmcg
+VkksIHJjIFsweCV4XQoAAAAAAABsMmRldl92aV9mc206IHBpZCBbMHgleF0sIHZpaWQgWzB4JXhd
+LCBtYl9sb2MgWzB4JXhdLCBtYl9vcmlnWzB4JXhdLCBsMmRldl9mbGFncyBbMHgleF0sIHJjIFsw
+eCV4XQoAAAAAAAAAAAAAAAAAQWggaGEuLi5kb3VibGUgZnJlZSBveF9pZCAweCV4LCByeF9pZCAw
+eCV4CgAAAAAASG9zdCBQUkxJIFJlc3BvbnNlIHRpbWVkb3V0OiBveF9pZCAweCV4IHJ4X2lkIDB4
+JXgKAAAAAAAAAAAAAAAAAHBmbiAldSB2Zm4gJXUgdmlhIGNvbW1hbmQKAAAAAAAARGVwcmVjYXRl
+ZCBjb25maWcgb3B0aW9uIGZvdW5kIGluIGNvbmZpZyBmaWxlLiBJZ25vcmluZy4uCgAAAAAAAHNj
+aGVkX2lvcXR4X2JwX3ByaW9yaXR5OiBoYXMgJXUgZW50cmllcyBvbmx5LCByZXF1aXJlcyAldSBl
+bnRyaWVzCgAAAAAAAAAAAAAAAAAAdHBfYmFja29mZjogcGFyc2VkICVkIGluc3RlYWQgb2YgJXUg
+ZW50cmllcwoAAAAAdHBfdGltZXJ2YWxzOiBwYXJzZWQgJWQgaW5zdGVhZCBvZiAldSBlbnRyaWVz
+CgAAdHBfdGltZXJyZXM6IHBhcnNlZCAlZCBpbnN0ZWFkIG9mICV1IGVudHJpZXMKAAAAdHBfbXR1
+cyBoYXMgJXUgZW50cmllcyBvbmx5LCByZXF1aXJlcyAldSBlbnRyaWVzCgAAAAAAAAAAAAAAAAAA
+AHRwX210dXNbJXVdIGlzICV1IGJ5dGVzIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQKAGNvbmZpZ3Vy
+YXRpb24gZmlsZSBwYXJzZXI6IHNnZSB0aW1lciB2YWx1ZVslZF0gaXMgdG9vIGxhcmdlLCBjaGFu
+Z2luZyBmcm9tICV1IHRvICV1dXNlY3MKAAAAAAAAAGZpbHRlcm1hc2sgMHgleCBpcyBub3QgZXF1
+YWwvc3Vic2V0IHRvL29mIGZpbHRlcm1vZGUKAAAAAAAAAAAAAABod19sZV9jbGlwX2hhbmRsZXI6
+IHJlbW92ZWQgcG9zPSV1ICg9aWR4ICV1KQoAAABod19sZV9jbGlwX2hhbmRsZXI6IGFkZGluZyB0
+byBwb3M9JXUgKD1pZHggJXUpCgBtb2R1bGVbJXVdOiBwb3J0IG1vZHVsZSBpbnNlcnRlZCBhbmQg
+cmVhZHkKAAAAAABtb2R1bGVbJXVdOiBwb3J0IG1vZHVsZSByZW1vdmVkCgAAAAAAAAAAAAAAAAAA
+AABtb2R1bGVbJXVdOiB1bmtub3duIG1vZHVsZSBpZGVudGlmaWVyIDB4JTAyeAoAAABtb2R1bGVb
+JXVdOiBncGlvICV1IHRyYW5zIDEwRyAweCUwMnggMUcgMHglMDJ4IChsZW5ndGggJXUpIGNhYmxl
+IDB4JTAyeCAobGVuZ3RoICV1KSBtb2R1bGVfdHlwZSAweCUwMngKAAAAAAAAAAAAbW9kdWxlWyV1
+XTogZ3BpbyAldSB0cmFucyAxMEcgMHglMDJ4IDFHIDB4JTAyeCAobGVuZ3RoICV1KSBjYWJsZSAw
+eCUwMnggKGxlbmd0aCAldSkgbW9kdWxlX3R5cGUgMHglMDJ4CgAAAAAAAAAAAGZscl9wZnZmX2Zz
+bVsldToldV06IHVua25vd24gc3RhdGUgJXUKAAAAAAAAAAAAAGh3IHBmIGJpdG1hcCAweCUwMngg
+dmZpZCBiaXRtYXAgMHglMDh4OjB4JTA4eDoweCUwOHg6MHglMDh4CgAAAABhZnRlciB2ZmlkIGZp
+eHVwLCB2ZmlkIGJpdG1hcCAweCUwOHg6MHglMDh4OjB4JTA4eDoweCUwOHgKAAAAAAAAdGltZXIg
+cXVldWUgJXUgbG9zdCBhIHRpY2shIG5leHQgJXAgbGFzdCAlcCBudW1lICV1CgAAAAAAAAAAAAAA
+AGZscl90aW1lcl9zdGFydDogZmxvd2NfaWQgJXUgJXAgYnVmICVwCgAAAAAAAAAAAHBjaWU6IG5w
+ZiAldSAocGZiaXRtYXAgMHglMDJ4KSBudmYgJXUgKHBmIDAuLjcgMHglMDh4JTA4eCkgdmZzdHJp
+ZGUgJXUKAAAAAAAAAAAAaHdfZ3Bpb19wcmVwOiBlcnJvciwgcmV0ICVkCgAAAABmYWlsZWQgdG8g
+ZmluZCB0aGUgJWMlYyBWUEQgcGFyYW1ldGVyCgAAAAAAAAAAAABmYWlsZWQgdG8gcGFyc2UgdGhl
+ICVjJWMgVlBEIHBhcmFtZXRlcgoAAAAAAAAAAABtZW1fcHJlcDogZXJyb3IsIHJldCAlZAoAAAAA
+AAAAAGZhaWxlZCB0byBzdWNjZXNzZnVsbHkgZmluZCBDaGVsc2lvIFZQRAoAAAAAAAAAAHZwZF9w
+cmVwOiBlcnJvciwgcmV0ICVkCgAAAAAAAAAAc2VyY2ZnX3ByZXA6IGVycm9yLCByZXQgJWQKAAAA
+AABsb2cgaW5pdGlhbGl6ZWQgQCAweCUwOHggc2l6ZSAldSAoJXUgZW50cmllcykgZndyZXYgMHgl
+MDh4IHBjaWVfZncgMHglMDh4CgAAAAAAAGdhdGhlcl90YXNrc19mb3JfdG1mOiBpZHggWzB4JXhd
+LCB0YXNrLWlkIFsweCV4XSwgY21kLWlkIFsweCV4XSwgYWN0aXZlIHRhc2tzIFsweCV4XS4gY29u
+bi1pZCBbMHgleF0sIGNtZCBjb25uLWlkIFsweCV4XSwgdGFzayBjb25uLWlkIFsweCV4XQoAAGdh
+dGhlcl90YXNrc19mb3JfdG1mOiBJbnZhbGlkIHR5cGUgWzB4JXhdLCBiYWlsaW5nIG91dC4KAAAA
+AAAAAABnYXRoZXJfdGFza3NfZm9yX3RtZjogdGFzayBpZCBbMHgleF0sIHN0YXRlIFsweCV4XSwg
+bGlkeCBbMHgleF0sIGNvb2tpZSBoaSBbMHglMDh4XSA6IGxvIFsweCUwOHhdCgAAAAAAAAAAAAAA
+AAAAZ2F0aGVyX3Rhc2tzX2Zvcl90bWY6IHJjIFsweCV4XSwgWzB4JXhdIHRhc2sgZ2F0aGVyZWQg
+Zm9yIHRtZiB0eXBlIFsweCV4XSBwcm9jZXNzaW5nLgoAAAAAAAAAAAAAc2NzaV9kYXRhX291dDog
+Y29ubl9mYyBbMHgleF0sIHN0YXRlIFsweCV4XSwgc2Vzc19mYyBbMHgleF0gaW4gcmVjb3Zlcnku
+IFNraXBwaW5nIGlzdGFza19mYyBbMHgleF0gZnJvbSBUWC4KAAAAAHNlbmRfbXNnX3BsZDogZmMg
+eyBpZCBbMHgleF0sIGZsYWdzIFsweCV4XSwgYnVmZmVyZWQgWyV1XS4gfQoAAABzZW5kX21zZ19w
+bGQ6IHNlc3MgeyBpZCBbMHgleF0gfSwgdWxwdHhjaCBbJXVdIG5vIGNyZWRpdHMgYXZhaWxhYmxl
+LCByZXNjaGVkdWxpbmcgcmVxdWVzdC4KAAAAAABzZW5kX2Fib3J0X3JlcTogY3NrX2ZjLT5mbG93
+Y190eXBlIFsweCV4XSwgY3NrX2ZjLT5mbG93Y19pZCBbMHgleF0sIHRpZCBbMHgleF0sIHVscHR4
+Y2ggWyV1XSwgYnVmZmVyZWQgWyV1XQoAAAAAaHcgcmVnaXN0ZXIgb3BlcmF0aW9uIG5vdCBjb21w
+bGV0aW5nLCByZWcgMHglMDh4IG1hc2sgMHglMDh4IHZhbHVlIDB4JTA4eCAocmVnIDB4JTA4eCkK
+AAAAAAAAAAAATURJTyBDTDQ1OiBmYWlsZWQgdG8gc2V0IHVwIE1NRCBhZGRyCgAAAAAAAAAAAAAA
+TURJTzogZmFpbGVkIHRvIHdyaXRlCgAAAAAAAAAAAABNRElPIENMNDU6IGZhaWxlZCB0byBzZXQg
+dXAgTU1EIGFkZHIKAAAAAAAAAAAAAABNRElPOiBmYWlsZWQgdG8gcmVhZAoAAAAAAAAAAAAAAAlB
+UV9UYWtlQ29udHJvbE9mRkxBU0g6IDFlLmMwMDE9JSN4IDFlLmM0NTA9JSN4IDFlLmM0NTE9JSN4
+IDFlLjEwMD0lI3gKAAAAAAAAAAAAQVFfQVBJX1dyaXRlQW5kVmVyaWZ5Rmxhc2hJbWFnZSAtIElt
+YWdlIGludGVncml0eSBjaGVjayBmYWlsZWQgKGNhbGMgJSN4IHZhbCAlI3gpCgAAAAAAAAAAAAAA
+AAAAQVFfQVBJX1dyaXRlQW5kVmVyaWZ5Rmxhc2hJbWFnZSAtIEltYWdlIGludGVncml0eSBjaGVj
+ayBwYXNzZWQKAEFRX0FQSV9Xcml0ZUFuZFZlcmlmeUZsYXNoSW1hZ2UgLSBUaW1lb3V0IHdhaXRp
+bmcgZm9yIGZsYXNoIGludGVyZmFjZSAoJXUpCgAAAAAAQVFfQVBJX1dyaXRlQW5kVmVyaWZ5Rmxh
+c2hJbWFnZSAtIFRpbWVvdXQgd2FpdGluZyBmb3IgZmxhc2ggaW50ZXJmYWNlICgldSkKAAAAAABB
+UV9BUElfV3JpdGVBbmRWZXJpZnlGbGFzaEltYWdlIC0gVGltZW91dCB3YWl0aW5nIGZvciBmbGFz
+aCBpbnRlcmZhY2UgKCV1KQoAAAAAAEFRX0FQSV9Xcml0ZUFuZFZlcmlmeUZsYXNoSW1hZ2UgLSBU
+aW1lb3V0IHdhaXRpbmcgZm9yIGZsYXNoIGludGVyZmFjZSAoJXUpIChwcCAlI3ggYXAgJSN4KQoA
+AAAAAEFRX0FQSV9Xcml0ZUFuZFZlcmlmeUZsYXNoSW1hZ2UgLSBUaW1lb3V0IHdhaXRpbmcgZm9y
+IGZsYXNoIGludGVyZmFjZSAoJXUpCgAAAAAAQVFfQVBJX1dyaXRlQW5kVmVyaWZ5Rmxhc2hJbWFn
+ZSAtIFRpbWVvdXQgd2FpdGluZyBmb3IgZmxhc2ggaW50ZXJmYWNlICgldSkKAAAAAABBUV9BUElf
+V3JpdGVBbmRWZXJpZnlGbGFzaEltYWdlIC0gRXJyb3Igb24gYnVybmluZyBGTEFTSCAoY3JjMTYg
+bWlzbWF0Y2gpCgAAAAAAAHNlbmRfY2xvc2VfcmVxOiBjc2tfZmMtPmZsb3djX3R5cGUgWzB4JXhd
+LCBjc2tfZmMtPmZsb3djX2lkIFsweCV4XSwgY3NrX2ZjLT50Y2Jfc3RhdGUgWzB4JXhdCgAAAHNl
+bmRfY2xvc2VfcmVxOiBjc2tfZmMtPmZsb3djX3R5cGUgWzB4JXhdLCBjc2tfZmMtPmZsb3djX2lk
+IFsweCV4XSwgdGlkIFsweCV4XSwgdWxwdHhjaCBbJXVdLGJ1ZmZlcmVkIFsldV0KAAAAAABvZmxk
+X3RjcF9kb19hY3RpdmVfY2xvc2U6IGNza19mYyBbMHgleF0sIGNza19mYy0+Zmxvd2NfaWQgWzB4
+JXhdLCBjc2tfZmMtPnRjYl9zdGF0ZSBbMHgleF0KAAAAAABvZmxkX3RjcF9kb19hY3RpdmVfY2xv
+c2U6IGNza19mYyBbMHgleF0sIGNza19mYy0+Zmxvd2NfaWQgWzB4JXhdLCBjc2tfZmMtPnRjYl9z
+dGF0ZSBbMHgleF0KAAAAAABvZmxkX3RjcF9kaXNjb25uZWN0OiB0Y2JfZmMtPmZsb3djX2lkIFsw
+eCV4XSwgY3NrX2ZjLT5mbG93Y19pZCBbMHgleF0sIGNzay0+dGNiX3N0YXRlIFsweCV4XQoAAABk
+ZWNvZGVfYmFzZTY0X3N0cmluZzogZGxlbiBbJWRdCgAAAAAAAAAAAAAAAAAAAABkZWNvZGVfaGV4
+X3N0cmluZzogZGxlbiBbJWRdCgAAAGZvaXNjc2lfdmFsaWRhdGVfbG9naW5fc3RhZ2U6IC0gMQoA
+AAAAAAAAAAAAAAAAAGFzeW5jX3BkdTogbG9nb3V0IHJlcXVlc3RlZCBibG9ja2luZyBzZXNzaW9u
+CgAAAGFzeW5jX3BkdTogc2Vzcy9jb25uIGRyb3AgcmVxdWVzdGVkIGJsb2NraW5nIHNlc3Npb24K
+AAAAAAAAAAAAAABjcGxfdHhfcGt0OiB2bGFuaWQgWzB4JXhdCgAAAAAAAG5ldF9sMmRldl9maW5k
+X2J5X2FkZHI6IGwyZGV2X2ZjLT5mbG93Y19pZCBbMHgleF0sIGwyZGMtPmxwb3J0IFsldV0sIGwy
+ZF9mYy0+Zmxvd2NfaWQgWzB4JXhdLCBsMmRjLT5pbjRfZGV2LmluX2FkZHIuYWRkciBbMHgleF0s
+IGFkZHIgWzB4JXhdCgAAAG5ldF9sMmRldl9tdHVfY29uZmlnOiBsMmRldl9mYy0+Zmxvd2NfaWQg
+WzB4JXhdLCBtdHUgJXUKAAAAAAAAAABjcGxfdHhfcGt0OiB2bGFuaWQgWzB4JXhdCgAAAAAAAGVu
+Y29kZSBoZXggc3RyaW5nOiBkbGVuIFslZF0KAAAAY2huZXRfZmluZF9sMnRfZW50cnk6IGRhZGRy
+IFslMDh4XSwgWzB4JTA4eF0sIGxvY2FsIG5ldHdvcmsgWyVkXQoAAAAAAAAAAAAAAAAAAABsMnRl
+bnQgWyUweF0sIGwydGVudC0+aWR4IFslZF0KAHRjcF9zZW5kX2FvcGVuX3JlcTogY3NrX2ZjLT5m
+bG93Y19pZCBbMHgleF0sIGNza19mYy0+Zmxvd2Nfc3RhdGUgWzB4JXhdLCBidWZmZXJlZCBbJXVd
+LCByZXNfY250IFsweCV4XSwgaXFfaWR4IFsweCV4XQoAAAAAAAAAAAAAdGNwX3NlbmRfYW9wZW5f
+cmVxOiBjc2tfZmMtPmZsb3djX2lkIFsweCV4XSwgY3NrX2ZjLT5mbG93Y19zdGF0ZSBbMHgleF0s
+IG5vIHZhbGlkIGwydF9lbnR5LiBEZWxheWluZyBhbm90aGVyIHJldHJ5IGZvciAxIHNlY29uZHMu
+CgAAAAAAAAAAAAAAAAAAYW9wZW5fcmVxOiBod19sZV9maWx0ZXJfY3R1cGxlIGZhaWxlZAoAAAAA
+AAAAAAAAb2ZsZF90Y3Bfc2VuZF9hb3Blbl9yZXE6IGNwbF9yZXEtPkZpbHRlciBbMHglMHhdLCBj
+dHVwbGVzWzBdIFsweCV4XSwgY3R1cGxlc1sxXSBbMHgleF0KAAAAAAAAAAAAbGFkZHJfcmV0OiBs
+MmRjLmFkZHIgOjB4JXgsIHNyY19hZGRyOjB4JXgKAAAAAAAAY3NvY2tfYWxsb2M6IHNyY19hZGRy
+OjB4JXgsIGRzdF9hZGRyOjB4JXgKAAAAAAAAY3NrX2FsazogSW52YWxpZCBsMmRldjoweCV4CgAA
+AABjc2tfYWxrOiBuZXh0OiV1LCBpZHg6JXUsIHVzZWQ6JXUsIHNwb3J0OiV1CgAAAABjc29ja19h
+bGxvYzogY3NvY2tfc3JjX2FkZHI6MHgleCwgY3NvY2tfZHN0X2FkZHI6MHgleAoAAAAAAAAAAAAA
+Y3NvY2tfYWxsb2M6IHR4X2NoIFsweCV4XSwgbHBvcnQgWzB4JXhdLCBjb29raWUgWyUwOHhdCgAA
+AAAAAAAAAGNzb2NrX2FsbG9jOiBhdmFpbGFibGUgWyV1XSwgbmNzb2NrIFsldV0sIHBvczphdGlk
+IFsweCV4XSwgY3NrX2ZjIFsweCV4XSwgY3NrX2ZjLT5mbG93Y19pZCBbMHgleF0sIHNwb3J0IFsl
+dV0KAABpdHRfdG9fdGFza19pZHg6IHRhZyBbMHglMDh4XSwgaGkgWyV1XSwgbG8gWyV1XSwgbm1h
+c2tiaXRzIFsldV0sIHRhc2tfaWR4IFsldV0KAFdBVENIRE9HOiBObyB0ZW1wZXJhdHVyZSBzZW5z
+b3IgYXZhaWxhYmxlLgoAAAAAAFdBVENIRE9HOiBBY3RpdmF0aW5nCgAAAAAAAAAAAAAAV0FUQ0hE
+T0cgLSBFbmFibGUgYWN0aW9uICV1IHRpbWUgJXUKAAAAAAAAAAAAAAAAV0FUQ0hET0cgLSBEaXNh
+YmxlIGFjdGlvbiAldQoAAABXQVRDSERPRzogRGUtYWN0aXZhdGluZwoAAAAAAAAAAHBvcnRbJXVd
+IHNldCBQQVVTRSBQQVJBTVM6IHBwcGVuICV1IHR4cGUgJSN4IHJ4cGUgJSN4CgAAAAAAAAAAAABt
+cHNfbGlua191cFsldV0gYWNhcHMgJSN4ICg4MDIuMyAlI3gpICsgbHBhY2FwcyAlI3ggPT4gJSN4
+CgAAAAAAZm9pc2NzaSBjb25uX2ZjIFsweCV4XSwgZmxvd2Nfc2NoZWRjbCBbMHgleF0sIGluZ19j
+aCBbMHgleF0sIGVncl9jaCBbMHgleF0KAAAAAABsMmRldl9ub3RpZnkgd2l0aCB1bmtub3duIGZs
+YWcgWzB4JXhdCgAAAAAAAAAAAABGQ29FIEZDQiBsaW5rZG93bjogaW9fcmVxIDB4JXgleCBpcWlk
+IDB4JXggZmxvd2lkIDB4JXggb3AgMHgleAoAZmNfc2VuZF9hbGxvY19jcGw6IGZhaWxlZCB0byBz
+ZXR1cCBmaWx0ZXIgY3R1cGxlCgAAAAAAAAAAAAAAAAAAAGZjb2VfY29tcHV0ZV9jdHVwbGUgMHgl
+eDoleAoAAAAAY29tcHV0ZV9jdHVwbGUoKTogZmFpbGVkIHRvIHNldHVwIGZpbHRlciBjdHVwbGUK
+AAAAAAAAAAAAAAAAAAAAAGZjb2Ugbm90aWZ5IDogVXBkYXRlIG5ldyBEQ0JYIHZhbHVlcyBWSSBz
+dGF0ZSAweCV4IHByaSAweCV4IHNjaGVkY2wgMHgleCBkY2J4X2RvbmUgMHgleAoAAAAAAAAAAGZj
+b2Ugbm90aWZ5IDogRkNGIGZsb3dpZCAweCV4LCB1bHBjaCAweCV4IAoAAAAAAGZjb2Ugbm90aWZ5
+IDogRkNvRSBMSU5LVVA6IHBvcnQgMHgleCwgZXZlbnQgMHgleAoAAAAAAAAAAAAAAAAAAABmY29l
+IG5vdGlmeSA6IEZDb0UgTElOS0RPV046IHBvcnQgMHgleCwgZXZlbnQgMHgleAoAAAAAAAAAAAAA
+AAAAZmNvZSBub3RpZnkgOiBEQ0JYIDogcG9ydCAweCV4LCBwcmlvcml0eSAweCV4IHVscHR4Y2gg
+MHgleCBjbGFzcyAweCV4CgAAAAAAAAAAAABjaF9jbF9yYXRlWyV1LyV1XTogY2FwcGVkIGRlZmlj
+aXRfaW5jciBmcm9tIHJlcXVpcmVkICV1IHRvICV1OyByYXRlICV1IChlZmYgJXUpIGRlZmljaXRf
+bWF4ICV1CgBEQ0JYOiBzdW0gb2YgcmF0ZXMgb24gYWxsIGNsYXNzZXMgbXVzdCBiZSAxMDAgKGFj
+dHVhbDogJXUpCgAAAAAAUkRFViBtc2cgZmxvd2M6JXggc3RhdGUgMHgleCBldmVudCAweCV4CgAA
+AAAAAAAAY2FuY2VsIGZjYjoleCBzY2I6JXggc3RhdGU6JXgKAABGQ29FIEZDRiB0aW1lcjogZmxv
+d2Mgc3RhdGUgMHgleCwgcG9ydCAweCV4ICxmY2YgMHgleCwgZmxvd2NfaWQgMHgleAoAAAAAAAAA
+AAAAAHdvcmthcm91bmQxMzcyMzogZGV0ZWN0ZWQgV1IgQCAweCUwOHggb2Ygc2l6ZSAldSBieXRl
+cywgZHJpYmJsaW5nIGl0IGluICV1IGJ5dGVzIGF0IGEgdGltZQoAAAAAAHJpX3dyX2luaXRbJXVd
+OiBtc3MgJXUgaXMgbm90IDgtYnl0ZSBhbGlnbmVkCgAAAGNvcmVfcHJvZ3JhbV90Y2I6IHRpZCAl
+I3ggdF9zdGF0ZSAlI3ggcmN2X2FkdiAweCUwOHggcmN2X3NjYWxlICUjeCB0eF9tYXggJSN4IHJj
+dl9ueHQgJSN4IGF0aWQgJSN4CgAAAAAAAAAAAAAAAAAJb3B0MCAlI3gleCBvcHQyICUjeCBpcHY2
+ICUjeCBmbGFnc190aW1lciAweCUwOHgKAAAAAAAAAAAAAAAAAAAAb2ZsZF9jb25uZWN0aW9uX3dy
+OiBjb25uZWN0aW9uIHdpdGggNS10dXBsZSBscCAweCUwNHggZnAgMHglMDR4IGxpcCAweCUwOHgl
+MDh4IHBpcCAweCUwOHglMDh4IGZpbHRlciAweCUwOHggZXhpc3RzIEAgTEUgaW5kZXggJXUKAAAA
+AAAAAAAAAAAAAAAAb2ZsZF9jb25uZWN0aW9uX3dyOiBjb25uZWN0aW9uIHdpdGggNS10dXBsZSBs
+cCAweCUwNHggZnAgMHglMDR4IGxpcCAweCUwOHggcGlwIDB4JTA4eCBmaWx0ZXIgMHglMDh4IGV4
+aXN0cyBAIExFIGluZGV4ICV1CgAAAAAAAABvZmxkX2Nvbm5lY3Rpb25fd3I6IGNvbm5lY3Rpb24g
+d2l0aCA1LXR1cGxlIGxwIDB4JTA0eCBmcCAweCUwNHggbGlwIDB4JTA4eCUwOHggcGlwIDB4JTA4
+eCUwOHggZmlsdGVyIDB4JTA4eAoAAAAAb2ZsZF9jb25uZWN0aW9uX3dyOiBjb25uZWN0aW9uIHdp
+dGggNS10dXBsZSBscCAweCUwNHggZnAgMHglMDR4IGxpcCAweCUwOHggcGlwIDB4JTA4eCBmaWx0
+ZXIgMHglMDh4CgAAAAAAAAAAAAAAAElRRkxJTlQgcGZuICV1IHZmbiAldTogaXFpZCAldSB0b28g
+bGFyZ2UgKG1heCAldSkKAAAAAAAAAAAAAAAAAABJUUZMSU5UIHBmbiAldSB2Zm4gJXU6IGlxaWQg
+JXUgbm90IGFsbG9jYXRlZAoAAABJUUZMSU5UIHBmbiAldSB2Zm4gJXU6IGZsMGlkICV1IHRvbyBs
+YXJnZSAobWF4ICV1KQoAAAAAAAAAAAAAAAAASVFGTElOVCBwZm4gJXUgdmZuICV1OiBmbDBpZCAl
+dSBub3QgYWxsb2NhdGVkCgAASVFGTElOVCBwZm4gJXUgdmZuICV1OiBmbDFpZCAldSB0b28gbGFy
+Z2UgKG1heCAldSkKAAAAAAAAAAAAAAAAAElRRkxJTlQgcGZuICV1IHZmbiAldTogZmwxaWQgJXUg
+bm90IGFsbG9jYXRlZAoAAElRRkxJTlQgcGZuICV1IHZmbiAldTogZmwxaWQgJXUgaXMgdmFsaWQg
+YnV0IG5vdCBmbDBpZCAldQoAAAAAAABJUUZMSU5UIHBmbiAldSB2Zm4gJXU6IGZsMWlkICV1IGlz
+IHZhbGlkIGJ1dCBoZWFkZXIgc3BsaXQgZmVhdHVyZSBpcyBub3QgZW5hYmxlZAoAAAAAAAAAAAAA
+AAAAAABod191bHB0eF93b3JrYXJvdW5kX3ByMTY5NDlfZW5hYmxlZF9wZjogcGYgJXUgZW5hYmxl
+ZCAldQoAAAAAAAAAaHdfdWxwdHhfd29ya2Fyb3VuZF9wcjE2OTQ5X2VuYWJsZWRfdmZpZDogdmZp
+ZCAldSBlbmFibGVkICV1CgAAAEVRIHBmbiAldSB2Zm4gJXU6IGNyZWF0aW5nIEVUSCBlcWlkICV1
+IHdpdGggcGVuZGluZyBXUihzKSAobnVtX2J5dGVzICV1IGFuZCBmbGFncyAweCUwOHgKAAAAAAAA
+AEVRIHBmbiAldSB2Zm4gJXU6IGNyZWF0aW5nIENUUkwgZXFpZCAldSB3aXRoIHBlbmRpbmcgV1Io
+cykgKG51bV9ieXRlcyAldSBhbmQgZmxhZ3MgMHglMDh4CgAAAAAAAEVRIHBmbiAldSB2Zm4gJXU6
+IGVxaWQgJXUgdG9vIGxhcmdlIChtYXggJXUpCgAAAEVRIHBmbiAldSB2Zm4gJXU6IGVxaWQgJXUg
+bm90IGFsbG9jYXRlZAoAAAAAAAAAAGh3X2NpbV90cF93b3JrYXJvdW5kMTM3MjNfZW5hYmxlOiBw
+b3J0ICV1IHByb3RvY29sIDB4JXggZW4gJXUgY3VycmVudCAweCV4IHdvcmthcm91bmRfcHIxMzcy
+MyAweCV4IG5leHQgMHgleAoAAABkY2J4X3BvcHVsYXRlX2N0cmwgY29kZSBpbmNvbXBsZXRlCgAA
+AAAAAAAAAAAAAAB2aV90Y2FtX3JhdyBpZHggJXUgbWFjIDB4JTA0eCAlMDh4CgAAAAAAAAAAAAAA
+AABwb3J0X2JsaW5rX2xlZF9yZXN0b3JlCgAAAAAAAAAAAHBvcnRfYmxpbms6IGJsaW5rZHVyPTB4
+JXggYmxpbmtfcmVmY250CgAAAAAAAAAAAHBvcnRfYmxpbms6IAlibGlua19yZWZjbnQ9MHgleAoA
+cG9ydF9ibGluazogCWJsaW5rX3JlZmNudD0weCV4CgBtaWlfYWR2X2ZjWyV1XTogcmNhcHMgMHgl
+eAoAAAAAAG1paV9hZHZfc3BlZWRbJXVdOiByY2FwcyAweCV4CgAAbWlpX2luaXRbJXVdOiBhY2Fw
+cyAweCV4CgAAAAAAAABwb3J0WyV1XTogZ2F2ZSB1cCBmaXhpbmcgZXJyb3JzISEhCgAAAAAAAAAA
+AAAAAABtaWlfYW5yZXN0YXJ0WyV1XTogYWNhcHMgMHgleAoAAGh3X3hnbV9wb3J0X2xwYmsgcG9y
+dCAldSBwdHlwZSAlI3ggYWN0aW9uICUjeAoAAHBvcnRfY21kX2hhbmRsZXI6IHVua25vd24gdS5k
+Y2IudHlwZSAweCV4CgAAAAAAAHBvcnRbJXU6MHglMDJ4OjB4JTAyeF06IGwxY2ZnLCBpbnZhbGlk
+IHJlcXVlc3QsIHBjYXBzIDB4JXggYWNhcHMgMHgleCByY2FwcyAweCV4CgAAAAAAAAAAAAAAAAAA
+AHBvcnRbJXU6MHglMDJ4OjB4JTAyeF06IGwxY2ZnLCBwY2FwcyAlI3ggYWNhcHMgJSN4IHJjYXBz
+ICUjeCBtY2FwcyAlI3gKAAAAAAAAAAAAcG9ydFsldToweCUwMng6MHglMDJ4XTogbDFjZmcsIG1k
+aSBpc3N1ZSBwY2FwcyAweCV4IGFjYXBzIDB4JXggcmNhcHMgMHgleAoAAAAAAABwb3J0WyV1OjB4
+JTAyeDoweCUwMnhdOiBsMWNmZywgY2Fubm90IGZvcmNlIG5vL211bHRpcGxlIHNwZWVkKHMpLCBw
+Y2FwcyAweCV4IGFjYXBzIDB4JXggcmNhcHMgMHgleAoAAAAAAAAAAAAAAAAAZXRoX2Zsb3djX2hh
+bmRsZXJbMHgleF06IGZsYWdzIDB4JTA4eCBudW1fYnl0ZXMgJXUgc2NoZWRjbCAweCV4IC0+IDB4
+JXgKAAAAAAAAAAB0YXNrX2lkeF90b19pdHQ6IHRhc2tfaWR4IFsldV0sIGhpIFsldV0sIGxvIFsl
+dV0sIG5tYXNrYml0cyBbJXVdLCBzd190YWcgWzB4JTA4eF0sIHBwb2RfaWR4IFslZF0KAAAAAAAA
+AAAAAAAAAAAAc2NzaV9jbWQ6IHJlY2VpdmVkIFRNRiBvcCBbMHgleF0gZnVuYyBbMHgleF0gb24g
+Y29ubiBbMHgleF0gdGhyb3VnaCBjb21tYW5kIHBhdGguCgAAAAAAAAAAAAAAAAAAc2NzaV9jbWQ6
+IGNvbm5fZmMgWzB4JXhdLCBzdGF0ZSBbMHgleF0sIHNlc3NfZmMgWzB4JXhdIGluIHJlY292ZXJ5
+LiBTa2lwcGluZyBpc3Rhc2tfZmMgWzB4JXhdIGZyb20gVFguCgAAAAAAAAAAAHNjc2lfcmVhZDog
+Y29ubl9mYyBbMHgleF0sIHN0YXRlIFsweCV4XSwgc2Vzc19mYyBbMHgleF0gaW4gcmVjb3Zlcnku
+IFNraXBwaW5nIGlzdGFza19mYyBbMHgleF0gZnJvbSBUWC4KAAAAAAAAAABzY3NpX3dyaXRlOiBj
+b25uX2ZjIFsweCV4XSwgc3RhdGUgWzB4JXhdLCBzZXNzX2ZjIFsweCV4XSBpbiByZWNvdmVyeS4g
+U2tpcHBpbmcgaXN0YXNrX2ZjIFsweCV4XSBmcm9tIFRYLgoAAAAAAAAAZGNieF9jb250cm9sX3Nt
+WyV1XSBDT05UUk9MX0xJTktVUAoAAAAAAAAAAAAAAAAAZGNieF9jb250cm9sX3NtWyV1XSBDT05U
+Uk9MX1VQREFURV9EQ0JYX1RMVgoAAAAAZGNieF9jb250cm9sX3NtWyV1XSBDT05UUk9MX1BFRVJf
+Tk9UX0FEVkVSVElTRV9EQ0JYCgAAAAAAAAAAAAAAAGRjYnhfY29udHJvbF9zbVsldV0gQ09OVFJP
+TF9VUERBVEVfT1BFUl9WRVJTSU9OCgAAAAAAAAAAAAAAAAAAAABkY2J4X2NvbnRyb2xfc21bJXVd
+IENPTlRST0xfUFJPQ0VTU19QRUVSX1RMVgoAAABkY2J4X2NvbnRyb2xfc21bJXVdIENPTlRST0xf
+QUNLX1BFRVIKAAAAAAAAAAAAAABkY2J4X2llZWVfdmFsaWRhdGVbJXVdIGVycm9yIChvdWkgJSN4
+IHN1YnR5cGUgJSN4IGxlbiAlI3gpCgAAAAAAZGNieF9jZWVfdmFsaWRhdGVbJXVdIGVycm9yCgAA
+AABwcm9jZXNzX2RoY3Bfb3B0czogcm9vdCBwYXRoIGxlbiBbJWRdIGJ5dGVzCgAAAABuZXRpZl9w
+cm9jZXNzX2RoY3Bfb3B0czogbDJkZXZfZmMtPmZsb3djX2lkIFsweCV4XSwgTVNHX1RZUEUgWyVk
+XSwgZGhjdHh0LT5zdGF0ZSBbJWRdCgAAAAAAAAAAAABpY21wX3JlY3Y6IGwyZGV2X2ZjLT5mbG93
+Y19pZCBbMHgleF0sIHBpZCBbMHgleF0sIGljbXAgdHlwZSBbMHgleF0KAAAAAAAAAAAAAAAAAHZu
+MnZuOiBwb3J0IDB4JXggZGlkOjB4JXgleCV4IFVQCgAAAAAAAAAAAAAAAAAAAHZuMnZuOiBwb3J0
+IDB4JXggZGlkOjB4JXgleCV4IERPV04KAAAAAAAAAAAAAAAAAGZjX3NlbmRfYWxsb2NfY3BsOiBm
+YWlsZWQgdG8gc2V0dXAgZmlsdGVyIGN0dXBsZQoAAAAAAAAAAAAAAAAAAABmY29lX2NvbXB1dGVf
+Y3R1cGxlIDB4JXg6JXgKAAAAAGNvbXB1dGVfY3R1cGxlKCk6IGZhaWxlZCB0byBzZXR1cCBmaWx0
+ZXIgY3R1cGxlCgAAAAAAAAAAAAAAAAAAAABmY29lX2NvbXB1dGVfY3R1cGxlIHZsYW4gJXggdmlp
+ZCAleCBwb3J0ICV4IG1wc19pZHggJXgKAAAAAAAAAAAAQUJUUyBBQ0MgYXdhaXRpbmcgUFJMSSBS
+c3A6IGZsb3djX2lkIDB4JXggb3hfaWQgMHgleCByeF9pZCAweCV4IGlxaWQgMHgleAoAAAAAAABw
+b3J0IDB4JXgsIHN0YXRlIDB4JXgsIGNvbW1hbmQgZmFpbGVkIHJldHJpZXMgMHgleAoAAAAAAAAA
+AAAAAAAAYXJwX3JlY3Y6IGlwaWQgWzB4JXhdLCBpbl9hZGRyLmFkZHIgWzB4JXhdLCBzaXAgWzB4
+JXhdLCByaXAgWzB4JXhdLCBhcnBfb3AgWzB4JXhdCgAAAAAAAAAAAAAAAAAAY2huZXRfYXJwX3Jl
+Y3Y6IGlwIGNvbmZsaWN0IGRldGVjdGVkCgAAAAAAAAAAAAAAY2huZXRfYXJwX3JlY3Y6IHBpZCBb
+JXVdLCB2bGFuIFsweCV4XSwgYXJwIG9wIFsweCV4XSwgc2lwIFsweCV4XSwgcmlwIFsweCV4XQoA
+AABjc29ja19mcmVlOiBzaXplb2YoY3NrX2ZjLT51LmNzb2NrKSBbJXVdLCBieXRlcwoAAAAAAAAA
+AAAAAAAAAAAAR290IENPTk5fRVhJU1QgZm9yIHhpZDoweCV4LCB0YWc6MHgleCwgcmV0cnlpbmcu
+CgAAAAAAAAAAAAAAAAAAAGh3X3VscHR4X3dvcmthcm91bmRfcHIxNjk0OV9lbmFibGVkX3BmX2lx
+OiBpcSAldSBlbmFibGVkICV1IChwZiAldSkKAAAAAAAAAAAAAAAAY3NvY2tfcGVlcl9jbG9zZTog
+Y3NrX2ZjLT5mbG93Y19pZCBbMHgleF0sIHRjYl9mYy0+Zmxvd2NfaWQgWzB4JXhdLCBjc2tfZmMt
+PmZsb3djX3N0YXRlIFsweCV4XSwgdGNiX2ZjLT5mbG93Y19zdGF0ZSBbMHgleF0KAAAAAABjc29j
+a19wZWVyX2Nsb3NlOiBjc2tfZmMtPmZsb3djX2lkIFsweCV4XSwgY3NrX2ZjLT5mbG93Y19zdGF0
+ZSAgWzB4JXhdCgAAAAAAAAAAAHRjcF9jbHNfYWJydF9ycGw6IHRjYiB0aWQgWzB4JTA2eF0sIGZs
+b3djX3R5cGUgWzB4JXhdLCBjcGxvcCBbMHgleF0gCgAAAAAAAAAAAAAAY2hfcmF0ZVsldV06IGNh
+cHBlZCB0aWNrIGZyb20gcmVxdWlyZWQgJXUgdG8gc3VwcG9ydGVkICV1OyByYXRlICV1IChlZmYg
+JXUpIGRlZmljaXRfaW5jciAldSB0aWNrICV1CgAAAAAAAAAAAAAAAHBrdHNjaGVkX2NoX3JsWyV1
+XTogY2hhbm5lbCBybCBub3QgYXZhaWxhYmxlIGluIGNvbmp1bmN0aW9uIHdpdGggZmxvdyBzaGFw
+aW5nCgAAcGt0c2NoZWRfY2hfcmxbJXVdOiByYXRlICV1IG1heCAldQoAAAAAAAAAAAAAAAAAcGt0
+c2NoZWRfY2xfd3JyWyV1OiV1XTogd2VpZ2h0ICV1CgAAAAAAAAAAAAAAAAAAZXFfcGFyYW1zWzB4
+JXg6MHgleF06IGRtYXEgMHgleCByZWFkICV1IHBmICV1IGVxaWRfYXBpICV1IHJldCAlZAoAAAAA
+AAAAAAAAAAAAAABod19tYV9hZGRyX3RvX21lbV90eXBlX29mZjogTUEgYWRkcmVzcyAweCUwOHgg
+aXMgbm90IG1hcHBlZAoAAAAAaHdfbWFfYWRkcl90b19tZW1fdHlwZV9vZmY6IE1BIGFkZHJlc3Mg
+MHglMDh4IG1hcHMgdG8gdHlwZSAldSBvZmZzZXQgMHgleAoAAAAAAABtZW1fbWFsbG9jX3RlbXA6
+IGZhaWxlZCB0byBhbGxvY2F0ZSAldSBieXRlcywgcmV0dXJuaW5nIE5VTEwKAAAAbWVtX21hbGxv
+YzogZmFpbGVkIHRvIGFsbG9jYXRlICV1IGJ5dGVzLCByZXR1cm5pbmcgTlVMTAoAAAAAAAAAAGxl
+IGNvbmZpZ3VyYXRpb246IGhhc2ggbW9kZSByZXF1aXJlcyBhdCBsZWFzdCAxNiBlbnRyaWVzLCBu
+aGFzaCAldQoAAAAAAAAAAAAAAAAAbGUgY29uZmlndXJhdGlvbjogaGFzaCBtb2RlIHJlcXVpcmVz
+IGF0IGVudHJpZXMgdG8gYmUgYSBwb3dlciBvZiAyLCBuaGFzaCAldQoAAABsZSBjb25maWd1cmF0
+aW9uOiByZXF1ZXN0ZWQgJXUgdGNhbSBlbnRyaWVzIGJ1dCBvbmx5ICV1IGF2YWlsYWJsZSAobnJv
+dXRlICV1IG5jbGlwICV1IG5maWx0ZXIgJXUgbnNlcnZlciAldQoAAAAAbGUgY29uZmlndXJhdGlv
+bjogdGNhbSByZWdpb25zIG11c3QgaGF2ZSBtdWx0aXBsZSBvZiAzMiBlbnRyaWVzLCBucm91dGUg
+JXUgbmNsaXAgJXUgbmZpbHRlciAldSBuc2VydmVyICV1CgAAAAAAAGh3X3RwX3RjcF90dW5pbmdz
+OiB0dW5pbmcgZm9yIGNsdXN0ZXIgZW52aXJvbm1lbnQKAAAAAAAAAAAAAAAAAABod190cF90Y3Bf
+dHVuaW5nczogdHVuaW5nIGZvciBMQU4gZW52aXJvbm1lbnQKAABod190cF90Y3BfdHVuaW5nczog
+dHVuaW5nIGZvciBXQU4gZW52aXJvbm1lbnQKAABod190cF90Y3BfdHVuaW5nczogbWFudWFsIHR1
+bmluZwoAAAAAAAAAAAAAAAAAAABfaHdfY2ltX2ZsYXNoX21lbWNweTogbWVtY3B5WCBzdGFydAoA
+AAAAAAAAAAAAAABfaHdfY2ltX2ZsYXNoX21lbWNweTogZHN0IDB4JTA4IG9mZnNldCAweCUwOHgg
+c2l6ZSAldSwgd2lkdGggb2YgJXUgaXMgbm90IHN1cHBvcnRlZAoAAAAAAAAAAAAAAABfaHdfY2lt
+X2ZsYXNoX21lbWNweTogbWVtY3B5WCBlbmQKAAAAAAAAAAAAAAAAAABjb25maWd1cmF0aW9uIGZp
+bGUgcGFyc2VyIGVuY291bnRlcmVkIGVycm9yIEAgbGluZSAldToKAAAAAAAAAAAAaHdfaTJjX3Ry
+YW5zYWN0aW9uOiBuZGF0YSAldSBhZGRyX29wIDB4JXggZGF0YVswXSAweCV4IGRpZmYgJXUKAGh3
+X2kyY190cmFuc2FjdGlvbjogbmRhdGEgJXUgYWRkcl9vcCAweCV4IGRhdGFbMF0gMHgleCBkaWZm
+ICV1IGRwb3MgJXUgY29udCAldSBmYWlsZWQgd2l0aCBlcnIgJWQKAAAAAAAAAAAAAAAAAABpMmMg
+dHJhbnNhY3Rpb24gZmFpbGVkIHRvIGNvbXBsZXRlCgAAAAAAAAAAAAAAAABIT1NUIFBBR0VfU0la
+RSBbMHglMGx4XSB0b28gc21hbGwsIG1pbiBbMHglMGx4XSByZXF1aXJlZAoAAAAAAAAAcGFnZSBz
+aXplIFslbHVdIG1pc21hdGNoCgAAAAAAAABQQUdFIHNpemUgJWx1IHVuc3VwcG9ydGVkLCBkZHAg
+ZGlzYWJsZWQKAAAAAAAAAABIb3N0IHBhZ2Vfc2l6ZSAlbHUsIGRkcF9pZHggJXUKAEZDb0UgRERQ
+IGluaXQ6IGZjb2UgbGxpbWl0IDB4JXgsIGZjb2UgdWxpbWl0IDB4JXggZ2JsIGxsaW1pdCAweCV4
+IGdibCB1bGltaXQgMHgleCBwY2JzeiAleAoAAAAAAEZDb0UgRERQIGluaXQ6IGZjb2UgcHBvZCBv
+ZmYgMHgleCwgZmNvZSBzdCBwcG9kIGFkZHIgMHgleCBmY29lIG51bSBwcG9kcyAweCV4CgAAZmNv
+ZSB4Y2hnIG1nciBpbml0OiBOdW1iZXIgb2YgZXhjaGFuZ2VzIGZvciBGQ29FIGlzICV4CgAAAAAA
+AAAAAGZjb2VfbDJ0X2luaXQ6IE5vIHVscHR4IGNyZWRpdCBjaDpbJXVdCgAAAAAAAAAAAGZjb2Vf
+bDJ0X2luaXQ6IGNoOlsldV0gbDJ0X2lkeCBbJXVdCgAAAAAAAAAAAAAAAG5vIGwydCBlbnRyaWVz
+IGNvbmZpZ3VyZWQ7IGZvcmNpbmcgJXUgZW50cmllcywgc3RhcnRpbmcgYXQgJXUKAABkY2J4X2ll
+ZWVfY29uc3RydWN0WyV1XSBldHMgJXUgcGZjICV1IGFwcCAldQoAAABkY2J4X3RpbWVvdXRbJXVd
+CgAAAAAAAAAAAAAAAAAAAGRjYnhfcnVuX3ZlcnNpb25fc21bJXVdIERDQlhfVkVSX1NUQVRFX1JV
+Tl9JRUVFCgAAAAAAAAAAAAAAAAAAAABkY2J4X3J1bl92ZXJzaW9uX3NtWyV1XSBEQ0JYX1ZFUl9T
+VEFURV9SVU5fQ0VFCgBkY2J4X3J1bl92ZXJzaW9uX3NtWyV1XSBEQ0JYX1ZFUl9TVEFURV9SVU5f
+Tk9ORQoAAAAAAAAAAAAAAAAAAAAAcG9ydFsldV0gbGluayB1cCAoJXUpIChzcGVlZCAlI3ggYWNh
+cHMgJSN4IGxwY2FwcyAlI3gpCgAAAAAAAAAAAHBvcnRfaHNzX3NpZ2RldFsldV06IGhzc19zaWdk
+ZXQgY2hhbmdlZCB0byAweCV4CgAAAAAAAAAAAAAAAAAAAABwb3J0WyV1XSByZXNldHRpbmcgS1IK
+AAAAAAAAAAAAAFFTRlAgbW9kdWxlIHVucGx1ZyAtIHJlaW5pdGlhbGl6aW5nIHJ4X2xvcyAgdG8g
+MHhmZgoAAAAAAAAAAAAAAABncGlvX3FzZnBfbW9kdWxlX3VwZGF0ZTogY2hhbmdlZCByeF9sb3Mg
+ZnJvbSAweCV4IHRvIDB4JXgKAAAAAAAAZ3Bpb19xc2ZwX21vZHVsZV91cGRhdGU6IGNoYW5nZWQg
+dHhfZGlzIGZyb20gMHgleCB0byAweCV4CgAAAAAAAENhbGN1bGF0aW9uIG91dCBvZiBib3VuZHMg
+ZnVyaW5nIGluaXQ6ICUjeCAlI3ggJSN4CgAAAAAAAAAAAAAAAABod19zZ2VfbWFtZW1faW5pdDog
+ZW5jb3VudGVyZWQgZXJyb3IgJWQKAAAAAAAAAABfaHdfdHBfcGdtbmd0OiB0eF9wYWdlX21heCAl
+dSByeF9wYWdlX21heCAldSBwc3RydWN0cyAldSBzaXplICV1CgAAAAAAAAAAAAAAAAAAAG1wYXJ0
+aXRpb25fb3RoZXJzX3RvdGFsOiBkZHAgJXUgZGRwX2lzY3NpICV1IHN0YWcgJXUgcGJsICV1IHJx
+ICV1IHJxdWRwICV1IC0+ICV1CgAAAAAAAAAAAAAAAAAAAF9tcGFydGl0aW9uX2JhbmtzX21jWDog
+bmJhbmtzX3BtdHggJXUgKCV1TUIpIG5iYW5rc19wbXJ4ICV1ICgldU1CKSBuYmFua3Nfb3RoZXJz
+ICV1ICgldU1CKSBuYmFua3NfZncgJXUgKCV1TUIpCgBfbXBhcnRpdGlvbl9iYW5rc19tYzE6IG5i
+YW5rc19wbXR4ICV1ICgldU1CKSBuYmFua3Nfb3RoZXJzICV1ICgldU1CKSBuYmFua3NfZncgJXUg
+KCV1TUIpCgAAAAAAAABfbXBhcnRpdGlvbl9iYW5rc19tYzA6IG5iYW5rc19wbXJ4ICV1ICgldU1C
+KSBuYmFua3Nfb3RoZXJzICV1ICgldU1CKQoAAAAAAAAAAAAAAG1lbV9tYWxsb2NfaW50ZXJuYWw6
+IGZhaWxlZCB0byBhbGxvY2F0ZSAldSBieXRlcywgcmV0dXJuaW5nIE5VTEwKAAAAAAAAAAAAAAAA
+AAAAaHdfZWRjX2Jpc3RbJXVdOiBiaXN0X2NtZFsweCUwOHhdIGFkZHIgMHgleCBsZW4gMHgleAoA
+AAAAAAAAAAAAAGh3X2VkY19iaXN0WyV1XTogZG9uZSwgZW5jb3VudGVyZWQgJXUgZXJyb3JzIG9u
+IGZpcnN0IGFuZCAldSBlcnJvcnMgb24gc2Vjb25kIGF0dGVtcHQgKCV1Z2JwcykKAG1lbV9pbml0
+X2NhY2hlczogY2FjaGVfc2l6ZSAldSBmbG93Y19idWZfdGNiX2NhY2hlX3NpemUgJXUgYnVmbGw2
+NF9jYWNoZV9zaXplICV1CgAAAAAAAAAAAAAAAAAAAHF1ZXVlc19wZXJfcGFnZTogcGYgJXUgaGFz
+IGEgYmFyc2l6ZSBvZiAldS1ieXRlcywgb2NxX3NpemUgJXUKAABzZ2UgcmVxdWlyZSBuZXEgJXUg
+bmlxICV1IHJvdW5kaW5nIHRvICV1ICV1CgAAAABtcGFydGl0aW9uX3BtdHg6IG0gMHglMDh4IHNp
+emUgJXUKAAAAAAAAAAAAAAAAAABtcGFydGl0aW9uX3Btcng6IG0gMHglMDh4IHNpemUgJXUKAAAA
+AAAAAAAAAAAAAABtcGFydGl0aW9uX2VkYyAobm8gZXh0bWVtKTogbSAweCUwOHggc2l6ZSAldQoA
+AABtcGFydGl0aW9uX2VkY19lc3RpbWF0ZTogaHcgbW9kdWxlcyByZXF1aXJlICVkIGJ5dGVzIGlu
+IEVEQwoAAAAAY2huZXRfYnllOmwyZGV2X2ZjLT5mbG93Y19pZCBbMHgleF0sIGwyZGV2X2ZjLT5m
+bG93Y19wY2llX3BmbiBbMHgleF0sIGwyZGV2X2ZjLT5mbG93Y19wY2llX3ZmbiBbMHgleF0sIHBv
+cnQgWzB4JXhdCgAAAAAAAAAAAAAAAABjaG5ldF9ieWU6dmxhbmRldl9mYy0+Zmxvd2NfaWQgWzB4
+JXhdLCB2bGFuZGV2X2ZjLT5mbG93Y19wY2llX3BmbiBbMHgleF0sIHZsYW5kZXZfZmMtPmZsb3dj
+X3BjaWVfdmZuIFsweCV4XSwgcG9ydCBbMHgleF0KAAAAAAAAAGNyX21vZHVsZV9yeF9sb3NbJXVd
+OiByeF9sb3MgY2hhbmdlZCB0byAldQoAAAAAAHBmbiAldSB2Zm4gJXUgaGFzIHBuZHR4bnMgJXUg
+YWZ0ZXIgMTAwbXMKAAAAAAAAAGJhZCBtYWlsYm94IGNtZDogcGZuIDB4JXggdmZuIDB4JXg7IG9w
+Y29kZSAweCV4ID4gTEFTVEMyRSAweCV4CgBtYWlsYm94IGNtZCBub3QgeWV0IHN1cHBvcnRlZDog
+cGZuIDB4JXggdmZuIDB4JXg7IG9wY29kZSAweCV4CgAAYmFkIG1haWxib3ggY21kOiBwZm4gMHgl
+eCB2Zm4gMHgleDsgb3Bjb2RlIDB4JXggaXMgdmFsaWQgcG9zdCBkZXZpY2UgaW5pdCBvbmx5CgBi
+YWQgbWFpbGJveCBjbWQ6IHBmbiAweCV4IHZmbiAweCV4OyBvcGNvZGUgMHglMDJ4IHJhbWFzayAw
+eCV4IGNtZCByYW1hc2sgMHgleAoAAGJhZCBtYWlsYm94IGNtZDogcGZuIDB4JXggdmZuIDB4JXg7
+IG9wY29kZSAweCUwMnggbGVuMTYgMHgleCB2ZXJzdXMgZXhwZWN0ZWQgbGVuMTYgMHgleAoAAAAA
+AAAAAGluc3VmZmljaWVudCBjYXBzIHRvIHByb2Nlc3MgbWFpbGJveCBjbWQ6IHBmbiAweCV4IHZm
+biAweCV4OyByX2NhcHMgMHgleCB3eF9jYXBzIDB4JXggcmVxdWlyZWQgcl9jYXBzIDB4JXggd19j
+YXBzIDB4JXgKAAAAAAAAAAAAaW5zdWZmaWNpZW50IGNhcHMgdG8gcHJvY2VzcyBtYWlsYm94IGNt
+ZDogcGZuIDB4JXggdmZuIDB4JXg7IHJfY2FwcyAweCV4IHd4X2NhcHMgMHgleCByZXF1aXJlZCBy
+X2NhcHMgMHgleCB3X2NhcHMgMHgleAoAAAAAAAAAAABkb3dubG9hZF9zcmFtOiBlcnJvciwgcmV0
+ICVkCgAAAGRvd25sb2FkX3RjYW06IGVycm9yLCByZXQgJWQKAAAAVlBEIHJlZ2lvbiBpcyB0b28g
+c21hbGwgKFNFUkNGR19TUl9QRk5WUERTSVpFIDB4JXgpCgAAAAAAAAAAAAAAAGNmX3ByZXA6IGVy
+cm9yLCByZXQgJWQKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AIIAAAEgAAAAAAAAAIIAAAEAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAaAgAAAAAAAAAAAAAAAAIAAAAAAAAAAAAKAAAAAAAAAAAAAAgADAAAAAAFgCAAAAAADAAAAAAAA
+AAAAAAADAAAAAAAAAAAAAAACAAAAAAAAAAAAIAAAAAAAAAAAAAAAAQADgAAAAAAAAAAAAAACAAAA
+AAAAAAAAIAOAAAAAAAAAAAAAEAKAAIAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAC
+gAAAAAAAAAAAAAACAAAAAAAAAAAAAAACgAAAAAAAAAAAAQADAAAAAAAAAAAAAAKDAAAAAAAAAAAA
+EAKAAAAAAAAAAAAAMAADAAAAAAAACAAAMAADAAAAAAAAAAAAMAWDAAAAAAAACAAAMAWDAAAAAAAA
+AAAAMASDAAAAAAAACAAAMASDAAAAAAAAAAAAMAMDAAAAAAAACAAAMAMDAAAAAAAAAAAAOAMDAAAA
+AAAAAAAAOAWDAAAAAAAAAAAAOASDAAAAAAAAAAAAOAADAAAAAAAAAAAANAaCAAAAAAAAAAAAPAOC
+AAAAAAAAAAAAPAADAAAAAAAACAAAPAADAAAAAAAAAAAAPASDAAAAAAAAAAAAPAUDAAAAAAAAAAAA
+PQQDAAAAAAAAAAAAPAODAAAAAAAAAAAALAACAAAAAAAAAAAALAWCAAAAAAAAAAAALAUCAAAAAAAA
+AAAAEAaAAAAAAAAAAAAAEAaCwAAAAAAAAAAAEAaCgAAAAAAAAAAAAA6CAAAAAAAAAAAAEAeCgAAA
+ACAAAAAAAAeCAAAAACAAAAAAEAcCgAAAAAAAAAAAEAcCgAAAAAAAAAAAEAcCgAAAAAAAAAAAAAcC
+AAAAACAAAAAAEBeDAAAAAAAACAAAEBeDAAAAAAAACAAAEAAAAAAAAAAAAAAAEAYDgAAAAAAAAAAA
+AA4DAAAAAAAAAAAAEAYDQAAAAAAAAAAAEAYDAAAAAAAAAAAAEAYAAAAAAAAAAAAAAAYDgAAAAAAA
+AAAAAAYDAAAAAAAAAAAAAA4CAAAAAAAAAAAAAA4CAAAAAAAAAAAAEAYCAAAAAAAAAAAAEAYCAAAA
+AAAAAAAAEAYCgAAAAAAAAAAAEAYCgAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAgAAAAAAAAAAABADAAAAAAAACAAAAAAAAAAAAAAAAAAA////////////////
+////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////AAAAIAAA
+AADAAAAAAAAAIAAAAADgAAAAAAAAAAIAAAAAAAAAQAAAAAAAAAAAAAAAAAABIQAAAAAAAAAAAAEB
+IAAAAAAAAAAAAAACAAAABAAEAAAAAAUAAAAEAAAAAAAAAAAAoAAAAACAAAAAAIAAQAAAAAAAAgAA
+AIAAIAAAAAAAAgAAAQBAAAAAAAAAAAAAAQBCAAAAAAAAAAAAAAAgAAAAAAAAAAAAAhAgAAAAAAAA
+AAAAAgwCAAAAAAAAAAAAAIUCAAAABAAAAAAAAIBCAAAAAAAAAAAAAgAiAAAAAAAAAAAAAIBBAAAA
+AAAAAAAAAIBBgAAAAAAAAAAAAgAhAAAAAAAAAAAAABAggAAAAAAAAAAAAiUAgAAAAAAAAAAAAAUA
+AAAAAAAAAAAACIgEgAAAAAAAAAAACIgEgAAAAAAAAAAACKIAgAAAAAAAAAAACKIAgAAAAAAAAAAA
+CKMAgAAAAAAAAAAACKMAgAAAAAAAAAAACKSAgAAAAAAAAAAACKSAgAAAAAAAAAAABKSAwAAAAAAA
+AAAABKIAwAAAAAAAAAAABKMAwAAAAAAAAAAABIgEwAAAAAAAAAAAAAkBgAAAAAAAAAAAAgwAgAAA
+AAAAAAAAAIgEwAAAAAAAAAAAAIgEgAAAAAAAAAAAAgsAgAAAAAAAAAAAAIqAgAAAAAAAAAAAAAuA
+gAAAAAAAAAAAAIwAgAAAAAAAAAAAAiAQgAAAAAAAAAAAAgoAgAAAAAAAAAAAAgqAgAAAAAAAAAAA
+AAkCgAAAAAAAAAAAAAEBAAAAAAAAAAAAAAEBQAAAAAAAAAAAAAEAgAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAgAAAAAAAAAAAAACBEAAAAAAAAAAAAACBCAAAAAAAAAAAAACBBAAAAAAAAAAAAACBgAAA
+AAAAAAAAAIAAwAAAAAAAAAAAAIAAoAAAAAAAAAAAAAAIAAAAAAAAAAAAAIGAAAAAAAAAAAAAAIGA
+gAAAAAAAAAAAAImAgAAAAAAAAAAAAImAwAAAAAAAAAAAAAGCAAAAAAAAAAAAAgGAAAAAAAAAAAAA
+AgGAgAAAAAAAAAAAAEGBgAAAAAAAAAAAAgGBgAAAAAAAAAAAAEmBgAAAAAAAAAAAAgmBgAAAAAAA
+AAAAAgGBAAAAAAAAAAAAAEGBAAAAAAAAAAAAIAAAAAAAAAAAAAAAEAAAAgEAAAAAAAAAEAAAAgAA
+AAAAAAAAEAAAAAAAAAAAAAAAAIAAwAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////////////
+////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////
+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
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAACAAwAAQAAAACAAACACYkQAAAAAAARzAABgMgArcACAIBwCRAAAAAAAgDAAACBqAK
+tQAIAgDGJEAAAAAAAAAAAAAAAAACAAACACYkQAAAAAAAIFAABAAAAAIAAAIAJiRAAAAAAAhgIACE
+AAAAAAAABgAgAEAAAAAACGAgAIQAAAACATACACYlQAAAAAAIYAAABACEAYAEBAIBxiTAAAAAAAHA
+AAACQ4ADAgyIAgGmJEAAAAAACABgAAQAAAACAAACACYkQAAAAAAIAGAABAAAAAAAAAQBIABAAAAA
+AAAAAAAAAAAAAAAABAEgAEAAAAAABAgUgAYKAAAHAUwCIKYmQAAAAAAIgAAABgCEAYAECAIBpiZA
+AAAAAABAAAACAKAAAkAIAgGmJEAAAAAAAAAAAAAAAAACAAACACYkQAAAAAAEAAAAAoQAAwKKCAIE
+piRAAAAAAAAAAAAAAAAAAgAABgEgSEAAAAAAACBQAAQAAAACAAACACYkQAAAAAAIYCAAhAAAAAIA
+AAYAJgRAAAAAAAhgIACEAAAAAgAAAgEmJUAAAAAACGAAAAQAhAGABAQCAcYkwAAAAAAIAGAABAAA
+AAAAAAQBIABAAAAAAAAAAAAAAAAAAAAAAgAmTHAAAAAAAAAAAAAAAAAAAAAGASAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAItJAECRYEAgTGJEAAAAAAAcAAAAi0kAQJFgQCBMYk
+QAAAAAAECHSATAkAAFAAXAJh5iRAAAAAAAwIdIBEAAAAUgBAAmEmJEAAAAAACAIQoAQAAAAAAQAC
+ACYkQAAAAAAIAhCgBAAAAAABAAIAJiRAAAAAAAQIdABCAQAABwCIAmDGJEAAAAAADcgUAAIJAAAE
+QJwCYOYkQAAAAAAJyBCABrSQBAKUiAJlxiRAAAAAAA3IdABItJADAJSIAmCmJMAAAAAADch0AEi0
+kAMAlIgCYKYkwAAAAAAIRwAABAAAAAAAAAIBICRAAAAAAAhHAAAEAAAAAgAAAgUgJEAAAAAAAEcg
+AQwHIcK3AAgCAcAkQAAAAAAARyABDAchwrcACAIBwCRAAAAAAABHIAEMByHCtwAIAgHAJEAAAAAA
+AAAgAQgAhAAFQIgCAcYkwAAAAAAAACABCACEAAVAiAIBxiTAAAAAAAAAIAEIAIQABUCIAgHGJMAA
+AAAAAAAgAYaCAAECwIgCA8YkwAAAAAAAACABgoIAAALAiAIDxiTAAAAAAAnAIAGCpIABBUCIAgHG
+JMAAAAAACAAAAAwAhAAFQIgCAcYkwAAAAAAAACABhoIAAQLAiAIDxiTAAAAAAAAAIAGCggAAAMCI
+AgKmJMAAAAAACcAgAYKkgAEFQIgCAcYkwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAgAAAAEAAQkEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAW2dsb2JhbF0KcnNzX2dsYl9j
+b25maWdfbW9kZT1iYXNpY3ZpcnR1YWwKcnNzX2dsYl9jb25maWdfb3B0aW9ucz10bmxtYXBlbixo
+YXNodG9lcGxpdHosdG5sYWxsbGtwCnJlZ1sweDEwMDhdPTB4NDA4MTAvMHgyMWM3MApyZWdbMHgx
+MDBjXT0weDIyMjIyMjIyCnJlZ1sweDEwYTBdPTB4MDEwNDA4MTAKcmVnWzB4MTA0NF09NDA5Ngpy
+ZWdbMHgxMDQ4XT02NTUzNgpyZWdbMHgxMDRjXT0xNTM2CnJlZ1sweDEwNTBdPTkwMjQKcmVnWzB4
+MTA1NF09OTIxNgpyZWdbMHgxMDU4XT0yMDQ4CnJlZ1sweDEwNWNdPTEyOApyZWdbMHgxMDYwXT04
+MTkyCnJlZ1sweDEwNjRdPTE2Mzg0CnJlZ1sweDEwYTRdPTB4YTAwMGEwMDAvMHhmMDAwZjAwMApy
+ZWdbMHgxMGE4XT0weDIwMDAvMHgyMDAwCnNnZV90aW1lcl92YWx1ZT01LDEwLDIwLDUwLDEwMCwy
+MDAKcmVnWzB4N2QwNF09MHgwMDAxMDAwMC8weDAwMDEwMDAwCnJlZ1sweDdkNmNdPTB4MDAwMDAw
+MDAvMHgwMDAwNzAwMApyZWdbMHg3ZGMwXT0weDBlMmY4ODQ5CmZpbHRlck1vZGU9ZnJhZ21lbnRh
+dGlvbixtcHNoaXR0eXBlLHByb3RvY29sLHZsYW4scG9ydCxmY29lCmZpbHRlck1hc2s9cHJvdG9j
+b2wsZmNvZQp0cF9wbXJ4PTM0CnRwX3BtcnhfcGFnZXNpemU9NjRLCnRwX25yeGNoPTAKdHBfcG10
+eD0zMgp0cF9wbXR4X3BhZ2VzaXplPTY0Swp0cF9udHhjaD0wCnRwX210dXM9ODgsMjU2LDUxMiw1
+NzYsODA4LDEwMjQsMTI4MCwxNDg4LDE1MDAsMjAwMiwyMDQ4LDQwOTYsNDM1Miw4MTkyLDkwMDAs
+OTYwMApyZWdbMHgxOTE2OF09MHgwNDAyMDEwMApbZnVuY3Rpb24iMCJdCm52Zj0xNgp3eF9jYXBz
+PWFsbApyX2NhcHM9YWxsCm52aT0xCm5pcWZsaW50PTgKbmV0aGN0cmw9OApuZXE9MTYKbmV4YWN0
+Zj04CmNtYXNrPWFsbApwbWFzaz0weDEKW2Z1bmN0aW9uIjEiXQpudmY9MTYKd3hfY2Fwcz1hbGwK
+cl9jYXBzPWFsbApudmk9MQpuaXFmbGludD04Cm5ldGhjdHJsPTgKbmVxPTE2Cm5leGFjdGY9OApj
+bWFzaz1hbGwKcG1hc2s9MHgyCltmdW5jdGlvbiIyIl0KbnZmPTE2Cnd4X2NhcHM9YWxsCnJfY2Fw
+cz1hbGwKbnZpPTEKbmlxZmxpbnQ9OApuZXRoY3RybD04Cm5lcT0xNgpuZXhhY3RmPTgKY21hc2s9
+YWxsCnBtYXNrPTB4NApbZnVuY3Rpb24iMyJdCm52Zj0xNgp3eF9jYXBzPWFsbApyX2NhcHM9YWxs
+Cm52aT0xCm5pcWZsaW50PTgKbmV0aGN0cmw9OApuZXE9MTYKbmV4YWN0Zj04CmNtYXNrPWFsbApw
+bWFzaz0weDgKW2Z1bmN0aW9uIjQiXQp3eF9jYXBzPWFsbApyX2NhcHM9YWxsCm52aT0yOApuaXFm
+bGludD0xNzAKbmV0aGN0cmw9MTAwCm5lcT0yNTYKbmV4YWN0Zj00MApjbWFzaz1hbGwKcG1hc2s9
+YWxsCm5ldGhvZmxkPTEwMjQKbnJvdXRlPTMyCm5jbGlwPTMyCm5maWx0ZXI9NDk2Cm5zZXJ2ZXI9
+NDk2Cm5oYXNoPTEyMjg4CnByb3RvY29sPW5pY192bSxvZmxkLHJkZHAscmRtYWMsaXNjc2lfaW5p
+dGlhdG9yX3BkdSxpc2NzaV90YXJnZXRfcGR1CnRwX2wydD0zMDcyCnRwX2RkcD0zCnRwX2RkcF9p
+c2NzaT0yCnRwX3N0YWc9Mwp0cF9wYmw9MTAKdHBfcnE9MTMKW2Z1bmN0aW9uIjUiXQp3eF9jYXBz
+PWFsbApyX2NhcHM9YWxsCm52aT00Cm5pcWZsaW50PTM0Cm5ldGhjdHJsPTMyCm5lcT02NApuZXhh
+Y3RmPTQKY21hc2s9YWxsCnBtYXNrPWFsbApuc2VydmVyPTE2Cm5oYXNoPTIwNDgKdHBfbDJ0PTEw
+MjAKcHJvdG9jb2w9aXNjc2lfaW5pdGlhdG9yX2ZvZmxkCnRwX2RkcF9pc2NzaT0yCmlzY3NpX250
+YXNrPTIwNDgKaXNjc2lfbnNlc3M9MjA0OAppc2NzaV9uY29ubl9wZXJfc2Vzc2lvbj0xCmlzY3Np
+X25pbml0aWF0b3JfaW5zdGFuY2U9NjQKW2Z1bmN0aW9uIjYiXQp3eF9jYXBzPWFsbApyX2NhcHM9
+YWxsCm52aT00Cm5pcWZsaW50PTM0Cm5ldGhjdHJsPTMyCm5lcT02NgpuZXhhY3RmPTMyCmNtYXNr
+PWFsbApwbWFzaz1hbGwKbmhhc2g9MjA0OAp0cF9sMnQ9NApwcm90b2NvbD1mY29lX2luaXRpYXRv
+cgp0cF9kZHA9MQpmY29lX25mY2Y9MTYKZmNvZV9udm5wPTMyCmZjb2VfbnNzbj0xMDI0CltmdW5j
+dGlvbiIxMDIzIl0Kd3hfY2Fwcz1hbGwKcl9jYXBzPWFsbApudmk9NApjbWFzaz1hbGwKcG1hc2s9
+YWxsCm5leGFjdGY9OApuZmlsdGVyPTE2CltmdW5jdGlvbiIwLyoiXQp3eF9jYXBzPTB4ODIKcl9j
+YXBzPTB4ODYKbnZpPTEKbmlxZmxpbnQ9NApuZXRoY3RybD0yCm5lcT00Cm5leGFjdGY9NApjbWFz
+az1hbGwKcG1hc2s9MHgxCltmdW5jdGlvbiIxLyoiXQp3eF9jYXBzPTB4ODIKcl9jYXBzPTB4ODYK
+bnZpPTEKbmlxZmxpbnQ9NApuZXRoY3RybD0yCm5lcT00Cm5leGFjdGY9NApjbWFzaz1hbGwKcG1h
+c2s9MHgyCltmdW5jdGlvbiIyLyoiXQp3eF9jYXBzPTB4ODIKcl9jYXBzPTB4ODYKbnZpPTEKbmlx
+ZmxpbnQ9NApuZXRoY3RybD0yCm5lcT00Cm5leGFjdGY9NApjbWFzaz1hbGwKcG1hc2s9MHg0Cltm
+dW5jdGlvbiIzLyoiXQp3eF9jYXBzPTB4ODIKcl9jYXBzPTB4ODYKbnZpPTEKbmlxZmxpbnQ9NApu
+ZXRoY3RybD0yCm5lcT00Cm5leGFjdGY9NApjbWFzaz1hbGwKcG1hc2s9MHg4Cltwb3J0IjAiXQpk
+Y2I9cHBwLGRjYngKYmdfbWVtPTI1CmxwYmtfbWVtPTI1Cmh3bT0zMApsd209MTUKZHdtPTMwCmRj
+Yl9hcHBfdGx2WzBdPTB4ODkwNixldGhlcnR5cGUsMwpkY2JfYXBwX3RsdlsxXT0weDg5MTQsZXRo
+ZXJ0eXBlLDMKZGNiX2FwcF90bHZbMl09MzI2MCxzb2NrZXRudW0sNQpbcG9ydCIxIl0KZGNiPXBw
+cCxkY2J4CmJnX21lbT0yNQpscGJrX21lbT0yNQpod209MzAKbHdtPTE1CmR3bT0zMApkY2JfYXBw
+X3RsdlswXT0weDg5MDYsZXRoZXJ0eXBlLDMKZGNiX2FwcF90bHZbMV09MHg4OTE0LGV0aGVydHlw
+ZSwzCmRjYl9hcHBfdGx2WzJdPTMyNjAsc29ja2V0bnVtLDUKW3BvcnQiMiJdCmRjYj1wcHAsZGNi
+eApiZ19tZW09MjUKbHBia19tZW09MjUKaHdtPTMwCmx3bT0xNQpkd209MzAKZGNiX2FwcF90bHZb
+MF09MHg4OTA2LGV0aGVydHlwZSwzCmRjYl9hcHBfdGx2WzFdPTB4ODkxNCxldGhlcnR5cGUsMwpk
+Y2JfYXBwX3RsdlsyXT0zMjYwLHNvY2tldG51bSw1Cltwb3J0IjMiXQpkY2I9cHBwLGRjYngKYmdf
+bWVtPTI1CmxwYmtfbWVtPTI1Cmh3bT0zMApsd209MTUKZHdtPTMwCmRjYl9hcHBfdGx2WzBdPTB4
+ODkwNixldGhlcnR5cGUsMwpkY2JfYXBwX3RsdlsxXT0weDg5MTQsZXRoZXJ0eXBlLDMKZGNiX2Fw
+cF90bHZbMl09MzI2MCxzb2NrZXRudW0sNQpbZmluaV0KdmVyc2lvbj0weDE0MjUwMDFjCmNoZWNr
+c3VtPTB4NWNlYWI0MWUKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFtnbG9iYWxdCnJzc19nbGJfY29uZmlnX21v
+ZGU9YmFzaWN2aXJ0dWFsCnJzc19nbGJfY29uZmlnX29wdGlvbnM9dG5sbWFwZW4saGFzaHRvZXBs
+aXR6LHRubGFsbGxrcApyZWdbMHgxMDA4XT0weDQwODEwLzB4MjFjNzAKcmVnWzB4MTAwY109MHgy
+MjIyMjIyMgpyZWdbMHgxMGEwXT0weDAxMDQwODEwCnJlZ1sweDEwNDRdPTQwOTYKcmVnWzB4MTA0
+OF09NjU1MzYKcmVnWzB4MTA0Y109MTUzNgpyZWdbMHgxMDUwXT05MDI0CnJlZ1sweDEwNTRdPTky
+MTYKcmVnWzB4MTA1OF09MjA0OApyZWdbMHgxMDVjXT0xMjgKcmVnWzB4MTA2MF09ODE5MgpyZWdb
+MHgxMDY0XT0xNjM4NApyZWdbMHgxMGE0XT0weGEwMDBhMDAwLzB4ZjAwMGYwMDAKcmVnWzB4MTBh
+OF09MHgyMDAwLzB4MjAwMApzZ2VfdGltZXJfdmFsdWU9NSwxMCwyMCw1MCwxMDAsMjAwCnJlZ1sw
+eDdkMDRdPTB4MDAwMTAwMDAvMHgwMDAxMDAwMApyZWdbMHg3ZDZjXT0weDAwMDAwMDAwLzB4MDAw
+MDcwMDAKcmVnWzB4N2RjMF09MHgwZTJmODg0OQpmaWx0ZXJNb2RlPWZyYWdtZW50YXRpb24sbXBz
+aGl0dHlwZSxwcm90b2NvbCx2bGFuLHBvcnQsZmNvZQpmaWx0ZXJNYXNrPXByb3RvY29sLGZjb2UK
+dHBfcG1yeD0zMAp0cF9wbXJ4X3BhZ2VzaXplPTY0Swp0cF9ucnhjaD0wCnRwX3BtdHg9NTAKdHBf
+cG10eF9wYWdlc2l6ZT02NEsKdHBfbnR4Y2g9MAp0cF9tdHVzPTg4LDI1Niw1MTIsNTc2LDgwOCwx
+MDI0LDEyODAsMTQ4OCwxNTAwLDIwMDIsMjA0OCw0MDk2LDQzNTIsODE5Miw5MDAwLDk2MDAKcmVn
+WzB4MTkxNjhdPTB4MDQwMjAxMDAKW2Z1bmN0aW9uIjAiXQp3eF9jYXBzPWFsbApyX2NhcHM9YWxs
+Cm52aT0yOApuaXFmbGludD0xNzAKbmV0aGN0cmw9OTYKbmVxPTI1MgpuZXhhY3RmPTQwCmNtYXNr
+PWFsbApwbWFzaz1hbGwKbmV0aG9mbGQ9MTAyNApucm91dGU9MzIKbmNsaXA9MzIKbmZpbHRlcj00
+OApuc2VydmVyPTMyCm5oYXNoPTAKcHJvdG9jb2w9bmljX3ZtLG9mbGQscmRkcCxyZG1hYyxpc2Nz
+aV9pbml0aWF0b3JfcGR1LGlzY3NpX3RhcmdldF9wZHUKdHBfbDJ0PTMwNzIKdHBfZGRwPTIKdHBf
+ZGRwX2lzY3NpPTIKdHBfc3RhZz0yCnRwX3BibD01CnRwX3JxPTcKW2Z1bmN0aW9uIjEiXQp3eF9j
+YXBzPWFsbApyX2NhcHM9YWxsCm52aT00Cm5pcWZsaW50PTM0Cm5ldGhjdHJsPTMyCm5lcT02Ngpu
+ZXhhY3RmPTMyCmNtYXNrPWFsbApwbWFzaz1hbGwKbmhhc2g9MApwcm90b2NvbD1mY29lX2luaXRp
+YXRvcgp0cF9kZHA9MgpmY29lX25mY2Y9MTYKZmNvZV9udm5wPTMyCmZjb2VfbnNzbj0xMDI0Cltm
+dW5jdGlvbiIxMDIzIl0Kd3hfY2Fwcz1hbGwKcl9jYXBzPWFsbApudmk9NApjbWFzaz1hbGwKcG1h
+c2s9YWxsCm5leGFjdGY9OApuZmlsdGVyPTE2CltmdW5jdGlvbiIwLyoiXQp3eF9jYXBzPTB4ODIK
+cl9jYXBzPTB4ODYKbnZpPTEKbmlxZmxpbnQ9NApuZXRoY3RybD0yCm5lcT00Cm5leGFjdGY9NApj
+bWFzaz1hbGwKcG1hc2s9MHgxCltmdW5jdGlvbiIxLyoiXQp3eF9jYXBzPTB4ODIKcl9jYXBzPTB4
+ODYKbnZpPTEKbmlxZmxpbnQ9NApuZXRoY3RybD0yCm5lcT00Cm5leGFjdGY9NApjbWFzaz1hbGwK
+cG1hc2s9MHgyCltwb3J0IjAiXQpkY2I9cHBwLGRjYngKYmdfbWVtPTI1CmxwYmtfbWVtPTI1Cmh3
+bT0zMApsd209MTUKZHdtPTMwCmRjYl9hcHBfdGx2WzBdPTB4ODkwNixldGhlcnR5cGUsMwpkY2Jf
+YXBwX3RsdlsxXT0weDg5MTQsZXRoZXJ0eXBlLDMKZGNiX2FwcF90bHZbMl09MzI2MCxzb2NrZXRu
+dW0sNQpbcG9ydCIxIl0KZGNiPXBwcCxkY2J4CmJnX21lbT0yNQpscGJrX21lbT0yNQpod209MzAK
+bHdtPTE1CmR3bT0zMApkY2JfYXBwX3RsdlswXT0weDg5MDYsZXRoZXJ0eXBlLDMKZGNiX2FwcF90
+bHZbMV09MHg4OTE0LGV0aGVydHlwZSwzCmRjYl9hcHBfdGx2WzJdPTMyNjAsc29ja2V0bnVtLDUK
+W3BvcnQiMiJdCmRjYj1wcHAsZGNieApiZ19tZW09MjUKbHBia19tZW09MjUKaHdtPTMwCmx3bT0x
+NQpkd209MzAKZGNiX2FwcF90bHZbMF09MHg4OTA2LGV0aGVydHlwZSwzCmRjYl9hcHBfdGx2WzFd
+PTB4ODkxNCxldGhlcnR5cGUsMwpkY2JfYXBwX3RsdlsyXT0zMjYwLHNvY2tldG51bSw1Cltwb3J0
+IjMiXQpkY2I9cHBwLGRjYngKYmdfbWVtPTI1CmxwYmtfbWVtPTI1Cmh3bT0zMApsd209MTUKZHdt
+PTMwCmRjYl9hcHBfdGx2WzBdPTB4ODkwNixldGhlcnR5cGUsMwpkY2JfYXBwX3RsdlsxXT0weDg5
+MTQsZXRoZXJ0eXBlLDMKZGNiX2FwcF90bHZbMl09MzI2MCxzb2NrZXRudW0sNQpbZmluaV0KdmVy
+c2lvbj0weDE0MjUwMDFjCmNoZWNrc3VtPTB4YWQ0YzE3NGYKAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
+====
Property changes on: user/ngie/bsnmp_cleanup/sys/dev/cxgbe/firmware/t4fw-1.15.37.0.bin.uu
___________________________________________________________________
Added: fbsd:nokeywords
## -0,0 +1 ##
+yes
\ No newline at end of property
Index: user/ngie/bsnmp_cleanup/sys/dev/cxgbe/firmware/t4fw_interface.h
===================================================================
--- user/ngie/bsnmp_cleanup/sys/dev/cxgbe/firmware/t4fw_interface.h (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/dev/cxgbe/firmware/t4fw_interface.h (revision 299697)
@@ -1,8818 +1,8853 @@
/*-
* Copyright (c) 2012-2016 Chelsio Communications, Inc.
* 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 _T4FW_INTERFACE_H_
#define _T4FW_INTERFACE_H_
/******************************************************************************
* R E T U R N V A L U E S
********************************/
enum fw_retval {
FW_SUCCESS = 0, /* completed successfully */
FW_EPERM = 1, /* operation not permitted */
FW_ENOENT = 2, /* no such file or directory */
FW_EIO = 5, /* input/output error; hw bad */
FW_ENOEXEC = 8, /* exec format error; inv microcode */
FW_EAGAIN = 11, /* try again */
FW_ENOMEM = 12, /* out of memory */
FW_EFAULT = 14, /* bad address; fw bad */
FW_EBUSY = 16, /* resource busy */
FW_EEXIST = 17, /* file exists */
FW_ENODEV = 19, /* no such device */
FW_EINVAL = 22, /* invalid argument */
FW_ENOSPC = 28, /* no space left on device */
FW_ENOSYS = 38, /* functionality not implemented */
FW_ENODATA = 61, /* no data available */
FW_EPROTO = 71, /* protocol error */
FW_EADDRINUSE = 98, /* address already in use */
FW_EADDRNOTAVAIL = 99, /* cannot assigned requested address */
FW_ENETDOWN = 100, /* network is down */
FW_ENETUNREACH = 101, /* network is unreachable */
FW_ENOBUFS = 105, /* no buffer space available */
FW_ETIMEDOUT = 110, /* timeout */
FW_EINPROGRESS = 115, /* fw internal */
FW_SCSI_ABORT_REQUESTED = 128, /* */
FW_SCSI_ABORT_TIMEDOUT = 129, /* */
FW_SCSI_ABORTED = 130, /* */
FW_SCSI_CLOSE_REQUESTED = 131, /* */
FW_ERR_LINK_DOWN = 132, /* */
FW_RDEV_NOT_READY = 133, /* */
FW_ERR_RDEV_LOST = 134, /* */
FW_ERR_RDEV_LOGO = 135, /* */
FW_FCOE_NO_XCHG = 136, /* */
FW_SCSI_RSP_ERR = 137, /* */
FW_ERR_RDEV_IMPL_LOGO = 138, /* */
FW_SCSI_UNDER_FLOW_ERR = 139, /* */
FW_SCSI_OVER_FLOW_ERR = 140, /* */
FW_SCSI_DDP_ERR = 141, /* DDP error*/
FW_SCSI_TASK_ERR = 142, /* No SCSI tasks available */
};
/******************************************************************************
* M E M O R Y T Y P E s
******************************/
enum fw_memtype {
FW_MEMTYPE_EDC0 = 0x0,
FW_MEMTYPE_EDC1 = 0x1,
FW_MEMTYPE_EXTMEM = 0x2,
FW_MEMTYPE_FLASH = 0x4,
FW_MEMTYPE_INTERNAL = 0x5,
FW_MEMTYPE_EXTMEM1 = 0x6,
};
/******************************************************************************
* W O R K R E Q U E S T s
********************************/
enum fw_wr_opcodes {
FW_FRAG_WR = 0x1d,
FW_FILTER_WR = 0x02,
FW_ULPTX_WR = 0x04,
FW_TP_WR = 0x05,
FW_ETH_TX_PKT_WR = 0x08,
FW_ETH_TX_PKT2_WR = 0x44,
FW_ETH_TX_PKTS_WR = 0x09,
FW_ETH_TX_EO_WR = 0x1c,
FW_EQ_FLUSH_WR = 0x1b,
FW_OFLD_CONNECTION_WR = 0x2f,
FW_FLOWC_WR = 0x0a,
FW_OFLD_TX_DATA_WR = 0x0b,
FW_CMD_WR = 0x10,
FW_ETH_TX_PKT_VM_WR = 0x11,
FW_RI_RES_WR = 0x0c,
FW_RI_RDMA_WRITE_WR = 0x14,
FW_RI_SEND_WR = 0x15,
FW_RI_RDMA_READ_WR = 0x16,
FW_RI_RECV_WR = 0x17,
FW_RI_BIND_MW_WR = 0x18,
FW_RI_FR_NSMR_WR = 0x19,
FW_RI_INV_LSTAG_WR = 0x1a,
FW_RI_SEND_IMMEDIATE_WR = 0x15,
FW_RI_ATOMIC_WR = 0x16,
FW_RI_WR = 0x0d,
FW_CHNET_IFCONF_WR = 0x6b,
FW_RDEV_WR = 0x38,
FW_FOISCSI_NODE_WR = 0x60,
FW_FOISCSI_CTRL_WR = 0x6a,
FW_FOISCSI_CHAP_WR = 0x6c,
FW_FCOE_ELS_CT_WR = 0x30,
FW_SCSI_WRITE_WR = 0x31,
FW_SCSI_READ_WR = 0x32,
FW_SCSI_CMD_WR = 0x33,
FW_SCSI_ABRT_CLS_WR = 0x34,
FW_SCSI_TGT_ACC_WR = 0x35,
FW_SCSI_TGT_XMIT_WR = 0x36,
FW_SCSI_TGT_RSP_WR = 0x37,
FW_POFCOE_TCB_WR = 0x42,
FW_POFCOE_ULPTX_WR = 0x43,
FW_ISCSI_TX_DATA_WR = 0x45,
FW_PTP_TX_PKT_WR = 0x46,
- FW_SEC_LOOKASIDE_LPBK_WR= 0x63,
+ FW_SEC_LOOKASIDE_LPBK_WR= 0x6d,
FW_COiSCSI_TGT_WR = 0x70,
FW_COiSCSI_TGT_CONN_WR = 0x71,
FW_COiSCSI_TGT_XMIT_WR = 0x72,
FW_ISNS_WR = 0x75,
FW_ISNS_XMIT_WR = 0x76,
FW_LASTC2E_WR = 0x80
};
/*
* Generic work request header flit0
*/
struct fw_wr_hdr {
__be32 hi;
__be32 lo;
};
/* work request opcode (hi)
*/
#define S_FW_WR_OP 24
#define M_FW_WR_OP 0xff
#define V_FW_WR_OP(x) ((x) << S_FW_WR_OP)
#define G_FW_WR_OP(x) (((x) >> S_FW_WR_OP) & M_FW_WR_OP)
/* atomic flag (hi) - firmware encapsulates CPLs in CPL_BARRIER
*/
#define S_FW_WR_ATOMIC 23
#define M_FW_WR_ATOMIC 0x1
#define V_FW_WR_ATOMIC(x) ((x) << S_FW_WR_ATOMIC)
#define G_FW_WR_ATOMIC(x) \
(((x) >> S_FW_WR_ATOMIC) & M_FW_WR_ATOMIC)
#define F_FW_WR_ATOMIC V_FW_WR_ATOMIC(1U)
/* flush flag (hi) - firmware flushes flushable work request buffered
* in the flow context.
*/
#define S_FW_WR_FLUSH 22
#define M_FW_WR_FLUSH 0x1
#define V_FW_WR_FLUSH(x) ((x) << S_FW_WR_FLUSH)
#define G_FW_WR_FLUSH(x) \
(((x) >> S_FW_WR_FLUSH) & M_FW_WR_FLUSH)
#define F_FW_WR_FLUSH V_FW_WR_FLUSH(1U)
/* completion flag (hi) - firmware generates a cpl_fw6_ack
*/
#define S_FW_WR_COMPL 21
#define M_FW_WR_COMPL 0x1
#define V_FW_WR_COMPL(x) ((x) << S_FW_WR_COMPL)
#define G_FW_WR_COMPL(x) \
(((x) >> S_FW_WR_COMPL) & M_FW_WR_COMPL)
#define F_FW_WR_COMPL V_FW_WR_COMPL(1U)
/* work request immediate data lengh (hi)
*/
#define S_FW_WR_IMMDLEN 0
#define M_FW_WR_IMMDLEN 0xff
#define V_FW_WR_IMMDLEN(x) ((x) << S_FW_WR_IMMDLEN)
#define G_FW_WR_IMMDLEN(x) \
(((x) >> S_FW_WR_IMMDLEN) & M_FW_WR_IMMDLEN)
/* egress queue status update to associated ingress queue entry (lo)
*/
#define S_FW_WR_EQUIQ 31
#define M_FW_WR_EQUIQ 0x1
#define V_FW_WR_EQUIQ(x) ((x) << S_FW_WR_EQUIQ)
#define G_FW_WR_EQUIQ(x) (((x) >> S_FW_WR_EQUIQ) & M_FW_WR_EQUIQ)
#define F_FW_WR_EQUIQ V_FW_WR_EQUIQ(1U)
/* egress queue status update to egress queue status entry (lo)
*/
#define S_FW_WR_EQUEQ 30
#define M_FW_WR_EQUEQ 0x1
#define V_FW_WR_EQUEQ(x) ((x) << S_FW_WR_EQUEQ)
#define G_FW_WR_EQUEQ(x) (((x) >> S_FW_WR_EQUEQ) & M_FW_WR_EQUEQ)
#define F_FW_WR_EQUEQ V_FW_WR_EQUEQ(1U)
/* flow context identifier (lo)
*/
#define S_FW_WR_FLOWID 8
#define M_FW_WR_FLOWID 0xfffff
#define V_FW_WR_FLOWID(x) ((x) << S_FW_WR_FLOWID)
#define G_FW_WR_FLOWID(x) (((x) >> S_FW_WR_FLOWID) & M_FW_WR_FLOWID)
/* length in units of 16-bytes (lo)
*/
#define S_FW_WR_LEN16 0
#define M_FW_WR_LEN16 0xff
#define V_FW_WR_LEN16(x) ((x) << S_FW_WR_LEN16)
#define G_FW_WR_LEN16(x) (((x) >> S_FW_WR_LEN16) & M_FW_WR_LEN16)
struct fw_frag_wr {
__be32 op_to_fragoff16;
__be32 flowid_len16;
__be64 r4;
};
#define S_FW_FRAG_WR_EOF 15
#define M_FW_FRAG_WR_EOF 0x1
#define V_FW_FRAG_WR_EOF(x) ((x) << S_FW_FRAG_WR_EOF)
#define G_FW_FRAG_WR_EOF(x) (((x) >> S_FW_FRAG_WR_EOF) & M_FW_FRAG_WR_EOF)
#define F_FW_FRAG_WR_EOF V_FW_FRAG_WR_EOF(1U)
#define S_FW_FRAG_WR_FRAGOFF16 8
#define M_FW_FRAG_WR_FRAGOFF16 0x7f
#define V_FW_FRAG_WR_FRAGOFF16(x) ((x) << S_FW_FRAG_WR_FRAGOFF16)
#define G_FW_FRAG_WR_FRAGOFF16(x) \
(((x) >> S_FW_FRAG_WR_FRAGOFF16) & M_FW_FRAG_WR_FRAGOFF16)
/* valid filter configurations for compressed tuple
* Encodings: TPL - Compressed TUPLE for filter in addition to 4-tuple
* FR - FRAGMENT, FC - FCoE, MT - MPS MATCH TYPE, M - MPS MATCH,
* E - Ethertype, P - Port, PR - Protocol, T - TOS, IV - Inner VLAN,
* OV - Outer VLAN/VNIC_ID,
*/
#define HW_TPL_FR_MT_M_E_P_FC 0x3C3
#define HW_TPL_FR_MT_M_PR_T_FC 0x3B3
#define HW_TPL_FR_MT_M_IV_P_FC 0x38B
#define HW_TPL_FR_MT_M_OV_P_FC 0x387
#define HW_TPL_FR_MT_E_PR_T 0x370
#define HW_TPL_FR_MT_E_PR_P_FC 0X363
#define HW_TPL_FR_MT_E_T_P_FC 0X353
#define HW_TPL_FR_MT_PR_IV_P_FC 0X32B
#define HW_TPL_FR_MT_PR_OV_P_FC 0X327
#define HW_TPL_FR_MT_T_IV_P_FC 0X31B
#define HW_TPL_FR_MT_T_OV_P_FC 0X317
#define HW_TPL_FR_M_E_PR_FC 0X2E1
#define HW_TPL_FR_M_E_T_FC 0X2D1
#define HW_TPL_FR_M_PR_IV_FC 0X2A9
#define HW_TPL_FR_M_PR_OV_FC 0X2A5
#define HW_TPL_FR_M_T_IV_FC 0X299
#define HW_TPL_FR_M_T_OV_FC 0X295
#define HW_TPL_FR_E_PR_T_P 0X272
#define HW_TPL_FR_E_PR_T_FC 0X271
#define HW_TPL_FR_E_IV_FC 0X249
#define HW_TPL_FR_E_OV_FC 0X245
#define HW_TPL_FR_PR_T_IV_FC 0X239
#define HW_TPL_FR_PR_T_OV_FC 0X235
#define HW_TPL_FR_IV_OV_FC 0X20D
#define HW_TPL_MT_M_E_PR 0X1E0
#define HW_TPL_MT_M_E_T 0X1D0
#define HW_TPL_MT_E_PR_T_FC 0X171
#define HW_TPL_MT_E_IV 0X148
#define HW_TPL_MT_E_OV 0X144
#define HW_TPL_MT_PR_T_IV 0X138
#define HW_TPL_MT_PR_T_OV 0X134
#define HW_TPL_M_E_PR_P 0X0E2
#define HW_TPL_M_E_T_P 0X0D2
#define HW_TPL_E_PR_T_P_FC 0X073
#define HW_TPL_E_IV_P 0X04A
#define HW_TPL_E_OV_P 0X046
#define HW_TPL_PR_T_IV_P 0X03A
#define HW_TPL_PR_T_OV_P 0X036
/* filter wr reply code in cookie in CPL_SET_TCB_RPL */
enum fw_filter_wr_cookie {
FW_FILTER_WR_SUCCESS,
FW_FILTER_WR_FLT_ADDED,
FW_FILTER_WR_FLT_DELETED,
FW_FILTER_WR_SMT_TBL_FULL,
FW_FILTER_WR_EINVAL,
};
struct fw_filter_wr {
__be32 op_pkd;
__be32 len16_pkd;
__be64 r3;
__be32 tid_to_iq;
__be32 del_filter_to_l2tix;
__be16 ethtype;
__be16 ethtypem;
__u8 frag_to_ovlan_vldm;
__u8 smac_sel;
__be16 rx_chan_rx_rpl_iq;
__be32 maci_to_matchtypem;
__u8 ptcl;
__u8 ptclm;
__u8 ttyp;
__u8 ttypm;
__be16 ivlan;
__be16 ivlanm;
__be16 ovlan;
__be16 ovlanm;
__u8 lip[16];
__u8 lipm[16];
__u8 fip[16];
__u8 fipm[16];
__be16 lp;
__be16 lpm;
__be16 fp;
__be16 fpm;
__be16 r7;
__u8 sma[6];
};
#define S_FW_FILTER_WR_TID 12
#define M_FW_FILTER_WR_TID 0xfffff
#define V_FW_FILTER_WR_TID(x) ((x) << S_FW_FILTER_WR_TID)
#define G_FW_FILTER_WR_TID(x) \
(((x) >> S_FW_FILTER_WR_TID) & M_FW_FILTER_WR_TID)
#define S_FW_FILTER_WR_RQTYPE 11
#define M_FW_FILTER_WR_RQTYPE 0x1
#define V_FW_FILTER_WR_RQTYPE(x) ((x) << S_FW_FILTER_WR_RQTYPE)
#define G_FW_FILTER_WR_RQTYPE(x) \
(((x) >> S_FW_FILTER_WR_RQTYPE) & M_FW_FILTER_WR_RQTYPE)
#define F_FW_FILTER_WR_RQTYPE V_FW_FILTER_WR_RQTYPE(1U)
#define S_FW_FILTER_WR_NOREPLY 10
#define M_FW_FILTER_WR_NOREPLY 0x1
#define V_FW_FILTER_WR_NOREPLY(x) ((x) << S_FW_FILTER_WR_NOREPLY)
#define G_FW_FILTER_WR_NOREPLY(x) \
(((x) >> S_FW_FILTER_WR_NOREPLY) & M_FW_FILTER_WR_NOREPLY)
#define F_FW_FILTER_WR_NOREPLY V_FW_FILTER_WR_NOREPLY(1U)
#define S_FW_FILTER_WR_IQ 0
#define M_FW_FILTER_WR_IQ 0x3ff
#define V_FW_FILTER_WR_IQ(x) ((x) << S_FW_FILTER_WR_IQ)
#define G_FW_FILTER_WR_IQ(x) \
(((x) >> S_FW_FILTER_WR_IQ) & M_FW_FILTER_WR_IQ)
#define S_FW_FILTER_WR_DEL_FILTER 31
#define M_FW_FILTER_WR_DEL_FILTER 0x1
#define V_FW_FILTER_WR_DEL_FILTER(x) ((x) << S_FW_FILTER_WR_DEL_FILTER)
#define G_FW_FILTER_WR_DEL_FILTER(x) \
(((x) >> S_FW_FILTER_WR_DEL_FILTER) & M_FW_FILTER_WR_DEL_FILTER)
#define F_FW_FILTER_WR_DEL_FILTER V_FW_FILTER_WR_DEL_FILTER(1U)
#define S_FW_FILTER_WR_RPTTID 25
#define M_FW_FILTER_WR_RPTTID 0x1
#define V_FW_FILTER_WR_RPTTID(x) ((x) << S_FW_FILTER_WR_RPTTID)
#define G_FW_FILTER_WR_RPTTID(x) \
(((x) >> S_FW_FILTER_WR_RPTTID) & M_FW_FILTER_WR_RPTTID)
#define F_FW_FILTER_WR_RPTTID V_FW_FILTER_WR_RPTTID(1U)
#define S_FW_FILTER_WR_DROP 24
#define M_FW_FILTER_WR_DROP 0x1
#define V_FW_FILTER_WR_DROP(x) ((x) << S_FW_FILTER_WR_DROP)
#define G_FW_FILTER_WR_DROP(x) \
(((x) >> S_FW_FILTER_WR_DROP) & M_FW_FILTER_WR_DROP)
#define F_FW_FILTER_WR_DROP V_FW_FILTER_WR_DROP(1U)
#define S_FW_FILTER_WR_DIRSTEER 23
#define M_FW_FILTER_WR_DIRSTEER 0x1
#define V_FW_FILTER_WR_DIRSTEER(x) ((x) << S_FW_FILTER_WR_DIRSTEER)
#define G_FW_FILTER_WR_DIRSTEER(x) \
(((x) >> S_FW_FILTER_WR_DIRSTEER) & M_FW_FILTER_WR_DIRSTEER)
#define F_FW_FILTER_WR_DIRSTEER V_FW_FILTER_WR_DIRSTEER(1U)
#define S_FW_FILTER_WR_MASKHASH 22
#define M_FW_FILTER_WR_MASKHASH 0x1
#define V_FW_FILTER_WR_MASKHASH(x) ((x) << S_FW_FILTER_WR_MASKHASH)
#define G_FW_FILTER_WR_MASKHASH(x) \
(((x) >> S_FW_FILTER_WR_MASKHASH) & M_FW_FILTER_WR_MASKHASH)
#define F_FW_FILTER_WR_MASKHASH V_FW_FILTER_WR_MASKHASH(1U)
#define S_FW_FILTER_WR_DIRSTEERHASH 21
#define M_FW_FILTER_WR_DIRSTEERHASH 0x1
#define V_FW_FILTER_WR_DIRSTEERHASH(x) ((x) << S_FW_FILTER_WR_DIRSTEERHASH)
#define G_FW_FILTER_WR_DIRSTEERHASH(x) \
(((x) >> S_FW_FILTER_WR_DIRSTEERHASH) & M_FW_FILTER_WR_DIRSTEERHASH)
#define F_FW_FILTER_WR_DIRSTEERHASH V_FW_FILTER_WR_DIRSTEERHASH(1U)
#define S_FW_FILTER_WR_LPBK 20
#define M_FW_FILTER_WR_LPBK 0x1
#define V_FW_FILTER_WR_LPBK(x) ((x) << S_FW_FILTER_WR_LPBK)
#define G_FW_FILTER_WR_LPBK(x) \
(((x) >> S_FW_FILTER_WR_LPBK) & M_FW_FILTER_WR_LPBK)
#define F_FW_FILTER_WR_LPBK V_FW_FILTER_WR_LPBK(1U)
#define S_FW_FILTER_WR_DMAC 19
#define M_FW_FILTER_WR_DMAC 0x1
#define V_FW_FILTER_WR_DMAC(x) ((x) << S_FW_FILTER_WR_DMAC)
#define G_FW_FILTER_WR_DMAC(x) \
(((x) >> S_FW_FILTER_WR_DMAC) & M_FW_FILTER_WR_DMAC)
#define F_FW_FILTER_WR_DMAC V_FW_FILTER_WR_DMAC(1U)
#define S_FW_FILTER_WR_SMAC 18
#define M_FW_FILTER_WR_SMAC 0x1
#define V_FW_FILTER_WR_SMAC(x) ((x) << S_FW_FILTER_WR_SMAC)
#define G_FW_FILTER_WR_SMAC(x) \
(((x) >> S_FW_FILTER_WR_SMAC) & M_FW_FILTER_WR_SMAC)
#define F_FW_FILTER_WR_SMAC V_FW_FILTER_WR_SMAC(1U)
#define S_FW_FILTER_WR_INSVLAN 17
#define M_FW_FILTER_WR_INSVLAN 0x1
#define V_FW_FILTER_WR_INSVLAN(x) ((x) << S_FW_FILTER_WR_INSVLAN)
#define G_FW_FILTER_WR_INSVLAN(x) \
(((x) >> S_FW_FILTER_WR_INSVLAN) & M_FW_FILTER_WR_INSVLAN)
#define F_FW_FILTER_WR_INSVLAN V_FW_FILTER_WR_INSVLAN(1U)
#define S_FW_FILTER_WR_RMVLAN 16
#define M_FW_FILTER_WR_RMVLAN 0x1
#define V_FW_FILTER_WR_RMVLAN(x) ((x) << S_FW_FILTER_WR_RMVLAN)
#define G_FW_FILTER_WR_RMVLAN(x) \
(((x) >> S_FW_FILTER_WR_RMVLAN) & M_FW_FILTER_WR_RMVLAN)
#define F_FW_FILTER_WR_RMVLAN V_FW_FILTER_WR_RMVLAN(1U)
#define S_FW_FILTER_WR_HITCNTS 15
#define M_FW_FILTER_WR_HITCNTS 0x1
#define V_FW_FILTER_WR_HITCNTS(x) ((x) << S_FW_FILTER_WR_HITCNTS)
#define G_FW_FILTER_WR_HITCNTS(x) \
(((x) >> S_FW_FILTER_WR_HITCNTS) & M_FW_FILTER_WR_HITCNTS)
#define F_FW_FILTER_WR_HITCNTS V_FW_FILTER_WR_HITCNTS(1U)
#define S_FW_FILTER_WR_TXCHAN 13
#define M_FW_FILTER_WR_TXCHAN 0x3
#define V_FW_FILTER_WR_TXCHAN(x) ((x) << S_FW_FILTER_WR_TXCHAN)
#define G_FW_FILTER_WR_TXCHAN(x) \
(((x) >> S_FW_FILTER_WR_TXCHAN) & M_FW_FILTER_WR_TXCHAN)
#define S_FW_FILTER_WR_PRIO 12
#define M_FW_FILTER_WR_PRIO 0x1
#define V_FW_FILTER_WR_PRIO(x) ((x) << S_FW_FILTER_WR_PRIO)
#define G_FW_FILTER_WR_PRIO(x) \
(((x) >> S_FW_FILTER_WR_PRIO) & M_FW_FILTER_WR_PRIO)
#define F_FW_FILTER_WR_PRIO V_FW_FILTER_WR_PRIO(1U)
#define S_FW_FILTER_WR_L2TIX 0
#define M_FW_FILTER_WR_L2TIX 0xfff
#define V_FW_FILTER_WR_L2TIX(x) ((x) << S_FW_FILTER_WR_L2TIX)
#define G_FW_FILTER_WR_L2TIX(x) \
(((x) >> S_FW_FILTER_WR_L2TIX) & M_FW_FILTER_WR_L2TIX)
#define S_FW_FILTER_WR_FRAG 7
#define M_FW_FILTER_WR_FRAG 0x1
#define V_FW_FILTER_WR_FRAG(x) ((x) << S_FW_FILTER_WR_FRAG)
#define G_FW_FILTER_WR_FRAG(x) \
(((x) >> S_FW_FILTER_WR_FRAG) & M_FW_FILTER_WR_FRAG)
#define F_FW_FILTER_WR_FRAG V_FW_FILTER_WR_FRAG(1U)
#define S_FW_FILTER_WR_FRAGM 6
#define M_FW_FILTER_WR_FRAGM 0x1
#define V_FW_FILTER_WR_FRAGM(x) ((x) << S_FW_FILTER_WR_FRAGM)
#define G_FW_FILTER_WR_FRAGM(x) \
(((x) >> S_FW_FILTER_WR_FRAGM) & M_FW_FILTER_WR_FRAGM)
#define F_FW_FILTER_WR_FRAGM V_FW_FILTER_WR_FRAGM(1U)
#define S_FW_FILTER_WR_IVLAN_VLD 5
#define M_FW_FILTER_WR_IVLAN_VLD 0x1
#define V_FW_FILTER_WR_IVLAN_VLD(x) ((x) << S_FW_FILTER_WR_IVLAN_VLD)
#define G_FW_FILTER_WR_IVLAN_VLD(x) \
(((x) >> S_FW_FILTER_WR_IVLAN_VLD) & M_FW_FILTER_WR_IVLAN_VLD)
#define F_FW_FILTER_WR_IVLAN_VLD V_FW_FILTER_WR_IVLAN_VLD(1U)
#define S_FW_FILTER_WR_OVLAN_VLD 4
#define M_FW_FILTER_WR_OVLAN_VLD 0x1
#define V_FW_FILTER_WR_OVLAN_VLD(x) ((x) << S_FW_FILTER_WR_OVLAN_VLD)
#define G_FW_FILTER_WR_OVLAN_VLD(x) \
(((x) >> S_FW_FILTER_WR_OVLAN_VLD) & M_FW_FILTER_WR_OVLAN_VLD)
#define F_FW_FILTER_WR_OVLAN_VLD V_FW_FILTER_WR_OVLAN_VLD(1U)
#define S_FW_FILTER_WR_IVLAN_VLDM 3
#define M_FW_FILTER_WR_IVLAN_VLDM 0x1
#define V_FW_FILTER_WR_IVLAN_VLDM(x) ((x) << S_FW_FILTER_WR_IVLAN_VLDM)
#define G_FW_FILTER_WR_IVLAN_VLDM(x) \
(((x) >> S_FW_FILTER_WR_IVLAN_VLDM) & M_FW_FILTER_WR_IVLAN_VLDM)
#define F_FW_FILTER_WR_IVLAN_VLDM V_FW_FILTER_WR_IVLAN_VLDM(1U)
#define S_FW_FILTER_WR_OVLAN_VLDM 2
#define M_FW_FILTER_WR_OVLAN_VLDM 0x1
#define V_FW_FILTER_WR_OVLAN_VLDM(x) ((x) << S_FW_FILTER_WR_OVLAN_VLDM)
#define G_FW_FILTER_WR_OVLAN_VLDM(x) \
(((x) >> S_FW_FILTER_WR_OVLAN_VLDM) & M_FW_FILTER_WR_OVLAN_VLDM)
#define F_FW_FILTER_WR_OVLAN_VLDM V_FW_FILTER_WR_OVLAN_VLDM(1U)
#define S_FW_FILTER_WR_RX_CHAN 15
#define M_FW_FILTER_WR_RX_CHAN 0x1
#define V_FW_FILTER_WR_RX_CHAN(x) ((x) << S_FW_FILTER_WR_RX_CHAN)
#define G_FW_FILTER_WR_RX_CHAN(x) \
(((x) >> S_FW_FILTER_WR_RX_CHAN) & M_FW_FILTER_WR_RX_CHAN)
#define F_FW_FILTER_WR_RX_CHAN V_FW_FILTER_WR_RX_CHAN(1U)
#define S_FW_FILTER_WR_RX_RPL_IQ 0
#define M_FW_FILTER_WR_RX_RPL_IQ 0x3ff
#define V_FW_FILTER_WR_RX_RPL_IQ(x) ((x) << S_FW_FILTER_WR_RX_RPL_IQ)
#define G_FW_FILTER_WR_RX_RPL_IQ(x) \
(((x) >> S_FW_FILTER_WR_RX_RPL_IQ) & M_FW_FILTER_WR_RX_RPL_IQ)
#define S_FW_FILTER_WR_MACI 23
#define M_FW_FILTER_WR_MACI 0x1ff
#define V_FW_FILTER_WR_MACI(x) ((x) << S_FW_FILTER_WR_MACI)
#define G_FW_FILTER_WR_MACI(x) \
(((x) >> S_FW_FILTER_WR_MACI) & M_FW_FILTER_WR_MACI)
#define S_FW_FILTER_WR_MACIM 14
#define M_FW_FILTER_WR_MACIM 0x1ff
#define V_FW_FILTER_WR_MACIM(x) ((x) << S_FW_FILTER_WR_MACIM)
#define G_FW_FILTER_WR_MACIM(x) \
(((x) >> S_FW_FILTER_WR_MACIM) & M_FW_FILTER_WR_MACIM)
#define S_FW_FILTER_WR_FCOE 13
#define M_FW_FILTER_WR_FCOE 0x1
#define V_FW_FILTER_WR_FCOE(x) ((x) << S_FW_FILTER_WR_FCOE)
#define G_FW_FILTER_WR_FCOE(x) \
(((x) >> S_FW_FILTER_WR_FCOE) & M_FW_FILTER_WR_FCOE)
#define F_FW_FILTER_WR_FCOE V_FW_FILTER_WR_FCOE(1U)
#define S_FW_FILTER_WR_FCOEM 12
#define M_FW_FILTER_WR_FCOEM 0x1
#define V_FW_FILTER_WR_FCOEM(x) ((x) << S_FW_FILTER_WR_FCOEM)
#define G_FW_FILTER_WR_FCOEM(x) \
(((x) >> S_FW_FILTER_WR_FCOEM) & M_FW_FILTER_WR_FCOEM)
#define F_FW_FILTER_WR_FCOEM V_FW_FILTER_WR_FCOEM(1U)
#define S_FW_FILTER_WR_PORT 9
#define M_FW_FILTER_WR_PORT 0x7
#define V_FW_FILTER_WR_PORT(x) ((x) << S_FW_FILTER_WR_PORT)
#define G_FW_FILTER_WR_PORT(x) \
(((x) >> S_FW_FILTER_WR_PORT) & M_FW_FILTER_WR_PORT)
#define S_FW_FILTER_WR_PORTM 6
#define M_FW_FILTER_WR_PORTM 0x7
#define V_FW_FILTER_WR_PORTM(x) ((x) << S_FW_FILTER_WR_PORTM)
#define G_FW_FILTER_WR_PORTM(x) \
(((x) >> S_FW_FILTER_WR_PORTM) & M_FW_FILTER_WR_PORTM)
#define S_FW_FILTER_WR_MATCHTYPE 3
#define M_FW_FILTER_WR_MATCHTYPE 0x7
#define V_FW_FILTER_WR_MATCHTYPE(x) ((x) << S_FW_FILTER_WR_MATCHTYPE)
#define G_FW_FILTER_WR_MATCHTYPE(x) \
(((x) >> S_FW_FILTER_WR_MATCHTYPE) & M_FW_FILTER_WR_MATCHTYPE)
#define S_FW_FILTER_WR_MATCHTYPEM 0
#define M_FW_FILTER_WR_MATCHTYPEM 0x7
#define V_FW_FILTER_WR_MATCHTYPEM(x) ((x) << S_FW_FILTER_WR_MATCHTYPEM)
#define G_FW_FILTER_WR_MATCHTYPEM(x) \
(((x) >> S_FW_FILTER_WR_MATCHTYPEM) & M_FW_FILTER_WR_MATCHTYPEM)
struct fw_ulptx_wr {
__be32 op_to_compl;
__be32 flowid_len16;
__u64 cookie;
};
struct fw_tp_wr {
__be32 op_to_immdlen;
__be32 flowid_len16;
__u64 cookie;
};
struct fw_eth_tx_pkt_wr {
__be32 op_immdlen;
__be32 equiq_to_len16;
__be64 r3;
};
#define S_FW_ETH_TX_PKT_WR_IMMDLEN 0
#define M_FW_ETH_TX_PKT_WR_IMMDLEN 0x1ff
#define V_FW_ETH_TX_PKT_WR_IMMDLEN(x) ((x) << S_FW_ETH_TX_PKT_WR_IMMDLEN)
#define G_FW_ETH_TX_PKT_WR_IMMDLEN(x) \
(((x) >> S_FW_ETH_TX_PKT_WR_IMMDLEN) & M_FW_ETH_TX_PKT_WR_IMMDLEN)
struct fw_eth_tx_pkt2_wr {
__be32 op_immdlen;
__be32 equiq_to_len16;
__be32 r3;
__be32 L4ChkDisable_to_IpHdrLen;
};
#define S_FW_ETH_TX_PKT2_WR_IMMDLEN 0
#define M_FW_ETH_TX_PKT2_WR_IMMDLEN 0x1ff
#define V_FW_ETH_TX_PKT2_WR_IMMDLEN(x) ((x) << S_FW_ETH_TX_PKT2_WR_IMMDLEN)
#define G_FW_ETH_TX_PKT2_WR_IMMDLEN(x) \
(((x) >> S_FW_ETH_TX_PKT2_WR_IMMDLEN) & M_FW_ETH_TX_PKT2_WR_IMMDLEN)
#define S_FW_ETH_TX_PKT2_WR_L4CHKDISABLE 31
#define M_FW_ETH_TX_PKT2_WR_L4CHKDISABLE 0x1
#define V_FW_ETH_TX_PKT2_WR_L4CHKDISABLE(x) \
((x) << S_FW_ETH_TX_PKT2_WR_L4CHKDISABLE)
#define G_FW_ETH_TX_PKT2_WR_L4CHKDISABLE(x) \
(((x) >> S_FW_ETH_TX_PKT2_WR_L4CHKDISABLE) & \
M_FW_ETH_TX_PKT2_WR_L4CHKDISABLE)
#define F_FW_ETH_TX_PKT2_WR_L4CHKDISABLE \
V_FW_ETH_TX_PKT2_WR_L4CHKDISABLE(1U)
#define S_FW_ETH_TX_PKT2_WR_L3CHKDISABLE 30
#define M_FW_ETH_TX_PKT2_WR_L3CHKDISABLE 0x1
#define V_FW_ETH_TX_PKT2_WR_L3CHKDISABLE(x) \
((x) << S_FW_ETH_TX_PKT2_WR_L3CHKDISABLE)
#define G_FW_ETH_TX_PKT2_WR_L3CHKDISABLE(x) \
(((x) >> S_FW_ETH_TX_PKT2_WR_L3CHKDISABLE) & \
M_FW_ETH_TX_PKT2_WR_L3CHKDISABLE)
#define F_FW_ETH_TX_PKT2_WR_L3CHKDISABLE \
V_FW_ETH_TX_PKT2_WR_L3CHKDISABLE(1U)
#define S_FW_ETH_TX_PKT2_WR_IVLAN 28
#define M_FW_ETH_TX_PKT2_WR_IVLAN 0x1
#define V_FW_ETH_TX_PKT2_WR_IVLAN(x) ((x) << S_FW_ETH_TX_PKT2_WR_IVLAN)
#define G_FW_ETH_TX_PKT2_WR_IVLAN(x) \
(((x) >> S_FW_ETH_TX_PKT2_WR_IVLAN) & M_FW_ETH_TX_PKT2_WR_IVLAN)
#define F_FW_ETH_TX_PKT2_WR_IVLAN V_FW_ETH_TX_PKT2_WR_IVLAN(1U)
#define S_FW_ETH_TX_PKT2_WR_IVLANTAG 12
#define M_FW_ETH_TX_PKT2_WR_IVLANTAG 0xffff
#define V_FW_ETH_TX_PKT2_WR_IVLANTAG(x) ((x) << S_FW_ETH_TX_PKT2_WR_IVLANTAG)
#define G_FW_ETH_TX_PKT2_WR_IVLANTAG(x) \
(((x) >> S_FW_ETH_TX_PKT2_WR_IVLANTAG) & M_FW_ETH_TX_PKT2_WR_IVLANTAG)
#define S_FW_ETH_TX_PKT2_WR_CHKTYPE 8
#define M_FW_ETH_TX_PKT2_WR_CHKTYPE 0xf
#define V_FW_ETH_TX_PKT2_WR_CHKTYPE(x) ((x) << S_FW_ETH_TX_PKT2_WR_CHKTYPE)
#define G_FW_ETH_TX_PKT2_WR_CHKTYPE(x) \
(((x) >> S_FW_ETH_TX_PKT2_WR_CHKTYPE) & M_FW_ETH_TX_PKT2_WR_CHKTYPE)
#define S_FW_ETH_TX_PKT2_WR_IPHDRLEN 0
#define M_FW_ETH_TX_PKT2_WR_IPHDRLEN 0xff
#define V_FW_ETH_TX_PKT2_WR_IPHDRLEN(x) ((x) << S_FW_ETH_TX_PKT2_WR_IPHDRLEN)
#define G_FW_ETH_TX_PKT2_WR_IPHDRLEN(x) \
(((x) >> S_FW_ETH_TX_PKT2_WR_IPHDRLEN) & M_FW_ETH_TX_PKT2_WR_IPHDRLEN)
struct fw_eth_tx_pkts_wr {
__be32 op_pkd;
__be32 equiq_to_len16;
__be32 r3;
__be16 plen;
__u8 npkt;
__u8 type;
};
#define S_FW_PTP_TX_PKT_WR_IMMDLEN 0
#define M_FW_PTP_TX_PKT_WR_IMMDLEN 0x1ff
#define V_FW_PTP_TX_PKT_WR_IMMDLEN(x) ((x) << S_FW_PTP_TX_PKT_WR_IMMDLEN)
#define G_FW_PTP_TX_PKT_WR_IMMDLEN(x) \
(((x) >> S_FW_PTP_TX_PKT_WR_IMMDLEN) & M_FW_PTP_TX_PKT_WR_IMMDLEN)
struct fw_eth_tx_pkt_ptp_wr {
__be32 op_immdlen;
__be32 equiq_to_len16;
__be64 r3;
};
enum fw_eth_tx_eo_type {
FW_ETH_TX_EO_TYPE_UDPSEG,
FW_ETH_TX_EO_TYPE_TCPSEG,
FW_ETH_TX_EO_TYPE_NVGRESEG,
FW_ETH_TX_EO_TYPE_VXLANSEG,
FW_ETH_TX_EO_TYPE_GENEVESEG,
};
struct fw_eth_tx_eo_wr {
__be32 op_immdlen;
__be32 equiq_to_len16;
__be64 r3;
union fw_eth_tx_eo {
struct fw_eth_tx_eo_udpseg {
__u8 type;
__u8 ethlen;
__be16 iplen;
__u8 udplen;
__u8 rtplen;
__be16 r4;
__be16 mss;
__be16 schedpktsize;
__be32 plen;
} udpseg;
struct fw_eth_tx_eo_tcpseg {
__u8 type;
__u8 ethlen;
__be16 iplen;
__u8 tcplen;
__u8 tsclk_tsoff;
__be16 r4;
__be16 mss;
__be16 r5;
__be32 plen;
} tcpseg;
struct fw_eth_tx_eo_nvgreseg {
__u8 type;
__u8 iphdroffout;
__be16 grehdroff;
__be16 iphdroffin;
__be16 tcphdroffin;
__be16 mss;
__be16 r4;
__be32 plen;
} nvgreseg;
struct fw_eth_tx_eo_vxlanseg {
__u8 type;
__u8 iphdroffout;
__be16 vxlanhdroff;
__be16 iphdroffin;
__be16 tcphdroffin;
__be16 mss;
__be16 r4;
__be32 plen;
} vxlanseg;
struct fw_eth_tx_eo_geneveseg {
__u8 type;
__u8 iphdroffout;
__be16 genevehdroff;
__be16 iphdroffin;
__be16 tcphdroffin;
__be16 mss;
__be16 r4;
__be32 plen;
} geneveseg;
} u;
};
#define S_FW_ETH_TX_EO_WR_IMMDLEN 0
#define M_FW_ETH_TX_EO_WR_IMMDLEN 0x1ff
#define V_FW_ETH_TX_EO_WR_IMMDLEN(x) ((x) << S_FW_ETH_TX_EO_WR_IMMDLEN)
#define G_FW_ETH_TX_EO_WR_IMMDLEN(x) \
(((x) >> S_FW_ETH_TX_EO_WR_IMMDLEN) & M_FW_ETH_TX_EO_WR_IMMDLEN)
#define S_FW_ETH_TX_EO_WR_TSCLK 6
#define M_FW_ETH_TX_EO_WR_TSCLK 0x3
#define V_FW_ETH_TX_EO_WR_TSCLK(x) ((x) << S_FW_ETH_TX_EO_WR_TSCLK)
#define G_FW_ETH_TX_EO_WR_TSCLK(x) \
(((x) >> S_FW_ETH_TX_EO_WR_TSCLK) & M_FW_ETH_TX_EO_WR_TSCLK)
#define S_FW_ETH_TX_EO_WR_TSOFF 0
#define M_FW_ETH_TX_EO_WR_TSOFF 0x3f
#define V_FW_ETH_TX_EO_WR_TSOFF(x) ((x) << S_FW_ETH_TX_EO_WR_TSOFF)
#define G_FW_ETH_TX_EO_WR_TSOFF(x) \
(((x) >> S_FW_ETH_TX_EO_WR_TSOFF) & M_FW_ETH_TX_EO_WR_TSOFF)
struct fw_eq_flush_wr {
__u8 opcode;
__u8 r1[3];
__be32 equiq_to_len16;
__be64 r3;
};
struct fw_ofld_connection_wr {
__be32 op_compl;
__be32 len16_pkd;
__u64 cookie;
__be64 r2;
__be64 r3;
struct fw_ofld_connection_le {
__be32 version_cpl;
__be32 filter;
__be32 r1;
__be16 lport;
__be16 pport;
union fw_ofld_connection_leip {
struct fw_ofld_connection_le_ipv4 {
__be32 pip;
__be32 lip;
__be64 r0;
__be64 r1;
__be64 r2;
} ipv4;
struct fw_ofld_connection_le_ipv6 {
__be64 pip_hi;
__be64 pip_lo;
__be64 lip_hi;
__be64 lip_lo;
} ipv6;
} u;
} le;
struct fw_ofld_connection_tcb {
__be32 t_state_to_astid;
__be16 cplrxdataack_cplpassacceptrpl;
__be16 rcv_adv;
__be32 rcv_nxt;
__be32 tx_max;
__be64 opt0;
__be32 opt2;
__be32 r1;
__be64 r2;
__be64 r3;
} tcb;
};
#define S_FW_OFLD_CONNECTION_WR_VERSION 31
#define M_FW_OFLD_CONNECTION_WR_VERSION 0x1
#define V_FW_OFLD_CONNECTION_WR_VERSION(x) \
((x) << S_FW_OFLD_CONNECTION_WR_VERSION)
#define G_FW_OFLD_CONNECTION_WR_VERSION(x) \
(((x) >> S_FW_OFLD_CONNECTION_WR_VERSION) & \
M_FW_OFLD_CONNECTION_WR_VERSION)
#define F_FW_OFLD_CONNECTION_WR_VERSION V_FW_OFLD_CONNECTION_WR_VERSION(1U)
#define S_FW_OFLD_CONNECTION_WR_CPL 30
#define M_FW_OFLD_CONNECTION_WR_CPL 0x1
#define V_FW_OFLD_CONNECTION_WR_CPL(x) ((x) << S_FW_OFLD_CONNECTION_WR_CPL)
#define G_FW_OFLD_CONNECTION_WR_CPL(x) \
(((x) >> S_FW_OFLD_CONNECTION_WR_CPL) & M_FW_OFLD_CONNECTION_WR_CPL)
#define F_FW_OFLD_CONNECTION_WR_CPL V_FW_OFLD_CONNECTION_WR_CPL(1U)
#define S_FW_OFLD_CONNECTION_WR_T_STATE 28
#define M_FW_OFLD_CONNECTION_WR_T_STATE 0xf
#define V_FW_OFLD_CONNECTION_WR_T_STATE(x) \
((x) << S_FW_OFLD_CONNECTION_WR_T_STATE)
#define G_FW_OFLD_CONNECTION_WR_T_STATE(x) \
(((x) >> S_FW_OFLD_CONNECTION_WR_T_STATE) & \
M_FW_OFLD_CONNECTION_WR_T_STATE)
#define S_FW_OFLD_CONNECTION_WR_RCV_SCALE 24
#define M_FW_OFLD_CONNECTION_WR_RCV_SCALE 0xf
#define V_FW_OFLD_CONNECTION_WR_RCV_SCALE(x) \
((x) << S_FW_OFLD_CONNECTION_WR_RCV_SCALE)
#define G_FW_OFLD_CONNECTION_WR_RCV_SCALE(x) \
(((x) >> S_FW_OFLD_CONNECTION_WR_RCV_SCALE) & \
M_FW_OFLD_CONNECTION_WR_RCV_SCALE)
#define S_FW_OFLD_CONNECTION_WR_ASTID 0
#define M_FW_OFLD_CONNECTION_WR_ASTID 0xffffff
#define V_FW_OFLD_CONNECTION_WR_ASTID(x) \
((x) << S_FW_OFLD_CONNECTION_WR_ASTID)
#define G_FW_OFLD_CONNECTION_WR_ASTID(x) \
(((x) >> S_FW_OFLD_CONNECTION_WR_ASTID) & M_FW_OFLD_CONNECTION_WR_ASTID)
#define S_FW_OFLD_CONNECTION_WR_CPLRXDATAACK 15
#define M_FW_OFLD_CONNECTION_WR_CPLRXDATAACK 0x1
#define V_FW_OFLD_CONNECTION_WR_CPLRXDATAACK(x) \
((x) << S_FW_OFLD_CONNECTION_WR_CPLRXDATAACK)
#define G_FW_OFLD_CONNECTION_WR_CPLRXDATAACK(x) \
(((x) >> S_FW_OFLD_CONNECTION_WR_CPLRXDATAACK) & \
M_FW_OFLD_CONNECTION_WR_CPLRXDATAACK)
#define F_FW_OFLD_CONNECTION_WR_CPLRXDATAACK \
V_FW_OFLD_CONNECTION_WR_CPLRXDATAACK(1U)
#define S_FW_OFLD_CONNECTION_WR_CPLPASSACCEPTRPL 14
#define M_FW_OFLD_CONNECTION_WR_CPLPASSACCEPTRPL 0x1
#define V_FW_OFLD_CONNECTION_WR_CPLPASSACCEPTRPL(x) \
((x) << S_FW_OFLD_CONNECTION_WR_CPLPASSACCEPTRPL)
#define G_FW_OFLD_CONNECTION_WR_CPLPASSACCEPTRPL(x) \
(((x) >> S_FW_OFLD_CONNECTION_WR_CPLPASSACCEPTRPL) & \
M_FW_OFLD_CONNECTION_WR_CPLPASSACCEPTRPL)
#define F_FW_OFLD_CONNECTION_WR_CPLPASSACCEPTRPL \
V_FW_OFLD_CONNECTION_WR_CPLPASSACCEPTRPL(1U)
enum fw_flowc_mnem_tcpstate {
FW_FLOWC_MNEM_TCPSTATE_CLOSED = 0, /* illegal */
FW_FLOWC_MNEM_TCPSTATE_LISTEN = 1, /* illegal */
FW_FLOWC_MNEM_TCPSTATE_SYNSENT = 2, /* illegal */
FW_FLOWC_MNEM_TCPSTATE_SYNRECEIVED = 3, /* illegal */
FW_FLOWC_MNEM_TCPSTATE_ESTABLISHED = 4, /* default */
FW_FLOWC_MNEM_TCPSTATE_CLOSEWAIT = 5, /* got peer close already */
FW_FLOWC_MNEM_TCPSTATE_FINWAIT1 = 6, /* haven't gotten ACK for FIN and
* will resend FIN - equiv ESTAB
*/
FW_FLOWC_MNEM_TCPSTATE_CLOSING = 7, /* haven't gotten ACK for FIN and
* will resend FIN but have
* received FIN
*/
FW_FLOWC_MNEM_TCPSTATE_LASTACK = 8, /* haven't gotten ACK for FIN and
* will resend FIN but have
* received FIN
*/
FW_FLOWC_MNEM_TCPSTATE_FINWAIT2 = 9, /* sent FIN and got FIN + ACK,
* waiting for FIN
*/
FW_FLOWC_MNEM_TCPSTATE_TIMEWAIT = 10, /* not expected */
};
enum fw_flowc_mnem_eostate {
FW_FLOWC_MNEM_EOSTATE_CLOSED = 0, /* illegal */
FW_FLOWC_MNEM_EOSTATE_ESTABLISHED = 1, /* default */
FW_FLOWC_MNEM_EOSTATE_CLOSING = 2, /* graceful close, after sending
* outstanding payload
*/
FW_FLOWC_MNEM_EOSTATE_ABORTING = 3, /* immediate close, after
* discarding outstanding payload
*/
};
enum fw_flowc_mnem {
FW_FLOWC_MNEM_PFNVFN = 0, /* PFN [15:8] VFN [7:0] */
FW_FLOWC_MNEM_CH = 1,
FW_FLOWC_MNEM_PORT = 2,
FW_FLOWC_MNEM_IQID = 3,
FW_FLOWC_MNEM_SNDNXT = 4,
FW_FLOWC_MNEM_RCVNXT = 5,
FW_FLOWC_MNEM_SNDBUF = 6,
FW_FLOWC_MNEM_MSS = 7,
FW_FLOWC_MNEM_TXDATAPLEN_MAX = 8,
FW_FLOWC_MNEM_TCPSTATE = 9,
FW_FLOWC_MNEM_EOSTATE = 10,
FW_FLOWC_MNEM_SCHEDCLASS = 11,
FW_FLOWC_MNEM_DCBPRIO = 12,
FW_FLOWC_MNEM_SND_SCALE = 13,
FW_FLOWC_MNEM_RCV_SCALE = 14,
+ FW_FLOWC_MNEM_MAX = 15,
};
struct fw_flowc_mnemval {
__u8 mnemonic;
__u8 r4[3];
__be32 val;
};
struct fw_flowc_wr {
__be32 op_to_nparams;
__be32 flowid_len16;
#ifndef C99_NOT_SUPPORTED
struct fw_flowc_mnemval mnemval[0];
#endif
};
#define S_FW_FLOWC_WR_NPARAMS 0
#define M_FW_FLOWC_WR_NPARAMS 0xff
#define V_FW_FLOWC_WR_NPARAMS(x) ((x) << S_FW_FLOWC_WR_NPARAMS)
#define G_FW_FLOWC_WR_NPARAMS(x) \
(((x) >> S_FW_FLOWC_WR_NPARAMS) & M_FW_FLOWC_WR_NPARAMS)
struct fw_ofld_tx_data_wr {
__be32 op_to_immdlen;
__be32 flowid_len16;
__be32 plen;
__be32 lsodisable_to_flags;
};
#define S_FW_OFLD_TX_DATA_WR_LSODISABLE 31
#define M_FW_OFLD_TX_DATA_WR_LSODISABLE 0x1
#define V_FW_OFLD_TX_DATA_WR_LSODISABLE(x) \
((x) << S_FW_OFLD_TX_DATA_WR_LSODISABLE)
#define G_FW_OFLD_TX_DATA_WR_LSODISABLE(x) \
(((x) >> S_FW_OFLD_TX_DATA_WR_LSODISABLE) & \
M_FW_OFLD_TX_DATA_WR_LSODISABLE)
#define F_FW_OFLD_TX_DATA_WR_LSODISABLE V_FW_OFLD_TX_DATA_WR_LSODISABLE(1U)
#define S_FW_OFLD_TX_DATA_WR_ALIGNPLD 30
#define M_FW_OFLD_TX_DATA_WR_ALIGNPLD 0x1
#define V_FW_OFLD_TX_DATA_WR_ALIGNPLD(x) \
((x) << S_FW_OFLD_TX_DATA_WR_ALIGNPLD)
#define G_FW_OFLD_TX_DATA_WR_ALIGNPLD(x) \
(((x) >> S_FW_OFLD_TX_DATA_WR_ALIGNPLD) & M_FW_OFLD_TX_DATA_WR_ALIGNPLD)
#define F_FW_OFLD_TX_DATA_WR_ALIGNPLD V_FW_OFLD_TX_DATA_WR_ALIGNPLD(1U)
#define S_FW_OFLD_TX_DATA_WR_ALIGNPLDSHOVE 29
#define M_FW_OFLD_TX_DATA_WR_ALIGNPLDSHOVE 0x1
#define V_FW_OFLD_TX_DATA_WR_ALIGNPLDSHOVE(x) \
((x) << S_FW_OFLD_TX_DATA_WR_ALIGNPLDSHOVE)
#define G_FW_OFLD_TX_DATA_WR_ALIGNPLDSHOVE(x) \
(((x) >> S_FW_OFLD_TX_DATA_WR_ALIGNPLDSHOVE) & \
M_FW_OFLD_TX_DATA_WR_ALIGNPLDSHOVE)
#define F_FW_OFLD_TX_DATA_WR_ALIGNPLDSHOVE \
V_FW_OFLD_TX_DATA_WR_ALIGNPLDSHOVE(1U)
#define S_FW_OFLD_TX_DATA_WR_FLAGS 0
#define M_FW_OFLD_TX_DATA_WR_FLAGS 0xfffffff
#define V_FW_OFLD_TX_DATA_WR_FLAGS(x) ((x) << S_FW_OFLD_TX_DATA_WR_FLAGS)
#define G_FW_OFLD_TX_DATA_WR_FLAGS(x) \
(((x) >> S_FW_OFLD_TX_DATA_WR_FLAGS) & M_FW_OFLD_TX_DATA_WR_FLAGS)
/* Use fw_ofld_tx_data_wr structure */
#define S_FW_ISCSI_TX_DATA_WR_FLAGS_HI 10
#define M_FW_ISCSI_TX_DATA_WR_FLAGS_HI 0x3fffff
#define V_FW_ISCSI_TX_DATA_WR_FLAGS_HI(x) \
((x) << S_FW_ISCSI_TX_DATA_WR_FLAGS_HI)
#define G_FW_ISCSI_TX_DATA_WR_FLAGS_HI(x) \
(((x) >> S_FW_ISCSI_TX_DATA_WR_FLAGS_HI) & M_FW_ISCSI_TX_DATA_WR_FLAGS_HI)
#define S_FW_ISCSI_TX_DATA_WR_ULPSUBMODE_ISO 9
#define M_FW_ISCSI_TX_DATA_WR_ULPSUBMODE_ISO 0x1
#define V_FW_ISCSI_TX_DATA_WR_ULPSUBMODE_ISO(x) \
((x) << S_FW_ISCSI_TX_DATA_WR_ULPSUBMODE_ISO)
#define G_FW_ISCSI_TX_DATA_WR_ULPSUBMODE_ISO(x) \
(((x) >> S_FW_ISCSI_TX_DATA_WR_ULPSUBMODE_ISO) & \
M_FW_ISCSI_TX_DATA_WR_ULPSUBMODE_ISO)
#define F_FW_ISCSI_TX_DATA_WR_ULPSUBMODE_ISO \
V_FW_ISCSI_TX_DATA_WR_ULPSUBMODE_ISO(1U)
#define S_FW_ISCSI_TX_DATA_WR_ULPSUBMODE_PI 8
#define M_FW_ISCSI_TX_DATA_WR_ULPSUBMODE_PI 0x1
#define V_FW_ISCSI_TX_DATA_WR_ULPSUBMODE_PI(x) \
((x) << S_FW_ISCSI_TX_DATA_WR_ULPSUBMODE_PI)
#define G_FW_ISCSI_TX_DATA_WR_ULPSUBMODE_PI(x) \
(((x) >> S_FW_ISCSI_TX_DATA_WR_ULPSUBMODE_PI) & \
M_FW_ISCSI_TX_DATA_WR_ULPSUBMODE_PI)
#define F_FW_ISCSI_TX_DATA_WR_ULPSUBMODE_PI \
V_FW_ISCSI_TX_DATA_WR_ULPSUBMODE_PI(1U)
#define S_FW_ISCSI_TX_DATA_WR_ULPSUBMODE_DCRC 7
#define M_FW_ISCSI_TX_DATA_WR_ULPSUBMODE_DCRC 0x1
#define V_FW_ISCSI_TX_DATA_WR_ULPSUBMODE_DCRC(x) \
((x) << S_FW_ISCSI_TX_DATA_WR_ULPSUBMODE_DCRC)
#define G_FW_ISCSI_TX_DATA_WR_ULPSUBMODE_DCRC(x) \
(((x) >> S_FW_ISCSI_TX_DATA_WR_ULPSUBMODE_DCRC) & \
M_FW_ISCSI_TX_DATA_WR_ULPSUBMODE_DCRC)
#define F_FW_ISCSI_TX_DATA_WR_ULPSUBMODE_DCRC \
V_FW_ISCSI_TX_DATA_WR_ULPSUBMODE_DCRC(1U)
#define S_FW_ISCSI_TX_DATA_WR_ULPSUBMODE_HCRC 6
#define M_FW_ISCSI_TX_DATA_WR_ULPSUBMODE_HCRC 0x1
#define V_FW_ISCSI_TX_DATA_WR_ULPSUBMODE_HCRC(x) \
((x) << S_FW_ISCSI_TX_DATA_WR_ULPSUBMODE_HCRC)
#define G_FW_ISCSI_TX_DATA_WR_ULPSUBMODE_HCRC(x) \
(((x) >> S_FW_ISCSI_TX_DATA_WR_ULPSUBMODE_HCRC) & \
M_FW_ISCSI_TX_DATA_WR_ULPSUBMODE_HCRC)
#define F_FW_ISCSI_TX_DATA_WR_ULPSUBMODE_HCRC \
V_FW_ISCSI_TX_DATA_WR_ULPSUBMODE_HCRC(1U)
#define S_FW_ISCSI_TX_DATA_WR_FLAGS_LO 0
#define M_FW_ISCSI_TX_DATA_WR_FLAGS_LO 0x3f
#define V_FW_ISCSI_TX_DATA_WR_FLAGS_LO(x) \
((x) << S_FW_ISCSI_TX_DATA_WR_FLAGS_LO)
#define G_FW_ISCSI_TX_DATA_WR_FLAGS_LO(x) \
(((x) >> S_FW_ISCSI_TX_DATA_WR_FLAGS_LO) & M_FW_ISCSI_TX_DATA_WR_FLAGS_LO)
struct fw_cmd_wr {
__be32 op_dma;
__be32 len16_pkd;
__be64 cookie_daddr;
};
#define S_FW_CMD_WR_DMA 17
#define M_FW_CMD_WR_DMA 0x1
#define V_FW_CMD_WR_DMA(x) ((x) << S_FW_CMD_WR_DMA)
#define G_FW_CMD_WR_DMA(x) (((x) >> S_FW_CMD_WR_DMA) & M_FW_CMD_WR_DMA)
#define F_FW_CMD_WR_DMA V_FW_CMD_WR_DMA(1U)
struct fw_eth_tx_pkt_vm_wr {
__be32 op_immdlen;
__be32 equiq_to_len16;
__be32 r3[2];
__u8 ethmacdst[6];
__u8 ethmacsrc[6];
__be16 ethtype;
__be16 vlantci;
};
/******************************************************************************
* R I W O R K R E Q U E S T s
**************************************/
enum fw_ri_wr_opcode {
FW_RI_RDMA_WRITE = 0x0, /* IETF RDMAP v1.0 ... */
FW_RI_READ_REQ = 0x1,
FW_RI_READ_RESP = 0x2,
FW_RI_SEND = 0x3,
FW_RI_SEND_WITH_INV = 0x4,
FW_RI_SEND_WITH_SE = 0x5,
FW_RI_SEND_WITH_SE_INV = 0x6,
FW_RI_TERMINATE = 0x7,
FW_RI_RDMA_INIT = 0x8, /* CHELSIO RI specific ... */
FW_RI_BIND_MW = 0x9,
FW_RI_FAST_REGISTER = 0xa,
FW_RI_LOCAL_INV = 0xb,
FW_RI_QP_MODIFY = 0xc,
FW_RI_BYPASS = 0xd,
FW_RI_RECEIVE = 0xe,
#if 0
FW_RI_SEND_IMMEDIATE = 0x8,
FW_RI_SEND_IMMEDIATE_WITH_SE = 0x9,
FW_RI_ATOMIC_REQUEST = 0xa,
FW_RI_ATOMIC_RESPONSE = 0xb,
FW_RI_BIND_MW = 0xc, /* CHELSIO RI specific ... */
FW_RI_FAST_REGISTER = 0xd,
FW_RI_LOCAL_INV = 0xe,
#endif
FW_RI_SGE_EC_CR_RETURN = 0xf
};
enum fw_ri_wr_flags {
FW_RI_COMPLETION_FLAG = 0x01,
FW_RI_NOTIFICATION_FLAG = 0x02,
FW_RI_SOLICITED_EVENT_FLAG = 0x04,
FW_RI_READ_FENCE_FLAG = 0x08,
FW_RI_LOCAL_FENCE_FLAG = 0x10,
FW_RI_RDMA_READ_INVALIDATE = 0x20
};
enum fw_ri_mpa_attrs {
FW_RI_MPA_RX_MARKER_ENABLE = 0x01,
FW_RI_MPA_TX_MARKER_ENABLE = 0x02,
FW_RI_MPA_CRC_ENABLE = 0x04,
FW_RI_MPA_IETF_ENABLE = 0x08
};
enum fw_ri_qp_caps {
FW_RI_QP_RDMA_READ_ENABLE = 0x01,
FW_RI_QP_RDMA_WRITE_ENABLE = 0x02,
FW_RI_QP_BIND_ENABLE = 0x04,
FW_RI_QP_FAST_REGISTER_ENABLE = 0x08,
FW_RI_QP_STAG0_ENABLE = 0x10,
FW_RI_QP_RDMA_READ_REQ_0B_ENABLE= 0x80,
};
enum fw_ri_addr_type {
FW_RI_ZERO_BASED_TO = 0x00,
FW_RI_VA_BASED_TO = 0x01
};
enum fw_ri_mem_perms {
FW_RI_MEM_ACCESS_REM_WRITE = 0x01,
FW_RI_MEM_ACCESS_REM_READ = 0x02,
FW_RI_MEM_ACCESS_REM = 0x03,
FW_RI_MEM_ACCESS_LOCAL_WRITE = 0x04,
FW_RI_MEM_ACCESS_LOCAL_READ = 0x08,
FW_RI_MEM_ACCESS_LOCAL = 0x0C
};
enum fw_ri_stag_type {
FW_RI_STAG_NSMR = 0x00,
FW_RI_STAG_SMR = 0x01,
FW_RI_STAG_MW = 0x02,
FW_RI_STAG_MW_RELAXED = 0x03
};
enum fw_ri_data_op {
FW_RI_DATA_IMMD = 0x81,
FW_RI_DATA_DSGL = 0x82,
FW_RI_DATA_ISGL = 0x83
};
enum fw_ri_sgl_depth {
FW_RI_SGL_DEPTH_MAX_SQ = 16,
FW_RI_SGL_DEPTH_MAX_RQ = 4
};
enum fw_ri_cqe_err {
FW_RI_CQE_ERR_SUCCESS = 0x00, /* success, no error detected */
FW_RI_CQE_ERR_STAG = 0x01, /* STAG invalid */
FW_RI_CQE_ERR_PDID = 0x02, /* PDID mismatch */
FW_RI_CQE_ERR_QPID = 0x03, /* QPID mismatch */
FW_RI_CQE_ERR_ACCESS = 0x04, /* Invalid access right */
FW_RI_CQE_ERR_WRAP = 0x05, /* Wrap error */
FW_RI_CQE_ERR_BOUND = 0x06, /* base and bounds violation */
FW_RI_CQE_ERR_INVALIDATE_SHARED_MR = 0x07, /* attempt to invalidate a SMR */
FW_RI_CQE_ERR_INVALIDATE_MR_WITH_MW_BOUND = 0x08, /* attempt to invalidate a MR w MW */
FW_RI_CQE_ERR_ECC = 0x09, /* ECC error detected */
FW_RI_CQE_ERR_ECC_PSTAG = 0x0A, /* ECC error detected when reading the PSTAG for a MW Invalidate */
FW_RI_CQE_ERR_PBL_ADDR_BOUND = 0x0B, /* pbl address out of bound : software error */
FW_RI_CQE_ERR_CRC = 0x10, /* CRC error */
FW_RI_CQE_ERR_MARKER = 0x11, /* Marker error */
FW_RI_CQE_ERR_PDU_LEN_ERR = 0x12, /* invalid PDU length */
FW_RI_CQE_ERR_OUT_OF_RQE = 0x13, /* out of RQE */
FW_RI_CQE_ERR_DDP_VERSION = 0x14, /* wrong DDP version */
FW_RI_CQE_ERR_RDMA_VERSION = 0x15, /* wrong RDMA version */
FW_RI_CQE_ERR_OPCODE = 0x16, /* invalid rdma opcode */
FW_RI_CQE_ERR_DDP_QUEUE_NUM = 0x17, /* invalid ddp queue number */
FW_RI_CQE_ERR_MSN = 0x18, /* MSN error */
FW_RI_CQE_ERR_TBIT = 0x19, /* tag bit not set correctly */
FW_RI_CQE_ERR_MO = 0x1A, /* MO not zero for TERMINATE or READ_REQ */
FW_RI_CQE_ERR_MSN_GAP = 0x1B, /* */
FW_RI_CQE_ERR_MSN_RANGE = 0x1C, /* */
FW_RI_CQE_ERR_IRD_OVERFLOW = 0x1D, /* */
FW_RI_CQE_ERR_RQE_ADDR_BOUND = 0x1E, /* RQE address out of bound : software error */
FW_RI_CQE_ERR_INTERNAL_ERR = 0x1F /* internel error (opcode mismatch) */
};
struct fw_ri_dsge_pair {
__be32 len[2];
__be64 addr[2];
};
struct fw_ri_dsgl {
__u8 op;
__u8 r1;
__be16 nsge;
__be32 len0;
__be64 addr0;
#ifndef C99_NOT_SUPPORTED
struct fw_ri_dsge_pair sge[0];
#endif
};
struct fw_ri_sge {
__be32 stag;
__be32 len;
__be64 to;
};
struct fw_ri_isgl {
__u8 op;
__u8 r1;
__be16 nsge;
__be32 r2;
#ifndef C99_NOT_SUPPORTED
struct fw_ri_sge sge[0];
#endif
};
struct fw_ri_immd {
__u8 op;
__u8 r1;
__be16 r2;
__be32 immdlen;
#ifndef C99_NOT_SUPPORTED
__u8 data[0];
#endif
};
struct fw_ri_tpte {
__be32 valid_to_pdid;
__be32 locread_to_qpid;
__be32 nosnoop_pbladdr;
__be32 len_lo;
__be32 va_hi;
__be32 va_lo_fbo;
__be32 dca_mwbcnt_pstag;
__be32 len_hi;
};
#define S_FW_RI_TPTE_VALID 31
#define M_FW_RI_TPTE_VALID 0x1
#define V_FW_RI_TPTE_VALID(x) ((x) << S_FW_RI_TPTE_VALID)
#define G_FW_RI_TPTE_VALID(x) \
(((x) >> S_FW_RI_TPTE_VALID) & M_FW_RI_TPTE_VALID)
#define F_FW_RI_TPTE_VALID V_FW_RI_TPTE_VALID(1U)
#define S_FW_RI_TPTE_STAGKEY 23
#define M_FW_RI_TPTE_STAGKEY 0xff
#define V_FW_RI_TPTE_STAGKEY(x) ((x) << S_FW_RI_TPTE_STAGKEY)
#define G_FW_RI_TPTE_STAGKEY(x) \
(((x) >> S_FW_RI_TPTE_STAGKEY) & M_FW_RI_TPTE_STAGKEY)
#define S_FW_RI_TPTE_STAGSTATE 22
#define M_FW_RI_TPTE_STAGSTATE 0x1
#define V_FW_RI_TPTE_STAGSTATE(x) ((x) << S_FW_RI_TPTE_STAGSTATE)
#define G_FW_RI_TPTE_STAGSTATE(x) \
(((x) >> S_FW_RI_TPTE_STAGSTATE) & M_FW_RI_TPTE_STAGSTATE)
#define F_FW_RI_TPTE_STAGSTATE V_FW_RI_TPTE_STAGSTATE(1U)
#define S_FW_RI_TPTE_STAGTYPE 20
#define M_FW_RI_TPTE_STAGTYPE 0x3
#define V_FW_RI_TPTE_STAGTYPE(x) ((x) << S_FW_RI_TPTE_STAGTYPE)
#define G_FW_RI_TPTE_STAGTYPE(x) \
(((x) >> S_FW_RI_TPTE_STAGTYPE) & M_FW_RI_TPTE_STAGTYPE)
#define S_FW_RI_TPTE_PDID 0
#define M_FW_RI_TPTE_PDID 0xfffff
#define V_FW_RI_TPTE_PDID(x) ((x) << S_FW_RI_TPTE_PDID)
#define G_FW_RI_TPTE_PDID(x) \
(((x) >> S_FW_RI_TPTE_PDID) & M_FW_RI_TPTE_PDID)
#define S_FW_RI_TPTE_PERM 28
#define M_FW_RI_TPTE_PERM 0xf
#define V_FW_RI_TPTE_PERM(x) ((x) << S_FW_RI_TPTE_PERM)
#define G_FW_RI_TPTE_PERM(x) \
(((x) >> S_FW_RI_TPTE_PERM) & M_FW_RI_TPTE_PERM)
#define S_FW_RI_TPTE_REMINVDIS 27
#define M_FW_RI_TPTE_REMINVDIS 0x1
#define V_FW_RI_TPTE_REMINVDIS(x) ((x) << S_FW_RI_TPTE_REMINVDIS)
#define G_FW_RI_TPTE_REMINVDIS(x) \
(((x) >> S_FW_RI_TPTE_REMINVDIS) & M_FW_RI_TPTE_REMINVDIS)
#define F_FW_RI_TPTE_REMINVDIS V_FW_RI_TPTE_REMINVDIS(1U)
#define S_FW_RI_TPTE_ADDRTYPE 26
#define M_FW_RI_TPTE_ADDRTYPE 1
#define V_FW_RI_TPTE_ADDRTYPE(x) ((x) << S_FW_RI_TPTE_ADDRTYPE)
#define G_FW_RI_TPTE_ADDRTYPE(x) \
(((x) >> S_FW_RI_TPTE_ADDRTYPE) & M_FW_RI_TPTE_ADDRTYPE)
#define F_FW_RI_TPTE_ADDRTYPE V_FW_RI_TPTE_ADDRTYPE(1U)
#define S_FW_RI_TPTE_MWBINDEN 25
#define M_FW_RI_TPTE_MWBINDEN 0x1
#define V_FW_RI_TPTE_MWBINDEN(x) ((x) << S_FW_RI_TPTE_MWBINDEN)
#define G_FW_RI_TPTE_MWBINDEN(x) \
(((x) >> S_FW_RI_TPTE_MWBINDEN) & M_FW_RI_TPTE_MWBINDEN)
#define F_FW_RI_TPTE_MWBINDEN V_FW_RI_TPTE_MWBINDEN(1U)
#define S_FW_RI_TPTE_PS 20
#define M_FW_RI_TPTE_PS 0x1f
#define V_FW_RI_TPTE_PS(x) ((x) << S_FW_RI_TPTE_PS)
#define G_FW_RI_TPTE_PS(x) \
(((x) >> S_FW_RI_TPTE_PS) & M_FW_RI_TPTE_PS)
#define S_FW_RI_TPTE_QPID 0
#define M_FW_RI_TPTE_QPID 0xfffff
#define V_FW_RI_TPTE_QPID(x) ((x) << S_FW_RI_TPTE_QPID)
#define G_FW_RI_TPTE_QPID(x) \
(((x) >> S_FW_RI_TPTE_QPID) & M_FW_RI_TPTE_QPID)
#define S_FW_RI_TPTE_NOSNOOP 31
#define M_FW_RI_TPTE_NOSNOOP 0x1
#define V_FW_RI_TPTE_NOSNOOP(x) ((x) << S_FW_RI_TPTE_NOSNOOP)
#define G_FW_RI_TPTE_NOSNOOP(x) \
(((x) >> S_FW_RI_TPTE_NOSNOOP) & M_FW_RI_TPTE_NOSNOOP)
#define F_FW_RI_TPTE_NOSNOOP V_FW_RI_TPTE_NOSNOOP(1U)
#define S_FW_RI_TPTE_PBLADDR 0
#define M_FW_RI_TPTE_PBLADDR 0x1fffffff
#define V_FW_RI_TPTE_PBLADDR(x) ((x) << S_FW_RI_TPTE_PBLADDR)
#define G_FW_RI_TPTE_PBLADDR(x) \
(((x) >> S_FW_RI_TPTE_PBLADDR) & M_FW_RI_TPTE_PBLADDR)
#define S_FW_RI_TPTE_DCA 24
#define M_FW_RI_TPTE_DCA 0x1f
#define V_FW_RI_TPTE_DCA(x) ((x) << S_FW_RI_TPTE_DCA)
#define G_FW_RI_TPTE_DCA(x) \
(((x) >> S_FW_RI_TPTE_DCA) & M_FW_RI_TPTE_DCA)
#define S_FW_RI_TPTE_MWBCNT_PSTAG 0
#define M_FW_RI_TPTE_MWBCNT_PSTAG 0xffffff
#define V_FW_RI_TPTE_MWBCNT_PSTAT(x) \
((x) << S_FW_RI_TPTE_MWBCNT_PSTAG)
#define G_FW_RI_TPTE_MWBCNT_PSTAG(x) \
(((x) >> S_FW_RI_TPTE_MWBCNT_PSTAG) & M_FW_RI_TPTE_MWBCNT_PSTAG)
enum fw_ri_cqe_rxtx {
FW_RI_CQE_RXTX_RX = 0x0,
FW_RI_CQE_RXTX_TX = 0x1,
};
struct fw_ri_cqe {
union fw_ri_rxtx {
struct fw_ri_scqe {
__be32 qpid_n_stat_rxtx_type;
__be32 plen;
__be32 reserved;
__be32 wrid;
} scqe;
struct fw_ri_rcqe {
__be32 qpid_n_stat_rxtx_type;
__be32 plen;
__be32 stag;
__be32 msn;
} rcqe;
} u;
};
#define S_FW_RI_CQE_QPID 12
#define M_FW_RI_CQE_QPID 0xfffff
#define V_FW_RI_CQE_QPID(x) ((x) << S_FW_RI_CQE_QPID)
#define G_FW_RI_CQE_QPID(x) \
(((x) >> S_FW_RI_CQE_QPID) & M_FW_RI_CQE_QPID)
#define S_FW_RI_CQE_NOTIFY 10
#define M_FW_RI_CQE_NOTIFY 0x1
#define V_FW_RI_CQE_NOTIFY(x) ((x) << S_FW_RI_CQE_NOTIFY)
#define G_FW_RI_CQE_NOTIFY(x) \
(((x) >> S_FW_RI_CQE_NOTIFY) & M_FW_RI_CQE_NOTIFY)
#define S_FW_RI_CQE_STATUS 5
#define M_FW_RI_CQE_STATUS 0x1f
#define V_FW_RI_CQE_STATUS(x) ((x) << S_FW_RI_CQE_STATUS)
#define G_FW_RI_CQE_STATUS(x) \
(((x) >> S_FW_RI_CQE_STATUS) & M_FW_RI_CQE_STATUS)
#define S_FW_RI_CQE_RXTX 4
#define M_FW_RI_CQE_RXTX 0x1
#define V_FW_RI_CQE_RXTX(x) ((x) << S_FW_RI_CQE_RXTX)
#define G_FW_RI_CQE_RXTX(x) \
(((x) >> S_FW_RI_CQE_RXTX) & M_FW_RI_CQE_RXTX)
#define S_FW_RI_CQE_TYPE 0
#define M_FW_RI_CQE_TYPE 0xf
#define V_FW_RI_CQE_TYPE(x) ((x) << S_FW_RI_CQE_TYPE)
#define G_FW_RI_CQE_TYPE(x) \
(((x) >> S_FW_RI_CQE_TYPE) & M_FW_RI_CQE_TYPE)
enum fw_ri_res_type {
FW_RI_RES_TYPE_SQ,
FW_RI_RES_TYPE_RQ,
FW_RI_RES_TYPE_CQ,
FW_RI_RES_TYPE_SRQ,
};
enum fw_ri_res_op {
FW_RI_RES_OP_WRITE,
FW_RI_RES_OP_RESET,
};
struct fw_ri_res {
union fw_ri_restype {
struct fw_ri_res_sqrq {
__u8 restype;
__u8 op;
__be16 r3;
__be32 eqid;
__be32 r4[2];
__be32 fetchszm_to_iqid;
__be32 dcaen_to_eqsize;
__be64 eqaddr;
} sqrq;
struct fw_ri_res_cq {
__u8 restype;
__u8 op;
__be16 r3;
__be32 iqid;
__be32 r4[2];
__be32 iqandst_to_iqandstindex;
__be16 iqdroprss_to_iqesize;
__be16 iqsize;
__be64 iqaddr;
__be32 iqns_iqro;
__be32 r6_lo;
__be64 r7;
} cq;
struct fw_ri_res_srq {
__u8 restype;
__u8 op;
__be16 r3;
__be32 eqid;
__be32 r4[2];
__be32 fetchszm_to_iqid;
__be32 dcaen_to_eqsize;
__be64 eqaddr;
__be32 srqid;
__be32 pdid;
__be32 hwsrqsize;
__be32 hwsrqaddr;
} srq;
} u;
};
struct fw_ri_res_wr {
__be32 op_nres;
__be32 len16_pkd;
__u64 cookie;
#ifndef C99_NOT_SUPPORTED
struct fw_ri_res res[0];
#endif
};
#define S_FW_RI_RES_WR_NRES 0
#define M_FW_RI_RES_WR_NRES 0xff
#define V_FW_RI_RES_WR_NRES(x) ((x) << S_FW_RI_RES_WR_NRES)
#define G_FW_RI_RES_WR_NRES(x) \
(((x) >> S_FW_RI_RES_WR_NRES) & M_FW_RI_RES_WR_NRES)
#define S_FW_RI_RES_WR_FETCHSZM 26
#define M_FW_RI_RES_WR_FETCHSZM 0x1
#define V_FW_RI_RES_WR_FETCHSZM(x) ((x) << S_FW_RI_RES_WR_FETCHSZM)
#define G_FW_RI_RES_WR_FETCHSZM(x) \
(((x) >> S_FW_RI_RES_WR_FETCHSZM) & M_FW_RI_RES_WR_FETCHSZM)
#define F_FW_RI_RES_WR_FETCHSZM V_FW_RI_RES_WR_FETCHSZM(1U)
#define S_FW_RI_RES_WR_STATUSPGNS 25
#define M_FW_RI_RES_WR_STATUSPGNS 0x1
#define V_FW_RI_RES_WR_STATUSPGNS(x) ((x) << S_FW_RI_RES_WR_STATUSPGNS)
#define G_FW_RI_RES_WR_STATUSPGNS(x) \
(((x) >> S_FW_RI_RES_WR_STATUSPGNS) & M_FW_RI_RES_WR_STATUSPGNS)
#define F_FW_RI_RES_WR_STATUSPGNS V_FW_RI_RES_WR_STATUSPGNS(1U)
#define S_FW_RI_RES_WR_STATUSPGRO 24
#define M_FW_RI_RES_WR_STATUSPGRO 0x1
#define V_FW_RI_RES_WR_STATUSPGRO(x) ((x) << S_FW_RI_RES_WR_STATUSPGRO)
#define G_FW_RI_RES_WR_STATUSPGRO(x) \
(((x) >> S_FW_RI_RES_WR_STATUSPGRO) & M_FW_RI_RES_WR_STATUSPGRO)
#define F_FW_RI_RES_WR_STATUSPGRO V_FW_RI_RES_WR_STATUSPGRO(1U)
#define S_FW_RI_RES_WR_FETCHNS 23
#define M_FW_RI_RES_WR_FETCHNS 0x1
#define V_FW_RI_RES_WR_FETCHNS(x) ((x) << S_FW_RI_RES_WR_FETCHNS)
#define G_FW_RI_RES_WR_FETCHNS(x) \
(((x) >> S_FW_RI_RES_WR_FETCHNS) & M_FW_RI_RES_WR_FETCHNS)
#define F_FW_RI_RES_WR_FETCHNS V_FW_RI_RES_WR_FETCHNS(1U)
#define S_FW_RI_RES_WR_FETCHRO 22
#define M_FW_RI_RES_WR_FETCHRO 0x1
#define V_FW_RI_RES_WR_FETCHRO(x) ((x) << S_FW_RI_RES_WR_FETCHRO)
#define G_FW_RI_RES_WR_FETCHRO(x) \
(((x) >> S_FW_RI_RES_WR_FETCHRO) & M_FW_RI_RES_WR_FETCHRO)
#define F_FW_RI_RES_WR_FETCHRO V_FW_RI_RES_WR_FETCHRO(1U)
#define S_FW_RI_RES_WR_HOSTFCMODE 20
#define M_FW_RI_RES_WR_HOSTFCMODE 0x3
#define V_FW_RI_RES_WR_HOSTFCMODE(x) ((x) << S_FW_RI_RES_WR_HOSTFCMODE)
#define G_FW_RI_RES_WR_HOSTFCMODE(x) \
(((x) >> S_FW_RI_RES_WR_HOSTFCMODE) & M_FW_RI_RES_WR_HOSTFCMODE)
#define S_FW_RI_RES_WR_CPRIO 19
#define M_FW_RI_RES_WR_CPRIO 0x1
#define V_FW_RI_RES_WR_CPRIO(x) ((x) << S_FW_RI_RES_WR_CPRIO)
#define G_FW_RI_RES_WR_CPRIO(x) \
(((x) >> S_FW_RI_RES_WR_CPRIO) & M_FW_RI_RES_WR_CPRIO)
#define F_FW_RI_RES_WR_CPRIO V_FW_RI_RES_WR_CPRIO(1U)
#define S_FW_RI_RES_WR_ONCHIP 18
#define M_FW_RI_RES_WR_ONCHIP 0x1
#define V_FW_RI_RES_WR_ONCHIP(x) ((x) << S_FW_RI_RES_WR_ONCHIP)
#define G_FW_RI_RES_WR_ONCHIP(x) \
(((x) >> S_FW_RI_RES_WR_ONCHIP) & M_FW_RI_RES_WR_ONCHIP)
#define F_FW_RI_RES_WR_ONCHIP V_FW_RI_RES_WR_ONCHIP(1U)
#define S_FW_RI_RES_WR_PCIECHN 16
#define M_FW_RI_RES_WR_PCIECHN 0x3
#define V_FW_RI_RES_WR_PCIECHN(x) ((x) << S_FW_RI_RES_WR_PCIECHN)
#define G_FW_RI_RES_WR_PCIECHN(x) \
(((x) >> S_FW_RI_RES_WR_PCIECHN) & M_FW_RI_RES_WR_PCIECHN)
#define S_FW_RI_RES_WR_IQID 0
#define M_FW_RI_RES_WR_IQID 0xffff
#define V_FW_RI_RES_WR_IQID(x) ((x) << S_FW_RI_RES_WR_IQID)
#define G_FW_RI_RES_WR_IQID(x) \
(((x) >> S_FW_RI_RES_WR_IQID) & M_FW_RI_RES_WR_IQID)
#define S_FW_RI_RES_WR_DCAEN 31
#define M_FW_RI_RES_WR_DCAEN 0x1
#define V_FW_RI_RES_WR_DCAEN(x) ((x) << S_FW_RI_RES_WR_DCAEN)
#define G_FW_RI_RES_WR_DCAEN(x) \
(((x) >> S_FW_RI_RES_WR_DCAEN) & M_FW_RI_RES_WR_DCAEN)
#define F_FW_RI_RES_WR_DCAEN V_FW_RI_RES_WR_DCAEN(1U)
#define S_FW_RI_RES_WR_DCACPU 26
#define M_FW_RI_RES_WR_DCACPU 0x1f
#define V_FW_RI_RES_WR_DCACPU(x) ((x) << S_FW_RI_RES_WR_DCACPU)
#define G_FW_RI_RES_WR_DCACPU(x) \
(((x) >> S_FW_RI_RES_WR_DCACPU) & M_FW_RI_RES_WR_DCACPU)
#define S_FW_RI_RES_WR_FBMIN 23
#define M_FW_RI_RES_WR_FBMIN 0x7
#define V_FW_RI_RES_WR_FBMIN(x) ((x) << S_FW_RI_RES_WR_FBMIN)
#define G_FW_RI_RES_WR_FBMIN(x) \
(((x) >> S_FW_RI_RES_WR_FBMIN) & M_FW_RI_RES_WR_FBMIN)
#define S_FW_RI_RES_WR_FBMAX 20
#define M_FW_RI_RES_WR_FBMAX 0x7
#define V_FW_RI_RES_WR_FBMAX(x) ((x) << S_FW_RI_RES_WR_FBMAX)
#define G_FW_RI_RES_WR_FBMAX(x) \
(((x) >> S_FW_RI_RES_WR_FBMAX) & M_FW_RI_RES_WR_FBMAX)
#define S_FW_RI_RES_WR_CIDXFTHRESHO 19
#define M_FW_RI_RES_WR_CIDXFTHRESHO 0x1
#define V_FW_RI_RES_WR_CIDXFTHRESHO(x) ((x) << S_FW_RI_RES_WR_CIDXFTHRESHO)
#define G_FW_RI_RES_WR_CIDXFTHRESHO(x) \
(((x) >> S_FW_RI_RES_WR_CIDXFTHRESHO) & M_FW_RI_RES_WR_CIDXFTHRESHO)
#define F_FW_RI_RES_WR_CIDXFTHRESHO V_FW_RI_RES_WR_CIDXFTHRESHO(1U)
#define S_FW_RI_RES_WR_CIDXFTHRESH 16
#define M_FW_RI_RES_WR_CIDXFTHRESH 0x7
#define V_FW_RI_RES_WR_CIDXFTHRESH(x) ((x) << S_FW_RI_RES_WR_CIDXFTHRESH)
#define G_FW_RI_RES_WR_CIDXFTHRESH(x) \
(((x) >> S_FW_RI_RES_WR_CIDXFTHRESH) & M_FW_RI_RES_WR_CIDXFTHRESH)
#define S_FW_RI_RES_WR_EQSIZE 0
#define M_FW_RI_RES_WR_EQSIZE 0xffff
#define V_FW_RI_RES_WR_EQSIZE(x) ((x) << S_FW_RI_RES_WR_EQSIZE)
#define G_FW_RI_RES_WR_EQSIZE(x) \
(((x) >> S_FW_RI_RES_WR_EQSIZE) & M_FW_RI_RES_WR_EQSIZE)
#define S_FW_RI_RES_WR_IQANDST 15
#define M_FW_RI_RES_WR_IQANDST 0x1
#define V_FW_RI_RES_WR_IQANDST(x) ((x) << S_FW_RI_RES_WR_IQANDST)
#define G_FW_RI_RES_WR_IQANDST(x) \
(((x) >> S_FW_RI_RES_WR_IQANDST) & M_FW_RI_RES_WR_IQANDST)
#define F_FW_RI_RES_WR_IQANDST V_FW_RI_RES_WR_IQANDST(1U)
#define S_FW_RI_RES_WR_IQANUS 14
#define M_FW_RI_RES_WR_IQANUS 0x1
#define V_FW_RI_RES_WR_IQANUS(x) ((x) << S_FW_RI_RES_WR_IQANUS)
#define G_FW_RI_RES_WR_IQANUS(x) \
(((x) >> S_FW_RI_RES_WR_IQANUS) & M_FW_RI_RES_WR_IQANUS)
#define F_FW_RI_RES_WR_IQANUS V_FW_RI_RES_WR_IQANUS(1U)
#define S_FW_RI_RES_WR_IQANUD 12
#define M_FW_RI_RES_WR_IQANUD 0x3
#define V_FW_RI_RES_WR_IQANUD(x) ((x) << S_FW_RI_RES_WR_IQANUD)
#define G_FW_RI_RES_WR_IQANUD(x) \
(((x) >> S_FW_RI_RES_WR_IQANUD) & M_FW_RI_RES_WR_IQANUD)
#define S_FW_RI_RES_WR_IQANDSTINDEX 0
#define M_FW_RI_RES_WR_IQANDSTINDEX 0xfff
#define V_FW_RI_RES_WR_IQANDSTINDEX(x) ((x) << S_FW_RI_RES_WR_IQANDSTINDEX)
#define G_FW_RI_RES_WR_IQANDSTINDEX(x) \
(((x) >> S_FW_RI_RES_WR_IQANDSTINDEX) & M_FW_RI_RES_WR_IQANDSTINDEX)
#define S_FW_RI_RES_WR_IQDROPRSS 15
#define M_FW_RI_RES_WR_IQDROPRSS 0x1
#define V_FW_RI_RES_WR_IQDROPRSS(x) ((x) << S_FW_RI_RES_WR_IQDROPRSS)
#define G_FW_RI_RES_WR_IQDROPRSS(x) \
(((x) >> S_FW_RI_RES_WR_IQDROPRSS) & M_FW_RI_RES_WR_IQDROPRSS)
#define F_FW_RI_RES_WR_IQDROPRSS V_FW_RI_RES_WR_IQDROPRSS(1U)
#define S_FW_RI_RES_WR_IQGTSMODE 14
#define M_FW_RI_RES_WR_IQGTSMODE 0x1
#define V_FW_RI_RES_WR_IQGTSMODE(x) ((x) << S_FW_RI_RES_WR_IQGTSMODE)
#define G_FW_RI_RES_WR_IQGTSMODE(x) \
(((x) >> S_FW_RI_RES_WR_IQGTSMODE) & M_FW_RI_RES_WR_IQGTSMODE)
#define F_FW_RI_RES_WR_IQGTSMODE V_FW_RI_RES_WR_IQGTSMODE(1U)
#define S_FW_RI_RES_WR_IQPCIECH 12
#define M_FW_RI_RES_WR_IQPCIECH 0x3
#define V_FW_RI_RES_WR_IQPCIECH(x) ((x) << S_FW_RI_RES_WR_IQPCIECH)
#define G_FW_RI_RES_WR_IQPCIECH(x) \
(((x) >> S_FW_RI_RES_WR_IQPCIECH) & M_FW_RI_RES_WR_IQPCIECH)
#define S_FW_RI_RES_WR_IQDCAEN 11
#define M_FW_RI_RES_WR_IQDCAEN 0x1
#define V_FW_RI_RES_WR_IQDCAEN(x) ((x) << S_FW_RI_RES_WR_IQDCAEN)
#define G_FW_RI_RES_WR_IQDCAEN(x) \
(((x) >> S_FW_RI_RES_WR_IQDCAEN) & M_FW_RI_RES_WR_IQDCAEN)
#define F_FW_RI_RES_WR_IQDCAEN V_FW_RI_RES_WR_IQDCAEN(1U)
#define S_FW_RI_RES_WR_IQDCACPU 6
#define M_FW_RI_RES_WR_IQDCACPU 0x1f
#define V_FW_RI_RES_WR_IQDCACPU(x) ((x) << S_FW_RI_RES_WR_IQDCACPU)
#define G_FW_RI_RES_WR_IQDCACPU(x) \
(((x) >> S_FW_RI_RES_WR_IQDCACPU) & M_FW_RI_RES_WR_IQDCACPU)
#define S_FW_RI_RES_WR_IQINTCNTTHRESH 4
#define M_FW_RI_RES_WR_IQINTCNTTHRESH 0x3
#define V_FW_RI_RES_WR_IQINTCNTTHRESH(x) \
((x) << S_FW_RI_RES_WR_IQINTCNTTHRESH)
#define G_FW_RI_RES_WR_IQINTCNTTHRESH(x) \
(((x) >> S_FW_RI_RES_WR_IQINTCNTTHRESH) & M_FW_RI_RES_WR_IQINTCNTTHRESH)
#define S_FW_RI_RES_WR_IQO 3
#define M_FW_RI_RES_WR_IQO 0x1
#define V_FW_RI_RES_WR_IQO(x) ((x) << S_FW_RI_RES_WR_IQO)
#define G_FW_RI_RES_WR_IQO(x) \
(((x) >> S_FW_RI_RES_WR_IQO) & M_FW_RI_RES_WR_IQO)
#define F_FW_RI_RES_WR_IQO V_FW_RI_RES_WR_IQO(1U)
#define S_FW_RI_RES_WR_IQCPRIO 2
#define M_FW_RI_RES_WR_IQCPRIO 0x1
#define V_FW_RI_RES_WR_IQCPRIO(x) ((x) << S_FW_RI_RES_WR_IQCPRIO)
#define G_FW_RI_RES_WR_IQCPRIO(x) \
(((x) >> S_FW_RI_RES_WR_IQCPRIO) & M_FW_RI_RES_WR_IQCPRIO)
#define F_FW_RI_RES_WR_IQCPRIO V_FW_RI_RES_WR_IQCPRIO(1U)
#define S_FW_RI_RES_WR_IQESIZE 0
#define M_FW_RI_RES_WR_IQESIZE 0x3
#define V_FW_RI_RES_WR_IQESIZE(x) ((x) << S_FW_RI_RES_WR_IQESIZE)
#define G_FW_RI_RES_WR_IQESIZE(x) \
(((x) >> S_FW_RI_RES_WR_IQESIZE) & M_FW_RI_RES_WR_IQESIZE)
#define S_FW_RI_RES_WR_IQNS 31
#define M_FW_RI_RES_WR_IQNS 0x1
#define V_FW_RI_RES_WR_IQNS(x) ((x) << S_FW_RI_RES_WR_IQNS)
#define G_FW_RI_RES_WR_IQNS(x) \
(((x) >> S_FW_RI_RES_WR_IQNS) & M_FW_RI_RES_WR_IQNS)
#define F_FW_RI_RES_WR_IQNS V_FW_RI_RES_WR_IQNS(1U)
#define S_FW_RI_RES_WR_IQRO 30
#define M_FW_RI_RES_WR_IQRO 0x1
#define V_FW_RI_RES_WR_IQRO(x) ((x) << S_FW_RI_RES_WR_IQRO)
#define G_FW_RI_RES_WR_IQRO(x) \
(((x) >> S_FW_RI_RES_WR_IQRO) & M_FW_RI_RES_WR_IQRO)
#define F_FW_RI_RES_WR_IQRO V_FW_RI_RES_WR_IQRO(1U)
struct fw_ri_rdma_write_wr {
__u8 opcode;
__u8 flags;
__u16 wrid;
__u8 r1[3];
__u8 len16;
__be64 r2;
__be32 plen;
__be32 stag_sink;
__be64 to_sink;
#ifndef C99_NOT_SUPPORTED
union {
struct fw_ri_immd immd_src[0];
struct fw_ri_isgl isgl_src[0];
} u;
#endif
};
struct fw_ri_send_wr {
__u8 opcode;
__u8 flags;
__u16 wrid;
__u8 r1[3];
__u8 len16;
__be32 sendop_pkd;
__be32 stag_inv;
__be32 plen;
__be32 r3;
__be64 r4;
#ifndef C99_NOT_SUPPORTED
union {
struct fw_ri_immd immd_src[0];
struct fw_ri_isgl isgl_src[0];
} u;
#endif
};
#define S_FW_RI_SEND_WR_SENDOP 0
#define M_FW_RI_SEND_WR_SENDOP 0xf
#define V_FW_RI_SEND_WR_SENDOP(x) ((x) << S_FW_RI_SEND_WR_SENDOP)
#define G_FW_RI_SEND_WR_SENDOP(x) \
(((x) >> S_FW_RI_SEND_WR_SENDOP) & M_FW_RI_SEND_WR_SENDOP)
struct fw_ri_rdma_read_wr {
__u8 opcode;
__u8 flags;
__u16 wrid;
__u8 r1[3];
__u8 len16;
__be64 r2;
__be32 stag_sink;
__be32 to_sink_hi;
__be32 to_sink_lo;
__be32 plen;
__be32 stag_src;
__be32 to_src_hi;
__be32 to_src_lo;
__be32 r5;
};
struct fw_ri_recv_wr {
__u8 opcode;
__u8 r1;
__u16 wrid;
__u8 r2[3];
__u8 len16;
struct fw_ri_isgl isgl;
};
struct fw_ri_bind_mw_wr {
__u8 opcode;
__u8 flags;
__u16 wrid;
__u8 r1[3];
__u8 len16;
__u8 qpbinde_to_dcacpu;
__u8 pgsz_shift;
__u8 addr_type;
__u8 mem_perms;
__be32 stag_mr;
__be32 stag_mw;
__be32 r3;
__be64 len_mw;
__be64 va_fbo;
__be64 r4;
};
#define S_FW_RI_BIND_MW_WR_QPBINDE 6
#define M_FW_RI_BIND_MW_WR_QPBINDE 0x1
#define V_FW_RI_BIND_MW_WR_QPBINDE(x) ((x) << S_FW_RI_BIND_MW_WR_QPBINDE)
#define G_FW_RI_BIND_MW_WR_QPBINDE(x) \
(((x) >> S_FW_RI_BIND_MW_WR_QPBINDE) & M_FW_RI_BIND_MW_WR_QPBINDE)
#define F_FW_RI_BIND_MW_WR_QPBINDE V_FW_RI_BIND_MW_WR_QPBINDE(1U)
#define S_FW_RI_BIND_MW_WR_NS 5
#define M_FW_RI_BIND_MW_WR_NS 0x1
#define V_FW_RI_BIND_MW_WR_NS(x) ((x) << S_FW_RI_BIND_MW_WR_NS)
#define G_FW_RI_BIND_MW_WR_NS(x) \
(((x) >> S_FW_RI_BIND_MW_WR_NS) & M_FW_RI_BIND_MW_WR_NS)
#define F_FW_RI_BIND_MW_WR_NS V_FW_RI_BIND_MW_WR_NS(1U)
#define S_FW_RI_BIND_MW_WR_DCACPU 0
#define M_FW_RI_BIND_MW_WR_DCACPU 0x1f
#define V_FW_RI_BIND_MW_WR_DCACPU(x) ((x) << S_FW_RI_BIND_MW_WR_DCACPU)
#define G_FW_RI_BIND_MW_WR_DCACPU(x) \
(((x) >> S_FW_RI_BIND_MW_WR_DCACPU) & M_FW_RI_BIND_MW_WR_DCACPU)
struct fw_ri_fr_nsmr_wr {
__u8 opcode;
__u8 flags;
__u16 wrid;
__u8 r1[3];
__u8 len16;
__u8 qpbinde_to_dcacpu;
__u8 pgsz_shift;
__u8 addr_type;
__u8 mem_perms;
__be32 stag;
__be32 len_hi;
__be32 len_lo;
__be32 va_hi;
__be32 va_lo_fbo;
};
#define S_FW_RI_FR_NSMR_WR_QPBINDE 6
#define M_FW_RI_FR_NSMR_WR_QPBINDE 0x1
#define V_FW_RI_FR_NSMR_WR_QPBINDE(x) ((x) << S_FW_RI_FR_NSMR_WR_QPBINDE)
#define G_FW_RI_FR_NSMR_WR_QPBINDE(x) \
(((x) >> S_FW_RI_FR_NSMR_WR_QPBINDE) & M_FW_RI_FR_NSMR_WR_QPBINDE)
#define F_FW_RI_FR_NSMR_WR_QPBINDE V_FW_RI_FR_NSMR_WR_QPBINDE(1U)
#define S_FW_RI_FR_NSMR_WR_NS 5
#define M_FW_RI_FR_NSMR_WR_NS 0x1
#define V_FW_RI_FR_NSMR_WR_NS(x) ((x) << S_FW_RI_FR_NSMR_WR_NS)
#define G_FW_RI_FR_NSMR_WR_NS(x) \
(((x) >> S_FW_RI_FR_NSMR_WR_NS) & M_FW_RI_FR_NSMR_WR_NS)
#define F_FW_RI_FR_NSMR_WR_NS V_FW_RI_FR_NSMR_WR_NS(1U)
#define S_FW_RI_FR_NSMR_WR_DCACPU 0
#define M_FW_RI_FR_NSMR_WR_DCACPU 0x1f
#define V_FW_RI_FR_NSMR_WR_DCACPU(x) ((x) << S_FW_RI_FR_NSMR_WR_DCACPU)
#define G_FW_RI_FR_NSMR_WR_DCACPU(x) \
(((x) >> S_FW_RI_FR_NSMR_WR_DCACPU) & M_FW_RI_FR_NSMR_WR_DCACPU)
struct fw_ri_inv_lstag_wr {
__u8 opcode;
__u8 flags;
__u16 wrid;
__u8 r1[3];
__u8 len16;
__be32 r2;
__be32 stag_inv;
};
struct fw_ri_send_immediate_wr {
__u8 opcode;
__u8 flags;
__u16 wrid;
__u8 r1[3];
__u8 len16;
__be32 sendimmop_pkd;
__be32 r3;
__be32 plen;
__be32 r4;
__be64 r5;
#ifndef C99_NOT_SUPPORTED
struct fw_ri_immd immd_src[0];
#endif
};
#define S_FW_RI_SEND_IMMEDIATE_WR_SENDIMMOP 0
#define M_FW_RI_SEND_IMMEDIATE_WR_SENDIMMOP 0xf
#define V_FW_RI_SEND_IMMEDIATE_WR_SENDIMMOP(x) \
((x) << S_FW_RI_SEND_IMMEDIATE_WR_SENDIMMOP)
#define G_FW_RI_SEND_IMMEDIATE_WR_SENDIMMOP(x) \
(((x) >> S_FW_RI_SEND_IMMEDIATE_WR_SENDIMMOP) & \
M_FW_RI_SEND_IMMEDIATE_WR_SENDIMMOP)
enum fw_ri_atomic_op {
FW_RI_ATOMIC_OP_FETCHADD,
FW_RI_ATOMIC_OP_SWAP,
FW_RI_ATOMIC_OP_CMDSWAP,
};
struct fw_ri_atomic_wr {
__u8 opcode;
__u8 flags;
__u16 wrid;
__u8 r1[3];
__u8 len16;
__be32 atomicop_pkd;
__be64 r3;
__be32 aopcode_pkd;
__be32 reqid;
__be32 stag;
__be32 to_hi;
__be32 to_lo;
__be32 addswap_data_hi;
__be32 addswap_data_lo;
__be32 addswap_mask_hi;
__be32 addswap_mask_lo;
__be32 compare_data_hi;
__be32 compare_data_lo;
__be32 compare_mask_hi;
__be32 compare_mask_lo;
__be32 r5;
};
#define S_FW_RI_ATOMIC_WR_ATOMICOP 0
#define M_FW_RI_ATOMIC_WR_ATOMICOP 0xf
#define V_FW_RI_ATOMIC_WR_ATOMICOP(x) ((x) << S_FW_RI_ATOMIC_WR_ATOMICOP)
#define G_FW_RI_ATOMIC_WR_ATOMICOP(x) \
(((x) >> S_FW_RI_ATOMIC_WR_ATOMICOP) & M_FW_RI_ATOMIC_WR_ATOMICOP)
#define S_FW_RI_ATOMIC_WR_AOPCODE 0
#define M_FW_RI_ATOMIC_WR_AOPCODE 0xf
#define V_FW_RI_ATOMIC_WR_AOPCODE(x) ((x) << S_FW_RI_ATOMIC_WR_AOPCODE)
#define G_FW_RI_ATOMIC_WR_AOPCODE(x) \
(((x) >> S_FW_RI_ATOMIC_WR_AOPCODE) & M_FW_RI_ATOMIC_WR_AOPCODE)
enum fw_ri_type {
FW_RI_TYPE_INIT,
FW_RI_TYPE_FINI,
FW_RI_TYPE_TERMINATE
};
enum fw_ri_init_p2ptype {
FW_RI_INIT_P2PTYPE_RDMA_WRITE = FW_RI_RDMA_WRITE,
FW_RI_INIT_P2PTYPE_READ_REQ = FW_RI_READ_REQ,
FW_RI_INIT_P2PTYPE_SEND = FW_RI_SEND,
FW_RI_INIT_P2PTYPE_SEND_WITH_INV = FW_RI_SEND_WITH_INV,
FW_RI_INIT_P2PTYPE_SEND_WITH_SE = FW_RI_SEND_WITH_SE,
FW_RI_INIT_P2PTYPE_SEND_WITH_SE_INV = FW_RI_SEND_WITH_SE_INV,
FW_RI_INIT_P2PTYPE_DISABLED = 0xf,
};
enum fw_ri_init_rqeqid_srq {
FW_RI_INIT_RQEQID_SRQ = 1 << 31,
};
struct fw_ri_wr {
__be32 op_compl;
__be32 flowid_len16;
__u64 cookie;
union fw_ri {
struct fw_ri_init {
__u8 type;
__u8 mpareqbit_p2ptype;
__u8 r4[2];
__u8 mpa_attrs;
__u8 qp_caps;
__be16 nrqe;
__be32 pdid;
__be32 qpid;
__be32 sq_eqid;
__be32 rq_eqid;
__be32 scqid;
__be32 rcqid;
__be32 ord_max;
__be32 ird_max;
__be32 iss;
__be32 irs;
__be32 hwrqsize;
__be32 hwrqaddr;
__be64 r5;
union fw_ri_init_p2p {
struct fw_ri_rdma_write_wr write;
struct fw_ri_rdma_read_wr read;
struct fw_ri_send_wr send;
} u;
} init;
struct fw_ri_fini {
__u8 type;
__u8 r3[7];
__be64 r4;
} fini;
struct fw_ri_terminate {
__u8 type;
__u8 r3[3];
__be32 immdlen;
__u8 termmsg[40];
} terminate;
} u;
};
#define S_FW_RI_WR_MPAREQBIT 7
#define M_FW_RI_WR_MPAREQBIT 0x1
#define V_FW_RI_WR_MPAREQBIT(x) ((x) << S_FW_RI_WR_MPAREQBIT)
#define G_FW_RI_WR_MPAREQBIT(x) \
(((x) >> S_FW_RI_WR_MPAREQBIT) & M_FW_RI_WR_MPAREQBIT)
#define F_FW_RI_WR_MPAREQBIT V_FW_RI_WR_MPAREQBIT(1U)
#define S_FW_RI_WR_0BRRBIT 6
#define M_FW_RI_WR_0BRRBIT 0x1
#define V_FW_RI_WR_0BRRBIT(x) ((x) << S_FW_RI_WR_0BRRBIT)
#define G_FW_RI_WR_0BRRBIT(x) \
(((x) >> S_FW_RI_WR_0BRRBIT) & M_FW_RI_WR_0BRRBIT)
#define F_FW_RI_WR_0BRRBIT V_FW_RI_WR_0BRRBIT(1U)
#define S_FW_RI_WR_P2PTYPE 0
#define M_FW_RI_WR_P2PTYPE 0xf
#define V_FW_RI_WR_P2PTYPE(x) ((x) << S_FW_RI_WR_P2PTYPE)
#define G_FW_RI_WR_P2PTYPE(x) \
(((x) >> S_FW_RI_WR_P2PTYPE) & M_FW_RI_WR_P2PTYPE)
/******************************************************************************
* F O i S C S I W O R K R E Q U E S T s
*********************************************/
#define FW_FOISCSI_NAME_MAX_LEN 224
#define FW_FOISCSI_ALIAS_MAX_LEN 224
#define FW_FOISCSI_CHAP_SEC_MAX_LEN 128
#define FW_FOISCSI_INIT_NODE_MAX 8
enum fw_chnet_ifconf_wr_subop {
FW_CHNET_IFCONF_WR_SUBOP_NONE = 0,
FW_CHNET_IFCONF_WR_SUBOP_IPV4_SET,
FW_CHNET_IFCONF_WR_SUBOP_IPV4_GET,
FW_CHNET_IFCONF_WR_SUBOP_VLAN_IPV4_SET,
FW_CHNET_IFCONF_WR_SUBOP_VLAN_IPV4_GET,
FW_CHNET_IFCONF_WR_SUBOP_IPV6_SET,
FW_CHNET_IFCONF_WR_SUBOP_IPV6_GET,
FW_CHNET_IFCONF_WR_SUBOP_VLAN_SET,
FW_CHNET_IFCONF_WR_SUBOP_VLAN_GET,
FW_CHNET_IFCONF_WR_SUBOP_MTU_SET,
FW_CHNET_IFCONF_WR_SUBOP_MTU_GET,
FW_CHNET_IFCONF_WR_SUBOP_DHCP_SET,
FW_CHNET_IFCONF_WR_SUBOP_DHCP_GET,
FW_CHNET_IFCONF_WR_SUBOP_DHCPV6_SET,
FW_CHNET_IFCONF_WR_SUBOP_DHCPV6_GET,
FW_CHNET_IFCONF_WR_SUBOP_LINKLOCAL_ADDR_SET,
FW_CHNET_IFCONF_WR_SUBOP_RA_BASED_ADDR_SET,
FW_CHNET_IFCONF_WR_SUBOP_ADDR_EXPIRED,
FW_CHNET_IFCONF_WR_SUBOP_MAX,
};
struct fw_chnet_ifconf_wr {
__be32 op_compl;
__be32 flowid_len16;
__be64 cookie;
__be32 if_flowid;
__u8 idx;
__u8 subop;
__u8 retval;
__u8 r2;
__be64 r3;
struct fw_chnet_ifconf_params {
__be32 r0;
__be16 vlanid;
__be16 mtu;
union fw_chnet_ifconf_addr_type {
struct fw_chnet_ifconf_ipv4 {
__be32 addr;
__be32 mask;
__be32 router;
__be32 r0;
__be64 r1;
} ipv4;
struct fw_chnet_ifconf_ipv6 {
__u8 prefix_len;
__u8 r0;
__be16 r1;
__be32 r2;
__be64 addr_hi;
__be64 addr_lo;
__be64 router_hi;
__be64 router_lo;
} ipv6;
} in_attr;
} param;
};
enum fw_foiscsi_node_type {
FW_FOISCSI_NODE_TYPE_INITIATOR = 0,
FW_FOISCSI_NODE_TYPE_TARGET,
};
enum fw_foiscsi_session_type {
FW_FOISCSI_SESSION_TYPE_DISCOVERY = 0,
FW_FOISCSI_SESSION_TYPE_NORMAL,
};
enum fw_foiscsi_auth_policy {
FW_FOISCSI_AUTH_POLICY_ONEWAY = 0,
FW_FOISCSI_AUTH_POLICY_MUTUAL,
};
enum fw_foiscsi_auth_method {
FW_FOISCSI_AUTH_METHOD_NONE = 0,
FW_FOISCSI_AUTH_METHOD_CHAP,
FW_FOISCSI_AUTH_METHOD_CHAP_FST,
FW_FOISCSI_AUTH_METHOD_CHAP_SEC,
};
enum fw_foiscsi_digest_type {
FW_FOISCSI_DIGEST_TYPE_NONE = 0,
FW_FOISCSI_DIGEST_TYPE_CRC32,
FW_FOISCSI_DIGEST_TYPE_CRC32_FST,
FW_FOISCSI_DIGEST_TYPE_CRC32_SEC,
};
enum fw_foiscsi_wr_subop {
FW_FOISCSI_WR_SUBOP_ADD = 1,
FW_FOISCSI_WR_SUBOP_DEL = 2,
FW_FOISCSI_WR_SUBOP_MOD = 4,
};
enum fw_foiscsi_ctrl_state {
FW_FOISCSI_CTRL_STATE_FREE = 0,
FW_FOISCSI_CTRL_STATE_ONLINE = 1,
FW_FOISCSI_CTRL_STATE_FAILED,
FW_FOISCSI_CTRL_STATE_IN_RECOVERY,
FW_FOISCSI_CTRL_STATE_REDIRECT,
};
struct fw_rdev_wr {
__be32 op_to_immdlen;
__be32 alloc_to_len16;
__be64 cookie;
__u8 protocol;
__u8 event_cause;
__u8 cur_state;
__u8 prev_state;
__be32 flags_to_assoc_flowid;
union rdev_entry {
struct fcoe_rdev_entry {
__be32 flowid;
__u8 protocol;
__u8 event_cause;
__u8 flags;
__u8 rjt_reason;
__u8 cur_login_st;
__u8 prev_login_st;
__be16 rcv_fr_sz;
__u8 rd_xfer_rdy_to_rport_type;
__u8 vft_to_qos;
__u8 org_proc_assoc_to_acc_rsp_code;
__u8 enh_disc_to_tgt;
__u8 wwnn[8];
__u8 wwpn[8];
__be16 iqid;
__u8 fc_oui[3];
__u8 r_id[3];
} fcoe_rdev;
struct iscsi_rdev_entry {
__be32 flowid;
__u8 protocol;
__u8 event_cause;
__u8 flags;
__u8 r3;
__be16 iscsi_opts;
__be16 tcp_opts;
__be16 ip_opts;
__be16 max_rcv_len;
__be16 max_snd_len;
__be16 first_brst_len;
__be16 max_brst_len;
__be16 r4;
__be16 def_time2wait;
__be16 def_time2ret;
__be16 nop_out_intrvl;
__be16 non_scsi_to;
__be16 isid;
__be16 tsid;
__be16 port;
__be16 tpgt;
__u8 r5[6];
__be16 iqid;
} iscsi_rdev;
} u;
};
#define S_FW_RDEV_WR_IMMDLEN 0
#define M_FW_RDEV_WR_IMMDLEN 0xff
#define V_FW_RDEV_WR_IMMDLEN(x) ((x) << S_FW_RDEV_WR_IMMDLEN)
#define G_FW_RDEV_WR_IMMDLEN(x) \
(((x) >> S_FW_RDEV_WR_IMMDLEN) & M_FW_RDEV_WR_IMMDLEN)
#define S_FW_RDEV_WR_ALLOC 31
#define M_FW_RDEV_WR_ALLOC 0x1
#define V_FW_RDEV_WR_ALLOC(x) ((x) << S_FW_RDEV_WR_ALLOC)
#define G_FW_RDEV_WR_ALLOC(x) \
(((x) >> S_FW_RDEV_WR_ALLOC) & M_FW_RDEV_WR_ALLOC)
#define F_FW_RDEV_WR_ALLOC V_FW_RDEV_WR_ALLOC(1U)
#define S_FW_RDEV_WR_FREE 30
#define M_FW_RDEV_WR_FREE 0x1
#define V_FW_RDEV_WR_FREE(x) ((x) << S_FW_RDEV_WR_FREE)
#define G_FW_RDEV_WR_FREE(x) \
(((x) >> S_FW_RDEV_WR_FREE) & M_FW_RDEV_WR_FREE)
#define F_FW_RDEV_WR_FREE V_FW_RDEV_WR_FREE(1U)
#define S_FW_RDEV_WR_MODIFY 29
#define M_FW_RDEV_WR_MODIFY 0x1
#define V_FW_RDEV_WR_MODIFY(x) ((x) << S_FW_RDEV_WR_MODIFY)
#define G_FW_RDEV_WR_MODIFY(x) \
(((x) >> S_FW_RDEV_WR_MODIFY) & M_FW_RDEV_WR_MODIFY)
#define F_FW_RDEV_WR_MODIFY V_FW_RDEV_WR_MODIFY(1U)
#define S_FW_RDEV_WR_FLOWID 8
#define M_FW_RDEV_WR_FLOWID 0xfffff
#define V_FW_RDEV_WR_FLOWID(x) ((x) << S_FW_RDEV_WR_FLOWID)
#define G_FW_RDEV_WR_FLOWID(x) \
(((x) >> S_FW_RDEV_WR_FLOWID) & M_FW_RDEV_WR_FLOWID)
#define S_FW_RDEV_WR_LEN16 0
#define M_FW_RDEV_WR_LEN16 0xff
#define V_FW_RDEV_WR_LEN16(x) ((x) << S_FW_RDEV_WR_LEN16)
#define G_FW_RDEV_WR_LEN16(x) \
(((x) >> S_FW_RDEV_WR_LEN16) & M_FW_RDEV_WR_LEN16)
#define S_FW_RDEV_WR_FLAGS 24
#define M_FW_RDEV_WR_FLAGS 0xff
#define V_FW_RDEV_WR_FLAGS(x) ((x) << S_FW_RDEV_WR_FLAGS)
#define G_FW_RDEV_WR_FLAGS(x) \
(((x) >> S_FW_RDEV_WR_FLAGS) & M_FW_RDEV_WR_FLAGS)
#define S_FW_RDEV_WR_GET_NEXT 20
#define M_FW_RDEV_WR_GET_NEXT 0xf
#define V_FW_RDEV_WR_GET_NEXT(x) ((x) << S_FW_RDEV_WR_GET_NEXT)
#define G_FW_RDEV_WR_GET_NEXT(x) \
(((x) >> S_FW_RDEV_WR_GET_NEXT) & M_FW_RDEV_WR_GET_NEXT)
#define S_FW_RDEV_WR_ASSOC_FLOWID 0
#define M_FW_RDEV_WR_ASSOC_FLOWID 0xfffff
#define V_FW_RDEV_WR_ASSOC_FLOWID(x) ((x) << S_FW_RDEV_WR_ASSOC_FLOWID)
#define G_FW_RDEV_WR_ASSOC_FLOWID(x) \
(((x) >> S_FW_RDEV_WR_ASSOC_FLOWID) & M_FW_RDEV_WR_ASSOC_FLOWID)
#define S_FW_RDEV_WR_RJT 7
#define M_FW_RDEV_WR_RJT 0x1
#define V_FW_RDEV_WR_RJT(x) ((x) << S_FW_RDEV_WR_RJT)
#define G_FW_RDEV_WR_RJT(x) (((x) >> S_FW_RDEV_WR_RJT) & M_FW_RDEV_WR_RJT)
#define F_FW_RDEV_WR_RJT V_FW_RDEV_WR_RJT(1U)
#define S_FW_RDEV_WR_REASON 0
#define M_FW_RDEV_WR_REASON 0x7f
#define V_FW_RDEV_WR_REASON(x) ((x) << S_FW_RDEV_WR_REASON)
#define G_FW_RDEV_WR_REASON(x) \
(((x) >> S_FW_RDEV_WR_REASON) & M_FW_RDEV_WR_REASON)
#define S_FW_RDEV_WR_RD_XFER_RDY 7
#define M_FW_RDEV_WR_RD_XFER_RDY 0x1
#define V_FW_RDEV_WR_RD_XFER_RDY(x) ((x) << S_FW_RDEV_WR_RD_XFER_RDY)
#define G_FW_RDEV_WR_RD_XFER_RDY(x) \
(((x) >> S_FW_RDEV_WR_RD_XFER_RDY) & M_FW_RDEV_WR_RD_XFER_RDY)
#define F_FW_RDEV_WR_RD_XFER_RDY V_FW_RDEV_WR_RD_XFER_RDY(1U)
#define S_FW_RDEV_WR_WR_XFER_RDY 6
#define M_FW_RDEV_WR_WR_XFER_RDY 0x1
#define V_FW_RDEV_WR_WR_XFER_RDY(x) ((x) << S_FW_RDEV_WR_WR_XFER_RDY)
#define G_FW_RDEV_WR_WR_XFER_RDY(x) \
(((x) >> S_FW_RDEV_WR_WR_XFER_RDY) & M_FW_RDEV_WR_WR_XFER_RDY)
#define F_FW_RDEV_WR_WR_XFER_RDY V_FW_RDEV_WR_WR_XFER_RDY(1U)
#define S_FW_RDEV_WR_FC_SP 5
#define M_FW_RDEV_WR_FC_SP 0x1
#define V_FW_RDEV_WR_FC_SP(x) ((x) << S_FW_RDEV_WR_FC_SP)
#define G_FW_RDEV_WR_FC_SP(x) \
(((x) >> S_FW_RDEV_WR_FC_SP) & M_FW_RDEV_WR_FC_SP)
#define F_FW_RDEV_WR_FC_SP V_FW_RDEV_WR_FC_SP(1U)
#define S_FW_RDEV_WR_RPORT_TYPE 0
#define M_FW_RDEV_WR_RPORT_TYPE 0x1f
#define V_FW_RDEV_WR_RPORT_TYPE(x) ((x) << S_FW_RDEV_WR_RPORT_TYPE)
#define G_FW_RDEV_WR_RPORT_TYPE(x) \
(((x) >> S_FW_RDEV_WR_RPORT_TYPE) & M_FW_RDEV_WR_RPORT_TYPE)
#define S_FW_RDEV_WR_VFT 7
#define M_FW_RDEV_WR_VFT 0x1
#define V_FW_RDEV_WR_VFT(x) ((x) << S_FW_RDEV_WR_VFT)
#define G_FW_RDEV_WR_VFT(x) (((x) >> S_FW_RDEV_WR_VFT) & M_FW_RDEV_WR_VFT)
#define F_FW_RDEV_WR_VFT V_FW_RDEV_WR_VFT(1U)
#define S_FW_RDEV_WR_NPIV 6
#define M_FW_RDEV_WR_NPIV 0x1
#define V_FW_RDEV_WR_NPIV(x) ((x) << S_FW_RDEV_WR_NPIV)
#define G_FW_RDEV_WR_NPIV(x) \
(((x) >> S_FW_RDEV_WR_NPIV) & M_FW_RDEV_WR_NPIV)
#define F_FW_RDEV_WR_NPIV V_FW_RDEV_WR_NPIV(1U)
#define S_FW_RDEV_WR_CLASS 4
#define M_FW_RDEV_WR_CLASS 0x3
#define V_FW_RDEV_WR_CLASS(x) ((x) << S_FW_RDEV_WR_CLASS)
#define G_FW_RDEV_WR_CLASS(x) \
(((x) >> S_FW_RDEV_WR_CLASS) & M_FW_RDEV_WR_CLASS)
#define S_FW_RDEV_WR_SEQ_DEL 3
#define M_FW_RDEV_WR_SEQ_DEL 0x1
#define V_FW_RDEV_WR_SEQ_DEL(x) ((x) << S_FW_RDEV_WR_SEQ_DEL)
#define G_FW_RDEV_WR_SEQ_DEL(x) \
(((x) >> S_FW_RDEV_WR_SEQ_DEL) & M_FW_RDEV_WR_SEQ_DEL)
#define F_FW_RDEV_WR_SEQ_DEL V_FW_RDEV_WR_SEQ_DEL(1U)
#define S_FW_RDEV_WR_PRIO_PREEMP 2
#define M_FW_RDEV_WR_PRIO_PREEMP 0x1
#define V_FW_RDEV_WR_PRIO_PREEMP(x) ((x) << S_FW_RDEV_WR_PRIO_PREEMP)
#define G_FW_RDEV_WR_PRIO_PREEMP(x) \
(((x) >> S_FW_RDEV_WR_PRIO_PREEMP) & M_FW_RDEV_WR_PRIO_PREEMP)
#define F_FW_RDEV_WR_PRIO_PREEMP V_FW_RDEV_WR_PRIO_PREEMP(1U)
#define S_FW_RDEV_WR_PREF 1
#define M_FW_RDEV_WR_PREF 0x1
#define V_FW_RDEV_WR_PREF(x) ((x) << S_FW_RDEV_WR_PREF)
#define G_FW_RDEV_WR_PREF(x) \
(((x) >> S_FW_RDEV_WR_PREF) & M_FW_RDEV_WR_PREF)
#define F_FW_RDEV_WR_PREF V_FW_RDEV_WR_PREF(1U)
#define S_FW_RDEV_WR_QOS 0
#define M_FW_RDEV_WR_QOS 0x1
#define V_FW_RDEV_WR_QOS(x) ((x) << S_FW_RDEV_WR_QOS)
#define G_FW_RDEV_WR_QOS(x) (((x) >> S_FW_RDEV_WR_QOS) & M_FW_RDEV_WR_QOS)
#define F_FW_RDEV_WR_QOS V_FW_RDEV_WR_QOS(1U)
#define S_FW_RDEV_WR_ORG_PROC_ASSOC 7
#define M_FW_RDEV_WR_ORG_PROC_ASSOC 0x1
#define V_FW_RDEV_WR_ORG_PROC_ASSOC(x) ((x) << S_FW_RDEV_WR_ORG_PROC_ASSOC)
#define G_FW_RDEV_WR_ORG_PROC_ASSOC(x) \
(((x) >> S_FW_RDEV_WR_ORG_PROC_ASSOC) & M_FW_RDEV_WR_ORG_PROC_ASSOC)
#define F_FW_RDEV_WR_ORG_PROC_ASSOC V_FW_RDEV_WR_ORG_PROC_ASSOC(1U)
#define S_FW_RDEV_WR_RSP_PROC_ASSOC 6
#define M_FW_RDEV_WR_RSP_PROC_ASSOC 0x1
#define V_FW_RDEV_WR_RSP_PROC_ASSOC(x) ((x) << S_FW_RDEV_WR_RSP_PROC_ASSOC)
#define G_FW_RDEV_WR_RSP_PROC_ASSOC(x) \
(((x) >> S_FW_RDEV_WR_RSP_PROC_ASSOC) & M_FW_RDEV_WR_RSP_PROC_ASSOC)
#define F_FW_RDEV_WR_RSP_PROC_ASSOC V_FW_RDEV_WR_RSP_PROC_ASSOC(1U)
#define S_FW_RDEV_WR_IMAGE_PAIR 5
#define M_FW_RDEV_WR_IMAGE_PAIR 0x1
#define V_FW_RDEV_WR_IMAGE_PAIR(x) ((x) << S_FW_RDEV_WR_IMAGE_PAIR)
#define G_FW_RDEV_WR_IMAGE_PAIR(x) \
(((x) >> S_FW_RDEV_WR_IMAGE_PAIR) & M_FW_RDEV_WR_IMAGE_PAIR)
#define F_FW_RDEV_WR_IMAGE_PAIR V_FW_RDEV_WR_IMAGE_PAIR(1U)
#define S_FW_RDEV_WR_ACC_RSP_CODE 0
#define M_FW_RDEV_WR_ACC_RSP_CODE 0x1f
#define V_FW_RDEV_WR_ACC_RSP_CODE(x) ((x) << S_FW_RDEV_WR_ACC_RSP_CODE)
#define G_FW_RDEV_WR_ACC_RSP_CODE(x) \
(((x) >> S_FW_RDEV_WR_ACC_RSP_CODE) & M_FW_RDEV_WR_ACC_RSP_CODE)
#define S_FW_RDEV_WR_ENH_DISC 7
#define M_FW_RDEV_WR_ENH_DISC 0x1
#define V_FW_RDEV_WR_ENH_DISC(x) ((x) << S_FW_RDEV_WR_ENH_DISC)
#define G_FW_RDEV_WR_ENH_DISC(x) \
(((x) >> S_FW_RDEV_WR_ENH_DISC) & M_FW_RDEV_WR_ENH_DISC)
#define F_FW_RDEV_WR_ENH_DISC V_FW_RDEV_WR_ENH_DISC(1U)
#define S_FW_RDEV_WR_REC 6
#define M_FW_RDEV_WR_REC 0x1
#define V_FW_RDEV_WR_REC(x) ((x) << S_FW_RDEV_WR_REC)
#define G_FW_RDEV_WR_REC(x) (((x) >> S_FW_RDEV_WR_REC) & M_FW_RDEV_WR_REC)
#define F_FW_RDEV_WR_REC V_FW_RDEV_WR_REC(1U)
#define S_FW_RDEV_WR_TASK_RETRY_ID 5
#define M_FW_RDEV_WR_TASK_RETRY_ID 0x1
#define V_FW_RDEV_WR_TASK_RETRY_ID(x) ((x) << S_FW_RDEV_WR_TASK_RETRY_ID)
#define G_FW_RDEV_WR_TASK_RETRY_ID(x) \
(((x) >> S_FW_RDEV_WR_TASK_RETRY_ID) & M_FW_RDEV_WR_TASK_RETRY_ID)
#define F_FW_RDEV_WR_TASK_RETRY_ID V_FW_RDEV_WR_TASK_RETRY_ID(1U)
#define S_FW_RDEV_WR_RETRY 4
#define M_FW_RDEV_WR_RETRY 0x1
#define V_FW_RDEV_WR_RETRY(x) ((x) << S_FW_RDEV_WR_RETRY)
#define G_FW_RDEV_WR_RETRY(x) \
(((x) >> S_FW_RDEV_WR_RETRY) & M_FW_RDEV_WR_RETRY)
#define F_FW_RDEV_WR_RETRY V_FW_RDEV_WR_RETRY(1U)
#define S_FW_RDEV_WR_CONF_CMPL 3
#define M_FW_RDEV_WR_CONF_CMPL 0x1
#define V_FW_RDEV_WR_CONF_CMPL(x) ((x) << S_FW_RDEV_WR_CONF_CMPL)
#define G_FW_RDEV_WR_CONF_CMPL(x) \
(((x) >> S_FW_RDEV_WR_CONF_CMPL) & M_FW_RDEV_WR_CONF_CMPL)
#define F_FW_RDEV_WR_CONF_CMPL V_FW_RDEV_WR_CONF_CMPL(1U)
#define S_FW_RDEV_WR_DATA_OVLY 2
#define M_FW_RDEV_WR_DATA_OVLY 0x1
#define V_FW_RDEV_WR_DATA_OVLY(x) ((x) << S_FW_RDEV_WR_DATA_OVLY)
#define G_FW_RDEV_WR_DATA_OVLY(x) \
(((x) >> S_FW_RDEV_WR_DATA_OVLY) & M_FW_RDEV_WR_DATA_OVLY)
#define F_FW_RDEV_WR_DATA_OVLY V_FW_RDEV_WR_DATA_OVLY(1U)
#define S_FW_RDEV_WR_INI 1
#define M_FW_RDEV_WR_INI 0x1
#define V_FW_RDEV_WR_INI(x) ((x) << S_FW_RDEV_WR_INI)
#define G_FW_RDEV_WR_INI(x) (((x) >> S_FW_RDEV_WR_INI) & M_FW_RDEV_WR_INI)
#define F_FW_RDEV_WR_INI V_FW_RDEV_WR_INI(1U)
#define S_FW_RDEV_WR_TGT 0
#define M_FW_RDEV_WR_TGT 0x1
#define V_FW_RDEV_WR_TGT(x) ((x) << S_FW_RDEV_WR_TGT)
#define G_FW_RDEV_WR_TGT(x) (((x) >> S_FW_RDEV_WR_TGT) & M_FW_RDEV_WR_TGT)
#define F_FW_RDEV_WR_TGT V_FW_RDEV_WR_TGT(1U)
struct fw_foiscsi_node_wr {
__be32 op_to_immdlen;
__be32 flowid_len16;
__u64 cookie;
__u8 subop;
__u8 status;
__u8 alias_len;
__u8 iqn_len;
__be32 node_flowid;
__be16 nodeid;
__be16 login_retry;
__be16 retry_timeout;
__be16 r3;
__u8 iqn[224];
__u8 alias[224];
};
#define S_FW_FOISCSI_NODE_WR_IMMDLEN 0
#define M_FW_FOISCSI_NODE_WR_IMMDLEN 0xffff
#define V_FW_FOISCSI_NODE_WR_IMMDLEN(x) ((x) << S_FW_FOISCSI_NODE_WR_IMMDLEN)
#define G_FW_FOISCSI_NODE_WR_IMMDLEN(x) \
(((x) >> S_FW_FOISCSI_NODE_WR_IMMDLEN) & M_FW_FOISCSI_NODE_WR_IMMDLEN)
struct fw_foiscsi_ctrl_wr {
__be32 op_compl;
__be32 flowid_len16;
__u64 cookie;
__u8 subop;
__u8 status;
__u8 ctrl_state;
__u8 io_state;
__be32 node_id;
__be32 ctrl_id;
__be32 io_id;
struct fw_foiscsi_sess_attr {
__be32 sess_type_to_erl;
__be16 max_conn;
__be16 max_r2t;
__be16 time2wait;
__be16 time2retain;
__be32 max_burst;
__be32 first_burst;
__be32 r1;
} sess_attr;
struct fw_foiscsi_conn_attr {
__be32 hdigest_to_ddp_pgsz;
__be32 max_rcv_dsl;
__be32 ping_tmo;
__be16 dst_port;
__be16 src_port;
union fw_foiscsi_conn_attr_addr {
struct fw_foiscsi_conn_attr_ipv6 {
__be64 dst_addr[2];
__be64 src_addr[2];
} ipv6_addr;
struct fw_foiscsi_conn_attr_ipv4 {
__be32 dst_addr;
__be32 src_addr;
} ipv4_addr;
} u;
} conn_attr;
__u8 tgt_name_len;
__u8 r3[7];
__u8 tgt_name[FW_FOISCSI_NAME_MAX_LEN];
};
#define S_FW_FOISCSI_CTRL_WR_SESS_TYPE 30
#define M_FW_FOISCSI_CTRL_WR_SESS_TYPE 0x3
#define V_FW_FOISCSI_CTRL_WR_SESS_TYPE(x) \
((x) << S_FW_FOISCSI_CTRL_WR_SESS_TYPE)
#define G_FW_FOISCSI_CTRL_WR_SESS_TYPE(x) \
(((x) >> S_FW_FOISCSI_CTRL_WR_SESS_TYPE) & M_FW_FOISCSI_CTRL_WR_SESS_TYPE)
#define S_FW_FOISCSI_CTRL_WR_SEQ_INORDER 29
#define M_FW_FOISCSI_CTRL_WR_SEQ_INORDER 0x1
#define V_FW_FOISCSI_CTRL_WR_SEQ_INORDER(x) \
((x) << S_FW_FOISCSI_CTRL_WR_SEQ_INORDER)
#define G_FW_FOISCSI_CTRL_WR_SEQ_INORDER(x) \
(((x) >> S_FW_FOISCSI_CTRL_WR_SEQ_INORDER) & \
M_FW_FOISCSI_CTRL_WR_SEQ_INORDER)
#define F_FW_FOISCSI_CTRL_WR_SEQ_INORDER \
V_FW_FOISCSI_CTRL_WR_SEQ_INORDER(1U)
#define S_FW_FOISCSI_CTRL_WR_PDU_INORDER 28
#define M_FW_FOISCSI_CTRL_WR_PDU_INORDER 0x1
#define V_FW_FOISCSI_CTRL_WR_PDU_INORDER(x) \
((x) << S_FW_FOISCSI_CTRL_WR_PDU_INORDER)
#define G_FW_FOISCSI_CTRL_WR_PDU_INORDER(x) \
(((x) >> S_FW_FOISCSI_CTRL_WR_PDU_INORDER) & \
M_FW_FOISCSI_CTRL_WR_PDU_INORDER)
#define F_FW_FOISCSI_CTRL_WR_PDU_INORDER \
V_FW_FOISCSI_CTRL_WR_PDU_INORDER(1U)
#define S_FW_FOISCSI_CTRL_WR_IMMD_DATA_EN 27
#define M_FW_FOISCSI_CTRL_WR_IMMD_DATA_EN 0x1
#define V_FW_FOISCSI_CTRL_WR_IMMD_DATA_EN(x) \
((x) << S_FW_FOISCSI_CTRL_WR_IMMD_DATA_EN)
#define G_FW_FOISCSI_CTRL_WR_IMMD_DATA_EN(x) \
(((x) >> S_FW_FOISCSI_CTRL_WR_IMMD_DATA_EN) & \
M_FW_FOISCSI_CTRL_WR_IMMD_DATA_EN)
#define F_FW_FOISCSI_CTRL_WR_IMMD_DATA_EN \
V_FW_FOISCSI_CTRL_WR_IMMD_DATA_EN(1U)
#define S_FW_FOISCSI_CTRL_WR_INIT_R2T_EN 26
#define M_FW_FOISCSI_CTRL_WR_INIT_R2T_EN 0x1
#define V_FW_FOISCSI_CTRL_WR_INIT_R2T_EN(x) \
((x) << S_FW_FOISCSI_CTRL_WR_INIT_R2T_EN)
#define G_FW_FOISCSI_CTRL_WR_INIT_R2T_EN(x) \
(((x) >> S_FW_FOISCSI_CTRL_WR_INIT_R2T_EN) & \
M_FW_FOISCSI_CTRL_WR_INIT_R2T_EN)
#define F_FW_FOISCSI_CTRL_WR_INIT_R2T_EN \
V_FW_FOISCSI_CTRL_WR_INIT_R2T_EN(1U)
#define S_FW_FOISCSI_CTRL_WR_ERL 24
#define M_FW_FOISCSI_CTRL_WR_ERL 0x3
#define V_FW_FOISCSI_CTRL_WR_ERL(x) ((x) << S_FW_FOISCSI_CTRL_WR_ERL)
#define G_FW_FOISCSI_CTRL_WR_ERL(x) \
(((x) >> S_FW_FOISCSI_CTRL_WR_ERL) & M_FW_FOISCSI_CTRL_WR_ERL)
#define S_FW_FOISCSI_CTRL_WR_HDIGEST 30
#define M_FW_FOISCSI_CTRL_WR_HDIGEST 0x3
#define V_FW_FOISCSI_CTRL_WR_HDIGEST(x) ((x) << S_FW_FOISCSI_CTRL_WR_HDIGEST)
#define G_FW_FOISCSI_CTRL_WR_HDIGEST(x) \
(((x) >> S_FW_FOISCSI_CTRL_WR_HDIGEST) & M_FW_FOISCSI_CTRL_WR_HDIGEST)
#define S_FW_FOISCSI_CTRL_WR_DDIGEST 28
#define M_FW_FOISCSI_CTRL_WR_DDIGEST 0x3
#define V_FW_FOISCSI_CTRL_WR_DDIGEST(x) ((x) << S_FW_FOISCSI_CTRL_WR_DDIGEST)
#define G_FW_FOISCSI_CTRL_WR_DDIGEST(x) \
(((x) >> S_FW_FOISCSI_CTRL_WR_DDIGEST) & M_FW_FOISCSI_CTRL_WR_DDIGEST)
#define S_FW_FOISCSI_CTRL_WR_AUTH_METHOD 25
#define M_FW_FOISCSI_CTRL_WR_AUTH_METHOD 0x7
#define V_FW_FOISCSI_CTRL_WR_AUTH_METHOD(x) \
((x) << S_FW_FOISCSI_CTRL_WR_AUTH_METHOD)
#define G_FW_FOISCSI_CTRL_WR_AUTH_METHOD(x) \
(((x) >> S_FW_FOISCSI_CTRL_WR_AUTH_METHOD) & \
M_FW_FOISCSI_CTRL_WR_AUTH_METHOD)
#define S_FW_FOISCSI_CTRL_WR_AUTH_POLICY 23
#define M_FW_FOISCSI_CTRL_WR_AUTH_POLICY 0x3
#define V_FW_FOISCSI_CTRL_WR_AUTH_POLICY(x) \
((x) << S_FW_FOISCSI_CTRL_WR_AUTH_POLICY)
#define G_FW_FOISCSI_CTRL_WR_AUTH_POLICY(x) \
(((x) >> S_FW_FOISCSI_CTRL_WR_AUTH_POLICY) & \
M_FW_FOISCSI_CTRL_WR_AUTH_POLICY)
#define S_FW_FOISCSI_CTRL_WR_DDP_PGSZ 21
#define M_FW_FOISCSI_CTRL_WR_DDP_PGSZ 0x3
#define V_FW_FOISCSI_CTRL_WR_DDP_PGSZ(x) \
((x) << S_FW_FOISCSI_CTRL_WR_DDP_PGSZ)
#define G_FW_FOISCSI_CTRL_WR_DDP_PGSZ(x) \
(((x) >> S_FW_FOISCSI_CTRL_WR_DDP_PGSZ) & M_FW_FOISCSI_CTRL_WR_DDP_PGSZ)
#define S_FW_FOISCSI_CTRL_WR_IPV6 20
#define M_FW_FOISCSI_CTRL_WR_IPV6 0x1
#define V_FW_FOISCSI_CTRL_WR_IPV6(x) ((x) << S_FW_FOISCSI_CTRL_WR_IPV6)
#define G_FW_FOISCSI_CTRL_WR_IPV6(x) \
(((x) >> S_FW_FOISCSI_CTRL_WR_IPV6) & M_FW_FOISCSI_CTRL_WR_IPV6)
#define F_FW_FOISCSI_CTRL_WR_IPV6 V_FW_FOISCSI_CTRL_WR_IPV6(1U)
struct fw_foiscsi_chap_wr {
__be32 op_compl;
__be32 flowid_len16;
__u64 cookie;
__u8 status;
__u8 id_len;
__u8 sec_len;
__u8 node_type;
__be16 node_id;
__u8 r3[2];
__u8 chap_id[FW_FOISCSI_NAME_MAX_LEN];
__u8 chap_sec[FW_FOISCSI_CHAP_SEC_MAX_LEN];
};
/******************************************************************************
* C O i S C S I W O R K R E Q U E S T S
********************************************/
enum fw_chnet_addr_type {
FW_CHNET_ADDD_TYPE_NONE = 0,
FW_CHNET_ADDR_TYPE_IPV4,
FW_CHNET_ADDR_TYPE_IPV6,
};
+enum fw_msg_wr_type {
+ FW_MSG_WR_TYPE_RPL = 0,
+ FW_MSG_WR_TYPE_ERR,
+ FW_MSG_WR_TYPE_PLD,
+};
+
struct fw_coiscsi_tgt_wr {
__be32 op_compl;
__be32 flowid_len16;
__u64 cookie;
__u8 subop;
__u8 status;
__be16 r4;
__be32 flags;
struct fw_coiscsi_tgt_conn_attr {
__be32 in_tid;
__be16 in_port;
__u8 in_type;
__u8 r6;
union fw_coiscsi_tgt_conn_attr_addr {
struct fw_coiscsi_tgt_conn_attr_in_addr {
__be32 addr;
__be32 r7;
__be32 r8[2];
} in_addr;
struct fw_coiscsi_tgt_conn_attr_in_addr6 {
__be64 addr[2];
} in_addr6;
} u;
} conn_attr;
};
struct fw_coiscsi_tgt_conn_wr {
__be32 op_compl;
__be32 flowid_len16;
__u64 cookie;
__u8 subop;
__u8 status;
__be16 iq_id;
__be32 in_stid;
__be32 io_id;
__be32 flags;
struct fw_coiscsi_tgt_conn_tcp {
__be16 in_sport;
__be16 in_dport;
__be32 r4;
union fw_coiscsi_tgt_conn_tcp_addr {
struct fw_coiscsi_tgt_conn_tcp_in_addr {
__be32 saddr;
__be32 daddr;
} in_addr;
struct fw_coiscsi_tgt_conn_tcp_in_addr6 {
__be64 saddr[2];
__be64 daddr[2];
} in_addr6;
} u;
} conn_tcp;
struct fw_coiscsi_tgt_conn_iscsi {
__be32 hdigest_to_ddp_pgsz;
__be32 tgt_id;
__be16 max_r2t;
- __be16 max_rcv_dsl;
+ __be16 r5;
__be32 max_burst;
- __be32 nxt_statsn;
+ __be32 max_rdsl;
+ __be32 max_tdsl;
+ __be32 nxt_sn;
__be32 r6;
} conn_iscsi;
};
struct fw_coiscsi_tgt_xmit_wr {
__be32 op_to_immdlen;
__be32 flowid_len16;
__be64 cookie;
__be16 iq_id;
__be16 r4;
__be32 datasn;
__be32 t_xfer_len;
__be32 flags;
+ __be32 tag;
+ __be32 tidx;
+ __be32 r5[2];
};
#define S_FW_COiSCSI_TGT_XMIT_WR_DDGST 23
#define M_FW_COiSCSI_TGT_XMIT_WR_DDGST 0x1
#define V_FW_COiSCSI_TGT_XMIT_WR_DDGST(x) \
((x) << S_FW_COiSCSI_TGT_XMIT_WR_DDGST)
#define G_FW_COiSCSI_TGT_XMIT_WR_DDGST(x) \
(((x) >> S_FW_COiSCSI_TGT_XMIT_WR_DDGST) & M_FW_COiSCSI_TGT_XMIT_WR_DDGST)
#define F_FW_COiSCSI_TGT_XMIT_WR_DDGST V_FW_COiSCSI_TGT_XMIT_WR_DDGST(1U)
#define S_FW_COiSCSI_TGT_XMIT_WR_HDGST 22
#define M_FW_COiSCSI_TGT_XMIT_WR_HDGST 0x1
#define V_FW_COiSCSI_TGT_XMIT_WR_HDGST(x) \
((x) << S_FW_COiSCSI_TGT_XMIT_WR_HDGST)
#define G_FW_COiSCSI_TGT_XMIT_WR_HDGST(x) \
(((x) >> S_FW_COiSCSI_TGT_XMIT_WR_HDGST) & M_FW_COiSCSI_TGT_XMIT_WR_HDGST)
#define F_FW_COiSCSI_TGT_XMIT_WR_HDGST V_FW_COiSCSI_TGT_XMIT_WR_HDGST(1U)
#define S_FW_COiSCSI_TGT_XMIT_WR_DDP 20
#define M_FW_COiSCSI_TGT_XMIT_WR_DDP 0x1
#define V_FW_COiSCSI_TGT_XMIT_WR_DDP(x) ((x) << S_FW_COiSCSI_TGT_XMIT_WR_DDP)
#define G_FW_COiSCSI_TGT_XMIT_WR_DDP(x) \
(((x) >> S_FW_COiSCSI_TGT_XMIT_WR_DDP) & M_FW_COiSCSI_TGT_XMIT_WR_DDP)
#define F_FW_COiSCSI_TGT_XMIT_WR_DDP V_FW_COiSCSI_TGT_XMIT_WR_DDP(1U)
+#define S_FW_COiSCSI_TGT_XMIT_WR_ABORT 19
+#define M_FW_COiSCSI_TGT_XMIT_WR_ABORT 0x1
+#define V_FW_COiSCSI_TGT_XMIT_WR_ABORT(x) \
+ ((x) << S_FW_COiSCSI_TGT_XMIT_WR_ABORT)
+#define G_FW_COiSCSI_TGT_XMIT_WR_ABORT(x) \
+ (((x) >> S_FW_COiSCSI_TGT_XMIT_WR_ABORT) & M_FW_COiSCSI_TGT_XMIT_WR_ABORT)
+#define F_FW_COiSCSI_TGT_XMIT_WR_ABORT V_FW_COiSCSI_TGT_XMIT_WR_ABORT(1U)
+
+#define S_FW_COiSCSI_TGT_XMIT_WR_FINAL 18
+#define M_FW_COiSCSI_TGT_XMIT_WR_FINAL 0x1
+#define V_FW_COiSCSI_TGT_XMIT_WR_FINAL(x) \
+ ((x) << S_FW_COiSCSI_TGT_XMIT_WR_FINAL)
+#define G_FW_COiSCSI_TGT_XMIT_WR_FINAL(x) \
+ (((x) >> S_FW_COiSCSI_TGT_XMIT_WR_FINAL) & M_FW_COiSCSI_TGT_XMIT_WR_FINAL)
+#define F_FW_COiSCSI_TGT_XMIT_WR_FINAL V_FW_COiSCSI_TGT_XMIT_WR_FINAL(1U)
+
+#define S_FW_COiSCSI_TGT_XMIT_WR_PADLEN 16
+#define M_FW_COiSCSI_TGT_XMIT_WR_PADLEN 0x3
+#define V_FW_COiSCSI_TGT_XMIT_WR_PADLEN(x) \
+ ((x) << S_FW_COiSCSI_TGT_XMIT_WR_PADLEN)
+#define G_FW_COiSCSI_TGT_XMIT_WR_PADLEN(x) \
+ (((x) >> S_FW_COiSCSI_TGT_XMIT_WR_PADLEN) & \
+ M_FW_COiSCSI_TGT_XMIT_WR_PADLEN)
+
#define S_FW_COiSCSI_TGT_XMIT_WR_IMMDLEN 0
#define M_FW_COiSCSI_TGT_XMIT_WR_IMMDLEN 0xff
#define V_FW_COiSCSI_TGT_XMIT_WR_IMMDLEN(x) \
((x) << S_FW_COiSCSI_TGT_XMIT_WR_IMMDLEN)
#define G_FW_COiSCSI_TGT_XMIT_WR_IMMDLEN(x) \
(((x) >> S_FW_COiSCSI_TGT_XMIT_WR_IMMDLEN) & \
M_FW_COiSCSI_TGT_XMIT_WR_IMMDLEN)
struct fw_isns_wr {
__be32 op_compl;
__be32 flowid_len16;
__u64 cookie;
__u8 subop;
__u8 status;
__be16 iq_id;
__be32 r4;
struct fw_tcp_conn_attr {
__be32 in_tid;
__be16 in_port;
__u8 in_type;
__u8 r6;
union fw_tcp_conn_attr_addr {
struct fw_tcp_conn_attr_in_addr {
__be32 addr;
__be32 r7;
__be32 r8[2];
} in_addr;
struct fw_tcp_conn_attr_in_addr6 {
__be64 addr[2];
} in_addr6;
} u;
} conn_attr;
};
struct fw_isns_xmit_wr {
- __be32 op_to_immdlen;
- __be32 flowid_len16;
- __be64 cookie;
- __be16 iq_id;
- __be16 r4;
- __be32 xfer_len;
- __be64 r5;
+ __be32 op_to_immdlen;
+ __be32 flowid_len16;
+ __be64 cookie;
+ __be16 iq_id;
+ __be16 r4;
+ __be32 xfer_len;
+ __be64 r5;
};
#define S_FW_ISNS_XMIT_WR_IMMDLEN 0
#define M_FW_ISNS_XMIT_WR_IMMDLEN 0xff
#define V_FW_ISNS_XMIT_WR_IMMDLEN(x) ((x) << S_FW_ISNS_XMIT_WR_IMMDLEN)
#define G_FW_ISNS_XMIT_WR_IMMDLEN(x) \
(((x) >> S_FW_ISNS_XMIT_WR_IMMDLEN) & M_FW_ISNS_XMIT_WR_IMMDLEN)
-
/******************************************************************************
* F O F C O E W O R K R E Q U E S T s
*******************************************/
struct fw_fcoe_els_ct_wr {
__be32 op_immdlen;
__be32 flowid_len16;
__be64 cookie;
__be16 iqid;
__u8 tmo_val;
__u8 els_ct_type;
__u8 ctl_pri;
__u8 cp_en_class;
__be16 xfer_cnt;
__u8 fl_to_sp;
__u8 l_id[3];
__u8 r5;
__u8 r_id[3];
__be64 rsp_dmaaddr;
__be32 rsp_dmalen;
__be32 r6;
};
#define S_FW_FCOE_ELS_CT_WR_OPCODE 24
#define M_FW_FCOE_ELS_CT_WR_OPCODE 0xff
#define V_FW_FCOE_ELS_CT_WR_OPCODE(x) ((x) << S_FW_FCOE_ELS_CT_WR_OPCODE)
#define G_FW_FCOE_ELS_CT_WR_OPCODE(x) \
(((x) >> S_FW_FCOE_ELS_CT_WR_OPCODE) & M_FW_FCOE_ELS_CT_WR_OPCODE)
#define S_FW_FCOE_ELS_CT_WR_IMMDLEN 0
#define M_FW_FCOE_ELS_CT_WR_IMMDLEN 0xff
#define V_FW_FCOE_ELS_CT_WR_IMMDLEN(x) ((x) << S_FW_FCOE_ELS_CT_WR_IMMDLEN)
#define G_FW_FCOE_ELS_CT_WR_IMMDLEN(x) \
(((x) >> S_FW_FCOE_ELS_CT_WR_IMMDLEN) & M_FW_FCOE_ELS_CT_WR_IMMDLEN)
#define S_FW_FCOE_ELS_CT_WR_FLOWID 8
#define M_FW_FCOE_ELS_CT_WR_FLOWID 0xfffff
#define V_FW_FCOE_ELS_CT_WR_FLOWID(x) ((x) << S_FW_FCOE_ELS_CT_WR_FLOWID)
#define G_FW_FCOE_ELS_CT_WR_FLOWID(x) \
(((x) >> S_FW_FCOE_ELS_CT_WR_FLOWID) & M_FW_FCOE_ELS_CT_WR_FLOWID)
#define S_FW_FCOE_ELS_CT_WR_LEN16 0
#define M_FW_FCOE_ELS_CT_WR_LEN16 0xff
#define V_FW_FCOE_ELS_CT_WR_LEN16(x) ((x) << S_FW_FCOE_ELS_CT_WR_LEN16)
#define G_FW_FCOE_ELS_CT_WR_LEN16(x) \
(((x) >> S_FW_FCOE_ELS_CT_WR_LEN16) & M_FW_FCOE_ELS_CT_WR_LEN16)
#define S_FW_FCOE_ELS_CT_WR_CP_EN 6
#define M_FW_FCOE_ELS_CT_WR_CP_EN 0x3
#define V_FW_FCOE_ELS_CT_WR_CP_EN(x) ((x) << S_FW_FCOE_ELS_CT_WR_CP_EN)
#define G_FW_FCOE_ELS_CT_WR_CP_EN(x) \
(((x) >> S_FW_FCOE_ELS_CT_WR_CP_EN) & M_FW_FCOE_ELS_CT_WR_CP_EN)
#define S_FW_FCOE_ELS_CT_WR_CLASS 4
#define M_FW_FCOE_ELS_CT_WR_CLASS 0x3
#define V_FW_FCOE_ELS_CT_WR_CLASS(x) ((x) << S_FW_FCOE_ELS_CT_WR_CLASS)
#define G_FW_FCOE_ELS_CT_WR_CLASS(x) \
(((x) >> S_FW_FCOE_ELS_CT_WR_CLASS) & M_FW_FCOE_ELS_CT_WR_CLASS)
#define S_FW_FCOE_ELS_CT_WR_FL 2
#define M_FW_FCOE_ELS_CT_WR_FL 0x1
#define V_FW_FCOE_ELS_CT_WR_FL(x) ((x) << S_FW_FCOE_ELS_CT_WR_FL)
#define G_FW_FCOE_ELS_CT_WR_FL(x) \
(((x) >> S_FW_FCOE_ELS_CT_WR_FL) & M_FW_FCOE_ELS_CT_WR_FL)
#define F_FW_FCOE_ELS_CT_WR_FL V_FW_FCOE_ELS_CT_WR_FL(1U)
#define S_FW_FCOE_ELS_CT_WR_NPIV 1
#define M_FW_FCOE_ELS_CT_WR_NPIV 0x1
#define V_FW_FCOE_ELS_CT_WR_NPIV(x) ((x) << S_FW_FCOE_ELS_CT_WR_NPIV)
#define G_FW_FCOE_ELS_CT_WR_NPIV(x) \
(((x) >> S_FW_FCOE_ELS_CT_WR_NPIV) & M_FW_FCOE_ELS_CT_WR_NPIV)
#define F_FW_FCOE_ELS_CT_WR_NPIV V_FW_FCOE_ELS_CT_WR_NPIV(1U)
#define S_FW_FCOE_ELS_CT_WR_SP 0
#define M_FW_FCOE_ELS_CT_WR_SP 0x1
#define V_FW_FCOE_ELS_CT_WR_SP(x) ((x) << S_FW_FCOE_ELS_CT_WR_SP)
#define G_FW_FCOE_ELS_CT_WR_SP(x) \
(((x) >> S_FW_FCOE_ELS_CT_WR_SP) & M_FW_FCOE_ELS_CT_WR_SP)
#define F_FW_FCOE_ELS_CT_WR_SP V_FW_FCOE_ELS_CT_WR_SP(1U)
/******************************************************************************
* S C S I W O R K R E Q U E S T s (FOiSCSI and FCOE unified data path)
*****************************************************************************/
struct fw_scsi_write_wr {
__be32 op_immdlen;
__be32 flowid_len16;
__be64 cookie;
__be16 iqid;
__u8 tmo_val;
__u8 use_xfer_cnt;
union fw_scsi_write_priv {
struct fcoe_write_priv {
__u8 ctl_pri;
__u8 cp_en_class;
__u8 r3_lo[2];
} fcoe;
struct iscsi_write_priv {
__u8 r3[4];
} iscsi;
} u;
__be32 xfer_cnt;
__be32 ini_xfer_cnt;
__be64 rsp_dmaaddr;
__be32 rsp_dmalen;
__be32 r4;
};
#define S_FW_SCSI_WRITE_WR_OPCODE 24
#define M_FW_SCSI_WRITE_WR_OPCODE 0xff
#define V_FW_SCSI_WRITE_WR_OPCODE(x) ((x) << S_FW_SCSI_WRITE_WR_OPCODE)
#define G_FW_SCSI_WRITE_WR_OPCODE(x) \
(((x) >> S_FW_SCSI_WRITE_WR_OPCODE) & M_FW_SCSI_WRITE_WR_OPCODE)
#define S_FW_SCSI_WRITE_WR_IMMDLEN 0
#define M_FW_SCSI_WRITE_WR_IMMDLEN 0xff
#define V_FW_SCSI_WRITE_WR_IMMDLEN(x) ((x) << S_FW_SCSI_WRITE_WR_IMMDLEN)
#define G_FW_SCSI_WRITE_WR_IMMDLEN(x) \
(((x) >> S_FW_SCSI_WRITE_WR_IMMDLEN) & M_FW_SCSI_WRITE_WR_IMMDLEN)
#define S_FW_SCSI_WRITE_WR_FLOWID 8
#define M_FW_SCSI_WRITE_WR_FLOWID 0xfffff
#define V_FW_SCSI_WRITE_WR_FLOWID(x) ((x) << S_FW_SCSI_WRITE_WR_FLOWID)
#define G_FW_SCSI_WRITE_WR_FLOWID(x) \
(((x) >> S_FW_SCSI_WRITE_WR_FLOWID) & M_FW_SCSI_WRITE_WR_FLOWID)
#define S_FW_SCSI_WRITE_WR_LEN16 0
#define M_FW_SCSI_WRITE_WR_LEN16 0xff
#define V_FW_SCSI_WRITE_WR_LEN16(x) ((x) << S_FW_SCSI_WRITE_WR_LEN16)
#define G_FW_SCSI_WRITE_WR_LEN16(x) \
(((x) >> S_FW_SCSI_WRITE_WR_LEN16) & M_FW_SCSI_WRITE_WR_LEN16)
#define S_FW_SCSI_WRITE_WR_CP_EN 6
#define M_FW_SCSI_WRITE_WR_CP_EN 0x3
#define V_FW_SCSI_WRITE_WR_CP_EN(x) ((x) << S_FW_SCSI_WRITE_WR_CP_EN)
#define G_FW_SCSI_WRITE_WR_CP_EN(x) \
(((x) >> S_FW_SCSI_WRITE_WR_CP_EN) & M_FW_SCSI_WRITE_WR_CP_EN)
#define S_FW_SCSI_WRITE_WR_CLASS 4
#define M_FW_SCSI_WRITE_WR_CLASS 0x3
#define V_FW_SCSI_WRITE_WR_CLASS(x) ((x) << S_FW_SCSI_WRITE_WR_CLASS)
#define G_FW_SCSI_WRITE_WR_CLASS(x) \
(((x) >> S_FW_SCSI_WRITE_WR_CLASS) & M_FW_SCSI_WRITE_WR_CLASS)
struct fw_scsi_read_wr {
__be32 op_immdlen;
__be32 flowid_len16;
__be64 cookie;
__be16 iqid;
__u8 tmo_val;
__u8 use_xfer_cnt;
union fw_scsi_read_priv {
struct fcoe_read_priv {
__u8 ctl_pri;
__u8 cp_en_class;
__u8 r3_lo[2];
} fcoe;
struct iscsi_read_priv {
__u8 r3[4];
} iscsi;
} u;
__be32 xfer_cnt;
__be32 ini_xfer_cnt;
__be64 rsp_dmaaddr;
__be32 rsp_dmalen;
__be32 r4;
};
#define S_FW_SCSI_READ_WR_OPCODE 24
#define M_FW_SCSI_READ_WR_OPCODE 0xff
#define V_FW_SCSI_READ_WR_OPCODE(x) ((x) << S_FW_SCSI_READ_WR_OPCODE)
#define G_FW_SCSI_READ_WR_OPCODE(x) \
(((x) >> S_FW_SCSI_READ_WR_OPCODE) & M_FW_SCSI_READ_WR_OPCODE)
#define S_FW_SCSI_READ_WR_IMMDLEN 0
#define M_FW_SCSI_READ_WR_IMMDLEN 0xff
#define V_FW_SCSI_READ_WR_IMMDLEN(x) ((x) << S_FW_SCSI_READ_WR_IMMDLEN)
#define G_FW_SCSI_READ_WR_IMMDLEN(x) \
(((x) >> S_FW_SCSI_READ_WR_IMMDLEN) & M_FW_SCSI_READ_WR_IMMDLEN)
#define S_FW_SCSI_READ_WR_FLOWID 8
#define M_FW_SCSI_READ_WR_FLOWID 0xfffff
#define V_FW_SCSI_READ_WR_FLOWID(x) ((x) << S_FW_SCSI_READ_WR_FLOWID)
#define G_FW_SCSI_READ_WR_FLOWID(x) \
(((x) >> S_FW_SCSI_READ_WR_FLOWID) & M_FW_SCSI_READ_WR_FLOWID)
#define S_FW_SCSI_READ_WR_LEN16 0
#define M_FW_SCSI_READ_WR_LEN16 0xff
#define V_FW_SCSI_READ_WR_LEN16(x) ((x) << S_FW_SCSI_READ_WR_LEN16)
#define G_FW_SCSI_READ_WR_LEN16(x) \
(((x) >> S_FW_SCSI_READ_WR_LEN16) & M_FW_SCSI_READ_WR_LEN16)
#define S_FW_SCSI_READ_WR_CP_EN 6
#define M_FW_SCSI_READ_WR_CP_EN 0x3
#define V_FW_SCSI_READ_WR_CP_EN(x) ((x) << S_FW_SCSI_READ_WR_CP_EN)
#define G_FW_SCSI_READ_WR_CP_EN(x) \
(((x) >> S_FW_SCSI_READ_WR_CP_EN) & M_FW_SCSI_READ_WR_CP_EN)
#define S_FW_SCSI_READ_WR_CLASS 4
#define M_FW_SCSI_READ_WR_CLASS 0x3
#define V_FW_SCSI_READ_WR_CLASS(x) ((x) << S_FW_SCSI_READ_WR_CLASS)
#define G_FW_SCSI_READ_WR_CLASS(x) \
(((x) >> S_FW_SCSI_READ_WR_CLASS) & M_FW_SCSI_READ_WR_CLASS)
struct fw_scsi_cmd_wr {
__be32 op_immdlen;
__be32 flowid_len16;
__be64 cookie;
__be16 iqid;
__u8 tmo_val;
__u8 r3;
union fw_scsi_cmd_priv {
struct fcoe_cmd_priv {
__u8 ctl_pri;
__u8 cp_en_class;
__u8 r4_lo[2];
} fcoe;
struct iscsi_cmd_priv {
__u8 r4[4];
} iscsi;
} u;
__u8 r5[8];
__be64 rsp_dmaaddr;
__be32 rsp_dmalen;
__be32 r6;
};
#define S_FW_SCSI_CMD_WR_OPCODE 24
#define M_FW_SCSI_CMD_WR_OPCODE 0xff
#define V_FW_SCSI_CMD_WR_OPCODE(x) ((x) << S_FW_SCSI_CMD_WR_OPCODE)
#define G_FW_SCSI_CMD_WR_OPCODE(x) \
(((x) >> S_FW_SCSI_CMD_WR_OPCODE) & M_FW_SCSI_CMD_WR_OPCODE)
#define S_FW_SCSI_CMD_WR_IMMDLEN 0
#define M_FW_SCSI_CMD_WR_IMMDLEN 0xff
#define V_FW_SCSI_CMD_WR_IMMDLEN(x) ((x) << S_FW_SCSI_CMD_WR_IMMDLEN)
#define G_FW_SCSI_CMD_WR_IMMDLEN(x) \
(((x) >> S_FW_SCSI_CMD_WR_IMMDLEN) & M_FW_SCSI_CMD_WR_IMMDLEN)
#define S_FW_SCSI_CMD_WR_FLOWID 8
#define M_FW_SCSI_CMD_WR_FLOWID 0xfffff
#define V_FW_SCSI_CMD_WR_FLOWID(x) ((x) << S_FW_SCSI_CMD_WR_FLOWID)
#define G_FW_SCSI_CMD_WR_FLOWID(x) \
(((x) >> S_FW_SCSI_CMD_WR_FLOWID) & M_FW_SCSI_CMD_WR_FLOWID)
#define S_FW_SCSI_CMD_WR_LEN16 0
#define M_FW_SCSI_CMD_WR_LEN16 0xff
#define V_FW_SCSI_CMD_WR_LEN16(x) ((x) << S_FW_SCSI_CMD_WR_LEN16)
#define G_FW_SCSI_CMD_WR_LEN16(x) \
(((x) >> S_FW_SCSI_CMD_WR_LEN16) & M_FW_SCSI_CMD_WR_LEN16)
#define S_FW_SCSI_CMD_WR_CP_EN 6
#define M_FW_SCSI_CMD_WR_CP_EN 0x3
#define V_FW_SCSI_CMD_WR_CP_EN(x) ((x) << S_FW_SCSI_CMD_WR_CP_EN)
#define G_FW_SCSI_CMD_WR_CP_EN(x) \
(((x) >> S_FW_SCSI_CMD_WR_CP_EN) & M_FW_SCSI_CMD_WR_CP_EN)
#define S_FW_SCSI_CMD_WR_CLASS 4
#define M_FW_SCSI_CMD_WR_CLASS 0x3
#define V_FW_SCSI_CMD_WR_CLASS(x) ((x) << S_FW_SCSI_CMD_WR_CLASS)
#define G_FW_SCSI_CMD_WR_CLASS(x) \
(((x) >> S_FW_SCSI_CMD_WR_CLASS) & M_FW_SCSI_CMD_WR_CLASS)
struct fw_scsi_abrt_cls_wr {
__be32 op_immdlen;
__be32 flowid_len16;
__be64 cookie;
__be16 iqid;
__u8 tmo_val;
__u8 sub_opcode_to_chk_all_io;
__u8 r3[4];
__be64 t_cookie;
};
#define S_FW_SCSI_ABRT_CLS_WR_OPCODE 24
#define M_FW_SCSI_ABRT_CLS_WR_OPCODE 0xff
#define V_FW_SCSI_ABRT_CLS_WR_OPCODE(x) ((x) << S_FW_SCSI_ABRT_CLS_WR_OPCODE)
#define G_FW_SCSI_ABRT_CLS_WR_OPCODE(x) \
(((x) >> S_FW_SCSI_ABRT_CLS_WR_OPCODE) & M_FW_SCSI_ABRT_CLS_WR_OPCODE)
#define S_FW_SCSI_ABRT_CLS_WR_IMMDLEN 0
#define M_FW_SCSI_ABRT_CLS_WR_IMMDLEN 0xff
#define V_FW_SCSI_ABRT_CLS_WR_IMMDLEN(x) \
((x) << S_FW_SCSI_ABRT_CLS_WR_IMMDLEN)
#define G_FW_SCSI_ABRT_CLS_WR_IMMDLEN(x) \
(((x) >> S_FW_SCSI_ABRT_CLS_WR_IMMDLEN) & M_FW_SCSI_ABRT_CLS_WR_IMMDLEN)
#define S_FW_SCSI_ABRT_CLS_WR_FLOWID 8
#define M_FW_SCSI_ABRT_CLS_WR_FLOWID 0xfffff
#define V_FW_SCSI_ABRT_CLS_WR_FLOWID(x) ((x) << S_FW_SCSI_ABRT_CLS_WR_FLOWID)
#define G_FW_SCSI_ABRT_CLS_WR_FLOWID(x) \
(((x) >> S_FW_SCSI_ABRT_CLS_WR_FLOWID) & M_FW_SCSI_ABRT_CLS_WR_FLOWID)
#define S_FW_SCSI_ABRT_CLS_WR_LEN16 0
#define M_FW_SCSI_ABRT_CLS_WR_LEN16 0xff
#define V_FW_SCSI_ABRT_CLS_WR_LEN16(x) ((x) << S_FW_SCSI_ABRT_CLS_WR_LEN16)
#define G_FW_SCSI_ABRT_CLS_WR_LEN16(x) \
(((x) >> S_FW_SCSI_ABRT_CLS_WR_LEN16) & M_FW_SCSI_ABRT_CLS_WR_LEN16)
#define S_FW_SCSI_ABRT_CLS_WR_SUB_OPCODE 2
#define M_FW_SCSI_ABRT_CLS_WR_SUB_OPCODE 0x3f
#define V_FW_SCSI_ABRT_CLS_WR_SUB_OPCODE(x) \
((x) << S_FW_SCSI_ABRT_CLS_WR_SUB_OPCODE)
#define G_FW_SCSI_ABRT_CLS_WR_SUB_OPCODE(x) \
(((x) >> S_FW_SCSI_ABRT_CLS_WR_SUB_OPCODE) & \
M_FW_SCSI_ABRT_CLS_WR_SUB_OPCODE)
#define S_FW_SCSI_ABRT_CLS_WR_UNSOL 1
#define M_FW_SCSI_ABRT_CLS_WR_UNSOL 0x1
#define V_FW_SCSI_ABRT_CLS_WR_UNSOL(x) ((x) << S_FW_SCSI_ABRT_CLS_WR_UNSOL)
#define G_FW_SCSI_ABRT_CLS_WR_UNSOL(x) \
(((x) >> S_FW_SCSI_ABRT_CLS_WR_UNSOL) & M_FW_SCSI_ABRT_CLS_WR_UNSOL)
#define F_FW_SCSI_ABRT_CLS_WR_UNSOL V_FW_SCSI_ABRT_CLS_WR_UNSOL(1U)
#define S_FW_SCSI_ABRT_CLS_WR_CHK_ALL_IO 0
#define M_FW_SCSI_ABRT_CLS_WR_CHK_ALL_IO 0x1
#define V_FW_SCSI_ABRT_CLS_WR_CHK_ALL_IO(x) \
((x) << S_FW_SCSI_ABRT_CLS_WR_CHK_ALL_IO)
#define G_FW_SCSI_ABRT_CLS_WR_CHK_ALL_IO(x) \
(((x) >> S_FW_SCSI_ABRT_CLS_WR_CHK_ALL_IO) & \
M_FW_SCSI_ABRT_CLS_WR_CHK_ALL_IO)
#define F_FW_SCSI_ABRT_CLS_WR_CHK_ALL_IO \
V_FW_SCSI_ABRT_CLS_WR_CHK_ALL_IO(1U)
struct fw_scsi_tgt_acc_wr {
__be32 op_immdlen;
__be32 flowid_len16;
__be64 cookie;
__be16 iqid;
__u8 r3;
__u8 use_burst_len;
union fw_scsi_tgt_acc_priv {
struct fcoe_tgt_acc_priv {
__u8 ctl_pri;
__u8 cp_en_class;
__u8 r4_lo[2];
} fcoe;
struct iscsi_tgt_acc_priv {
__u8 r4[4];
} iscsi;
} u;
__be32 burst_len;
__be32 rel_off;
__be64 r5;
__be32 r6;
__be32 tot_xfer_len;
};
#define S_FW_SCSI_TGT_ACC_WR_OPCODE 24
#define M_FW_SCSI_TGT_ACC_WR_OPCODE 0xff
#define V_FW_SCSI_TGT_ACC_WR_OPCODE(x) ((x) << S_FW_SCSI_TGT_ACC_WR_OPCODE)
#define G_FW_SCSI_TGT_ACC_WR_OPCODE(x) \
(((x) >> S_FW_SCSI_TGT_ACC_WR_OPCODE) & M_FW_SCSI_TGT_ACC_WR_OPCODE)
#define S_FW_SCSI_TGT_ACC_WR_IMMDLEN 0
#define M_FW_SCSI_TGT_ACC_WR_IMMDLEN 0xff
#define V_FW_SCSI_TGT_ACC_WR_IMMDLEN(x) ((x) << S_FW_SCSI_TGT_ACC_WR_IMMDLEN)
#define G_FW_SCSI_TGT_ACC_WR_IMMDLEN(x) \
(((x) >> S_FW_SCSI_TGT_ACC_WR_IMMDLEN) & M_FW_SCSI_TGT_ACC_WR_IMMDLEN)
#define S_FW_SCSI_TGT_ACC_WR_FLOWID 8
#define M_FW_SCSI_TGT_ACC_WR_FLOWID 0xfffff
#define V_FW_SCSI_TGT_ACC_WR_FLOWID(x) ((x) << S_FW_SCSI_TGT_ACC_WR_FLOWID)
#define G_FW_SCSI_TGT_ACC_WR_FLOWID(x) \
(((x) >> S_FW_SCSI_TGT_ACC_WR_FLOWID) & M_FW_SCSI_TGT_ACC_WR_FLOWID)
#define S_FW_SCSI_TGT_ACC_WR_LEN16 0
#define M_FW_SCSI_TGT_ACC_WR_LEN16 0xff
#define V_FW_SCSI_TGT_ACC_WR_LEN16(x) ((x) << S_FW_SCSI_TGT_ACC_WR_LEN16)
#define G_FW_SCSI_TGT_ACC_WR_LEN16(x) \
(((x) >> S_FW_SCSI_TGT_ACC_WR_LEN16) & M_FW_SCSI_TGT_ACC_WR_LEN16)
#define S_FW_SCSI_TGT_ACC_WR_CP_EN 6
#define M_FW_SCSI_TGT_ACC_WR_CP_EN 0x3
#define V_FW_SCSI_TGT_ACC_WR_CP_EN(x) ((x) << S_FW_SCSI_TGT_ACC_WR_CP_EN)
#define G_FW_SCSI_TGT_ACC_WR_CP_EN(x) \
(((x) >> S_FW_SCSI_TGT_ACC_WR_CP_EN) & M_FW_SCSI_TGT_ACC_WR_CP_EN)
#define S_FW_SCSI_TGT_ACC_WR_CLASS 4
#define M_FW_SCSI_TGT_ACC_WR_CLASS 0x3
#define V_FW_SCSI_TGT_ACC_WR_CLASS(x) ((x) << S_FW_SCSI_TGT_ACC_WR_CLASS)
#define G_FW_SCSI_TGT_ACC_WR_CLASS(x) \
(((x) >> S_FW_SCSI_TGT_ACC_WR_CLASS) & M_FW_SCSI_TGT_ACC_WR_CLASS)
struct fw_scsi_tgt_xmit_wr {
__be32 op_immdlen;
__be32 flowid_len16;
__be64 cookie;
__be16 iqid;
__u8 auto_rsp;
__u8 use_xfer_cnt;
union fw_scsi_tgt_xmit_priv {
struct fcoe_tgt_xmit_priv {
__u8 ctl_pri;
__u8 cp_en_class;
__u8 r3_lo[2];
} fcoe;
struct iscsi_tgt_xmit_priv {
__u8 r3[4];
} iscsi;
} u;
__be32 xfer_cnt;
__be32 r4;
__be64 r5;
__be32 r6;
__be32 tot_xfer_len;
};
#define S_FW_SCSI_TGT_XMIT_WR_OPCODE 24
#define M_FW_SCSI_TGT_XMIT_WR_OPCODE 0xff
#define V_FW_SCSI_TGT_XMIT_WR_OPCODE(x) ((x) << S_FW_SCSI_TGT_XMIT_WR_OPCODE)
#define G_FW_SCSI_TGT_XMIT_WR_OPCODE(x) \
(((x) >> S_FW_SCSI_TGT_XMIT_WR_OPCODE) & M_FW_SCSI_TGT_XMIT_WR_OPCODE)
#define S_FW_SCSI_TGT_XMIT_WR_IMMDLEN 0
#define M_FW_SCSI_TGT_XMIT_WR_IMMDLEN 0xff
#define V_FW_SCSI_TGT_XMIT_WR_IMMDLEN(x) \
((x) << S_FW_SCSI_TGT_XMIT_WR_IMMDLEN)
#define G_FW_SCSI_TGT_XMIT_WR_IMMDLEN(x) \
(((x) >> S_FW_SCSI_TGT_XMIT_WR_IMMDLEN) & M_FW_SCSI_TGT_XMIT_WR_IMMDLEN)
#define S_FW_SCSI_TGT_XMIT_WR_FLOWID 8
#define M_FW_SCSI_TGT_XMIT_WR_FLOWID 0xfffff
#define V_FW_SCSI_TGT_XMIT_WR_FLOWID(x) ((x) << S_FW_SCSI_TGT_XMIT_WR_FLOWID)
#define G_FW_SCSI_TGT_XMIT_WR_FLOWID(x) \
(((x) >> S_FW_SCSI_TGT_XMIT_WR_FLOWID) & M_FW_SCSI_TGT_XMIT_WR_FLOWID)
#define S_FW_SCSI_TGT_XMIT_WR_LEN16 0
#define M_FW_SCSI_TGT_XMIT_WR_LEN16 0xff
#define V_FW_SCSI_TGT_XMIT_WR_LEN16(x) ((x) << S_FW_SCSI_TGT_XMIT_WR_LEN16)
#define G_FW_SCSI_TGT_XMIT_WR_LEN16(x) \
(((x) >> S_FW_SCSI_TGT_XMIT_WR_LEN16) & M_FW_SCSI_TGT_XMIT_WR_LEN16)
#define S_FW_SCSI_TGT_XMIT_WR_CP_EN 6
#define M_FW_SCSI_TGT_XMIT_WR_CP_EN 0x3
#define V_FW_SCSI_TGT_XMIT_WR_CP_EN(x) ((x) << S_FW_SCSI_TGT_XMIT_WR_CP_EN)
#define G_FW_SCSI_TGT_XMIT_WR_CP_EN(x) \
(((x) >> S_FW_SCSI_TGT_XMIT_WR_CP_EN) & M_FW_SCSI_TGT_XMIT_WR_CP_EN)
#define S_FW_SCSI_TGT_XMIT_WR_CLASS 4
#define M_FW_SCSI_TGT_XMIT_WR_CLASS 0x3
#define V_FW_SCSI_TGT_XMIT_WR_CLASS(x) ((x) << S_FW_SCSI_TGT_XMIT_WR_CLASS)
#define G_FW_SCSI_TGT_XMIT_WR_CLASS(x) \
(((x) >> S_FW_SCSI_TGT_XMIT_WR_CLASS) & M_FW_SCSI_TGT_XMIT_WR_CLASS)
struct fw_scsi_tgt_rsp_wr {
__be32 op_immdlen;
__be32 flowid_len16;
__be64 cookie;
__be16 iqid;
__u8 r3[2];
union fw_scsi_tgt_rsp_priv {
struct fcoe_tgt_rsp_priv {
__u8 ctl_pri;
__u8 cp_en_class;
__u8 r4_lo[2];
} fcoe;
struct iscsi_tgt_rsp_priv {
__u8 r4[4];
} iscsi;
} u;
__u8 r5[8];
};
#define S_FW_SCSI_TGT_RSP_WR_OPCODE 24
#define M_FW_SCSI_TGT_RSP_WR_OPCODE 0xff
#define V_FW_SCSI_TGT_RSP_WR_OPCODE(x) ((x) << S_FW_SCSI_TGT_RSP_WR_OPCODE)
#define G_FW_SCSI_TGT_RSP_WR_OPCODE(x) \
(((x) >> S_FW_SCSI_TGT_RSP_WR_OPCODE) & M_FW_SCSI_TGT_RSP_WR_OPCODE)
#define S_FW_SCSI_TGT_RSP_WR_IMMDLEN 0
#define M_FW_SCSI_TGT_RSP_WR_IMMDLEN 0xff
#define V_FW_SCSI_TGT_RSP_WR_IMMDLEN(x) ((x) << S_FW_SCSI_TGT_RSP_WR_IMMDLEN)
#define G_FW_SCSI_TGT_RSP_WR_IMMDLEN(x) \
(((x) >> S_FW_SCSI_TGT_RSP_WR_IMMDLEN) & M_FW_SCSI_TGT_RSP_WR_IMMDLEN)
#define S_FW_SCSI_TGT_RSP_WR_FLOWID 8
#define M_FW_SCSI_TGT_RSP_WR_FLOWID 0xfffff
#define V_FW_SCSI_TGT_RSP_WR_FLOWID(x) ((x) << S_FW_SCSI_TGT_RSP_WR_FLOWID)
#define G_FW_SCSI_TGT_RSP_WR_FLOWID(x) \
(((x) >> S_FW_SCSI_TGT_RSP_WR_FLOWID) & M_FW_SCSI_TGT_RSP_WR_FLOWID)
#define S_FW_SCSI_TGT_RSP_WR_LEN16 0
#define M_FW_SCSI_TGT_RSP_WR_LEN16 0xff
#define V_FW_SCSI_TGT_RSP_WR_LEN16(x) ((x) << S_FW_SCSI_TGT_RSP_WR_LEN16)
#define G_FW_SCSI_TGT_RSP_WR_LEN16(x) \
(((x) >> S_FW_SCSI_TGT_RSP_WR_LEN16) & M_FW_SCSI_TGT_RSP_WR_LEN16)
#define S_FW_SCSI_TGT_RSP_WR_CP_EN 6
#define M_FW_SCSI_TGT_RSP_WR_CP_EN 0x3
#define V_FW_SCSI_TGT_RSP_WR_CP_EN(x) ((x) << S_FW_SCSI_TGT_RSP_WR_CP_EN)
#define G_FW_SCSI_TGT_RSP_WR_CP_EN(x) \
(((x) >> S_FW_SCSI_TGT_RSP_WR_CP_EN) & M_FW_SCSI_TGT_RSP_WR_CP_EN)
#define S_FW_SCSI_TGT_RSP_WR_CLASS 4
#define M_FW_SCSI_TGT_RSP_WR_CLASS 0x3
#define V_FW_SCSI_TGT_RSP_WR_CLASS(x) ((x) << S_FW_SCSI_TGT_RSP_WR_CLASS)
#define G_FW_SCSI_TGT_RSP_WR_CLASS(x) \
(((x) >> S_FW_SCSI_TGT_RSP_WR_CLASS) & M_FW_SCSI_TGT_RSP_WR_CLASS)
struct fw_pofcoe_tcb_wr {
__be32 op_compl;
__be32 equiq_to_len16;
__be32 r4;
__be32 xfer_len;
__be32 tid_to_port;
__be16 x_id;
__be16 vlan_id;
__be64 cookie;
__be32 s_id;
__be32 d_id;
__be32 tag;
__be16 r6;
__be16 iqid;
};
#define S_FW_POFCOE_TCB_WR_TID 12
#define M_FW_POFCOE_TCB_WR_TID 0xfffff
#define V_FW_POFCOE_TCB_WR_TID(x) ((x) << S_FW_POFCOE_TCB_WR_TID)
#define G_FW_POFCOE_TCB_WR_TID(x) \
(((x) >> S_FW_POFCOE_TCB_WR_TID) & M_FW_POFCOE_TCB_WR_TID)
#define S_FW_POFCOE_TCB_WR_ALLOC 4
#define M_FW_POFCOE_TCB_WR_ALLOC 0x1
#define V_FW_POFCOE_TCB_WR_ALLOC(x) ((x) << S_FW_POFCOE_TCB_WR_ALLOC)
#define G_FW_POFCOE_TCB_WR_ALLOC(x) \
(((x) >> S_FW_POFCOE_TCB_WR_ALLOC) & M_FW_POFCOE_TCB_WR_ALLOC)
#define F_FW_POFCOE_TCB_WR_ALLOC V_FW_POFCOE_TCB_WR_ALLOC(1U)
#define S_FW_POFCOE_TCB_WR_FREE 3
#define M_FW_POFCOE_TCB_WR_FREE 0x1
#define V_FW_POFCOE_TCB_WR_FREE(x) ((x) << S_FW_POFCOE_TCB_WR_FREE)
#define G_FW_POFCOE_TCB_WR_FREE(x) \
(((x) >> S_FW_POFCOE_TCB_WR_FREE) & M_FW_POFCOE_TCB_WR_FREE)
#define F_FW_POFCOE_TCB_WR_FREE V_FW_POFCOE_TCB_WR_FREE(1U)
#define S_FW_POFCOE_TCB_WR_PORT 0
#define M_FW_POFCOE_TCB_WR_PORT 0x7
#define V_FW_POFCOE_TCB_WR_PORT(x) ((x) << S_FW_POFCOE_TCB_WR_PORT)
#define G_FW_POFCOE_TCB_WR_PORT(x) \
(((x) >> S_FW_POFCOE_TCB_WR_PORT) & M_FW_POFCOE_TCB_WR_PORT)
struct fw_pofcoe_ulptx_wr {
__be32 op_pkd;
__be32 equiq_to_len16;
__u64 cookie;
};
/*******************************************************************
* T10 DIF related definition
*******************************************************************/
struct fw_tx_pi_header {
__be16 op_to_inline;
__u8 pi_interval_tag_type;
__u8 num_pi;
__be32 pi_start4_pi_end4;
__u8 tag_gen_enabled_pkd;
__u8 num_pi_dsg;
__be16 app_tag;
__be32 ref_tag;
};
#define S_FW_TX_PI_HEADER_OP 8
#define M_FW_TX_PI_HEADER_OP 0xff
#define V_FW_TX_PI_HEADER_OP(x) ((x) << S_FW_TX_PI_HEADER_OP)
#define G_FW_TX_PI_HEADER_OP(x) \
(((x) >> S_FW_TX_PI_HEADER_OP) & M_FW_TX_PI_HEADER_OP)
#define S_FW_TX_PI_HEADER_ULPTXMORE 7
#define M_FW_TX_PI_HEADER_ULPTXMORE 0x1
#define V_FW_TX_PI_HEADER_ULPTXMORE(x) ((x) << S_FW_TX_PI_HEADER_ULPTXMORE)
#define G_FW_TX_PI_HEADER_ULPTXMORE(x) \
(((x) >> S_FW_TX_PI_HEADER_ULPTXMORE) & M_FW_TX_PI_HEADER_ULPTXMORE)
#define F_FW_TX_PI_HEADER_ULPTXMORE V_FW_TX_PI_HEADER_ULPTXMORE(1U)
#define S_FW_TX_PI_HEADER_PI_CONTROL 4
#define M_FW_TX_PI_HEADER_PI_CONTROL 0x7
#define V_FW_TX_PI_HEADER_PI_CONTROL(x) ((x) << S_FW_TX_PI_HEADER_PI_CONTROL)
#define G_FW_TX_PI_HEADER_PI_CONTROL(x) \
(((x) >> S_FW_TX_PI_HEADER_PI_CONTROL) & M_FW_TX_PI_HEADER_PI_CONTROL)
#define S_FW_TX_PI_HEADER_GUARD_TYPE 2
#define M_FW_TX_PI_HEADER_GUARD_TYPE 0x1
#define V_FW_TX_PI_HEADER_GUARD_TYPE(x) ((x) << S_FW_TX_PI_HEADER_GUARD_TYPE)
#define G_FW_TX_PI_HEADER_GUARD_TYPE(x) \
(((x) >> S_FW_TX_PI_HEADER_GUARD_TYPE) & M_FW_TX_PI_HEADER_GUARD_TYPE)
#define F_FW_TX_PI_HEADER_GUARD_TYPE V_FW_TX_PI_HEADER_GUARD_TYPE(1U)
#define S_FW_TX_PI_HEADER_VALIDATE 1
#define M_FW_TX_PI_HEADER_VALIDATE 0x1
#define V_FW_TX_PI_HEADER_VALIDATE(x) ((x) << S_FW_TX_PI_HEADER_VALIDATE)
#define G_FW_TX_PI_HEADER_VALIDATE(x) \
(((x) >> S_FW_TX_PI_HEADER_VALIDATE) & M_FW_TX_PI_HEADER_VALIDATE)
#define F_FW_TX_PI_HEADER_VALIDATE V_FW_TX_PI_HEADER_VALIDATE(1U)
#define S_FW_TX_PI_HEADER_INLINE 0
#define M_FW_TX_PI_HEADER_INLINE 0x1
#define V_FW_TX_PI_HEADER_INLINE(x) ((x) << S_FW_TX_PI_HEADER_INLINE)
#define G_FW_TX_PI_HEADER_INLINE(x) \
(((x) >> S_FW_TX_PI_HEADER_INLINE) & M_FW_TX_PI_HEADER_INLINE)
#define F_FW_TX_PI_HEADER_INLINE V_FW_TX_PI_HEADER_INLINE(1U)
#define S_FW_TX_PI_HEADER_PI_INTERVAL 7
#define M_FW_TX_PI_HEADER_PI_INTERVAL 0x1
#define V_FW_TX_PI_HEADER_PI_INTERVAL(x) \
((x) << S_FW_TX_PI_HEADER_PI_INTERVAL)
#define G_FW_TX_PI_HEADER_PI_INTERVAL(x) \
(((x) >> S_FW_TX_PI_HEADER_PI_INTERVAL) & M_FW_TX_PI_HEADER_PI_INTERVAL)
#define F_FW_TX_PI_HEADER_PI_INTERVAL V_FW_TX_PI_HEADER_PI_INTERVAL(1U)
#define S_FW_TX_PI_HEADER_TAG_TYPE 5
#define M_FW_TX_PI_HEADER_TAG_TYPE 0x3
#define V_FW_TX_PI_HEADER_TAG_TYPE(x) ((x) << S_FW_TX_PI_HEADER_TAG_TYPE)
#define G_FW_TX_PI_HEADER_TAG_TYPE(x) \
(((x) >> S_FW_TX_PI_HEADER_TAG_TYPE) & M_FW_TX_PI_HEADER_TAG_TYPE)
#define S_FW_TX_PI_HEADER_PI_START4 22
#define M_FW_TX_PI_HEADER_PI_START4 0x3ff
#define V_FW_TX_PI_HEADER_PI_START4(x) ((x) << S_FW_TX_PI_HEADER_PI_START4)
#define G_FW_TX_PI_HEADER_PI_START4(x) \
(((x) >> S_FW_TX_PI_HEADER_PI_START4) & M_FW_TX_PI_HEADER_PI_START4)
#define S_FW_TX_PI_HEADER_PI_END4 0
#define M_FW_TX_PI_HEADER_PI_END4 0x3fffff
#define V_FW_TX_PI_HEADER_PI_END4(x) ((x) << S_FW_TX_PI_HEADER_PI_END4)
#define G_FW_TX_PI_HEADER_PI_END4(x) \
(((x) >> S_FW_TX_PI_HEADER_PI_END4) & M_FW_TX_PI_HEADER_PI_END4)
#define S_FW_TX_PI_HEADER_TAG_GEN_ENABLED 6
#define M_FW_TX_PI_HEADER_TAG_GEN_ENABLED 0x3
#define V_FW_TX_PI_HEADER_TAG_GEN_ENABLED(x) \
((x) << S_FW_TX_PI_HEADER_TAG_GEN_ENABLED)
#define G_FW_TX_PI_HEADER_TAG_GEN_ENABLED(x) \
(((x) >> S_FW_TX_PI_HEADER_TAG_GEN_ENABLED) & \
M_FW_TX_PI_HEADER_TAG_GEN_ENABLED)
enum fw_pi_error_type {
FW_PI_ERROR_GUARD_CHECK_FAILED = 0,
};
struct fw_pi_error {
__be32 err_type_pkd;
__be32 flowid_len16;
__be16 r2;
__be16 app_tag;
__be32 ref_tag;
__be32 pisc[4];
};
#define S_FW_PI_ERROR_ERR_TYPE 24
#define M_FW_PI_ERROR_ERR_TYPE 0xff
#define V_FW_PI_ERROR_ERR_TYPE(x) ((x) << S_FW_PI_ERROR_ERR_TYPE)
#define G_FW_PI_ERROR_ERR_TYPE(x) \
(((x) >> S_FW_PI_ERROR_ERR_TYPE) & M_FW_PI_ERROR_ERR_TYPE)
struct fw_sec_lookaside_lpbk_wr {
__be32 op_to_cctx_size;
__be32 len16_pkd;
__be32 session_id;
__be32 rx_chid_to_rx_q_id;
__be32 key_addr;
__be32 pld_size_hash_size;
__be64 cookie;
};
#define S_FW_SEC_LOOKASIDE_LPBK_WR_OPCODE 24
#define M_FW_SEC_LOOKASIDE_LPBK_WR_OPCODE 0xff
#define V_FW_SEC_LOOKASIDE_LPBK_WR_OPCODE(x) \
((x) << S_FW_SEC_LOOKASIDE_LPBK_WR_OPCODE)
#define G_FW_SEC_LOOKASIDE_LPBK_WR_OPCODE(x) \
(((x) >> S_FW_SEC_LOOKASIDE_LPBK_WR_OPCODE) & \
M_FW_SEC_LOOKASIDE_LPBK_WR_OPCODE)
#define S_FW_SEC_LOOKASIDE_LPBK_WR_COMPL 23
#define M_FW_SEC_LOOKASIDE_LPBK_WR_COMPL 0x1
#define V_FW_SEC_LOOKASIDE_LPBK_WR_COMPL(x) \
((x) << S_FW_SEC_LOOKASIDE_LPBK_WR_COMPL)
#define G_FW_SEC_LOOKASIDE_LPBK_WR_COMPL(x) \
(((x) >> S_FW_SEC_LOOKASIDE_LPBK_WR_COMPL) & \
M_FW_SEC_LOOKASIDE_LPBK_WR_COMPL)
#define F_FW_SEC_LOOKASIDE_LPBK_WR_COMPL V_FW_SEC_LOOKASIDE_LPBK_WR_COMPL(1U)
#define S_FW_SEC_LOOKASIDE_LPBK_WR_IMM_LEN 15
#define M_FW_SEC_LOOKASIDE_LPBK_WR_IMM_LEN 0xff
#define V_FW_SEC_LOOKASIDE_LPBK_WR_IMM_LEN(x) \
((x) << S_FW_SEC_LOOKASIDE_LPBK_WR_IMM_LEN)
#define G_FW_SEC_LOOKASIDE_LPBK_WR_IMM_LEN(x) \
(((x) >> S_FW_SEC_LOOKASIDE_LPBK_WR_IMM_LEN) & \
M_FW_SEC_LOOKASIDE_LPBK_WR_IMM_LEN)
#define S_FW_SEC_LOOKASIDE_LPBK_WR_CCTX_LOC 5
#define M_FW_SEC_LOOKASIDE_LPBK_WR_CCTX_LOC 0x3
#define V_FW_SEC_LOOKASIDE_LPBK_WR_CCTX_LOC(x) \
((x) << S_FW_SEC_LOOKASIDE_LPBK_WR_CCTX_LOC)
#define G_FW_SEC_LOOKASIDE_LPBK_WR_CCTX_LOC(x) \
(((x) >> S_FW_SEC_LOOKASIDE_LPBK_WR_CCTX_LOC) & \
M_FW_SEC_LOOKASIDE_LPBK_WR_CCTX_LOC)
#define S_FW_SEC_LOOKASIDE_LPBK_WR_CCTX_SIZE 0
#define M_FW_SEC_LOOKASIDE_LPBK_WR_CCTX_SIZE 0x1f
#define V_FW_SEC_LOOKASIDE_LPBK_WR_CCTX_SIZE(x) \
((x) << S_FW_SEC_LOOKASIDE_LPBK_WR_CCTX_SIZE)
#define G_FW_SEC_LOOKASIDE_LPBK_WR_CCTX_SIZE(x) \
(((x) >> S_FW_SEC_LOOKASIDE_LPBK_WR_CCTX_SIZE) & \
M_FW_SEC_LOOKASIDE_LPBK_WR_CCTX_SIZE)
#define S_FW_SEC_LOOKASIDE_LPBK_WR_LEN16 0
#define M_FW_SEC_LOOKASIDE_LPBK_WR_LEN16 0xff
#define V_FW_SEC_LOOKASIDE_LPBK_WR_LEN16(x) \
((x) << S_FW_SEC_LOOKASIDE_LPBK_WR_LEN16)
#define G_FW_SEC_LOOKASIDE_LPBK_WR_LEN16(x) \
(((x) >> S_FW_SEC_LOOKASIDE_LPBK_WR_LEN16) & \
M_FW_SEC_LOOKASIDE_LPBK_WR_LEN16)
#define S_FW_SEC_LOOKASIDE_LPBK_WR_RX_CHID 29
#define M_FW_SEC_LOOKASIDE_LPBK_WR_RX_CHID 0x3
#define V_FW_SEC_LOOKASIDE_LPBK_WR_RX_CHID(x) \
((x) << S_FW_SEC_LOOKASIDE_LPBK_WR_RX_CHID)
#define G_FW_SEC_LOOKASIDE_LPBK_WR_RX_CHID(x) \
(((x) >> S_FW_SEC_LOOKASIDE_LPBK_WR_RX_CHID) & \
M_FW_SEC_LOOKASIDE_LPBK_WR_RX_CHID)
#define S_FW_SEC_LOOKASIDE_LPBK_WR_LCB 27
#define M_FW_SEC_LOOKASIDE_LPBK_WR_LCB 0x3
#define V_FW_SEC_LOOKASIDE_LPBK_WR_LCB(x) \
((x) << S_FW_SEC_LOOKASIDE_LPBK_WR_LCB)
#define G_FW_SEC_LOOKASIDE_LPBK_WR_LCB(x) \
(((x) >> S_FW_SEC_LOOKASIDE_LPBK_WR_LCB) & M_FW_SEC_LOOKASIDE_LPBK_WR_LCB)
#define S_FW_SEC_LOOKASIDE_LPBK_WR_PHASH 25
#define M_FW_SEC_LOOKASIDE_LPBK_WR_PHASH 0x3
#define V_FW_SEC_LOOKASIDE_LPBK_WR_PHASH(x) \
((x) << S_FW_SEC_LOOKASIDE_LPBK_WR_PHASH)
#define G_FW_SEC_LOOKASIDE_LPBK_WR_PHASH(x) \
(((x) >> S_FW_SEC_LOOKASIDE_LPBK_WR_PHASH) & \
M_FW_SEC_LOOKASIDE_LPBK_WR_PHASH)
#define S_FW_SEC_LOOKASIDE_LPBK_WR_IV 23
#define M_FW_SEC_LOOKASIDE_LPBK_WR_IV 0x3
#define V_FW_SEC_LOOKASIDE_LPBK_WR_IV(x) \
((x) << S_FW_SEC_LOOKASIDE_LPBK_WR_IV)
#define G_FW_SEC_LOOKASIDE_LPBK_WR_IV(x) \
(((x) >> S_FW_SEC_LOOKASIDE_LPBK_WR_IV) & M_FW_SEC_LOOKASIDE_LPBK_WR_IV)
#define S_FW_SEC_LOOKASIDE_LPBK_WR_TX_CH 10
#define M_FW_SEC_LOOKASIDE_LPBK_WR_TX_CH 0x3
#define V_FW_SEC_LOOKASIDE_LPBK_WR_TX_CH(x) \
((x) << S_FW_SEC_LOOKASIDE_LPBK_WR_TX_CH)
#define G_FW_SEC_LOOKASIDE_LPBK_WR_TX_CH(x) \
(((x) >> S_FW_SEC_LOOKASIDE_LPBK_WR_TX_CH) & \
M_FW_SEC_LOOKASIDE_LPBK_WR_TX_CH)
#define S_FW_SEC_LOOKASIDE_LPBK_WR_RX_Q_ID 0
#define M_FW_SEC_LOOKASIDE_LPBK_WR_RX_Q_ID 0x3ff
#define V_FW_SEC_LOOKASIDE_LPBK_WR_RX_Q_ID(x) \
((x) << S_FW_SEC_LOOKASIDE_LPBK_WR_RX_Q_ID)
#define G_FW_SEC_LOOKASIDE_LPBK_WR_RX_Q_ID(x) \
(((x) >> S_FW_SEC_LOOKASIDE_LPBK_WR_RX_Q_ID) & \
M_FW_SEC_LOOKASIDE_LPBK_WR_RX_Q_ID)
#define S_FW_SEC_LOOKASIDE_LPBK_WR_PLD_SIZE 24
#define M_FW_SEC_LOOKASIDE_LPBK_WR_PLD_SIZE 0xff
#define V_FW_SEC_LOOKASIDE_LPBK_WR_PLD_SIZE(x) \
((x) << S_FW_SEC_LOOKASIDE_LPBK_WR_PLD_SIZE)
#define G_FW_SEC_LOOKASIDE_LPBK_WR_PLD_SIZE(x) \
(((x) >> S_FW_SEC_LOOKASIDE_LPBK_WR_PLD_SIZE) & \
M_FW_SEC_LOOKASIDE_LPBK_WR_PLD_SIZE)
#define S_FW_SEC_LOOKASIDE_LPBK_WR_HASH_SIZE 17
#define M_FW_SEC_LOOKASIDE_LPBK_WR_HASH_SIZE 0x7f
#define V_FW_SEC_LOOKASIDE_LPBK_WR_HASH_SIZE(x) \
((x) << S_FW_SEC_LOOKASIDE_LPBK_WR_HASH_SIZE)
#define G_FW_SEC_LOOKASIDE_LPBK_WR_HASH_SIZE(x) \
(((x) >> S_FW_SEC_LOOKASIDE_LPBK_WR_HASH_SIZE) & \
M_FW_SEC_LOOKASIDE_LPBK_WR_HASH_SIZE)
/******************************************************************************
* C O M M A N D s
*********************/
/*
* The maximum length of time, in miliseconds, that we expect any firmware
* command to take to execute and return a reply to the host. The RESET
* and INITIALIZE commands can take a fair amount of time to execute but
* most execute in far less time than this maximum. This constant is used
* by host software to determine how long to wait for a firmware command
* reply before declaring the firmware as dead/unreachable ...
*/
#define FW_CMD_MAX_TIMEOUT 10000
/*
* If a host driver does a HELLO and discovers that there's already a MASTER
* selected, we may have to wait for that MASTER to finish issuing RESET,
* configuration and INITIALIZE commands. Also, there's a possibility that
* our own HELLO may get lost if it happens right as the MASTER is issuign a
* RESET command, so we need to be willing to make a few retries of our HELLO.
*/
#define FW_CMD_HELLO_TIMEOUT (3 * FW_CMD_MAX_TIMEOUT)
#define FW_CMD_HELLO_RETRIES 3
enum fw_cmd_opcodes {
FW_LDST_CMD = 0x01,
FW_RESET_CMD = 0x03,
FW_HELLO_CMD = 0x04,
FW_BYE_CMD = 0x05,
FW_INITIALIZE_CMD = 0x06,
FW_CAPS_CONFIG_CMD = 0x07,
FW_PARAMS_CMD = 0x08,
FW_PFVF_CMD = 0x09,
FW_IQ_CMD = 0x10,
FW_EQ_MNGT_CMD = 0x11,
FW_EQ_ETH_CMD = 0x12,
FW_EQ_CTRL_CMD = 0x13,
FW_EQ_OFLD_CMD = 0x21,
FW_VI_CMD = 0x14,
FW_VI_MAC_CMD = 0x15,
FW_VI_RXMODE_CMD = 0x16,
FW_VI_ENABLE_CMD = 0x17,
FW_VI_STATS_CMD = 0x1a,
FW_ACL_MAC_CMD = 0x18,
FW_ACL_VLAN_CMD = 0x19,
FW_PORT_CMD = 0x1b,
FW_PORT_STATS_CMD = 0x1c,
FW_PORT_LB_STATS_CMD = 0x1d,
FW_PORT_TRACE_CMD = 0x1e,
FW_PORT_TRACE_MMAP_CMD = 0x1f,
FW_RSS_IND_TBL_CMD = 0x20,
FW_RSS_GLB_CONFIG_CMD = 0x22,
FW_RSS_VI_CONFIG_CMD = 0x23,
FW_SCHED_CMD = 0x24,
FW_DEVLOG_CMD = 0x25,
FW_WATCHDOG_CMD = 0x27,
FW_CLIP_CMD = 0x28,
FW_CHNET_IFACE_CMD = 0x26,
FW_FCOE_RES_INFO_CMD = 0x31,
FW_FCOE_LINK_CMD = 0x32,
FW_FCOE_VNP_CMD = 0x33,
FW_FCOE_SPARAMS_CMD = 0x35,
FW_FCOE_STATS_CMD = 0x37,
FW_FCOE_FCF_CMD = 0x38,
- FW_PTP_CMD = 0x39,
FW_DCB_IEEE_CMD = 0x3a,
+ FW_PTP_CMD = 0x3e,
FW_LASTC2E_CMD = 0x40,
FW_ERROR_CMD = 0x80,
FW_DEBUG_CMD = 0x81,
};
enum fw_cmd_cap {
FW_CMD_CAP_PF = 0x01,
FW_CMD_CAP_DMAQ = 0x02,
FW_CMD_CAP_PORT = 0x04,
FW_CMD_CAP_PORTPROMISC = 0x08,
FW_CMD_CAP_PORTSTATS = 0x10,
FW_CMD_CAP_VF = 0x80,
};
/*
* Generic command header flit0
*/
struct fw_cmd_hdr {
__be32 hi;
__be32 lo;
};
#define S_FW_CMD_OP 24
#define M_FW_CMD_OP 0xff
#define V_FW_CMD_OP(x) ((x) << S_FW_CMD_OP)
#define G_FW_CMD_OP(x) (((x) >> S_FW_CMD_OP) & M_FW_CMD_OP)
#define S_FW_CMD_REQUEST 23
#define M_FW_CMD_REQUEST 0x1
#define V_FW_CMD_REQUEST(x) ((x) << S_FW_CMD_REQUEST)
#define G_FW_CMD_REQUEST(x) (((x) >> S_FW_CMD_REQUEST) & M_FW_CMD_REQUEST)
#define F_FW_CMD_REQUEST V_FW_CMD_REQUEST(1U)
#define S_FW_CMD_READ 22
#define M_FW_CMD_READ 0x1
#define V_FW_CMD_READ(x) ((x) << S_FW_CMD_READ)
#define G_FW_CMD_READ(x) (((x) >> S_FW_CMD_READ) & M_FW_CMD_READ)
#define F_FW_CMD_READ V_FW_CMD_READ(1U)
#define S_FW_CMD_WRITE 21
#define M_FW_CMD_WRITE 0x1
#define V_FW_CMD_WRITE(x) ((x) << S_FW_CMD_WRITE)
#define G_FW_CMD_WRITE(x) (((x) >> S_FW_CMD_WRITE) & M_FW_CMD_WRITE)
#define F_FW_CMD_WRITE V_FW_CMD_WRITE(1U)
#define S_FW_CMD_EXEC 20
#define M_FW_CMD_EXEC 0x1
#define V_FW_CMD_EXEC(x) ((x) << S_FW_CMD_EXEC)
#define G_FW_CMD_EXEC(x) (((x) >> S_FW_CMD_EXEC) & M_FW_CMD_EXEC)
#define F_FW_CMD_EXEC V_FW_CMD_EXEC(1U)
#define S_FW_CMD_RAMASK 20
#define M_FW_CMD_RAMASK 0xf
#define V_FW_CMD_RAMASK(x) ((x) << S_FW_CMD_RAMASK)
#define G_FW_CMD_RAMASK(x) (((x) >> S_FW_CMD_RAMASK) & M_FW_CMD_RAMASK)
#define S_FW_CMD_RETVAL 8
#define M_FW_CMD_RETVAL 0xff
#define V_FW_CMD_RETVAL(x) ((x) << S_FW_CMD_RETVAL)
#define G_FW_CMD_RETVAL(x) (((x) >> S_FW_CMD_RETVAL) & M_FW_CMD_RETVAL)
#define S_FW_CMD_LEN16 0
#define M_FW_CMD_LEN16 0xff
#define V_FW_CMD_LEN16(x) ((x) << S_FW_CMD_LEN16)
#define G_FW_CMD_LEN16(x) (((x) >> S_FW_CMD_LEN16) & M_FW_CMD_LEN16)
#define FW_LEN16(fw_struct) V_FW_CMD_LEN16(sizeof(fw_struct) / 16)
/*
* address spaces
*/
enum fw_ldst_addrspc {
FW_LDST_ADDRSPC_FIRMWARE = 0x0001,
FW_LDST_ADDRSPC_SGE_EGRC = 0x0008,
FW_LDST_ADDRSPC_SGE_INGC = 0x0009,
FW_LDST_ADDRSPC_SGE_FLMC = 0x000a,
FW_LDST_ADDRSPC_SGE_CONMC = 0x000b,
FW_LDST_ADDRSPC_TP_PIO = 0x0010,
FW_LDST_ADDRSPC_TP_TM_PIO = 0x0011,
FW_LDST_ADDRSPC_TP_MIB = 0x0012,
FW_LDST_ADDRSPC_MDIO = 0x0018,
FW_LDST_ADDRSPC_MPS = 0x0020,
FW_LDST_ADDRSPC_FUNC = 0x0028,
FW_LDST_ADDRSPC_FUNC_PCIE = 0x0029,
FW_LDST_ADDRSPC_FUNC_I2C = 0x002A, /* legacy */
FW_LDST_ADDRSPC_LE = 0x0030,
FW_LDST_ADDRSPC_I2C = 0x0038,
FW_LDST_ADDRSPC_PCIE_CFGS = 0x0040,
FW_LDST_ADDRSPC_PCIE_DBG = 0x0041,
FW_LDST_ADDRSPC_PCIE_PHY = 0x0042,
FW_LDST_ADDRSPC_CIM_Q = 0x0048,
};
/*
* MDIO VSC8634 register access control field
*/
enum fw_ldst_mdio_vsc8634_aid {
FW_LDST_MDIO_VS_STANDARD,
FW_LDST_MDIO_VS_EXTENDED,
FW_LDST_MDIO_VS_GPIO
};
enum fw_ldst_mps_fid {
FW_LDST_MPS_ATRB,
FW_LDST_MPS_RPLC
};
enum fw_ldst_func_access_ctl {
FW_LDST_FUNC_ACC_CTL_VIID,
FW_LDST_FUNC_ACC_CTL_FID
};
enum fw_ldst_func_mod_index {
FW_LDST_FUNC_MPS
};
struct fw_ldst_cmd {
__be32 op_to_addrspace;
__be32 cycles_to_len16;
union fw_ldst {
struct fw_ldst_addrval {
__be32 addr;
__be32 val;
} addrval;
struct fw_ldst_idctxt {
__be32 physid;
__be32 msg_ctxtflush;
__be32 ctxt_data7;
__be32 ctxt_data6;
__be32 ctxt_data5;
__be32 ctxt_data4;
__be32 ctxt_data3;
__be32 ctxt_data2;
__be32 ctxt_data1;
__be32 ctxt_data0;
} idctxt;
struct fw_ldst_mdio {
__be16 paddr_mmd;
__be16 raddr;
__be16 vctl;
__be16 rval;
} mdio;
struct fw_ldst_cim_rq {
__u8 req_first64[8];
__u8 req_second64[8];
__u8 resp_first64[8];
__u8 resp_second64[8];
__be32 r3[2];
} cim_rq;
union fw_ldst_mps {
struct fw_ldst_mps_rplc {
__be16 fid_idx;
__be16 rplcpf_pkd;
__be32 rplc255_224;
__be32 rplc223_192;
__be32 rplc191_160;
__be32 rplc159_128;
__be32 rplc127_96;
__be32 rplc95_64;
__be32 rplc63_32;
__be32 rplc31_0;
} rplc;
struct fw_ldst_mps_atrb {
__be16 fid_mpsid;
__be16 r2[3];
__be32 r3[2];
__be32 r4;
__be32 atrb;
__be16 vlan[16];
} atrb;
} mps;
struct fw_ldst_func {
__u8 access_ctl;
__u8 mod_index;
__be16 ctl_id;
__be32 offset;
__be64 data0;
__be64 data1;
} func;
struct fw_ldst_pcie {
__u8 ctrl_to_fn;
__u8 bnum;
__u8 r;
__u8 ext_r;
__u8 select_naccess;
__u8 pcie_fn;
__be16 nset_pkd;
__be32 data[12];
} pcie;
struct fw_ldst_i2c_deprecated {
__u8 pid_pkd;
__u8 base;
__u8 boffset;
__u8 data;
__be32 r9;
} i2c_deprecated;
struct fw_ldst_i2c {
__u8 pid;
__u8 did;
__u8 boffset;
__u8 blen;
__be32 r9;
__u8 data[48];
} i2c;
struct fw_ldst_le {
__be32 index;
__be32 r9;
__u8 val[33];
__u8 r11[7];
} le;
} u;
};
#define S_FW_LDST_CMD_ADDRSPACE 0
#define M_FW_LDST_CMD_ADDRSPACE 0xff
#define V_FW_LDST_CMD_ADDRSPACE(x) ((x) << S_FW_LDST_CMD_ADDRSPACE)
#define G_FW_LDST_CMD_ADDRSPACE(x) \
(((x) >> S_FW_LDST_CMD_ADDRSPACE) & M_FW_LDST_CMD_ADDRSPACE)
#define S_FW_LDST_CMD_CYCLES 16
#define M_FW_LDST_CMD_CYCLES 0xffff
#define V_FW_LDST_CMD_CYCLES(x) ((x) << S_FW_LDST_CMD_CYCLES)
#define G_FW_LDST_CMD_CYCLES(x) \
(((x) >> S_FW_LDST_CMD_CYCLES) & M_FW_LDST_CMD_CYCLES)
#define S_FW_LDST_CMD_MSG 31
#define M_FW_LDST_CMD_MSG 0x1
#define V_FW_LDST_CMD_MSG(x) ((x) << S_FW_LDST_CMD_MSG)
#define G_FW_LDST_CMD_MSG(x) \
(((x) >> S_FW_LDST_CMD_MSG) & M_FW_LDST_CMD_MSG)
#define F_FW_LDST_CMD_MSG V_FW_LDST_CMD_MSG(1U)
#define S_FW_LDST_CMD_CTXTFLUSH 30
#define M_FW_LDST_CMD_CTXTFLUSH 0x1
#define V_FW_LDST_CMD_CTXTFLUSH(x) ((x) << S_FW_LDST_CMD_CTXTFLUSH)
#define G_FW_LDST_CMD_CTXTFLUSH(x) \
(((x) >> S_FW_LDST_CMD_CTXTFLUSH) & M_FW_LDST_CMD_CTXTFLUSH)
#define F_FW_LDST_CMD_CTXTFLUSH V_FW_LDST_CMD_CTXTFLUSH(1U)
#define S_FW_LDST_CMD_PADDR 8
#define M_FW_LDST_CMD_PADDR 0x1f
#define V_FW_LDST_CMD_PADDR(x) ((x) << S_FW_LDST_CMD_PADDR)
#define G_FW_LDST_CMD_PADDR(x) \
(((x) >> S_FW_LDST_CMD_PADDR) & M_FW_LDST_CMD_PADDR)
#define S_FW_LDST_CMD_MMD 0
#define M_FW_LDST_CMD_MMD 0x1f
#define V_FW_LDST_CMD_MMD(x) ((x) << S_FW_LDST_CMD_MMD)
#define G_FW_LDST_CMD_MMD(x) \
(((x) >> S_FW_LDST_CMD_MMD) & M_FW_LDST_CMD_MMD)
#define S_FW_LDST_CMD_FID 15
#define M_FW_LDST_CMD_FID 0x1
#define V_FW_LDST_CMD_FID(x) ((x) << S_FW_LDST_CMD_FID)
#define G_FW_LDST_CMD_FID(x) \
(((x) >> S_FW_LDST_CMD_FID) & M_FW_LDST_CMD_FID)
#define F_FW_LDST_CMD_FID V_FW_LDST_CMD_FID(1U)
#define S_FW_LDST_CMD_IDX 0
#define M_FW_LDST_CMD_IDX 0x7fff
#define V_FW_LDST_CMD_IDX(x) ((x) << S_FW_LDST_CMD_IDX)
#define G_FW_LDST_CMD_IDX(x) \
(((x) >> S_FW_LDST_CMD_IDX) & M_FW_LDST_CMD_IDX)
#define S_FW_LDST_CMD_RPLCPF 0
#define M_FW_LDST_CMD_RPLCPF 0xff
#define V_FW_LDST_CMD_RPLCPF(x) ((x) << S_FW_LDST_CMD_RPLCPF)
#define G_FW_LDST_CMD_RPLCPF(x) \
(((x) >> S_FW_LDST_CMD_RPLCPF) & M_FW_LDST_CMD_RPLCPF)
#define S_FW_LDST_CMD_MPSID 0
#define M_FW_LDST_CMD_MPSID 0x7fff
#define V_FW_LDST_CMD_MPSID(x) ((x) << S_FW_LDST_CMD_MPSID)
#define G_FW_LDST_CMD_MPSID(x) \
(((x) >> S_FW_LDST_CMD_MPSID) & M_FW_LDST_CMD_MPSID)
#define S_FW_LDST_CMD_CTRL 7
#define M_FW_LDST_CMD_CTRL 0x1
#define V_FW_LDST_CMD_CTRL(x) ((x) << S_FW_LDST_CMD_CTRL)
#define G_FW_LDST_CMD_CTRL(x) \
(((x) >> S_FW_LDST_CMD_CTRL) & M_FW_LDST_CMD_CTRL)
#define F_FW_LDST_CMD_CTRL V_FW_LDST_CMD_CTRL(1U)
#define S_FW_LDST_CMD_LC 4
#define M_FW_LDST_CMD_LC 0x1
#define V_FW_LDST_CMD_LC(x) ((x) << S_FW_LDST_CMD_LC)
#define G_FW_LDST_CMD_LC(x) \
(((x) >> S_FW_LDST_CMD_LC) & M_FW_LDST_CMD_LC)
#define F_FW_LDST_CMD_LC V_FW_LDST_CMD_LC(1U)
#define S_FW_LDST_CMD_AI 3
#define M_FW_LDST_CMD_AI 0x1
#define V_FW_LDST_CMD_AI(x) ((x) << S_FW_LDST_CMD_AI)
#define G_FW_LDST_CMD_AI(x) \
(((x) >> S_FW_LDST_CMD_AI) & M_FW_LDST_CMD_AI)
#define F_FW_LDST_CMD_AI V_FW_LDST_CMD_AI(1U)
#define S_FW_LDST_CMD_FN 0
#define M_FW_LDST_CMD_FN 0x7
#define V_FW_LDST_CMD_FN(x) ((x) << S_FW_LDST_CMD_FN)
#define G_FW_LDST_CMD_FN(x) \
(((x) >> S_FW_LDST_CMD_FN) & M_FW_LDST_CMD_FN)
#define S_FW_LDST_CMD_SELECT 4
#define M_FW_LDST_CMD_SELECT 0xf
#define V_FW_LDST_CMD_SELECT(x) ((x) << S_FW_LDST_CMD_SELECT)
#define G_FW_LDST_CMD_SELECT(x) \
(((x) >> S_FW_LDST_CMD_SELECT) & M_FW_LDST_CMD_SELECT)
#define S_FW_LDST_CMD_NACCESS 0
#define M_FW_LDST_CMD_NACCESS 0xf
#define V_FW_LDST_CMD_NACCESS(x) ((x) << S_FW_LDST_CMD_NACCESS)
#define G_FW_LDST_CMD_NACCESS(x) \
(((x) >> S_FW_LDST_CMD_NACCESS) & M_FW_LDST_CMD_NACCESS)
#define S_FW_LDST_CMD_NSET 14
#define M_FW_LDST_CMD_NSET 0x3
#define V_FW_LDST_CMD_NSET(x) ((x) << S_FW_LDST_CMD_NSET)
#define G_FW_LDST_CMD_NSET(x) \
(((x) >> S_FW_LDST_CMD_NSET) & M_FW_LDST_CMD_NSET)
#define S_FW_LDST_CMD_PID 6
#define M_FW_LDST_CMD_PID 0x3
#define V_FW_LDST_CMD_PID(x) ((x) << S_FW_LDST_CMD_PID)
#define G_FW_LDST_CMD_PID(x) \
(((x) >> S_FW_LDST_CMD_PID) & M_FW_LDST_CMD_PID)
struct fw_reset_cmd {
__be32 op_to_write;
__be32 retval_len16;
__be32 val;
__be32 halt_pkd;
};
#define S_FW_RESET_CMD_HALT 31
#define M_FW_RESET_CMD_HALT 0x1
#define V_FW_RESET_CMD_HALT(x) ((x) << S_FW_RESET_CMD_HALT)
#define G_FW_RESET_CMD_HALT(x) \
(((x) >> S_FW_RESET_CMD_HALT) & M_FW_RESET_CMD_HALT)
#define F_FW_RESET_CMD_HALT V_FW_RESET_CMD_HALT(1U)
enum {
FW_HELLO_CMD_STAGE_OS = 0,
FW_HELLO_CMD_STAGE_PREOS0 = 1,
FW_HELLO_CMD_STAGE_PREOS1 = 2,
FW_HELLO_CMD_STAGE_POSTOS = 3,
};
struct fw_hello_cmd {
__be32 op_to_write;
__be32 retval_len16;
__be32 err_to_clearinit;
__be32 fwrev;
};
#define S_FW_HELLO_CMD_ERR 31
#define M_FW_HELLO_CMD_ERR 0x1
#define V_FW_HELLO_CMD_ERR(x) ((x) << S_FW_HELLO_CMD_ERR)
#define G_FW_HELLO_CMD_ERR(x) \
(((x) >> S_FW_HELLO_CMD_ERR) & M_FW_HELLO_CMD_ERR)
#define F_FW_HELLO_CMD_ERR V_FW_HELLO_CMD_ERR(1U)
#define S_FW_HELLO_CMD_INIT 30
#define M_FW_HELLO_CMD_INIT 0x1
#define V_FW_HELLO_CMD_INIT(x) ((x) << S_FW_HELLO_CMD_INIT)
#define G_FW_HELLO_CMD_INIT(x) \
(((x) >> S_FW_HELLO_CMD_INIT) & M_FW_HELLO_CMD_INIT)
#define F_FW_HELLO_CMD_INIT V_FW_HELLO_CMD_INIT(1U)
#define S_FW_HELLO_CMD_MASTERDIS 29
#define M_FW_HELLO_CMD_MASTERDIS 0x1
#define V_FW_HELLO_CMD_MASTERDIS(x) ((x) << S_FW_HELLO_CMD_MASTERDIS)
#define G_FW_HELLO_CMD_MASTERDIS(x) \
(((x) >> S_FW_HELLO_CMD_MASTERDIS) & M_FW_HELLO_CMD_MASTERDIS)
#define F_FW_HELLO_CMD_MASTERDIS V_FW_HELLO_CMD_MASTERDIS(1U)
#define S_FW_HELLO_CMD_MASTERFORCE 28
#define M_FW_HELLO_CMD_MASTERFORCE 0x1
#define V_FW_HELLO_CMD_MASTERFORCE(x) ((x) << S_FW_HELLO_CMD_MASTERFORCE)
#define G_FW_HELLO_CMD_MASTERFORCE(x) \
(((x) >> S_FW_HELLO_CMD_MASTERFORCE) & M_FW_HELLO_CMD_MASTERFORCE)
#define F_FW_HELLO_CMD_MASTERFORCE V_FW_HELLO_CMD_MASTERFORCE(1U)
#define S_FW_HELLO_CMD_MBMASTER 24
#define M_FW_HELLO_CMD_MBMASTER 0xf
#define V_FW_HELLO_CMD_MBMASTER(x) ((x) << S_FW_HELLO_CMD_MBMASTER)
#define G_FW_HELLO_CMD_MBMASTER(x) \
(((x) >> S_FW_HELLO_CMD_MBMASTER) & M_FW_HELLO_CMD_MBMASTER)
#define S_FW_HELLO_CMD_MBASYNCNOTINT 23
#define M_FW_HELLO_CMD_MBASYNCNOTINT 0x1
#define V_FW_HELLO_CMD_MBASYNCNOTINT(x) ((x) << S_FW_HELLO_CMD_MBASYNCNOTINT)
#define G_FW_HELLO_CMD_MBASYNCNOTINT(x) \
(((x) >> S_FW_HELLO_CMD_MBASYNCNOTINT) & M_FW_HELLO_CMD_MBASYNCNOTINT)
#define F_FW_HELLO_CMD_MBASYNCNOTINT V_FW_HELLO_CMD_MBASYNCNOTINT(1U)
#define S_FW_HELLO_CMD_MBASYNCNOT 20
#define M_FW_HELLO_CMD_MBASYNCNOT 0x7
#define V_FW_HELLO_CMD_MBASYNCNOT(x) ((x) << S_FW_HELLO_CMD_MBASYNCNOT)
#define G_FW_HELLO_CMD_MBASYNCNOT(x) \
(((x) >> S_FW_HELLO_CMD_MBASYNCNOT) & M_FW_HELLO_CMD_MBASYNCNOT)
#define S_FW_HELLO_CMD_STAGE 17
#define M_FW_HELLO_CMD_STAGE 0x7
#define V_FW_HELLO_CMD_STAGE(x) ((x) << S_FW_HELLO_CMD_STAGE)
#define G_FW_HELLO_CMD_STAGE(x) \
(((x) >> S_FW_HELLO_CMD_STAGE) & M_FW_HELLO_CMD_STAGE)
#define S_FW_HELLO_CMD_CLEARINIT 16
#define M_FW_HELLO_CMD_CLEARINIT 0x1
#define V_FW_HELLO_CMD_CLEARINIT(x) ((x) << S_FW_HELLO_CMD_CLEARINIT)
#define G_FW_HELLO_CMD_CLEARINIT(x) \
(((x) >> S_FW_HELLO_CMD_CLEARINIT) & M_FW_HELLO_CMD_CLEARINIT)
#define F_FW_HELLO_CMD_CLEARINIT V_FW_HELLO_CMD_CLEARINIT(1U)
struct fw_bye_cmd {
__be32 op_to_write;
__be32 retval_len16;
__be64 r3;
};
struct fw_initialize_cmd {
__be32 op_to_write;
__be32 retval_len16;
__be64 r3;
};
enum fw_caps_config_hm {
FW_CAPS_CONFIG_HM_PCIE = 0x00000001,
FW_CAPS_CONFIG_HM_PL = 0x00000002,
FW_CAPS_CONFIG_HM_SGE = 0x00000004,
FW_CAPS_CONFIG_HM_CIM = 0x00000008,
FW_CAPS_CONFIG_HM_ULPTX = 0x00000010,
FW_CAPS_CONFIG_HM_TP = 0x00000020,
FW_CAPS_CONFIG_HM_ULPRX = 0x00000040,
FW_CAPS_CONFIG_HM_PMRX = 0x00000080,
FW_CAPS_CONFIG_HM_PMTX = 0x00000100,
FW_CAPS_CONFIG_HM_MC = 0x00000200,
FW_CAPS_CONFIG_HM_LE = 0x00000400,
FW_CAPS_CONFIG_HM_MPS = 0x00000800,
FW_CAPS_CONFIG_HM_XGMAC = 0x00001000,
FW_CAPS_CONFIG_HM_CPLSWITCH = 0x00002000,
FW_CAPS_CONFIG_HM_T4DBG = 0x00004000,
FW_CAPS_CONFIG_HM_MI = 0x00008000,
FW_CAPS_CONFIG_HM_I2CM = 0x00010000,
FW_CAPS_CONFIG_HM_NCSI = 0x00020000,
FW_CAPS_CONFIG_HM_SMB = 0x00040000,
FW_CAPS_CONFIG_HM_MA = 0x00080000,
FW_CAPS_CONFIG_HM_EDRAM = 0x00100000,
FW_CAPS_CONFIG_HM_PMU = 0x00200000,
FW_CAPS_CONFIG_HM_UART = 0x00400000,
FW_CAPS_CONFIG_HM_SF = 0x00800000,
};
/*
* The VF Register Map.
*
* The Scatter Gather Engine (SGE), Multiport Support module (MPS), PIO Local
* bus module (PL) and CPU Interface Module (CIM) components are mapped via
* the Slice to Module Map Table (see below) in the Physical Function Register
* Map. The Mail Box Data (MBDATA) range is mapped via the PCI-E Mailbox Base
* and Offset registers in the PF Register Map. The MBDATA base address is
* quite constrained as it determines the Mailbox Data addresses for both PFs
* and VFs, and therefore must fit in both the VF and PF Register Maps without
* overlapping other registers.
*/
#define FW_T4VF_SGE_BASE_ADDR 0x0000
#define FW_T4VF_MPS_BASE_ADDR 0x0100
#define FW_T4VF_PL_BASE_ADDR 0x0200
#define FW_T4VF_MBDATA_BASE_ADDR 0x0240
#define FW_T6VF_MBDATA_BASE_ADDR 0x0280 /* aligned to mbox size 128B */
#define FW_T4VF_CIM_BASE_ADDR 0x0300
#define FW_T4VF_REGMAP_START 0x0000
#define FW_T4VF_REGMAP_SIZE 0x0400
enum fw_caps_config_nbm {
FW_CAPS_CONFIG_NBM_IPMI = 0x00000001,
FW_CAPS_CONFIG_NBM_NCSI = 0x00000002,
};
enum fw_caps_config_link {
FW_CAPS_CONFIG_LINK_PPP = 0x00000001,
FW_CAPS_CONFIG_LINK_QFC = 0x00000002,
FW_CAPS_CONFIG_LINK_DCBX = 0x00000004,
};
enum fw_caps_config_switch {
FW_CAPS_CONFIG_SWITCH_INGRESS = 0x00000001,
FW_CAPS_CONFIG_SWITCH_EGRESS = 0x00000002,
};
enum fw_caps_config_nic {
FW_CAPS_CONFIG_NIC = 0x00000001,
FW_CAPS_CONFIG_NIC_VM = 0x00000002,
FW_CAPS_CONFIG_NIC_IDS = 0x00000004,
FW_CAPS_CONFIG_NIC_UM = 0x00000008,
FW_CAPS_CONFIG_NIC_UM_ISGL = 0x00000010,
FW_CAPS_CONFIG_NIC_HASHFILTER = 0x00000020,
FW_CAPS_CONFIG_NIC_ETHOFLD = 0x00000040,
};
enum fw_caps_config_toe {
FW_CAPS_CONFIG_TOE = 0x00000001,
};
enum fw_caps_config_rdma {
FW_CAPS_CONFIG_RDMA_RDDP = 0x00000001,
FW_CAPS_CONFIG_RDMA_RDMAC = 0x00000002,
};
enum fw_caps_config_iscsi {
FW_CAPS_CONFIG_ISCSI_INITIATOR_PDU = 0x00000001,
FW_CAPS_CONFIG_ISCSI_TARGET_PDU = 0x00000002,
FW_CAPS_CONFIG_ISCSI_INITIATOR_CNXOFLD = 0x00000004,
FW_CAPS_CONFIG_ISCSI_TARGET_CNXOFLD = 0x00000008,
FW_CAPS_CONFIG_ISCSI_INITIATOR_SSNOFLD = 0x00000010,
FW_CAPS_CONFIG_ISCSI_TARGET_SSNOFLD = 0x00000020,
FW_CAPS_CONFIG_ISCSI_T10DIF = 0x00000040,
FW_CAPS_CONFIG_ISCSI_INITIATOR_CMDOFLD = 0x00000080,
FW_CAPS_CONFIG_ISCSI_TARGET_CMDOFLD = 0x00000100,
};
enum fw_caps_config_tls {
FW_CAPS_CONFIG_TLSKEYS = 0x00000001,
};
enum fw_caps_config_fcoe {
FW_CAPS_CONFIG_FCOE_INITIATOR = 0x00000001,
FW_CAPS_CONFIG_FCOE_TARGET = 0x00000002,
FW_CAPS_CONFIG_FCOE_CTRL_OFLD = 0x00000004,
FW_CAPS_CONFIG_POFCOE_INITIATOR = 0x00000008,
FW_CAPS_CONFIG_POFCOE_TARGET = 0x00000010,
};
enum fw_memtype_cf {
FW_MEMTYPE_CF_EDC0 = FW_MEMTYPE_EDC0,
FW_MEMTYPE_CF_EDC1 = FW_MEMTYPE_EDC1,
FW_MEMTYPE_CF_EXTMEM = FW_MEMTYPE_EXTMEM,
FW_MEMTYPE_CF_FLASH = FW_MEMTYPE_FLASH,
FW_MEMTYPE_CF_INTERNAL = FW_MEMTYPE_INTERNAL,
FW_MEMTYPE_CF_EXTMEM1 = FW_MEMTYPE_EXTMEM1,
};
struct fw_caps_config_cmd {
__be32 op_to_write;
__be32 cfvalid_to_len16;
__be32 r2;
__be32 hwmbitmap;
__be16 nbmcaps;
__be16 linkcaps;
__be16 switchcaps;
__be16 r3;
__be16 niccaps;
__be16 toecaps;
__be16 rdmacaps;
__be16 tlscaps;
__be16 iscsicaps;
__be16 fcoecaps;
__be32 cfcsum;
__be32 finiver;
__be32 finicsum;
};
#define S_FW_CAPS_CONFIG_CMD_CFVALID 27
#define M_FW_CAPS_CONFIG_CMD_CFVALID 0x1
#define V_FW_CAPS_CONFIG_CMD_CFVALID(x) ((x) << S_FW_CAPS_CONFIG_CMD_CFVALID)
#define G_FW_CAPS_CONFIG_CMD_CFVALID(x) \
(((x) >> S_FW_CAPS_CONFIG_CMD_CFVALID) & M_FW_CAPS_CONFIG_CMD_CFVALID)
#define F_FW_CAPS_CONFIG_CMD_CFVALID V_FW_CAPS_CONFIG_CMD_CFVALID(1U)
#define S_FW_CAPS_CONFIG_CMD_MEMTYPE_CF 24
#define M_FW_CAPS_CONFIG_CMD_MEMTYPE_CF 0x7
#define V_FW_CAPS_CONFIG_CMD_MEMTYPE_CF(x) \
((x) << S_FW_CAPS_CONFIG_CMD_MEMTYPE_CF)
#define G_FW_CAPS_CONFIG_CMD_MEMTYPE_CF(x) \
(((x) >> S_FW_CAPS_CONFIG_CMD_MEMTYPE_CF) & \
M_FW_CAPS_CONFIG_CMD_MEMTYPE_CF)
#define S_FW_CAPS_CONFIG_CMD_MEMADDR64K_CF 16
#define M_FW_CAPS_CONFIG_CMD_MEMADDR64K_CF 0xff
#define V_FW_CAPS_CONFIG_CMD_MEMADDR64K_CF(x) \
((x) << S_FW_CAPS_CONFIG_CMD_MEMADDR64K_CF)
#define G_FW_CAPS_CONFIG_CMD_MEMADDR64K_CF(x) \
(((x) >> S_FW_CAPS_CONFIG_CMD_MEMADDR64K_CF) & \
M_FW_CAPS_CONFIG_CMD_MEMADDR64K_CF)
/*
* params command mnemonics
*/
enum fw_params_mnem {
FW_PARAMS_MNEM_DEV = 1, /* device params */
FW_PARAMS_MNEM_PFVF = 2, /* function params */
FW_PARAMS_MNEM_REG = 3, /* limited register access */
FW_PARAMS_MNEM_DMAQ = 4, /* dma queue params */
FW_PARAMS_MNEM_CHNET = 5, /* chnet params */
FW_PARAMS_MNEM_LAST
};
/*
* device parameters
*/
enum fw_params_param_dev {
FW_PARAMS_PARAM_DEV_CCLK = 0x00, /* chip core clock in khz */
FW_PARAMS_PARAM_DEV_PORTVEC = 0x01, /* the port vector */
FW_PARAMS_PARAM_DEV_NTID = 0x02, /* reads the number of TIDs
* allocated by the device's
* Lookup Engine
*/
FW_PARAMS_PARAM_DEV_FLOWC_BUFFIFO_SZ = 0x03,
FW_PARAMS_PARAM_DEV_INTFVER_NIC = 0x04,
FW_PARAMS_PARAM_DEV_INTFVER_VNIC = 0x05,
FW_PARAMS_PARAM_DEV_INTFVER_OFLD = 0x06,
FW_PARAMS_PARAM_DEV_INTFVER_RI = 0x07,
FW_PARAMS_PARAM_DEV_INTFVER_ISCSIPDU = 0x08,
FW_PARAMS_PARAM_DEV_INTFVER_ISCSI = 0x09,
FW_PARAMS_PARAM_DEV_INTFVER_FCOE = 0x0A,
FW_PARAMS_PARAM_DEV_FWREV = 0x0B,
FW_PARAMS_PARAM_DEV_TPREV = 0x0C,
FW_PARAMS_PARAM_DEV_CF = 0x0D,
FW_PARAMS_PARAM_DEV_BYPASS = 0x0E,
FW_PARAMS_PARAM_DEV_PHYFW = 0x0F,
FW_PARAMS_PARAM_DEV_LOAD = 0x10,
FW_PARAMS_PARAM_DEV_DIAG = 0x11,
FW_PARAMS_PARAM_DEV_UCLK = 0x12, /* uP clock in khz */
FW_PARAMS_PARAM_DEV_MAXORDIRD_QP = 0x13, /* max supported QP IRD/ORD
*/
FW_PARAMS_PARAM_DEV_MAXIRD_ADAPTER= 0x14,/* max supported ADAPTER IRD
*/
FW_PARAMS_PARAM_DEV_INTFVER_FCOEPDU = 0x15,
FW_PARAMS_PARAM_DEV_MCINIT = 0x16,
FW_PARAMS_PARAM_DEV_ULPTX_MEMWRITE_DSGL = 0x17,
FW_PARAMS_PARAM_DEV_FWCACHE = 0x18,
FW_PARAMS_PARAM_DEV_RSSINFO = 0x19,
};
/*
* dev bypass parameters; actions and modes
*/
enum fw_params_param_dev_bypass {
/* actions
*/
FW_PARAMS_PARAM_DEV_BYPASS_PFAIL = 0x00,
FW_PARAMS_PARAM_DEV_BYPASS_CURRENT = 0x01,
/* modes
*/
FW_PARAMS_PARAM_DEV_BYPASS_NORMAL = 0x00,
FW_PARAMS_PARAM_DEV_BYPASS_DROP = 0x1,
FW_PARAMS_PARAM_DEV_BYPASS_BYPASS = 0x2,
};
enum fw_params_param_dev_phyfw {
FW_PARAMS_PARAM_DEV_PHYFW_DOWNLOAD = 0x00,
FW_PARAMS_PARAM_DEV_PHYFW_VERSION = 0x01,
};
enum fw_params_param_dev_diag {
FW_PARAM_DEV_DIAG_TMP = 0x00,
FW_PARAM_DEV_DIAG_VDD = 0x01,
};
enum fw_params_param_dev_fwcache {
FW_PARAM_DEV_FWCACHE_FLUSH = 0x00,
FW_PARAM_DEV_FWCACHE_FLUSHINV = 0x01,
};
/*
* physical and virtual function parameters
*/
enum fw_params_param_pfvf {
FW_PARAMS_PARAM_PFVF_RWXCAPS = 0x00,
FW_PARAMS_PARAM_PFVF_ROUTE_START = 0x01,
FW_PARAMS_PARAM_PFVF_ROUTE_END = 0x02,
FW_PARAMS_PARAM_PFVF_CLIP_START = 0x03,
FW_PARAMS_PARAM_PFVF_CLIP_END = 0x04,
FW_PARAMS_PARAM_PFVF_FILTER_START = 0x05,
FW_PARAMS_PARAM_PFVF_FILTER_END = 0x06,
FW_PARAMS_PARAM_PFVF_SERVER_START = 0x07,
FW_PARAMS_PARAM_PFVF_SERVER_END = 0x08,
FW_PARAMS_PARAM_PFVF_TDDP_START = 0x09,
FW_PARAMS_PARAM_PFVF_TDDP_END = 0x0A,
FW_PARAMS_PARAM_PFVF_ISCSI_START = 0x0B,
FW_PARAMS_PARAM_PFVF_ISCSI_END = 0x0C,
FW_PARAMS_PARAM_PFVF_STAG_START = 0x0D,
FW_PARAMS_PARAM_PFVF_STAG_END = 0x0E,
FW_PARAMS_PARAM_PFVF_RQ_START = 0x1F,
FW_PARAMS_PARAM_PFVF_RQ_END = 0x10,
FW_PARAMS_PARAM_PFVF_PBL_START = 0x11,
FW_PARAMS_PARAM_PFVF_PBL_END = 0x12,
FW_PARAMS_PARAM_PFVF_L2T_START = 0x13,
FW_PARAMS_PARAM_PFVF_L2T_END = 0x14,
FW_PARAMS_PARAM_PFVF_SQRQ_START = 0x15,
FW_PARAMS_PARAM_PFVF_SQRQ_END = 0x16,
FW_PARAMS_PARAM_PFVF_CQ_START = 0x17,
FW_PARAMS_PARAM_PFVF_CQ_END = 0x18,
FW_PARAMS_PARAM_PFVF_SRQ_START = 0x19,
FW_PARAMS_PARAM_PFVF_SRQ_END = 0x1A,
FW_PARAMS_PARAM_PFVF_SCHEDCLASS_ETH = 0x20,
FW_PARAMS_PARAM_PFVF_VIID = 0x24,
FW_PARAMS_PARAM_PFVF_CPMASK = 0x25,
FW_PARAMS_PARAM_PFVF_OCQ_START = 0x26,
FW_PARAMS_PARAM_PFVF_OCQ_END = 0x27,
FW_PARAMS_PARAM_PFVF_CONM_MAP = 0x28,
FW_PARAMS_PARAM_PFVF_IQFLINT_START = 0x29,
FW_PARAMS_PARAM_PFVF_IQFLINT_END = 0x2A,
FW_PARAMS_PARAM_PFVF_EQ_START = 0x2B,
FW_PARAMS_PARAM_PFVF_EQ_END = 0x2C,
FW_PARAMS_PARAM_PFVF_ACTIVE_FILTER_START = 0x2D,
FW_PARAMS_PARAM_PFVF_ACTIVE_FILTER_END = 0x2E,
FW_PARAMS_PARAM_PFVF_ETHOFLD_START = 0x2F,
FW_PARAMS_PARAM_PFVF_ETHOFLD_END = 0x30,
FW_PARAMS_PARAM_PFVF_CPLFW4MSG_ENCAP = 0x31,
FW_PARAMS_PARAM_PFVF_HPFILTER_START = 0x32,
FW_PARAMS_PARAM_PFVF_HPFILTER_END = 0x33,
FW_PARAMS_PARAM_PFVF_TLS_START = 0x34,
FW_PARAMS_PARAM_PFVF_TLS_END = 0x35,
FW_PARAMS_PARAM_PFVF_RAWF_START = 0x36,
FW_PARAMS_PARAM_PFVF_RAWF_END = 0x37,
};
/*
* dma queue parameters
*/
enum fw_params_param_dmaq {
FW_PARAMS_PARAM_DMAQ_IQ_DCAEN_DCACPU = 0x00,
FW_PARAMS_PARAM_DMAQ_IQ_INTCNTTHRESH = 0x01,
FW_PARAMS_PARAM_DMAQ_IQ_INTIDX = 0x02,
FW_PARAMS_PARAM_DMAQ_IQ_DCA = 0x03,
FW_PARAMS_PARAM_DMAQ_EQ_CMPLIQID_MNGT = 0x10,
FW_PARAMS_PARAM_DMAQ_EQ_CMPLIQID_CTRL = 0x11,
FW_PARAMS_PARAM_DMAQ_EQ_SCHEDCLASS_ETH = 0x12,
FW_PARAMS_PARAM_DMAQ_EQ_DCBPRIO_ETH = 0x13,
FW_PARAMS_PARAM_DMAQ_EQ_DCA = 0x14,
FW_PARAMS_PARAM_DMAQ_CONM_CTXT = 0x20,
FW_PARAMS_PARAM_DMAQ_FLM_DCA = 0x30
};
/*
* chnet parameters
*/
enum fw_params_param_chnet {
FW_PARAMS_PARAM_CHNET_FLAGS = 0x00,
};
enum fw_params_param_chnet_flags {
FW_PARAMS_PARAM_CHNET_FLAGS_ENABLE_IPV6 = 0x1,
FW_PARAMS_PARAM_CHNET_FLAGS_ENABLE_DAD = 0x2,
FW_PARAMS_PARAM_CHNET_FLAGS_ENABLE_MLDV2= 0x4,
};
#define S_FW_PARAMS_MNEM 24
#define M_FW_PARAMS_MNEM 0xff
#define V_FW_PARAMS_MNEM(x) ((x) << S_FW_PARAMS_MNEM)
#define G_FW_PARAMS_MNEM(x) \
(((x) >> S_FW_PARAMS_MNEM) & M_FW_PARAMS_MNEM)
#define S_FW_PARAMS_PARAM_X 16
#define M_FW_PARAMS_PARAM_X 0xff
#define V_FW_PARAMS_PARAM_X(x) ((x) << S_FW_PARAMS_PARAM_X)
#define G_FW_PARAMS_PARAM_X(x) \
(((x) >> S_FW_PARAMS_PARAM_X) & M_FW_PARAMS_PARAM_X)
#define S_FW_PARAMS_PARAM_Y 8
#define M_FW_PARAMS_PARAM_Y 0xff
#define V_FW_PARAMS_PARAM_Y(x) ((x) << S_FW_PARAMS_PARAM_Y)
#define G_FW_PARAMS_PARAM_Y(x) \
(((x) >> S_FW_PARAMS_PARAM_Y) & M_FW_PARAMS_PARAM_Y)
#define S_FW_PARAMS_PARAM_Z 0
#define M_FW_PARAMS_PARAM_Z 0xff
#define V_FW_PARAMS_PARAM_Z(x) ((x) << S_FW_PARAMS_PARAM_Z)
#define G_FW_PARAMS_PARAM_Z(x) \
(((x) >> S_FW_PARAMS_PARAM_Z) & M_FW_PARAMS_PARAM_Z)
#define S_FW_PARAMS_PARAM_XYZ 0
#define M_FW_PARAMS_PARAM_XYZ 0xffffff
#define V_FW_PARAMS_PARAM_XYZ(x) ((x) << S_FW_PARAMS_PARAM_XYZ)
#define G_FW_PARAMS_PARAM_XYZ(x) \
(((x) >> S_FW_PARAMS_PARAM_XYZ) & M_FW_PARAMS_PARAM_XYZ)
#define S_FW_PARAMS_PARAM_YZ 0
#define M_FW_PARAMS_PARAM_YZ 0xffff
#define V_FW_PARAMS_PARAM_YZ(x) ((x) << S_FW_PARAMS_PARAM_YZ)
#define G_FW_PARAMS_PARAM_YZ(x) \
(((x) >> S_FW_PARAMS_PARAM_YZ) & M_FW_PARAMS_PARAM_YZ)
#define S_FW_PARAMS_PARAM_DMAQ_DCA_TPHINTEN 31
#define M_FW_PARAMS_PARAM_DMAQ_DCA_TPHINTEN 0x1
#define V_FW_PARAMS_PARAM_DMAQ_DCA_TPHINTEN(x) \
((x) << S_FW_PARAMS_PARAM_DMAQ_DCA_TPHINTEN)
#define G_FW_PARAMS_PARAM_DMAQ_DCA_TPHINTEN(x) \
(((x) >> S_FW_PARAMS_PARAM_DMAQ_DCA_TPHINTEN) & \
M_FW_PARAMS_PARAM_DMAQ_DCA_TPHINTEN)
#define S_FW_PARAMS_PARAM_DMAQ_DCA_TPHINT 24
#define M_FW_PARAMS_PARAM_DMAQ_DCA_TPHINT 0x3
#define V_FW_PARAMS_PARAM_DMAQ_DCA_TPHINT(x) \
((x) << S_FW_PARAMS_PARAM_DMAQ_DCA_TPHINT)
#define G_FW_PARAMS_PARAM_DMAQ_DCA_TPHINT(x) \
(((x) >> S_FW_PARAMS_PARAM_DMAQ_DCA_TPHINT) & \
M_FW_PARAMS_PARAM_DMAQ_DCA_TPHINT)
#define S_FW_PARAMS_PARAM_DMAQ_DCA_ST 0
#define M_FW_PARAMS_PARAM_DMAQ_DCA_ST 0x7ff
#define V_FW_PARAMS_PARAM_DMAQ_DCA_ST(x) \
((x) << S_FW_PARAMS_PARAM_DMAQ_DCA_ST)
#define G_FW_PARAMS_PARAM_DMAQ_DCA_ST(x) \
(((x) >> S_FW_PARAMS_PARAM_DMAQ_DCA_ST) & M_FW_PARAMS_PARAM_DMAQ_DCA_ST)
struct fw_params_cmd {
__be32 op_to_vfn;
__be32 retval_len16;
struct fw_params_param {
__be32 mnem;
__be32 val;
} param[7];
};
#define S_FW_PARAMS_CMD_PFN 8
#define M_FW_PARAMS_CMD_PFN 0x7
#define V_FW_PARAMS_CMD_PFN(x) ((x) << S_FW_PARAMS_CMD_PFN)
#define G_FW_PARAMS_CMD_PFN(x) \
(((x) >> S_FW_PARAMS_CMD_PFN) & M_FW_PARAMS_CMD_PFN)
#define S_FW_PARAMS_CMD_VFN 0
#define M_FW_PARAMS_CMD_VFN 0xff
#define V_FW_PARAMS_CMD_VFN(x) ((x) << S_FW_PARAMS_CMD_VFN)
#define G_FW_PARAMS_CMD_VFN(x) \
(((x) >> S_FW_PARAMS_CMD_VFN) & M_FW_PARAMS_CMD_VFN)
struct fw_pfvf_cmd {
__be32 op_to_vfn;
__be32 retval_len16;
__be32 niqflint_niq;
__be32 type_to_neq;
__be32 tc_to_nexactf;
__be32 r_caps_to_nethctrl;
__be16 nricq;
__be16 nriqp;
__be32 r4;
};
#define S_FW_PFVF_CMD_PFN 8
#define M_FW_PFVF_CMD_PFN 0x7
#define V_FW_PFVF_CMD_PFN(x) ((x) << S_FW_PFVF_CMD_PFN)
#define G_FW_PFVF_CMD_PFN(x) \
(((x) >> S_FW_PFVF_CMD_PFN) & M_FW_PFVF_CMD_PFN)
#define S_FW_PFVF_CMD_VFN 0
#define M_FW_PFVF_CMD_VFN 0xff
#define V_FW_PFVF_CMD_VFN(x) ((x) << S_FW_PFVF_CMD_VFN)
#define G_FW_PFVF_CMD_VFN(x) \
(((x) >> S_FW_PFVF_CMD_VFN) & M_FW_PFVF_CMD_VFN)
#define S_FW_PFVF_CMD_NIQFLINT 20
#define M_FW_PFVF_CMD_NIQFLINT 0xfff
#define V_FW_PFVF_CMD_NIQFLINT(x) ((x) << S_FW_PFVF_CMD_NIQFLINT)
#define G_FW_PFVF_CMD_NIQFLINT(x) \
(((x) >> S_FW_PFVF_CMD_NIQFLINT) & M_FW_PFVF_CMD_NIQFLINT)
#define S_FW_PFVF_CMD_NIQ 0
#define M_FW_PFVF_CMD_NIQ 0xfffff
#define V_FW_PFVF_CMD_NIQ(x) ((x) << S_FW_PFVF_CMD_NIQ)
#define G_FW_PFVF_CMD_NIQ(x) \
(((x) >> S_FW_PFVF_CMD_NIQ) & M_FW_PFVF_CMD_NIQ)
#define S_FW_PFVF_CMD_TYPE 31
#define M_FW_PFVF_CMD_TYPE 0x1
#define V_FW_PFVF_CMD_TYPE(x) ((x) << S_FW_PFVF_CMD_TYPE)
#define G_FW_PFVF_CMD_TYPE(x) \
(((x) >> S_FW_PFVF_CMD_TYPE) & M_FW_PFVF_CMD_TYPE)
#define F_FW_PFVF_CMD_TYPE V_FW_PFVF_CMD_TYPE(1U)
#define S_FW_PFVF_CMD_CMASK 24
#define M_FW_PFVF_CMD_CMASK 0xf
#define V_FW_PFVF_CMD_CMASK(x) ((x) << S_FW_PFVF_CMD_CMASK)
#define G_FW_PFVF_CMD_CMASK(x) \
(((x) >> S_FW_PFVF_CMD_CMASK) & M_FW_PFVF_CMD_CMASK)
#define S_FW_PFVF_CMD_PMASK 20
#define M_FW_PFVF_CMD_PMASK 0xf
#define V_FW_PFVF_CMD_PMASK(x) ((x) << S_FW_PFVF_CMD_PMASK)
#define G_FW_PFVF_CMD_PMASK(x) \
(((x) >> S_FW_PFVF_CMD_PMASK) & M_FW_PFVF_CMD_PMASK)
#define S_FW_PFVF_CMD_NEQ 0
#define M_FW_PFVF_CMD_NEQ 0xfffff
#define V_FW_PFVF_CMD_NEQ(x) ((x) << S_FW_PFVF_CMD_NEQ)
#define G_FW_PFVF_CMD_NEQ(x) \
(((x) >> S_FW_PFVF_CMD_NEQ) & M_FW_PFVF_CMD_NEQ)
#define S_FW_PFVF_CMD_TC 24
#define M_FW_PFVF_CMD_TC 0xff
#define V_FW_PFVF_CMD_TC(x) ((x) << S_FW_PFVF_CMD_TC)
#define G_FW_PFVF_CMD_TC(x) \
(((x) >> S_FW_PFVF_CMD_TC) & M_FW_PFVF_CMD_TC)
#define S_FW_PFVF_CMD_NVI 16
#define M_FW_PFVF_CMD_NVI 0xff
#define V_FW_PFVF_CMD_NVI(x) ((x) << S_FW_PFVF_CMD_NVI)
#define G_FW_PFVF_CMD_NVI(x) \
(((x) >> S_FW_PFVF_CMD_NVI) & M_FW_PFVF_CMD_NVI)
#define S_FW_PFVF_CMD_NEXACTF 0
#define M_FW_PFVF_CMD_NEXACTF 0xffff
#define V_FW_PFVF_CMD_NEXACTF(x) ((x) << S_FW_PFVF_CMD_NEXACTF)
#define G_FW_PFVF_CMD_NEXACTF(x) \
(((x) >> S_FW_PFVF_CMD_NEXACTF) & M_FW_PFVF_CMD_NEXACTF)
#define S_FW_PFVF_CMD_R_CAPS 24
#define M_FW_PFVF_CMD_R_CAPS 0xff
#define V_FW_PFVF_CMD_R_CAPS(x) ((x) << S_FW_PFVF_CMD_R_CAPS)
#define G_FW_PFVF_CMD_R_CAPS(x) \
(((x) >> S_FW_PFVF_CMD_R_CAPS) & M_FW_PFVF_CMD_R_CAPS)
#define S_FW_PFVF_CMD_WX_CAPS 16
#define M_FW_PFVF_CMD_WX_CAPS 0xff
#define V_FW_PFVF_CMD_WX_CAPS(x) ((x) << S_FW_PFVF_CMD_WX_CAPS)
#define G_FW_PFVF_CMD_WX_CAPS(x) \
(((x) >> S_FW_PFVF_CMD_WX_CAPS) & M_FW_PFVF_CMD_WX_CAPS)
#define S_FW_PFVF_CMD_NETHCTRL 0
#define M_FW_PFVF_CMD_NETHCTRL 0xffff
#define V_FW_PFVF_CMD_NETHCTRL(x) ((x) << S_FW_PFVF_CMD_NETHCTRL)
#define G_FW_PFVF_CMD_NETHCTRL(x) \
(((x) >> S_FW_PFVF_CMD_NETHCTRL) & M_FW_PFVF_CMD_NETHCTRL)
/*
* ingress queue type; the first 1K ingress queues can have associated 0,
* 1 or 2 free lists and an interrupt, all other ingress queues lack these
* capabilities
*/
enum fw_iq_type {
FW_IQ_TYPE_FL_INT_CAP,
FW_IQ_TYPE_NO_FL_INT_CAP
};
struct fw_iq_cmd {
__be32 op_to_vfn;
__be32 alloc_to_len16;
__be16 physiqid;
__be16 iqid;
__be16 fl0id;
__be16 fl1id;
__be32 type_to_iqandstindex;
__be16 iqdroprss_to_iqesize;
__be16 iqsize;
__be64 iqaddr;
__be32 iqns_to_fl0congen;
__be16 fl0dcaen_to_fl0cidxfthresh;
__be16 fl0size;
__be64 fl0addr;
__be32 fl1cngchmap_to_fl1congen;
__be16 fl1dcaen_to_fl1cidxfthresh;
__be16 fl1size;
__be64 fl1addr;
};
#define S_FW_IQ_CMD_PFN 8
#define M_FW_IQ_CMD_PFN 0x7
#define V_FW_IQ_CMD_PFN(x) ((x) << S_FW_IQ_CMD_PFN)
#define G_FW_IQ_CMD_PFN(x) \
(((x) >> S_FW_IQ_CMD_PFN) & M_FW_IQ_CMD_PFN)
#define S_FW_IQ_CMD_VFN 0
#define M_FW_IQ_CMD_VFN 0xff
#define V_FW_IQ_CMD_VFN(x) ((x) << S_FW_IQ_CMD_VFN)
#define G_FW_IQ_CMD_VFN(x) \
(((x) >> S_FW_IQ_CMD_VFN) & M_FW_IQ_CMD_VFN)
#define S_FW_IQ_CMD_ALLOC 31
#define M_FW_IQ_CMD_ALLOC 0x1
#define V_FW_IQ_CMD_ALLOC(x) ((x) << S_FW_IQ_CMD_ALLOC)
#define G_FW_IQ_CMD_ALLOC(x) \
(((x) >> S_FW_IQ_CMD_ALLOC) & M_FW_IQ_CMD_ALLOC)
#define F_FW_IQ_CMD_ALLOC V_FW_IQ_CMD_ALLOC(1U)
#define S_FW_IQ_CMD_FREE 30
#define M_FW_IQ_CMD_FREE 0x1
#define V_FW_IQ_CMD_FREE(x) ((x) << S_FW_IQ_CMD_FREE)
#define G_FW_IQ_CMD_FREE(x) \
(((x) >> S_FW_IQ_CMD_FREE) & M_FW_IQ_CMD_FREE)
#define F_FW_IQ_CMD_FREE V_FW_IQ_CMD_FREE(1U)
#define S_FW_IQ_CMD_MODIFY 29
#define M_FW_IQ_CMD_MODIFY 0x1
#define V_FW_IQ_CMD_MODIFY(x) ((x) << S_FW_IQ_CMD_MODIFY)
#define G_FW_IQ_CMD_MODIFY(x) \
(((x) >> S_FW_IQ_CMD_MODIFY) & M_FW_IQ_CMD_MODIFY)
#define F_FW_IQ_CMD_MODIFY V_FW_IQ_CMD_MODIFY(1U)
#define S_FW_IQ_CMD_IQSTART 28
#define M_FW_IQ_CMD_IQSTART 0x1
#define V_FW_IQ_CMD_IQSTART(x) ((x) << S_FW_IQ_CMD_IQSTART)
#define G_FW_IQ_CMD_IQSTART(x) \
(((x) >> S_FW_IQ_CMD_IQSTART) & M_FW_IQ_CMD_IQSTART)
#define F_FW_IQ_CMD_IQSTART V_FW_IQ_CMD_IQSTART(1U)
#define S_FW_IQ_CMD_IQSTOP 27
#define M_FW_IQ_CMD_IQSTOP 0x1
#define V_FW_IQ_CMD_IQSTOP(x) ((x) << S_FW_IQ_CMD_IQSTOP)
#define G_FW_IQ_CMD_IQSTOP(x) \
(((x) >> S_FW_IQ_CMD_IQSTOP) & M_FW_IQ_CMD_IQSTOP)
#define F_FW_IQ_CMD_IQSTOP V_FW_IQ_CMD_IQSTOP(1U)
#define S_FW_IQ_CMD_TYPE 29
#define M_FW_IQ_CMD_TYPE 0x7
#define V_FW_IQ_CMD_TYPE(x) ((x) << S_FW_IQ_CMD_TYPE)
#define G_FW_IQ_CMD_TYPE(x) \
(((x) >> S_FW_IQ_CMD_TYPE) & M_FW_IQ_CMD_TYPE)
#define S_FW_IQ_CMD_IQASYNCH 28
#define M_FW_IQ_CMD_IQASYNCH 0x1
#define V_FW_IQ_CMD_IQASYNCH(x) ((x) << S_FW_IQ_CMD_IQASYNCH)
#define G_FW_IQ_CMD_IQASYNCH(x) \
(((x) >> S_FW_IQ_CMD_IQASYNCH) & M_FW_IQ_CMD_IQASYNCH)
#define F_FW_IQ_CMD_IQASYNCH V_FW_IQ_CMD_IQASYNCH(1U)
#define S_FW_IQ_CMD_VIID 16
#define M_FW_IQ_CMD_VIID 0xfff
#define V_FW_IQ_CMD_VIID(x) ((x) << S_FW_IQ_CMD_VIID)
#define G_FW_IQ_CMD_VIID(x) \
(((x) >> S_FW_IQ_CMD_VIID) & M_FW_IQ_CMD_VIID)
#define S_FW_IQ_CMD_IQANDST 15
#define M_FW_IQ_CMD_IQANDST 0x1
#define V_FW_IQ_CMD_IQANDST(x) ((x) << S_FW_IQ_CMD_IQANDST)
#define G_FW_IQ_CMD_IQANDST(x) \
(((x) >> S_FW_IQ_CMD_IQANDST) & M_FW_IQ_CMD_IQANDST)
#define F_FW_IQ_CMD_IQANDST V_FW_IQ_CMD_IQANDST(1U)
#define S_FW_IQ_CMD_IQANUS 14
#define M_FW_IQ_CMD_IQANUS 0x1
#define V_FW_IQ_CMD_IQANUS(x) ((x) << S_FW_IQ_CMD_IQANUS)
#define G_FW_IQ_CMD_IQANUS(x) \
(((x) >> S_FW_IQ_CMD_IQANUS) & M_FW_IQ_CMD_IQANUS)
#define F_FW_IQ_CMD_IQANUS V_FW_IQ_CMD_IQANUS(1U)
#define S_FW_IQ_CMD_IQANUD 12
#define M_FW_IQ_CMD_IQANUD 0x3
#define V_FW_IQ_CMD_IQANUD(x) ((x) << S_FW_IQ_CMD_IQANUD)
#define G_FW_IQ_CMD_IQANUD(x) \
(((x) >> S_FW_IQ_CMD_IQANUD) & M_FW_IQ_CMD_IQANUD)
#define S_FW_IQ_CMD_IQANDSTINDEX 0
#define M_FW_IQ_CMD_IQANDSTINDEX 0xfff
#define V_FW_IQ_CMD_IQANDSTINDEX(x) ((x) << S_FW_IQ_CMD_IQANDSTINDEX)
#define G_FW_IQ_CMD_IQANDSTINDEX(x) \
(((x) >> S_FW_IQ_CMD_IQANDSTINDEX) & M_FW_IQ_CMD_IQANDSTINDEX)
#define S_FW_IQ_CMD_IQDROPRSS 15
#define M_FW_IQ_CMD_IQDROPRSS 0x1
#define V_FW_IQ_CMD_IQDROPRSS(x) ((x) << S_FW_IQ_CMD_IQDROPRSS)
#define G_FW_IQ_CMD_IQDROPRSS(x) \
(((x) >> S_FW_IQ_CMD_IQDROPRSS) & M_FW_IQ_CMD_IQDROPRSS)
#define F_FW_IQ_CMD_IQDROPRSS V_FW_IQ_CMD_IQDROPRSS(1U)
#define S_FW_IQ_CMD_IQGTSMODE 14
#define M_FW_IQ_CMD_IQGTSMODE 0x1
#define V_FW_IQ_CMD_IQGTSMODE(x) ((x) << S_FW_IQ_CMD_IQGTSMODE)
#define G_FW_IQ_CMD_IQGTSMODE(x) \
(((x) >> S_FW_IQ_CMD_IQGTSMODE) & M_FW_IQ_CMD_IQGTSMODE)
#define F_FW_IQ_CMD_IQGTSMODE V_FW_IQ_CMD_IQGTSMODE(1U)
#define S_FW_IQ_CMD_IQPCIECH 12
#define M_FW_IQ_CMD_IQPCIECH 0x3
#define V_FW_IQ_CMD_IQPCIECH(x) ((x) << S_FW_IQ_CMD_IQPCIECH)
#define G_FW_IQ_CMD_IQPCIECH(x) \
(((x) >> S_FW_IQ_CMD_IQPCIECH) & M_FW_IQ_CMD_IQPCIECH)
#define S_FW_IQ_CMD_IQDCAEN 11
#define M_FW_IQ_CMD_IQDCAEN 0x1
#define V_FW_IQ_CMD_IQDCAEN(x) ((x) << S_FW_IQ_CMD_IQDCAEN)
#define G_FW_IQ_CMD_IQDCAEN(x) \
(((x) >> S_FW_IQ_CMD_IQDCAEN) & M_FW_IQ_CMD_IQDCAEN)
#define F_FW_IQ_CMD_IQDCAEN V_FW_IQ_CMD_IQDCAEN(1U)
#define S_FW_IQ_CMD_IQDCACPU 6
#define M_FW_IQ_CMD_IQDCACPU 0x1f
#define V_FW_IQ_CMD_IQDCACPU(x) ((x) << S_FW_IQ_CMD_IQDCACPU)
#define G_FW_IQ_CMD_IQDCACPU(x) \
(((x) >> S_FW_IQ_CMD_IQDCACPU) & M_FW_IQ_CMD_IQDCACPU)
#define S_FW_IQ_CMD_IQINTCNTTHRESH 4
#define M_FW_IQ_CMD_IQINTCNTTHRESH 0x3
#define V_FW_IQ_CMD_IQINTCNTTHRESH(x) ((x) << S_FW_IQ_CMD_IQINTCNTTHRESH)
#define G_FW_IQ_CMD_IQINTCNTTHRESH(x) \
(((x) >> S_FW_IQ_CMD_IQINTCNTTHRESH) & M_FW_IQ_CMD_IQINTCNTTHRESH)
#define S_FW_IQ_CMD_IQO 3
#define M_FW_IQ_CMD_IQO 0x1
#define V_FW_IQ_CMD_IQO(x) ((x) << S_FW_IQ_CMD_IQO)
#define G_FW_IQ_CMD_IQO(x) \
(((x) >> S_FW_IQ_CMD_IQO) & M_FW_IQ_CMD_IQO)
#define F_FW_IQ_CMD_IQO V_FW_IQ_CMD_IQO(1U)
#define S_FW_IQ_CMD_IQCPRIO 2
#define M_FW_IQ_CMD_IQCPRIO 0x1
#define V_FW_IQ_CMD_IQCPRIO(x) ((x) << S_FW_IQ_CMD_IQCPRIO)
#define G_FW_IQ_CMD_IQCPRIO(x) \
(((x) >> S_FW_IQ_CMD_IQCPRIO) & M_FW_IQ_CMD_IQCPRIO)
#define F_FW_IQ_CMD_IQCPRIO V_FW_IQ_CMD_IQCPRIO(1U)
#define S_FW_IQ_CMD_IQESIZE 0
#define M_FW_IQ_CMD_IQESIZE 0x3
#define V_FW_IQ_CMD_IQESIZE(x) ((x) << S_FW_IQ_CMD_IQESIZE)
#define G_FW_IQ_CMD_IQESIZE(x) \
(((x) >> S_FW_IQ_CMD_IQESIZE) & M_FW_IQ_CMD_IQESIZE)
#define S_FW_IQ_CMD_IQNS 31
#define M_FW_IQ_CMD_IQNS 0x1
#define V_FW_IQ_CMD_IQNS(x) ((x) << S_FW_IQ_CMD_IQNS)
#define G_FW_IQ_CMD_IQNS(x) \
(((x) >> S_FW_IQ_CMD_IQNS) & M_FW_IQ_CMD_IQNS)
#define F_FW_IQ_CMD_IQNS V_FW_IQ_CMD_IQNS(1U)
#define S_FW_IQ_CMD_IQRO 30
#define M_FW_IQ_CMD_IQRO 0x1
#define V_FW_IQ_CMD_IQRO(x) ((x) << S_FW_IQ_CMD_IQRO)
#define G_FW_IQ_CMD_IQRO(x) \
(((x) >> S_FW_IQ_CMD_IQRO) & M_FW_IQ_CMD_IQRO)
#define F_FW_IQ_CMD_IQRO V_FW_IQ_CMD_IQRO(1U)
#define S_FW_IQ_CMD_IQFLINTIQHSEN 28
#define M_FW_IQ_CMD_IQFLINTIQHSEN 0x3
#define V_FW_IQ_CMD_IQFLINTIQHSEN(x) ((x) << S_FW_IQ_CMD_IQFLINTIQHSEN)
#define G_FW_IQ_CMD_IQFLINTIQHSEN(x) \
(((x) >> S_FW_IQ_CMD_IQFLINTIQHSEN) & M_FW_IQ_CMD_IQFLINTIQHSEN)
#define S_FW_IQ_CMD_IQFLINTCONGEN 27
#define M_FW_IQ_CMD_IQFLINTCONGEN 0x1
#define V_FW_IQ_CMD_IQFLINTCONGEN(x) ((x) << S_FW_IQ_CMD_IQFLINTCONGEN)
#define G_FW_IQ_CMD_IQFLINTCONGEN(x) \
(((x) >> S_FW_IQ_CMD_IQFLINTCONGEN) & M_FW_IQ_CMD_IQFLINTCONGEN)
#define F_FW_IQ_CMD_IQFLINTCONGEN V_FW_IQ_CMD_IQFLINTCONGEN(1U)
#define S_FW_IQ_CMD_IQFLINTISCSIC 26
#define M_FW_IQ_CMD_IQFLINTISCSIC 0x1
#define V_FW_IQ_CMD_IQFLINTISCSIC(x) ((x) << S_FW_IQ_CMD_IQFLINTISCSIC)
#define G_FW_IQ_CMD_IQFLINTISCSIC(x) \
(((x) >> S_FW_IQ_CMD_IQFLINTISCSIC) & M_FW_IQ_CMD_IQFLINTISCSIC)
#define F_FW_IQ_CMD_IQFLINTISCSIC V_FW_IQ_CMD_IQFLINTISCSIC(1U)
#define S_FW_IQ_CMD_FL0CNGCHMAP 20
#define M_FW_IQ_CMD_FL0CNGCHMAP 0xf
#define V_FW_IQ_CMD_FL0CNGCHMAP(x) ((x) << S_FW_IQ_CMD_FL0CNGCHMAP)
#define G_FW_IQ_CMD_FL0CNGCHMAP(x) \
(((x) >> S_FW_IQ_CMD_FL0CNGCHMAP) & M_FW_IQ_CMD_FL0CNGCHMAP)
#define S_FW_IQ_CMD_FL0CONGDROP 16
#define M_FW_IQ_CMD_FL0CONGDROP 0x1
#define V_FW_IQ_CMD_FL0CONGDROP(x) ((x) << S_FW_IQ_CMD_FL0CONGDROP)
#define G_FW_IQ_CMD_FL0CONGDROP(x) \
(((x) >> S_FW_IQ_CMD_FL0CONGDROP) & M_FW_IQ_CMD_FL0CONGDROP)
#define F_FW_IQ_CMD_FL0CONGDROP V_FW_IQ_CMD_FL0CONGDROP(1U)
#define S_FW_IQ_CMD_FL0CACHELOCK 15
#define M_FW_IQ_CMD_FL0CACHELOCK 0x1
#define V_FW_IQ_CMD_FL0CACHELOCK(x) ((x) << S_FW_IQ_CMD_FL0CACHELOCK)
#define G_FW_IQ_CMD_FL0CACHELOCK(x) \
(((x) >> S_FW_IQ_CMD_FL0CACHELOCK) & M_FW_IQ_CMD_FL0CACHELOCK)
#define F_FW_IQ_CMD_FL0CACHELOCK V_FW_IQ_CMD_FL0CACHELOCK(1U)
#define S_FW_IQ_CMD_FL0DBP 14
#define M_FW_IQ_CMD_FL0DBP 0x1
#define V_FW_IQ_CMD_FL0DBP(x) ((x) << S_FW_IQ_CMD_FL0DBP)
#define G_FW_IQ_CMD_FL0DBP(x) \
(((x) >> S_FW_IQ_CMD_FL0DBP) & M_FW_IQ_CMD_FL0DBP)
#define F_FW_IQ_CMD_FL0DBP V_FW_IQ_CMD_FL0DBP(1U)
#define S_FW_IQ_CMD_FL0DATANS 13
#define M_FW_IQ_CMD_FL0DATANS 0x1
#define V_FW_IQ_CMD_FL0DATANS(x) ((x) << S_FW_IQ_CMD_FL0DATANS)
#define G_FW_IQ_CMD_FL0DATANS(x) \
(((x) >> S_FW_IQ_CMD_FL0DATANS) & M_FW_IQ_CMD_FL0DATANS)
#define F_FW_IQ_CMD_FL0DATANS V_FW_IQ_CMD_FL0DATANS(1U)
#define S_FW_IQ_CMD_FL0DATARO 12
#define M_FW_IQ_CMD_FL0DATARO 0x1
#define V_FW_IQ_CMD_FL0DATARO(x) ((x) << S_FW_IQ_CMD_FL0DATARO)
#define G_FW_IQ_CMD_FL0DATARO(x) \
(((x) >> S_FW_IQ_CMD_FL0DATARO) & M_FW_IQ_CMD_FL0DATARO)
#define F_FW_IQ_CMD_FL0DATARO V_FW_IQ_CMD_FL0DATARO(1U)
#define S_FW_IQ_CMD_FL0CONGCIF 11
#define M_FW_IQ_CMD_FL0CONGCIF 0x1
#define V_FW_IQ_CMD_FL0CONGCIF(x) ((x) << S_FW_IQ_CMD_FL0CONGCIF)
#define G_FW_IQ_CMD_FL0CONGCIF(x) \
(((x) >> S_FW_IQ_CMD_FL0CONGCIF) & M_FW_IQ_CMD_FL0CONGCIF)
#define F_FW_IQ_CMD_FL0CONGCIF V_FW_IQ_CMD_FL0CONGCIF(1U)
#define S_FW_IQ_CMD_FL0ONCHIP 10
#define M_FW_IQ_CMD_FL0ONCHIP 0x1
#define V_FW_IQ_CMD_FL0ONCHIP(x) ((x) << S_FW_IQ_CMD_FL0ONCHIP)
#define G_FW_IQ_CMD_FL0ONCHIP(x) \
(((x) >> S_FW_IQ_CMD_FL0ONCHIP) & M_FW_IQ_CMD_FL0ONCHIP)
#define F_FW_IQ_CMD_FL0ONCHIP V_FW_IQ_CMD_FL0ONCHIP(1U)
#define S_FW_IQ_CMD_FL0STATUSPGNS 9
#define M_FW_IQ_CMD_FL0STATUSPGNS 0x1
#define V_FW_IQ_CMD_FL0STATUSPGNS(x) ((x) << S_FW_IQ_CMD_FL0STATUSPGNS)
#define G_FW_IQ_CMD_FL0STATUSPGNS(x) \
(((x) >> S_FW_IQ_CMD_FL0STATUSPGNS) & M_FW_IQ_CMD_FL0STATUSPGNS)
#define F_FW_IQ_CMD_FL0STATUSPGNS V_FW_IQ_CMD_FL0STATUSPGNS(1U)
#define S_FW_IQ_CMD_FL0STATUSPGRO 8
#define M_FW_IQ_CMD_FL0STATUSPGRO 0x1
#define V_FW_IQ_CMD_FL0STATUSPGRO(x) ((x) << S_FW_IQ_CMD_FL0STATUSPGRO)
#define G_FW_IQ_CMD_FL0STATUSPGRO(x) \
(((x) >> S_FW_IQ_CMD_FL0STATUSPGRO) & M_FW_IQ_CMD_FL0STATUSPGRO)
#define F_FW_IQ_CMD_FL0STATUSPGRO V_FW_IQ_CMD_FL0STATUSPGRO(1U)
#define S_FW_IQ_CMD_FL0FETCHNS 7
#define M_FW_IQ_CMD_FL0FETCHNS 0x1
#define V_FW_IQ_CMD_FL0FETCHNS(x) ((x) << S_FW_IQ_CMD_FL0FETCHNS)
#define G_FW_IQ_CMD_FL0FETCHNS(x) \
(((x) >> S_FW_IQ_CMD_FL0FETCHNS) & M_FW_IQ_CMD_FL0FETCHNS)
#define F_FW_IQ_CMD_FL0FETCHNS V_FW_IQ_CMD_FL0FETCHNS(1U)
#define S_FW_IQ_CMD_FL0FETCHRO 6
#define M_FW_IQ_CMD_FL0FETCHRO 0x1
#define V_FW_IQ_CMD_FL0FETCHRO(x) ((x) << S_FW_IQ_CMD_FL0FETCHRO)
#define G_FW_IQ_CMD_FL0FETCHRO(x) \
(((x) >> S_FW_IQ_CMD_FL0FETCHRO) & M_FW_IQ_CMD_FL0FETCHRO)
#define F_FW_IQ_CMD_FL0FETCHRO V_FW_IQ_CMD_FL0FETCHRO(1U)
#define S_FW_IQ_CMD_FL0HOSTFCMODE 4
#define M_FW_IQ_CMD_FL0HOSTFCMODE 0x3
#define V_FW_IQ_CMD_FL0HOSTFCMODE(x) ((x) << S_FW_IQ_CMD_FL0HOSTFCMODE)
#define G_FW_IQ_CMD_FL0HOSTFCMODE(x) \
(((x) >> S_FW_IQ_CMD_FL0HOSTFCMODE) & M_FW_IQ_CMD_FL0HOSTFCMODE)
#define S_FW_IQ_CMD_FL0CPRIO 3
#define M_FW_IQ_CMD_FL0CPRIO 0x1
#define V_FW_IQ_CMD_FL0CPRIO(x) ((x) << S_FW_IQ_CMD_FL0CPRIO)
#define G_FW_IQ_CMD_FL0CPRIO(x) \
(((x) >> S_FW_IQ_CMD_FL0CPRIO) & M_FW_IQ_CMD_FL0CPRIO)
#define F_FW_IQ_CMD_FL0CPRIO V_FW_IQ_CMD_FL0CPRIO(1U)
#define S_FW_IQ_CMD_FL0PADEN 2
#define M_FW_IQ_CMD_FL0PADEN 0x1
#define V_FW_IQ_CMD_FL0PADEN(x) ((x) << S_FW_IQ_CMD_FL0PADEN)
#define G_FW_IQ_CMD_FL0PADEN(x) \
(((x) >> S_FW_IQ_CMD_FL0PADEN) & M_FW_IQ_CMD_FL0PADEN)
#define F_FW_IQ_CMD_FL0PADEN V_FW_IQ_CMD_FL0PADEN(1U)
#define S_FW_IQ_CMD_FL0PACKEN 1
#define M_FW_IQ_CMD_FL0PACKEN 0x1
#define V_FW_IQ_CMD_FL0PACKEN(x) ((x) << S_FW_IQ_CMD_FL0PACKEN)
#define G_FW_IQ_CMD_FL0PACKEN(x) \
(((x) >> S_FW_IQ_CMD_FL0PACKEN) & M_FW_IQ_CMD_FL0PACKEN)
#define F_FW_IQ_CMD_FL0PACKEN V_FW_IQ_CMD_FL0PACKEN(1U)
#define S_FW_IQ_CMD_FL0CONGEN 0
#define M_FW_IQ_CMD_FL0CONGEN 0x1
#define V_FW_IQ_CMD_FL0CONGEN(x) ((x) << S_FW_IQ_CMD_FL0CONGEN)
#define G_FW_IQ_CMD_FL0CONGEN(x) \
(((x) >> S_FW_IQ_CMD_FL0CONGEN) & M_FW_IQ_CMD_FL0CONGEN)
#define F_FW_IQ_CMD_FL0CONGEN V_FW_IQ_CMD_FL0CONGEN(1U)
#define S_FW_IQ_CMD_FL0DCAEN 15
#define M_FW_IQ_CMD_FL0DCAEN 0x1
#define V_FW_IQ_CMD_FL0DCAEN(x) ((x) << S_FW_IQ_CMD_FL0DCAEN)
#define G_FW_IQ_CMD_FL0DCAEN(x) \
(((x) >> S_FW_IQ_CMD_FL0DCAEN) & M_FW_IQ_CMD_FL0DCAEN)
#define F_FW_IQ_CMD_FL0DCAEN V_FW_IQ_CMD_FL0DCAEN(1U)
#define S_FW_IQ_CMD_FL0DCACPU 10
#define M_FW_IQ_CMD_FL0DCACPU 0x1f
#define V_FW_IQ_CMD_FL0DCACPU(x) ((x) << S_FW_IQ_CMD_FL0DCACPU)
#define G_FW_IQ_CMD_FL0DCACPU(x) \
(((x) >> S_FW_IQ_CMD_FL0DCACPU) & M_FW_IQ_CMD_FL0DCACPU)
#define S_FW_IQ_CMD_FL0FBMIN 7
#define M_FW_IQ_CMD_FL0FBMIN 0x7
#define V_FW_IQ_CMD_FL0FBMIN(x) ((x) << S_FW_IQ_CMD_FL0FBMIN)
#define G_FW_IQ_CMD_FL0FBMIN(x) \
(((x) >> S_FW_IQ_CMD_FL0FBMIN) & M_FW_IQ_CMD_FL0FBMIN)
#define S_FW_IQ_CMD_FL0FBMAX 4
#define M_FW_IQ_CMD_FL0FBMAX 0x7
#define V_FW_IQ_CMD_FL0FBMAX(x) ((x) << S_FW_IQ_CMD_FL0FBMAX)
#define G_FW_IQ_CMD_FL0FBMAX(x) \
(((x) >> S_FW_IQ_CMD_FL0FBMAX) & M_FW_IQ_CMD_FL0FBMAX)
#define S_FW_IQ_CMD_FL0CIDXFTHRESHO 3
#define M_FW_IQ_CMD_FL0CIDXFTHRESHO 0x1
#define V_FW_IQ_CMD_FL0CIDXFTHRESHO(x) ((x) << S_FW_IQ_CMD_FL0CIDXFTHRESHO)
#define G_FW_IQ_CMD_FL0CIDXFTHRESHO(x) \
(((x) >> S_FW_IQ_CMD_FL0CIDXFTHRESHO) & M_FW_IQ_CMD_FL0CIDXFTHRESHO)
#define F_FW_IQ_CMD_FL0CIDXFTHRESHO V_FW_IQ_CMD_FL0CIDXFTHRESHO(1U)
#define S_FW_IQ_CMD_FL0CIDXFTHRESH 0
#define M_FW_IQ_CMD_FL0CIDXFTHRESH 0x7
#define V_FW_IQ_CMD_FL0CIDXFTHRESH(x) ((x) << S_FW_IQ_CMD_FL0CIDXFTHRESH)
#define G_FW_IQ_CMD_FL0CIDXFTHRESH(x) \
(((x) >> S_FW_IQ_CMD_FL0CIDXFTHRESH) & M_FW_IQ_CMD_FL0CIDXFTHRESH)
#define S_FW_IQ_CMD_FL1CNGCHMAP 20
#define M_FW_IQ_CMD_FL1CNGCHMAP 0xf
#define V_FW_IQ_CMD_FL1CNGCHMAP(x) ((x) << S_FW_IQ_CMD_FL1CNGCHMAP)
#define G_FW_IQ_CMD_FL1CNGCHMAP(x) \
(((x) >> S_FW_IQ_CMD_FL1CNGCHMAP) & M_FW_IQ_CMD_FL1CNGCHMAP)
#define S_FW_IQ_CMD_FL1CONGDROP 16
#define M_FW_IQ_CMD_FL1CONGDROP 0x1
#define V_FW_IQ_CMD_FL1CONGDROP(x) ((x) << S_FW_IQ_CMD_FL1CONGDROP)
#define G_FW_IQ_CMD_FL1CONGDROP(x) \
(((x) >> S_FW_IQ_CMD_FL1CONGDROP) & M_FW_IQ_CMD_FL1CONGDROP)
#define F_FW_IQ_CMD_FL1CONGDROP V_FW_IQ_CMD_FL1CONGDROP(1U)
#define S_FW_IQ_CMD_FL1CACHELOCK 15
#define M_FW_IQ_CMD_FL1CACHELOCK 0x1
#define V_FW_IQ_CMD_FL1CACHELOCK(x) ((x) << S_FW_IQ_CMD_FL1CACHELOCK)
#define G_FW_IQ_CMD_FL1CACHELOCK(x) \
(((x) >> S_FW_IQ_CMD_FL1CACHELOCK) & M_FW_IQ_CMD_FL1CACHELOCK)
#define F_FW_IQ_CMD_FL1CACHELOCK V_FW_IQ_CMD_FL1CACHELOCK(1U)
#define S_FW_IQ_CMD_FL1DBP 14
#define M_FW_IQ_CMD_FL1DBP 0x1
#define V_FW_IQ_CMD_FL1DBP(x) ((x) << S_FW_IQ_CMD_FL1DBP)
#define G_FW_IQ_CMD_FL1DBP(x) \
(((x) >> S_FW_IQ_CMD_FL1DBP) & M_FW_IQ_CMD_FL1DBP)
#define F_FW_IQ_CMD_FL1DBP V_FW_IQ_CMD_FL1DBP(1U)
#define S_FW_IQ_CMD_FL1DATANS 13
#define M_FW_IQ_CMD_FL1DATANS 0x1
#define V_FW_IQ_CMD_FL1DATANS(x) ((x) << S_FW_IQ_CMD_FL1DATANS)
#define G_FW_IQ_CMD_FL1DATANS(x) \
(((x) >> S_FW_IQ_CMD_FL1DATANS) & M_FW_IQ_CMD_FL1DATANS)
#define F_FW_IQ_CMD_FL1DATANS V_FW_IQ_CMD_FL1DATANS(1U)
#define S_FW_IQ_CMD_FL1DATARO 12
#define M_FW_IQ_CMD_FL1DATARO 0x1
#define V_FW_IQ_CMD_FL1DATARO(x) ((x) << S_FW_IQ_CMD_FL1DATARO)
#define G_FW_IQ_CMD_FL1DATARO(x) \
(((x) >> S_FW_IQ_CMD_FL1DATARO) & M_FW_IQ_CMD_FL1DATARO)
#define F_FW_IQ_CMD_FL1DATARO V_FW_IQ_CMD_FL1DATARO(1U)
#define S_FW_IQ_CMD_FL1CONGCIF 11
#define M_FW_IQ_CMD_FL1CONGCIF 0x1
#define V_FW_IQ_CMD_FL1CONGCIF(x) ((x) << S_FW_IQ_CMD_FL1CONGCIF)
#define G_FW_IQ_CMD_FL1CONGCIF(x) \
(((x) >> S_FW_IQ_CMD_FL1CONGCIF) & M_FW_IQ_CMD_FL1CONGCIF)
#define F_FW_IQ_CMD_FL1CONGCIF V_FW_IQ_CMD_FL1CONGCIF(1U)
#define S_FW_IQ_CMD_FL1ONCHIP 10
#define M_FW_IQ_CMD_FL1ONCHIP 0x1
#define V_FW_IQ_CMD_FL1ONCHIP(x) ((x) << S_FW_IQ_CMD_FL1ONCHIP)
#define G_FW_IQ_CMD_FL1ONCHIP(x) \
(((x) >> S_FW_IQ_CMD_FL1ONCHIP) & M_FW_IQ_CMD_FL1ONCHIP)
#define F_FW_IQ_CMD_FL1ONCHIP V_FW_IQ_CMD_FL1ONCHIP(1U)
#define S_FW_IQ_CMD_FL1STATUSPGNS 9
#define M_FW_IQ_CMD_FL1STATUSPGNS 0x1
#define V_FW_IQ_CMD_FL1STATUSPGNS(x) ((x) << S_FW_IQ_CMD_FL1STATUSPGNS)
#define G_FW_IQ_CMD_FL1STATUSPGNS(x) \
(((x) >> S_FW_IQ_CMD_FL1STATUSPGNS) & M_FW_IQ_CMD_FL1STATUSPGNS)
#define F_FW_IQ_CMD_FL1STATUSPGNS V_FW_IQ_CMD_FL1STATUSPGNS(1U)
#define S_FW_IQ_CMD_FL1STATUSPGRO 8
#define M_FW_IQ_CMD_FL1STATUSPGRO 0x1
#define V_FW_IQ_CMD_FL1STATUSPGRO(x) ((x) << S_FW_IQ_CMD_FL1STATUSPGRO)
#define G_FW_IQ_CMD_FL1STATUSPGRO(x) \
(((x) >> S_FW_IQ_CMD_FL1STATUSPGRO) & M_FW_IQ_CMD_FL1STATUSPGRO)
#define F_FW_IQ_CMD_FL1STATUSPGRO V_FW_IQ_CMD_FL1STATUSPGRO(1U)
#define S_FW_IQ_CMD_FL1FETCHNS 7
#define M_FW_IQ_CMD_FL1FETCHNS 0x1
#define V_FW_IQ_CMD_FL1FETCHNS(x) ((x) << S_FW_IQ_CMD_FL1FETCHNS)
#define G_FW_IQ_CMD_FL1FETCHNS(x) \
(((x) >> S_FW_IQ_CMD_FL1FETCHNS) & M_FW_IQ_CMD_FL1FETCHNS)
#define F_FW_IQ_CMD_FL1FETCHNS V_FW_IQ_CMD_FL1FETCHNS(1U)
#define S_FW_IQ_CMD_FL1FETCHRO 6
#define M_FW_IQ_CMD_FL1FETCHRO 0x1
#define V_FW_IQ_CMD_FL1FETCHRO(x) ((x) << S_FW_IQ_CMD_FL1FETCHRO)
#define G_FW_IQ_CMD_FL1FETCHRO(x) \
(((x) >> S_FW_IQ_CMD_FL1FETCHRO) & M_FW_IQ_CMD_FL1FETCHRO)
#define F_FW_IQ_CMD_FL1FETCHRO V_FW_IQ_CMD_FL1FETCHRO(1U)
#define S_FW_IQ_CMD_FL1HOSTFCMODE 4
#define M_FW_IQ_CMD_FL1HOSTFCMODE 0x3
#define V_FW_IQ_CMD_FL1HOSTFCMODE(x) ((x) << S_FW_IQ_CMD_FL1HOSTFCMODE)
#define G_FW_IQ_CMD_FL1HOSTFCMODE(x) \
(((x) >> S_FW_IQ_CMD_FL1HOSTFCMODE) & M_FW_IQ_CMD_FL1HOSTFCMODE)
#define S_FW_IQ_CMD_FL1CPRIO 3
#define M_FW_IQ_CMD_FL1CPRIO 0x1
#define V_FW_IQ_CMD_FL1CPRIO(x) ((x) << S_FW_IQ_CMD_FL1CPRIO)
#define G_FW_IQ_CMD_FL1CPRIO(x) \
(((x) >> S_FW_IQ_CMD_FL1CPRIO) & M_FW_IQ_CMD_FL1CPRIO)
#define F_FW_IQ_CMD_FL1CPRIO V_FW_IQ_CMD_FL1CPRIO(1U)
#define S_FW_IQ_CMD_FL1PADEN 2
#define M_FW_IQ_CMD_FL1PADEN 0x1
#define V_FW_IQ_CMD_FL1PADEN(x) ((x) << S_FW_IQ_CMD_FL1PADEN)
#define G_FW_IQ_CMD_FL1PADEN(x) \
(((x) >> S_FW_IQ_CMD_FL1PADEN) & M_FW_IQ_CMD_FL1PADEN)
#define F_FW_IQ_CMD_FL1PADEN V_FW_IQ_CMD_FL1PADEN(1U)
#define S_FW_IQ_CMD_FL1PACKEN 1
#define M_FW_IQ_CMD_FL1PACKEN 0x1
#define V_FW_IQ_CMD_FL1PACKEN(x) ((x) << S_FW_IQ_CMD_FL1PACKEN)
#define G_FW_IQ_CMD_FL1PACKEN(x) \
(((x) >> S_FW_IQ_CMD_FL1PACKEN) & M_FW_IQ_CMD_FL1PACKEN)
#define F_FW_IQ_CMD_FL1PACKEN V_FW_IQ_CMD_FL1PACKEN(1U)
#define S_FW_IQ_CMD_FL1CONGEN 0
#define M_FW_IQ_CMD_FL1CONGEN 0x1
#define V_FW_IQ_CMD_FL1CONGEN(x) ((x) << S_FW_IQ_CMD_FL1CONGEN)
#define G_FW_IQ_CMD_FL1CONGEN(x) \
(((x) >> S_FW_IQ_CMD_FL1CONGEN) & M_FW_IQ_CMD_FL1CONGEN)
#define F_FW_IQ_CMD_FL1CONGEN V_FW_IQ_CMD_FL1CONGEN(1U)
#define S_FW_IQ_CMD_FL1DCAEN 15
#define M_FW_IQ_CMD_FL1DCAEN 0x1
#define V_FW_IQ_CMD_FL1DCAEN(x) ((x) << S_FW_IQ_CMD_FL1DCAEN)
#define G_FW_IQ_CMD_FL1DCAEN(x) \
(((x) >> S_FW_IQ_CMD_FL1DCAEN) & M_FW_IQ_CMD_FL1DCAEN)
#define F_FW_IQ_CMD_FL1DCAEN V_FW_IQ_CMD_FL1DCAEN(1U)
#define S_FW_IQ_CMD_FL1DCACPU 10
#define M_FW_IQ_CMD_FL1DCACPU 0x1f
#define V_FW_IQ_CMD_FL1DCACPU(x) ((x) << S_FW_IQ_CMD_FL1DCACPU)
#define G_FW_IQ_CMD_FL1DCACPU(x) \
(((x) >> S_FW_IQ_CMD_FL1DCACPU) & M_FW_IQ_CMD_FL1DCACPU)
#define S_FW_IQ_CMD_FL1FBMIN 7
#define M_FW_IQ_CMD_FL1FBMIN 0x7
#define V_FW_IQ_CMD_FL1FBMIN(x) ((x) << S_FW_IQ_CMD_FL1FBMIN)
#define G_FW_IQ_CMD_FL1FBMIN(x) \
(((x) >> S_FW_IQ_CMD_FL1FBMIN) & M_FW_IQ_CMD_FL1FBMIN)
#define S_FW_IQ_CMD_FL1FBMAX 4
#define M_FW_IQ_CMD_FL1FBMAX 0x7
#define V_FW_IQ_CMD_FL1FBMAX(x) ((x) << S_FW_IQ_CMD_FL1FBMAX)
#define G_FW_IQ_CMD_FL1FBMAX(x) \
(((x) >> S_FW_IQ_CMD_FL1FBMAX) & M_FW_IQ_CMD_FL1FBMAX)
#define S_FW_IQ_CMD_FL1CIDXFTHRESHO 3
#define M_FW_IQ_CMD_FL1CIDXFTHRESHO 0x1
#define V_FW_IQ_CMD_FL1CIDXFTHRESHO(x) ((x) << S_FW_IQ_CMD_FL1CIDXFTHRESHO)
#define G_FW_IQ_CMD_FL1CIDXFTHRESHO(x) \
(((x) >> S_FW_IQ_CMD_FL1CIDXFTHRESHO) & M_FW_IQ_CMD_FL1CIDXFTHRESHO)
#define F_FW_IQ_CMD_FL1CIDXFTHRESHO V_FW_IQ_CMD_FL1CIDXFTHRESHO(1U)
#define S_FW_IQ_CMD_FL1CIDXFTHRESH 0
#define M_FW_IQ_CMD_FL1CIDXFTHRESH 0x7
#define V_FW_IQ_CMD_FL1CIDXFTHRESH(x) ((x) << S_FW_IQ_CMD_FL1CIDXFTHRESH)
#define G_FW_IQ_CMD_FL1CIDXFTHRESH(x) \
(((x) >> S_FW_IQ_CMD_FL1CIDXFTHRESH) & M_FW_IQ_CMD_FL1CIDXFTHRESH)
struct fw_eq_mngt_cmd {
__be32 op_to_vfn;
__be32 alloc_to_len16;
__be32 cmpliqid_eqid;
__be32 physeqid_pkd;
__be32 fetchszm_to_iqid;
__be32 dcaen_to_eqsize;
__be64 eqaddr;
};
#define S_FW_EQ_MNGT_CMD_PFN 8
#define M_FW_EQ_MNGT_CMD_PFN 0x7
#define V_FW_EQ_MNGT_CMD_PFN(x) ((x) << S_FW_EQ_MNGT_CMD_PFN)
#define G_FW_EQ_MNGT_CMD_PFN(x) \
(((x) >> S_FW_EQ_MNGT_CMD_PFN) & M_FW_EQ_MNGT_CMD_PFN)
#define S_FW_EQ_MNGT_CMD_VFN 0
#define M_FW_EQ_MNGT_CMD_VFN 0xff
#define V_FW_EQ_MNGT_CMD_VFN(x) ((x) << S_FW_EQ_MNGT_CMD_VFN)
#define G_FW_EQ_MNGT_CMD_VFN(x) \
(((x) >> S_FW_EQ_MNGT_CMD_VFN) & M_FW_EQ_MNGT_CMD_VFN)
#define S_FW_EQ_MNGT_CMD_ALLOC 31
#define M_FW_EQ_MNGT_CMD_ALLOC 0x1
#define V_FW_EQ_MNGT_CMD_ALLOC(x) ((x) << S_FW_EQ_MNGT_CMD_ALLOC)
#define G_FW_EQ_MNGT_CMD_ALLOC(x) \
(((x) >> S_FW_EQ_MNGT_CMD_ALLOC) & M_FW_EQ_MNGT_CMD_ALLOC)
#define F_FW_EQ_MNGT_CMD_ALLOC V_FW_EQ_MNGT_CMD_ALLOC(1U)
#define S_FW_EQ_MNGT_CMD_FREE 30
#define M_FW_EQ_MNGT_CMD_FREE 0x1
#define V_FW_EQ_MNGT_CMD_FREE(x) ((x) << S_FW_EQ_MNGT_CMD_FREE)
#define G_FW_EQ_MNGT_CMD_FREE(x) \
(((x) >> S_FW_EQ_MNGT_CMD_FREE) & M_FW_EQ_MNGT_CMD_FREE)
#define F_FW_EQ_MNGT_CMD_FREE V_FW_EQ_MNGT_CMD_FREE(1U)
#define S_FW_EQ_MNGT_CMD_MODIFY 29
#define M_FW_EQ_MNGT_CMD_MODIFY 0x1
#define V_FW_EQ_MNGT_CMD_MODIFY(x) ((x) << S_FW_EQ_MNGT_CMD_MODIFY)
#define G_FW_EQ_MNGT_CMD_MODIFY(x) \
(((x) >> S_FW_EQ_MNGT_CMD_MODIFY) & M_FW_EQ_MNGT_CMD_MODIFY)
#define F_FW_EQ_MNGT_CMD_MODIFY V_FW_EQ_MNGT_CMD_MODIFY(1U)
#define S_FW_EQ_MNGT_CMD_EQSTART 28
#define M_FW_EQ_MNGT_CMD_EQSTART 0x1
#define V_FW_EQ_MNGT_CMD_EQSTART(x) ((x) << S_FW_EQ_MNGT_CMD_EQSTART)
#define G_FW_EQ_MNGT_CMD_EQSTART(x) \
(((x) >> S_FW_EQ_MNGT_CMD_EQSTART) & M_FW_EQ_MNGT_CMD_EQSTART)
#define F_FW_EQ_MNGT_CMD_EQSTART V_FW_EQ_MNGT_CMD_EQSTART(1U)
#define S_FW_EQ_MNGT_CMD_EQSTOP 27
#define M_FW_EQ_MNGT_CMD_EQSTOP 0x1
#define V_FW_EQ_MNGT_CMD_EQSTOP(x) ((x) << S_FW_EQ_MNGT_CMD_EQSTOP)
#define G_FW_EQ_MNGT_CMD_EQSTOP(x) \
(((x) >> S_FW_EQ_MNGT_CMD_EQSTOP) & M_FW_EQ_MNGT_CMD_EQSTOP)
#define F_FW_EQ_MNGT_CMD_EQSTOP V_FW_EQ_MNGT_CMD_EQSTOP(1U)
#define S_FW_EQ_MNGT_CMD_CMPLIQID 20
#define M_FW_EQ_MNGT_CMD_CMPLIQID 0xfff
#define V_FW_EQ_MNGT_CMD_CMPLIQID(x) ((x) << S_FW_EQ_MNGT_CMD_CMPLIQID)
#define G_FW_EQ_MNGT_CMD_CMPLIQID(x) \
(((x) >> S_FW_EQ_MNGT_CMD_CMPLIQID) & M_FW_EQ_MNGT_CMD_CMPLIQID)
#define S_FW_EQ_MNGT_CMD_EQID 0
#define M_FW_EQ_MNGT_CMD_EQID 0xfffff
#define V_FW_EQ_MNGT_CMD_EQID(x) ((x) << S_FW_EQ_MNGT_CMD_EQID)
#define G_FW_EQ_MNGT_CMD_EQID(x) \
(((x) >> S_FW_EQ_MNGT_CMD_EQID) & M_FW_EQ_MNGT_CMD_EQID)
#define S_FW_EQ_MNGT_CMD_PHYSEQID 0
#define M_FW_EQ_MNGT_CMD_PHYSEQID 0xfffff
#define V_FW_EQ_MNGT_CMD_PHYSEQID(x) ((x) << S_FW_EQ_MNGT_CMD_PHYSEQID)
#define G_FW_EQ_MNGT_CMD_PHYSEQID(x) \
(((x) >> S_FW_EQ_MNGT_CMD_PHYSEQID) & M_FW_EQ_MNGT_CMD_PHYSEQID)
#define S_FW_EQ_MNGT_CMD_FETCHSZM 26
#define M_FW_EQ_MNGT_CMD_FETCHSZM 0x1
#define V_FW_EQ_MNGT_CMD_FETCHSZM(x) ((x) << S_FW_EQ_MNGT_CMD_FETCHSZM)
#define G_FW_EQ_MNGT_CMD_FETCHSZM(x) \
(((x) >> S_FW_EQ_MNGT_CMD_FETCHSZM) & M_FW_EQ_MNGT_CMD_FETCHSZM)
#define F_FW_EQ_MNGT_CMD_FETCHSZM V_FW_EQ_MNGT_CMD_FETCHSZM(1U)
#define S_FW_EQ_MNGT_CMD_STATUSPGNS 25
#define M_FW_EQ_MNGT_CMD_STATUSPGNS 0x1
#define V_FW_EQ_MNGT_CMD_STATUSPGNS(x) ((x) << S_FW_EQ_MNGT_CMD_STATUSPGNS)
#define G_FW_EQ_MNGT_CMD_STATUSPGNS(x) \
(((x) >> S_FW_EQ_MNGT_CMD_STATUSPGNS) & M_FW_EQ_MNGT_CMD_STATUSPGNS)
#define F_FW_EQ_MNGT_CMD_STATUSPGNS V_FW_EQ_MNGT_CMD_STATUSPGNS(1U)
#define S_FW_EQ_MNGT_CMD_STATUSPGRO 24
#define M_FW_EQ_MNGT_CMD_STATUSPGRO 0x1
#define V_FW_EQ_MNGT_CMD_STATUSPGRO(x) ((x) << S_FW_EQ_MNGT_CMD_STATUSPGRO)
#define G_FW_EQ_MNGT_CMD_STATUSPGRO(x) \
(((x) >> S_FW_EQ_MNGT_CMD_STATUSPGRO) & M_FW_EQ_MNGT_CMD_STATUSPGRO)
#define F_FW_EQ_MNGT_CMD_STATUSPGRO V_FW_EQ_MNGT_CMD_STATUSPGRO(1U)
#define S_FW_EQ_MNGT_CMD_FETCHNS 23
#define M_FW_EQ_MNGT_CMD_FETCHNS 0x1
#define V_FW_EQ_MNGT_CMD_FETCHNS(x) ((x) << S_FW_EQ_MNGT_CMD_FETCHNS)
#define G_FW_EQ_MNGT_CMD_FETCHNS(x) \
(((x) >> S_FW_EQ_MNGT_CMD_FETCHNS) & M_FW_EQ_MNGT_CMD_FETCHNS)
#define F_FW_EQ_MNGT_CMD_FETCHNS V_FW_EQ_MNGT_CMD_FETCHNS(1U)
#define S_FW_EQ_MNGT_CMD_FETCHRO 22
#define M_FW_EQ_MNGT_CMD_FETCHRO 0x1
#define V_FW_EQ_MNGT_CMD_FETCHRO(x) ((x) << S_FW_EQ_MNGT_CMD_FETCHRO)
#define G_FW_EQ_MNGT_CMD_FETCHRO(x) \
(((x) >> S_FW_EQ_MNGT_CMD_FETCHRO) & M_FW_EQ_MNGT_CMD_FETCHRO)
#define F_FW_EQ_MNGT_CMD_FETCHRO V_FW_EQ_MNGT_CMD_FETCHRO(1U)
#define S_FW_EQ_MNGT_CMD_HOSTFCMODE 20
#define M_FW_EQ_MNGT_CMD_HOSTFCMODE 0x3
#define V_FW_EQ_MNGT_CMD_HOSTFCMODE(x) ((x) << S_FW_EQ_MNGT_CMD_HOSTFCMODE)
#define G_FW_EQ_MNGT_CMD_HOSTFCMODE(x) \
(((x) >> S_FW_EQ_MNGT_CMD_HOSTFCMODE) & M_FW_EQ_MNGT_CMD_HOSTFCMODE)
#define S_FW_EQ_MNGT_CMD_CPRIO 19
#define M_FW_EQ_MNGT_CMD_CPRIO 0x1
#define V_FW_EQ_MNGT_CMD_CPRIO(x) ((x) << S_FW_EQ_MNGT_CMD_CPRIO)
#define G_FW_EQ_MNGT_CMD_CPRIO(x) \
(((x) >> S_FW_EQ_MNGT_CMD_CPRIO) & M_FW_EQ_MNGT_CMD_CPRIO)
#define F_FW_EQ_MNGT_CMD_CPRIO V_FW_EQ_MNGT_CMD_CPRIO(1U)
#define S_FW_EQ_MNGT_CMD_ONCHIP 18
#define M_FW_EQ_MNGT_CMD_ONCHIP 0x1
#define V_FW_EQ_MNGT_CMD_ONCHIP(x) ((x) << S_FW_EQ_MNGT_CMD_ONCHIP)
#define G_FW_EQ_MNGT_CMD_ONCHIP(x) \
(((x) >> S_FW_EQ_MNGT_CMD_ONCHIP) & M_FW_EQ_MNGT_CMD_ONCHIP)
#define F_FW_EQ_MNGT_CMD_ONCHIP V_FW_EQ_MNGT_CMD_ONCHIP(1U)
#define S_FW_EQ_MNGT_CMD_PCIECHN 16
#define M_FW_EQ_MNGT_CMD_PCIECHN 0x3
#define V_FW_EQ_MNGT_CMD_PCIECHN(x) ((x) << S_FW_EQ_MNGT_CMD_PCIECHN)
#define G_FW_EQ_MNGT_CMD_PCIECHN(x) \
(((x) >> S_FW_EQ_MNGT_CMD_PCIECHN) & M_FW_EQ_MNGT_CMD_PCIECHN)
#define S_FW_EQ_MNGT_CMD_IQID 0
#define M_FW_EQ_MNGT_CMD_IQID 0xffff
#define V_FW_EQ_MNGT_CMD_IQID(x) ((x) << S_FW_EQ_MNGT_CMD_IQID)
#define G_FW_EQ_MNGT_CMD_IQID(x) \
(((x) >> S_FW_EQ_MNGT_CMD_IQID) & M_FW_EQ_MNGT_CMD_IQID)
#define S_FW_EQ_MNGT_CMD_DCAEN 31
#define M_FW_EQ_MNGT_CMD_DCAEN 0x1
#define V_FW_EQ_MNGT_CMD_DCAEN(x) ((x) << S_FW_EQ_MNGT_CMD_DCAEN)
#define G_FW_EQ_MNGT_CMD_DCAEN(x) \
(((x) >> S_FW_EQ_MNGT_CMD_DCAEN) & M_FW_EQ_MNGT_CMD_DCAEN)
#define F_FW_EQ_MNGT_CMD_DCAEN V_FW_EQ_MNGT_CMD_DCAEN(1U)
#define S_FW_EQ_MNGT_CMD_DCACPU 26
#define M_FW_EQ_MNGT_CMD_DCACPU 0x1f
#define V_FW_EQ_MNGT_CMD_DCACPU(x) ((x) << S_FW_EQ_MNGT_CMD_DCACPU)
#define G_FW_EQ_MNGT_CMD_DCACPU(x) \
(((x) >> S_FW_EQ_MNGT_CMD_DCACPU) & M_FW_EQ_MNGT_CMD_DCACPU)
#define S_FW_EQ_MNGT_CMD_FBMIN 23
#define M_FW_EQ_MNGT_CMD_FBMIN 0x7
#define V_FW_EQ_MNGT_CMD_FBMIN(x) ((x) << S_FW_EQ_MNGT_CMD_FBMIN)
#define G_FW_EQ_MNGT_CMD_FBMIN(x) \
(((x) >> S_FW_EQ_MNGT_CMD_FBMIN) & M_FW_EQ_MNGT_CMD_FBMIN)
#define S_FW_EQ_MNGT_CMD_FBMAX 20
#define M_FW_EQ_MNGT_CMD_FBMAX 0x7
#define V_FW_EQ_MNGT_CMD_FBMAX(x) ((x) << S_FW_EQ_MNGT_CMD_FBMAX)
#define G_FW_EQ_MNGT_CMD_FBMAX(x) \
(((x) >> S_FW_EQ_MNGT_CMD_FBMAX) & M_FW_EQ_MNGT_CMD_FBMAX)
#define S_FW_EQ_MNGT_CMD_CIDXFTHRESHO 19
#define M_FW_EQ_MNGT_CMD_CIDXFTHRESHO 0x1
#define V_FW_EQ_MNGT_CMD_CIDXFTHRESHO(x) \
((x) << S_FW_EQ_MNGT_CMD_CIDXFTHRESHO)
#define G_FW_EQ_MNGT_CMD_CIDXFTHRESHO(x) \
(((x) >> S_FW_EQ_MNGT_CMD_CIDXFTHRESHO) & M_FW_EQ_MNGT_CMD_CIDXFTHRESHO)
#define F_FW_EQ_MNGT_CMD_CIDXFTHRESHO V_FW_EQ_MNGT_CMD_CIDXFTHRESHO(1U)
#define S_FW_EQ_MNGT_CMD_CIDXFTHRESH 16
#define M_FW_EQ_MNGT_CMD_CIDXFTHRESH 0x7
#define V_FW_EQ_MNGT_CMD_CIDXFTHRESH(x) ((x) << S_FW_EQ_MNGT_CMD_CIDXFTHRESH)
#define G_FW_EQ_MNGT_CMD_CIDXFTHRESH(x) \
(((x) >> S_FW_EQ_MNGT_CMD_CIDXFTHRESH) & M_FW_EQ_MNGT_CMD_CIDXFTHRESH)
#define S_FW_EQ_MNGT_CMD_EQSIZE 0
#define M_FW_EQ_MNGT_CMD_EQSIZE 0xffff
#define V_FW_EQ_MNGT_CMD_EQSIZE(x) ((x) << S_FW_EQ_MNGT_CMD_EQSIZE)
#define G_FW_EQ_MNGT_CMD_EQSIZE(x) \
(((x) >> S_FW_EQ_MNGT_CMD_EQSIZE) & M_FW_EQ_MNGT_CMD_EQSIZE)
struct fw_eq_eth_cmd {
__be32 op_to_vfn;
__be32 alloc_to_len16;
__be32 eqid_pkd;
__be32 physeqid_pkd;
__be32 fetchszm_to_iqid;
__be32 dcaen_to_eqsize;
__be64 eqaddr;
__be32 autoequiqe_to_viid;
__be32 r8_lo;
__be64 r9;
};
#define S_FW_EQ_ETH_CMD_PFN 8
#define M_FW_EQ_ETH_CMD_PFN 0x7
#define V_FW_EQ_ETH_CMD_PFN(x) ((x) << S_FW_EQ_ETH_CMD_PFN)
#define G_FW_EQ_ETH_CMD_PFN(x) \
(((x) >> S_FW_EQ_ETH_CMD_PFN) & M_FW_EQ_ETH_CMD_PFN)
#define S_FW_EQ_ETH_CMD_VFN 0
#define M_FW_EQ_ETH_CMD_VFN 0xff
#define V_FW_EQ_ETH_CMD_VFN(x) ((x) << S_FW_EQ_ETH_CMD_VFN)
#define G_FW_EQ_ETH_CMD_VFN(x) \
(((x) >> S_FW_EQ_ETH_CMD_VFN) & M_FW_EQ_ETH_CMD_VFN)
#define S_FW_EQ_ETH_CMD_ALLOC 31
#define M_FW_EQ_ETH_CMD_ALLOC 0x1
#define V_FW_EQ_ETH_CMD_ALLOC(x) ((x) << S_FW_EQ_ETH_CMD_ALLOC)
#define G_FW_EQ_ETH_CMD_ALLOC(x) \
(((x) >> S_FW_EQ_ETH_CMD_ALLOC) & M_FW_EQ_ETH_CMD_ALLOC)
#define F_FW_EQ_ETH_CMD_ALLOC V_FW_EQ_ETH_CMD_ALLOC(1U)
#define S_FW_EQ_ETH_CMD_FREE 30
#define M_FW_EQ_ETH_CMD_FREE 0x1
#define V_FW_EQ_ETH_CMD_FREE(x) ((x) << S_FW_EQ_ETH_CMD_FREE)
#define G_FW_EQ_ETH_CMD_FREE(x) \
(((x) >> S_FW_EQ_ETH_CMD_FREE) & M_FW_EQ_ETH_CMD_FREE)
#define F_FW_EQ_ETH_CMD_FREE V_FW_EQ_ETH_CMD_FREE(1U)
#define S_FW_EQ_ETH_CMD_MODIFY 29
#define M_FW_EQ_ETH_CMD_MODIFY 0x1
#define V_FW_EQ_ETH_CMD_MODIFY(x) ((x) << S_FW_EQ_ETH_CMD_MODIFY)
#define G_FW_EQ_ETH_CMD_MODIFY(x) \
(((x) >> S_FW_EQ_ETH_CMD_MODIFY) & M_FW_EQ_ETH_CMD_MODIFY)
#define F_FW_EQ_ETH_CMD_MODIFY V_FW_EQ_ETH_CMD_MODIFY(1U)
#define S_FW_EQ_ETH_CMD_EQSTART 28
#define M_FW_EQ_ETH_CMD_EQSTART 0x1
#define V_FW_EQ_ETH_CMD_EQSTART(x) ((x) << S_FW_EQ_ETH_CMD_EQSTART)
#define G_FW_EQ_ETH_CMD_EQSTART(x) \
(((x) >> S_FW_EQ_ETH_CMD_EQSTART) & M_FW_EQ_ETH_CMD_EQSTART)
#define F_FW_EQ_ETH_CMD_EQSTART V_FW_EQ_ETH_CMD_EQSTART(1U)
#define S_FW_EQ_ETH_CMD_EQSTOP 27
#define M_FW_EQ_ETH_CMD_EQSTOP 0x1
#define V_FW_EQ_ETH_CMD_EQSTOP(x) ((x) << S_FW_EQ_ETH_CMD_EQSTOP)
#define G_FW_EQ_ETH_CMD_EQSTOP(x) \
(((x) >> S_FW_EQ_ETH_CMD_EQSTOP) & M_FW_EQ_ETH_CMD_EQSTOP)
#define F_FW_EQ_ETH_CMD_EQSTOP V_FW_EQ_ETH_CMD_EQSTOP(1U)
#define S_FW_EQ_ETH_CMD_EQID 0
#define M_FW_EQ_ETH_CMD_EQID 0xfffff
#define V_FW_EQ_ETH_CMD_EQID(x) ((x) << S_FW_EQ_ETH_CMD_EQID)
#define G_FW_EQ_ETH_CMD_EQID(x) \
(((x) >> S_FW_EQ_ETH_CMD_EQID) & M_FW_EQ_ETH_CMD_EQID)
#define S_FW_EQ_ETH_CMD_PHYSEQID 0
#define M_FW_EQ_ETH_CMD_PHYSEQID 0xfffff
#define V_FW_EQ_ETH_CMD_PHYSEQID(x) ((x) << S_FW_EQ_ETH_CMD_PHYSEQID)
#define G_FW_EQ_ETH_CMD_PHYSEQID(x) \
(((x) >> S_FW_EQ_ETH_CMD_PHYSEQID) & M_FW_EQ_ETH_CMD_PHYSEQID)
#define S_FW_EQ_ETH_CMD_FETCHSZM 26
#define M_FW_EQ_ETH_CMD_FETCHSZM 0x1
#define V_FW_EQ_ETH_CMD_FETCHSZM(x) ((x) << S_FW_EQ_ETH_CMD_FETCHSZM)
#define G_FW_EQ_ETH_CMD_FETCHSZM(x) \
(((x) >> S_FW_EQ_ETH_CMD_FETCHSZM) & M_FW_EQ_ETH_CMD_FETCHSZM)
#define F_FW_EQ_ETH_CMD_FETCHSZM V_FW_EQ_ETH_CMD_FETCHSZM(1U)
#define S_FW_EQ_ETH_CMD_STATUSPGNS 25
#define M_FW_EQ_ETH_CMD_STATUSPGNS 0x1
#define V_FW_EQ_ETH_CMD_STATUSPGNS(x) ((x) << S_FW_EQ_ETH_CMD_STATUSPGNS)
#define G_FW_EQ_ETH_CMD_STATUSPGNS(x) \
(((x) >> S_FW_EQ_ETH_CMD_STATUSPGNS) & M_FW_EQ_ETH_CMD_STATUSPGNS)
#define F_FW_EQ_ETH_CMD_STATUSPGNS V_FW_EQ_ETH_CMD_STATUSPGNS(1U)
#define S_FW_EQ_ETH_CMD_STATUSPGRO 24
#define M_FW_EQ_ETH_CMD_STATUSPGRO 0x1
#define V_FW_EQ_ETH_CMD_STATUSPGRO(x) ((x) << S_FW_EQ_ETH_CMD_STATUSPGRO)
#define G_FW_EQ_ETH_CMD_STATUSPGRO(x) \
(((x) >> S_FW_EQ_ETH_CMD_STATUSPGRO) & M_FW_EQ_ETH_CMD_STATUSPGRO)
#define F_FW_EQ_ETH_CMD_STATUSPGRO V_FW_EQ_ETH_CMD_STATUSPGRO(1U)
#define S_FW_EQ_ETH_CMD_FETCHNS 23
#define M_FW_EQ_ETH_CMD_FETCHNS 0x1
#define V_FW_EQ_ETH_CMD_FETCHNS(x) ((x) << S_FW_EQ_ETH_CMD_FETCHNS)
#define G_FW_EQ_ETH_CMD_FETCHNS(x) \
(((x) >> S_FW_EQ_ETH_CMD_FETCHNS) & M_FW_EQ_ETH_CMD_FETCHNS)
#define F_FW_EQ_ETH_CMD_FETCHNS V_FW_EQ_ETH_CMD_FETCHNS(1U)
#define S_FW_EQ_ETH_CMD_FETCHRO 22
#define M_FW_EQ_ETH_CMD_FETCHRO 0x1
#define V_FW_EQ_ETH_CMD_FETCHRO(x) ((x) << S_FW_EQ_ETH_CMD_FETCHRO)
#define G_FW_EQ_ETH_CMD_FETCHRO(x) \
(((x) >> S_FW_EQ_ETH_CMD_FETCHRO) & M_FW_EQ_ETH_CMD_FETCHRO)
#define F_FW_EQ_ETH_CMD_FETCHRO V_FW_EQ_ETH_CMD_FETCHRO(1U)
#define S_FW_EQ_ETH_CMD_HOSTFCMODE 20
#define M_FW_EQ_ETH_CMD_HOSTFCMODE 0x3
#define V_FW_EQ_ETH_CMD_HOSTFCMODE(x) ((x) << S_FW_EQ_ETH_CMD_HOSTFCMODE)
#define G_FW_EQ_ETH_CMD_HOSTFCMODE(x) \
(((x) >> S_FW_EQ_ETH_CMD_HOSTFCMODE) & M_FW_EQ_ETH_CMD_HOSTFCMODE)
#define S_FW_EQ_ETH_CMD_CPRIO 19
#define M_FW_EQ_ETH_CMD_CPRIO 0x1
#define V_FW_EQ_ETH_CMD_CPRIO(x) ((x) << S_FW_EQ_ETH_CMD_CPRIO)
#define G_FW_EQ_ETH_CMD_CPRIO(x) \
(((x) >> S_FW_EQ_ETH_CMD_CPRIO) & M_FW_EQ_ETH_CMD_CPRIO)
#define F_FW_EQ_ETH_CMD_CPRIO V_FW_EQ_ETH_CMD_CPRIO(1U)
#define S_FW_EQ_ETH_CMD_ONCHIP 18
#define M_FW_EQ_ETH_CMD_ONCHIP 0x1
#define V_FW_EQ_ETH_CMD_ONCHIP(x) ((x) << S_FW_EQ_ETH_CMD_ONCHIP)
#define G_FW_EQ_ETH_CMD_ONCHIP(x) \
(((x) >> S_FW_EQ_ETH_CMD_ONCHIP) & M_FW_EQ_ETH_CMD_ONCHIP)
#define F_FW_EQ_ETH_CMD_ONCHIP V_FW_EQ_ETH_CMD_ONCHIP(1U)
#define S_FW_EQ_ETH_CMD_PCIECHN 16
#define M_FW_EQ_ETH_CMD_PCIECHN 0x3
#define V_FW_EQ_ETH_CMD_PCIECHN(x) ((x) << S_FW_EQ_ETH_CMD_PCIECHN)
#define G_FW_EQ_ETH_CMD_PCIECHN(x) \
(((x) >> S_FW_EQ_ETH_CMD_PCIECHN) & M_FW_EQ_ETH_CMD_PCIECHN)
#define S_FW_EQ_ETH_CMD_IQID 0
#define M_FW_EQ_ETH_CMD_IQID 0xffff
#define V_FW_EQ_ETH_CMD_IQID(x) ((x) << S_FW_EQ_ETH_CMD_IQID)
#define G_FW_EQ_ETH_CMD_IQID(x) \
(((x) >> S_FW_EQ_ETH_CMD_IQID) & M_FW_EQ_ETH_CMD_IQID)
#define S_FW_EQ_ETH_CMD_DCAEN 31
#define M_FW_EQ_ETH_CMD_DCAEN 0x1
#define V_FW_EQ_ETH_CMD_DCAEN(x) ((x) << S_FW_EQ_ETH_CMD_DCAEN)
#define G_FW_EQ_ETH_CMD_DCAEN(x) \
(((x) >> S_FW_EQ_ETH_CMD_DCAEN) & M_FW_EQ_ETH_CMD_DCAEN)
#define F_FW_EQ_ETH_CMD_DCAEN V_FW_EQ_ETH_CMD_DCAEN(1U)
#define S_FW_EQ_ETH_CMD_DCACPU 26
#define M_FW_EQ_ETH_CMD_DCACPU 0x1f
#define V_FW_EQ_ETH_CMD_DCACPU(x) ((x) << S_FW_EQ_ETH_CMD_DCACPU)
#define G_FW_EQ_ETH_CMD_DCACPU(x) \
(((x) >> S_FW_EQ_ETH_CMD_DCACPU) & M_FW_EQ_ETH_CMD_DCACPU)
#define S_FW_EQ_ETH_CMD_FBMIN 23
#define M_FW_EQ_ETH_CMD_FBMIN 0x7
#define V_FW_EQ_ETH_CMD_FBMIN(x) ((x) << S_FW_EQ_ETH_CMD_FBMIN)
#define G_FW_EQ_ETH_CMD_FBMIN(x) \
(((x) >> S_FW_EQ_ETH_CMD_FBMIN) & M_FW_EQ_ETH_CMD_FBMIN)
#define S_FW_EQ_ETH_CMD_FBMAX 20
#define M_FW_EQ_ETH_CMD_FBMAX 0x7
#define V_FW_EQ_ETH_CMD_FBMAX(x) ((x) << S_FW_EQ_ETH_CMD_FBMAX)
#define G_FW_EQ_ETH_CMD_FBMAX(x) \
(((x) >> S_FW_EQ_ETH_CMD_FBMAX) & M_FW_EQ_ETH_CMD_FBMAX)
#define S_FW_EQ_ETH_CMD_CIDXFTHRESHO 19
#define M_FW_EQ_ETH_CMD_CIDXFTHRESHO 0x1
#define V_FW_EQ_ETH_CMD_CIDXFTHRESHO(x) ((x) << S_FW_EQ_ETH_CMD_CIDXFTHRESHO)
#define G_FW_EQ_ETH_CMD_CIDXFTHRESHO(x) \
(((x) >> S_FW_EQ_ETH_CMD_CIDXFTHRESHO) & M_FW_EQ_ETH_CMD_CIDXFTHRESHO)
#define F_FW_EQ_ETH_CMD_CIDXFTHRESHO V_FW_EQ_ETH_CMD_CIDXFTHRESHO(1U)
#define S_FW_EQ_ETH_CMD_CIDXFTHRESH 16
#define M_FW_EQ_ETH_CMD_CIDXFTHRESH 0x7
#define V_FW_EQ_ETH_CMD_CIDXFTHRESH(x) ((x) << S_FW_EQ_ETH_CMD_CIDXFTHRESH)
#define G_FW_EQ_ETH_CMD_CIDXFTHRESH(x) \
(((x) >> S_FW_EQ_ETH_CMD_CIDXFTHRESH) & M_FW_EQ_ETH_CMD_CIDXFTHRESH)
#define S_FW_EQ_ETH_CMD_EQSIZE 0
#define M_FW_EQ_ETH_CMD_EQSIZE 0xffff
#define V_FW_EQ_ETH_CMD_EQSIZE(x) ((x) << S_FW_EQ_ETH_CMD_EQSIZE)
#define G_FW_EQ_ETH_CMD_EQSIZE(x) \
(((x) >> S_FW_EQ_ETH_CMD_EQSIZE) & M_FW_EQ_ETH_CMD_EQSIZE)
#define S_FW_EQ_ETH_CMD_AUTOEQUIQE 31
#define M_FW_EQ_ETH_CMD_AUTOEQUIQE 0x1
#define V_FW_EQ_ETH_CMD_AUTOEQUIQE(x) ((x) << S_FW_EQ_ETH_CMD_AUTOEQUIQE)
#define G_FW_EQ_ETH_CMD_AUTOEQUIQE(x) \
(((x) >> S_FW_EQ_ETH_CMD_AUTOEQUIQE) & M_FW_EQ_ETH_CMD_AUTOEQUIQE)
#define F_FW_EQ_ETH_CMD_AUTOEQUIQE V_FW_EQ_ETH_CMD_AUTOEQUIQE(1U)
#define S_FW_EQ_ETH_CMD_AUTOEQUEQE 30
#define M_FW_EQ_ETH_CMD_AUTOEQUEQE 0x1
#define V_FW_EQ_ETH_CMD_AUTOEQUEQE(x) ((x) << S_FW_EQ_ETH_CMD_AUTOEQUEQE)
#define G_FW_EQ_ETH_CMD_AUTOEQUEQE(x) \
(((x) >> S_FW_EQ_ETH_CMD_AUTOEQUEQE) & M_FW_EQ_ETH_CMD_AUTOEQUEQE)
#define F_FW_EQ_ETH_CMD_AUTOEQUEQE V_FW_EQ_ETH_CMD_AUTOEQUEQE(1U)
#define S_FW_EQ_ETH_CMD_VIID 16
#define M_FW_EQ_ETH_CMD_VIID 0xfff
#define V_FW_EQ_ETH_CMD_VIID(x) ((x) << S_FW_EQ_ETH_CMD_VIID)
#define G_FW_EQ_ETH_CMD_VIID(x) \
(((x) >> S_FW_EQ_ETH_CMD_VIID) & M_FW_EQ_ETH_CMD_VIID)
struct fw_eq_ctrl_cmd {
__be32 op_to_vfn;
__be32 alloc_to_len16;
__be32 cmpliqid_eqid;
__be32 physeqid_pkd;
__be32 fetchszm_to_iqid;
__be32 dcaen_to_eqsize;
__be64 eqaddr;
};
#define S_FW_EQ_CTRL_CMD_PFN 8
#define M_FW_EQ_CTRL_CMD_PFN 0x7
#define V_FW_EQ_CTRL_CMD_PFN(x) ((x) << S_FW_EQ_CTRL_CMD_PFN)
#define G_FW_EQ_CTRL_CMD_PFN(x) \
(((x) >> S_FW_EQ_CTRL_CMD_PFN) & M_FW_EQ_CTRL_CMD_PFN)
#define S_FW_EQ_CTRL_CMD_VFN 0
#define M_FW_EQ_CTRL_CMD_VFN 0xff
#define V_FW_EQ_CTRL_CMD_VFN(x) ((x) << S_FW_EQ_CTRL_CMD_VFN)
#define G_FW_EQ_CTRL_CMD_VFN(x) \
(((x) >> S_FW_EQ_CTRL_CMD_VFN) & M_FW_EQ_CTRL_CMD_VFN)
#define S_FW_EQ_CTRL_CMD_ALLOC 31
#define M_FW_EQ_CTRL_CMD_ALLOC 0x1
#define V_FW_EQ_CTRL_CMD_ALLOC(x) ((x) << S_FW_EQ_CTRL_CMD_ALLOC)
#define G_FW_EQ_CTRL_CMD_ALLOC(x) \
(((x) >> S_FW_EQ_CTRL_CMD_ALLOC) & M_FW_EQ_CTRL_CMD_ALLOC)
#define F_FW_EQ_CTRL_CMD_ALLOC V_FW_EQ_CTRL_CMD_ALLOC(1U)
#define S_FW_EQ_CTRL_CMD_FREE 30
#define M_FW_EQ_CTRL_CMD_FREE 0x1
#define V_FW_EQ_CTRL_CMD_FREE(x) ((x) << S_FW_EQ_CTRL_CMD_FREE)
#define G_FW_EQ_CTRL_CMD_FREE(x) \
(((x) >> S_FW_EQ_CTRL_CMD_FREE) & M_FW_EQ_CTRL_CMD_FREE)
#define F_FW_EQ_CTRL_CMD_FREE V_FW_EQ_CTRL_CMD_FREE(1U)
#define S_FW_EQ_CTRL_CMD_MODIFY 29
#define M_FW_EQ_CTRL_CMD_MODIFY 0x1
#define V_FW_EQ_CTRL_CMD_MODIFY(x) ((x) << S_FW_EQ_CTRL_CMD_MODIFY)
#define G_FW_EQ_CTRL_CMD_MODIFY(x) \
(((x) >> S_FW_EQ_CTRL_CMD_MODIFY) & M_FW_EQ_CTRL_CMD_MODIFY)
#define F_FW_EQ_CTRL_CMD_MODIFY V_FW_EQ_CTRL_CMD_MODIFY(1U)
#define S_FW_EQ_CTRL_CMD_EQSTART 28
#define M_FW_EQ_CTRL_CMD_EQSTART 0x1
#define V_FW_EQ_CTRL_CMD_EQSTART(x) ((x) << S_FW_EQ_CTRL_CMD_EQSTART)
#define G_FW_EQ_CTRL_CMD_EQSTART(x) \
(((x) >> S_FW_EQ_CTRL_CMD_EQSTART) & M_FW_EQ_CTRL_CMD_EQSTART)
#define F_FW_EQ_CTRL_CMD_EQSTART V_FW_EQ_CTRL_CMD_EQSTART(1U)
#define S_FW_EQ_CTRL_CMD_EQSTOP 27
#define M_FW_EQ_CTRL_CMD_EQSTOP 0x1
#define V_FW_EQ_CTRL_CMD_EQSTOP(x) ((x) << S_FW_EQ_CTRL_CMD_EQSTOP)
#define G_FW_EQ_CTRL_CMD_EQSTOP(x) \
(((x) >> S_FW_EQ_CTRL_CMD_EQSTOP) & M_FW_EQ_CTRL_CMD_EQSTOP)
#define F_FW_EQ_CTRL_CMD_EQSTOP V_FW_EQ_CTRL_CMD_EQSTOP(1U)
#define S_FW_EQ_CTRL_CMD_CMPLIQID 20
#define M_FW_EQ_CTRL_CMD_CMPLIQID 0xfff
#define V_FW_EQ_CTRL_CMD_CMPLIQID(x) ((x) << S_FW_EQ_CTRL_CMD_CMPLIQID)
#define G_FW_EQ_CTRL_CMD_CMPLIQID(x) \
(((x) >> S_FW_EQ_CTRL_CMD_CMPLIQID) & M_FW_EQ_CTRL_CMD_CMPLIQID)
#define S_FW_EQ_CTRL_CMD_EQID 0
#define M_FW_EQ_CTRL_CMD_EQID 0xfffff
#define V_FW_EQ_CTRL_CMD_EQID(x) ((x) << S_FW_EQ_CTRL_CMD_EQID)
#define G_FW_EQ_CTRL_CMD_EQID(x) \
(((x) >> S_FW_EQ_CTRL_CMD_EQID) & M_FW_EQ_CTRL_CMD_EQID)
#define S_FW_EQ_CTRL_CMD_PHYSEQID 0
#define M_FW_EQ_CTRL_CMD_PHYSEQID 0xfffff
#define V_FW_EQ_CTRL_CMD_PHYSEQID(x) ((x) << S_FW_EQ_CTRL_CMD_PHYSEQID)
#define G_FW_EQ_CTRL_CMD_PHYSEQID(x) \
(((x) >> S_FW_EQ_CTRL_CMD_PHYSEQID) & M_FW_EQ_CTRL_CMD_PHYSEQID)
#define S_FW_EQ_CTRL_CMD_FETCHSZM 26
#define M_FW_EQ_CTRL_CMD_FETCHSZM 0x1
#define V_FW_EQ_CTRL_CMD_FETCHSZM(x) ((x) << S_FW_EQ_CTRL_CMD_FETCHSZM)
#define G_FW_EQ_CTRL_CMD_FETCHSZM(x) \
(((x) >> S_FW_EQ_CTRL_CMD_FETCHSZM) & M_FW_EQ_CTRL_CMD_FETCHSZM)
#define F_FW_EQ_CTRL_CMD_FETCHSZM V_FW_EQ_CTRL_CMD_FETCHSZM(1U)
#define S_FW_EQ_CTRL_CMD_STATUSPGNS 25
#define M_FW_EQ_CTRL_CMD_STATUSPGNS 0x1
#define V_FW_EQ_CTRL_CMD_STATUSPGNS(x) ((x) << S_FW_EQ_CTRL_CMD_STATUSPGNS)
#define G_FW_EQ_CTRL_CMD_STATUSPGNS(x) \
(((x) >> S_FW_EQ_CTRL_CMD_STATUSPGNS) & M_FW_EQ_CTRL_CMD_STATUSPGNS)
#define F_FW_EQ_CTRL_CMD_STATUSPGNS V_FW_EQ_CTRL_CMD_STATUSPGNS(1U)
#define S_FW_EQ_CTRL_CMD_STATUSPGRO 24
#define M_FW_EQ_CTRL_CMD_STATUSPGRO 0x1
#define V_FW_EQ_CTRL_CMD_STATUSPGRO(x) ((x) << S_FW_EQ_CTRL_CMD_STATUSPGRO)
#define G_FW_EQ_CTRL_CMD_STATUSPGRO(x) \
(((x) >> S_FW_EQ_CTRL_CMD_STATUSPGRO) & M_FW_EQ_CTRL_CMD_STATUSPGRO)
#define F_FW_EQ_CTRL_CMD_STATUSPGRO V_FW_EQ_CTRL_CMD_STATUSPGRO(1U)
#define S_FW_EQ_CTRL_CMD_FETCHNS 23
#define M_FW_EQ_CTRL_CMD_FETCHNS 0x1
#define V_FW_EQ_CTRL_CMD_FETCHNS(x) ((x) << S_FW_EQ_CTRL_CMD_FETCHNS)
#define G_FW_EQ_CTRL_CMD_FETCHNS(x) \
(((x) >> S_FW_EQ_CTRL_CMD_FETCHNS) & M_FW_EQ_CTRL_CMD_FETCHNS)
#define F_FW_EQ_CTRL_CMD_FETCHNS V_FW_EQ_CTRL_CMD_FETCHNS(1U)
#define S_FW_EQ_CTRL_CMD_FETCHRO 22
#define M_FW_EQ_CTRL_CMD_FETCHRO 0x1
#define V_FW_EQ_CTRL_CMD_FETCHRO(x) ((x) << S_FW_EQ_CTRL_CMD_FETCHRO)
#define G_FW_EQ_CTRL_CMD_FETCHRO(x) \
(((x) >> S_FW_EQ_CTRL_CMD_FETCHRO) & M_FW_EQ_CTRL_CMD_FETCHRO)
#define F_FW_EQ_CTRL_CMD_FETCHRO V_FW_EQ_CTRL_CMD_FETCHRO(1U)
#define S_FW_EQ_CTRL_CMD_HOSTFCMODE 20
#define M_FW_EQ_CTRL_CMD_HOSTFCMODE 0x3
#define V_FW_EQ_CTRL_CMD_HOSTFCMODE(x) ((x) << S_FW_EQ_CTRL_CMD_HOSTFCMODE)
#define G_FW_EQ_CTRL_CMD_HOSTFCMODE(x) \
(((x) >> S_FW_EQ_CTRL_CMD_HOSTFCMODE) & M_FW_EQ_CTRL_CMD_HOSTFCMODE)
#define S_FW_EQ_CTRL_CMD_CPRIO 19
#define M_FW_EQ_CTRL_CMD_CPRIO 0x1
#define V_FW_EQ_CTRL_CMD_CPRIO(x) ((x) << S_FW_EQ_CTRL_CMD_CPRIO)
#define G_FW_EQ_CTRL_CMD_CPRIO(x) \
(((x) >> S_FW_EQ_CTRL_CMD_CPRIO) & M_FW_EQ_CTRL_CMD_CPRIO)
#define F_FW_EQ_CTRL_CMD_CPRIO V_FW_EQ_CTRL_CMD_CPRIO(1U)
#define S_FW_EQ_CTRL_CMD_ONCHIP 18
#define M_FW_EQ_CTRL_CMD_ONCHIP 0x1
#define V_FW_EQ_CTRL_CMD_ONCHIP(x) ((x) << S_FW_EQ_CTRL_CMD_ONCHIP)
#define G_FW_EQ_CTRL_CMD_ONCHIP(x) \
(((x) >> S_FW_EQ_CTRL_CMD_ONCHIP) & M_FW_EQ_CTRL_CMD_ONCHIP)
#define F_FW_EQ_CTRL_CMD_ONCHIP V_FW_EQ_CTRL_CMD_ONCHIP(1U)
#define S_FW_EQ_CTRL_CMD_PCIECHN 16
#define M_FW_EQ_CTRL_CMD_PCIECHN 0x3
#define V_FW_EQ_CTRL_CMD_PCIECHN(x) ((x) << S_FW_EQ_CTRL_CMD_PCIECHN)
#define G_FW_EQ_CTRL_CMD_PCIECHN(x) \
(((x) >> S_FW_EQ_CTRL_CMD_PCIECHN) & M_FW_EQ_CTRL_CMD_PCIECHN)
#define S_FW_EQ_CTRL_CMD_IQID 0
#define M_FW_EQ_CTRL_CMD_IQID 0xffff
#define V_FW_EQ_CTRL_CMD_IQID(x) ((x) << S_FW_EQ_CTRL_CMD_IQID)
#define G_FW_EQ_CTRL_CMD_IQID(x) \
(((x) >> S_FW_EQ_CTRL_CMD_IQID) & M_FW_EQ_CTRL_CMD_IQID)
#define S_FW_EQ_CTRL_CMD_DCAEN 31
#define M_FW_EQ_CTRL_CMD_DCAEN 0x1
#define V_FW_EQ_CTRL_CMD_DCAEN(x) ((x) << S_FW_EQ_CTRL_CMD_DCAEN)
#define G_FW_EQ_CTRL_CMD_DCAEN(x) \
(((x) >> S_FW_EQ_CTRL_CMD_DCAEN) & M_FW_EQ_CTRL_CMD_DCAEN)
#define F_FW_EQ_CTRL_CMD_DCAEN V_FW_EQ_CTRL_CMD_DCAEN(1U)
#define S_FW_EQ_CTRL_CMD_DCACPU 26
#define M_FW_EQ_CTRL_CMD_DCACPU 0x1f
#define V_FW_EQ_CTRL_CMD_DCACPU(x) ((x) << S_FW_EQ_CTRL_CMD_DCACPU)
#define G_FW_EQ_CTRL_CMD_DCACPU(x) \
(((x) >> S_FW_EQ_CTRL_CMD_DCACPU) & M_FW_EQ_CTRL_CMD_DCACPU)
#define S_FW_EQ_CTRL_CMD_FBMIN 23
#define M_FW_EQ_CTRL_CMD_FBMIN 0x7
#define V_FW_EQ_CTRL_CMD_FBMIN(x) ((x) << S_FW_EQ_CTRL_CMD_FBMIN)
#define G_FW_EQ_CTRL_CMD_FBMIN(x) \
(((x) >> S_FW_EQ_CTRL_CMD_FBMIN) & M_FW_EQ_CTRL_CMD_FBMIN)
#define S_FW_EQ_CTRL_CMD_FBMAX 20
#define M_FW_EQ_CTRL_CMD_FBMAX 0x7
#define V_FW_EQ_CTRL_CMD_FBMAX(x) ((x) << S_FW_EQ_CTRL_CMD_FBMAX)
#define G_FW_EQ_CTRL_CMD_FBMAX(x) \
(((x) >> S_FW_EQ_CTRL_CMD_FBMAX) & M_FW_EQ_CTRL_CMD_FBMAX)
#define S_FW_EQ_CTRL_CMD_CIDXFTHRESHO 19
#define M_FW_EQ_CTRL_CMD_CIDXFTHRESHO 0x1
#define V_FW_EQ_CTRL_CMD_CIDXFTHRESHO(x) \
((x) << S_FW_EQ_CTRL_CMD_CIDXFTHRESHO)
#define G_FW_EQ_CTRL_CMD_CIDXFTHRESHO(x) \
(((x) >> S_FW_EQ_CTRL_CMD_CIDXFTHRESHO) & M_FW_EQ_CTRL_CMD_CIDXFTHRESHO)
#define F_FW_EQ_CTRL_CMD_CIDXFTHRESHO V_FW_EQ_CTRL_CMD_CIDXFTHRESHO(1U)
#define S_FW_EQ_CTRL_CMD_CIDXFTHRESH 16
#define M_FW_EQ_CTRL_CMD_CIDXFTHRESH 0x7
#define V_FW_EQ_CTRL_CMD_CIDXFTHRESH(x) ((x) << S_FW_EQ_CTRL_CMD_CIDXFTHRESH)
#define G_FW_EQ_CTRL_CMD_CIDXFTHRESH(x) \
(((x) >> S_FW_EQ_CTRL_CMD_CIDXFTHRESH) & M_FW_EQ_CTRL_CMD_CIDXFTHRESH)
#define S_FW_EQ_CTRL_CMD_EQSIZE 0
#define M_FW_EQ_CTRL_CMD_EQSIZE 0xffff
#define V_FW_EQ_CTRL_CMD_EQSIZE(x) ((x) << S_FW_EQ_CTRL_CMD_EQSIZE)
#define G_FW_EQ_CTRL_CMD_EQSIZE(x) \
(((x) >> S_FW_EQ_CTRL_CMD_EQSIZE) & M_FW_EQ_CTRL_CMD_EQSIZE)
struct fw_eq_ofld_cmd {
__be32 op_to_vfn;
__be32 alloc_to_len16;
__be32 eqid_pkd;
__be32 physeqid_pkd;
__be32 fetchszm_to_iqid;
__be32 dcaen_to_eqsize;
__be64 eqaddr;
};
#define S_FW_EQ_OFLD_CMD_PFN 8
#define M_FW_EQ_OFLD_CMD_PFN 0x7
#define V_FW_EQ_OFLD_CMD_PFN(x) ((x) << S_FW_EQ_OFLD_CMD_PFN)
#define G_FW_EQ_OFLD_CMD_PFN(x) \
(((x) >> S_FW_EQ_OFLD_CMD_PFN) & M_FW_EQ_OFLD_CMD_PFN)
#define S_FW_EQ_OFLD_CMD_VFN 0
#define M_FW_EQ_OFLD_CMD_VFN 0xff
#define V_FW_EQ_OFLD_CMD_VFN(x) ((x) << S_FW_EQ_OFLD_CMD_VFN)
#define G_FW_EQ_OFLD_CMD_VFN(x) \
(((x) >> S_FW_EQ_OFLD_CMD_VFN) & M_FW_EQ_OFLD_CMD_VFN)
#define S_FW_EQ_OFLD_CMD_ALLOC 31
#define M_FW_EQ_OFLD_CMD_ALLOC 0x1
#define V_FW_EQ_OFLD_CMD_ALLOC(x) ((x) << S_FW_EQ_OFLD_CMD_ALLOC)
#define G_FW_EQ_OFLD_CMD_ALLOC(x) \
(((x) >> S_FW_EQ_OFLD_CMD_ALLOC) & M_FW_EQ_OFLD_CMD_ALLOC)
#define F_FW_EQ_OFLD_CMD_ALLOC V_FW_EQ_OFLD_CMD_ALLOC(1U)
#define S_FW_EQ_OFLD_CMD_FREE 30
#define M_FW_EQ_OFLD_CMD_FREE 0x1
#define V_FW_EQ_OFLD_CMD_FREE(x) ((x) << S_FW_EQ_OFLD_CMD_FREE)
#define G_FW_EQ_OFLD_CMD_FREE(x) \
(((x) >> S_FW_EQ_OFLD_CMD_FREE) & M_FW_EQ_OFLD_CMD_FREE)
#define F_FW_EQ_OFLD_CMD_FREE V_FW_EQ_OFLD_CMD_FREE(1U)
#define S_FW_EQ_OFLD_CMD_MODIFY 29
#define M_FW_EQ_OFLD_CMD_MODIFY 0x1
#define V_FW_EQ_OFLD_CMD_MODIFY(x) ((x) << S_FW_EQ_OFLD_CMD_MODIFY)
#define G_FW_EQ_OFLD_CMD_MODIFY(x) \
(((x) >> S_FW_EQ_OFLD_CMD_MODIFY) & M_FW_EQ_OFLD_CMD_MODIFY)
#define F_FW_EQ_OFLD_CMD_MODIFY V_FW_EQ_OFLD_CMD_MODIFY(1U)
#define S_FW_EQ_OFLD_CMD_EQSTART 28
#define M_FW_EQ_OFLD_CMD_EQSTART 0x1
#define V_FW_EQ_OFLD_CMD_EQSTART(x) ((x) << S_FW_EQ_OFLD_CMD_EQSTART)
#define G_FW_EQ_OFLD_CMD_EQSTART(x) \
(((x) >> S_FW_EQ_OFLD_CMD_EQSTART) & M_FW_EQ_OFLD_CMD_EQSTART)
#define F_FW_EQ_OFLD_CMD_EQSTART V_FW_EQ_OFLD_CMD_EQSTART(1U)
#define S_FW_EQ_OFLD_CMD_EQSTOP 27
#define M_FW_EQ_OFLD_CMD_EQSTOP 0x1
#define V_FW_EQ_OFLD_CMD_EQSTOP(x) ((x) << S_FW_EQ_OFLD_CMD_EQSTOP)
#define G_FW_EQ_OFLD_CMD_EQSTOP(x) \
(((x) >> S_FW_EQ_OFLD_CMD_EQSTOP) & M_FW_EQ_OFLD_CMD_EQSTOP)
#define F_FW_EQ_OFLD_CMD_EQSTOP V_FW_EQ_OFLD_CMD_EQSTOP(1U)
#define S_FW_EQ_OFLD_CMD_EQID 0
#define M_FW_EQ_OFLD_CMD_EQID 0xfffff
#define V_FW_EQ_OFLD_CMD_EQID(x) ((x) << S_FW_EQ_OFLD_CMD_EQID)
#define G_FW_EQ_OFLD_CMD_EQID(x) \
(((x) >> S_FW_EQ_OFLD_CMD_EQID) & M_FW_EQ_OFLD_CMD_EQID)
#define S_FW_EQ_OFLD_CMD_PHYSEQID 0
#define M_FW_EQ_OFLD_CMD_PHYSEQID 0xfffff
#define V_FW_EQ_OFLD_CMD_PHYSEQID(x) ((x) << S_FW_EQ_OFLD_CMD_PHYSEQID)
#define G_FW_EQ_OFLD_CMD_PHYSEQID(x) \
(((x) >> S_FW_EQ_OFLD_CMD_PHYSEQID) & M_FW_EQ_OFLD_CMD_PHYSEQID)
#define S_FW_EQ_OFLD_CMD_FETCHSZM 26
#define M_FW_EQ_OFLD_CMD_FETCHSZM 0x1
#define V_FW_EQ_OFLD_CMD_FETCHSZM(x) ((x) << S_FW_EQ_OFLD_CMD_FETCHSZM)
#define G_FW_EQ_OFLD_CMD_FETCHSZM(x) \
(((x) >> S_FW_EQ_OFLD_CMD_FETCHSZM) & M_FW_EQ_OFLD_CMD_FETCHSZM)
#define F_FW_EQ_OFLD_CMD_FETCHSZM V_FW_EQ_OFLD_CMD_FETCHSZM(1U)
#define S_FW_EQ_OFLD_CMD_STATUSPGNS 25
#define M_FW_EQ_OFLD_CMD_STATUSPGNS 0x1
#define V_FW_EQ_OFLD_CMD_STATUSPGNS(x) ((x) << S_FW_EQ_OFLD_CMD_STATUSPGNS)
#define G_FW_EQ_OFLD_CMD_STATUSPGNS(x) \
(((x) >> S_FW_EQ_OFLD_CMD_STATUSPGNS) & M_FW_EQ_OFLD_CMD_STATUSPGNS)
#define F_FW_EQ_OFLD_CMD_STATUSPGNS V_FW_EQ_OFLD_CMD_STATUSPGNS(1U)
#define S_FW_EQ_OFLD_CMD_STATUSPGRO 24
#define M_FW_EQ_OFLD_CMD_STATUSPGRO 0x1
#define V_FW_EQ_OFLD_CMD_STATUSPGRO(x) ((x) << S_FW_EQ_OFLD_CMD_STATUSPGRO)
#define G_FW_EQ_OFLD_CMD_STATUSPGRO(x) \
(((x) >> S_FW_EQ_OFLD_CMD_STATUSPGRO) & M_FW_EQ_OFLD_CMD_STATUSPGRO)
#define F_FW_EQ_OFLD_CMD_STATUSPGRO V_FW_EQ_OFLD_CMD_STATUSPGRO(1U)
#define S_FW_EQ_OFLD_CMD_FETCHNS 23
#define M_FW_EQ_OFLD_CMD_FETCHNS 0x1
#define V_FW_EQ_OFLD_CMD_FETCHNS(x) ((x) << S_FW_EQ_OFLD_CMD_FETCHNS)
#define G_FW_EQ_OFLD_CMD_FETCHNS(x) \
(((x) >> S_FW_EQ_OFLD_CMD_FETCHNS) & M_FW_EQ_OFLD_CMD_FETCHNS)
#define F_FW_EQ_OFLD_CMD_FETCHNS V_FW_EQ_OFLD_CMD_FETCHNS(1U)
#define S_FW_EQ_OFLD_CMD_FETCHRO 22
#define M_FW_EQ_OFLD_CMD_FETCHRO 0x1
#define V_FW_EQ_OFLD_CMD_FETCHRO(x) ((x) << S_FW_EQ_OFLD_CMD_FETCHRO)
#define G_FW_EQ_OFLD_CMD_FETCHRO(x) \
(((x) >> S_FW_EQ_OFLD_CMD_FETCHRO) & M_FW_EQ_OFLD_CMD_FETCHRO)
#define F_FW_EQ_OFLD_CMD_FETCHRO V_FW_EQ_OFLD_CMD_FETCHRO(1U)
#define S_FW_EQ_OFLD_CMD_HOSTFCMODE 20
#define M_FW_EQ_OFLD_CMD_HOSTFCMODE 0x3
#define V_FW_EQ_OFLD_CMD_HOSTFCMODE(x) ((x) << S_FW_EQ_OFLD_CMD_HOSTFCMODE)
#define G_FW_EQ_OFLD_CMD_HOSTFCMODE(x) \
(((x) >> S_FW_EQ_OFLD_CMD_HOSTFCMODE) & M_FW_EQ_OFLD_CMD_HOSTFCMODE)
#define S_FW_EQ_OFLD_CMD_CPRIO 19
#define M_FW_EQ_OFLD_CMD_CPRIO 0x1
#define V_FW_EQ_OFLD_CMD_CPRIO(x) ((x) << S_FW_EQ_OFLD_CMD_CPRIO)
#define G_FW_EQ_OFLD_CMD_CPRIO(x) \
(((x) >> S_FW_EQ_OFLD_CMD_CPRIO) & M_FW_EQ_OFLD_CMD_CPRIO)
#define F_FW_EQ_OFLD_CMD_CPRIO V_FW_EQ_OFLD_CMD_CPRIO(1U)
#define S_FW_EQ_OFLD_CMD_ONCHIP 18
#define M_FW_EQ_OFLD_CMD_ONCHIP 0x1
#define V_FW_EQ_OFLD_CMD_ONCHIP(x) ((x) << S_FW_EQ_OFLD_CMD_ONCHIP)
#define G_FW_EQ_OFLD_CMD_ONCHIP(x) \
(((x) >> S_FW_EQ_OFLD_CMD_ONCHIP) & M_FW_EQ_OFLD_CMD_ONCHIP)
#define F_FW_EQ_OFLD_CMD_ONCHIP V_FW_EQ_OFLD_CMD_ONCHIP(1U)
#define S_FW_EQ_OFLD_CMD_PCIECHN 16
#define M_FW_EQ_OFLD_CMD_PCIECHN 0x3
#define V_FW_EQ_OFLD_CMD_PCIECHN(x) ((x) << S_FW_EQ_OFLD_CMD_PCIECHN)
#define G_FW_EQ_OFLD_CMD_PCIECHN(x) \
(((x) >> S_FW_EQ_OFLD_CMD_PCIECHN) & M_FW_EQ_OFLD_CMD_PCIECHN)
#define S_FW_EQ_OFLD_CMD_IQID 0
#define M_FW_EQ_OFLD_CMD_IQID 0xffff
#define V_FW_EQ_OFLD_CMD_IQID(x) ((x) << S_FW_EQ_OFLD_CMD_IQID)
#define G_FW_EQ_OFLD_CMD_IQID(x) \
(((x) >> S_FW_EQ_OFLD_CMD_IQID) & M_FW_EQ_OFLD_CMD_IQID)
#define S_FW_EQ_OFLD_CMD_DCAEN 31
#define M_FW_EQ_OFLD_CMD_DCAEN 0x1
#define V_FW_EQ_OFLD_CMD_DCAEN(x) ((x) << S_FW_EQ_OFLD_CMD_DCAEN)
#define G_FW_EQ_OFLD_CMD_DCAEN(x) \
(((x) >> S_FW_EQ_OFLD_CMD_DCAEN) & M_FW_EQ_OFLD_CMD_DCAEN)
#define F_FW_EQ_OFLD_CMD_DCAEN V_FW_EQ_OFLD_CMD_DCAEN(1U)
#define S_FW_EQ_OFLD_CMD_DCACPU 26
#define M_FW_EQ_OFLD_CMD_DCACPU 0x1f
#define V_FW_EQ_OFLD_CMD_DCACPU(x) ((x) << S_FW_EQ_OFLD_CMD_DCACPU)
#define G_FW_EQ_OFLD_CMD_DCACPU(x) \
(((x) >> S_FW_EQ_OFLD_CMD_DCACPU) & M_FW_EQ_OFLD_CMD_DCACPU)
#define S_FW_EQ_OFLD_CMD_FBMIN 23
#define M_FW_EQ_OFLD_CMD_FBMIN 0x7
#define V_FW_EQ_OFLD_CMD_FBMIN(x) ((x) << S_FW_EQ_OFLD_CMD_FBMIN)
#define G_FW_EQ_OFLD_CMD_FBMIN(x) \
(((x) >> S_FW_EQ_OFLD_CMD_FBMIN) & M_FW_EQ_OFLD_CMD_FBMIN)
#define S_FW_EQ_OFLD_CMD_FBMAX 20
#define M_FW_EQ_OFLD_CMD_FBMAX 0x7
#define V_FW_EQ_OFLD_CMD_FBMAX(x) ((x) << S_FW_EQ_OFLD_CMD_FBMAX)
#define G_FW_EQ_OFLD_CMD_FBMAX(x) \
(((x) >> S_FW_EQ_OFLD_CMD_FBMAX) & M_FW_EQ_OFLD_CMD_FBMAX)
#define S_FW_EQ_OFLD_CMD_CIDXFTHRESHO 19
#define M_FW_EQ_OFLD_CMD_CIDXFTHRESHO 0x1
#define V_FW_EQ_OFLD_CMD_CIDXFTHRESHO(x) \
((x) << S_FW_EQ_OFLD_CMD_CIDXFTHRESHO)
#define G_FW_EQ_OFLD_CMD_CIDXFTHRESHO(x) \
(((x) >> S_FW_EQ_OFLD_CMD_CIDXFTHRESHO) & M_FW_EQ_OFLD_CMD_CIDXFTHRESHO)
#define F_FW_EQ_OFLD_CMD_CIDXFTHRESHO V_FW_EQ_OFLD_CMD_CIDXFTHRESHO(1U)
#define S_FW_EQ_OFLD_CMD_CIDXFTHRESH 16
#define M_FW_EQ_OFLD_CMD_CIDXFTHRESH 0x7
#define V_FW_EQ_OFLD_CMD_CIDXFTHRESH(x) ((x) << S_FW_EQ_OFLD_CMD_CIDXFTHRESH)
#define G_FW_EQ_OFLD_CMD_CIDXFTHRESH(x) \
(((x) >> S_FW_EQ_OFLD_CMD_CIDXFTHRESH) & M_FW_EQ_OFLD_CMD_CIDXFTHRESH)
#define S_FW_EQ_OFLD_CMD_EQSIZE 0
#define M_FW_EQ_OFLD_CMD_EQSIZE 0xffff
#define V_FW_EQ_OFLD_CMD_EQSIZE(x) ((x) << S_FW_EQ_OFLD_CMD_EQSIZE)
#define G_FW_EQ_OFLD_CMD_EQSIZE(x) \
(((x) >> S_FW_EQ_OFLD_CMD_EQSIZE) & M_FW_EQ_OFLD_CMD_EQSIZE)
/* Macros for VIID parsing:
VIID - [10:8] PFN, [7] VI Valid, [6:0] VI number */
#define S_FW_VIID_PFN 8
#define M_FW_VIID_PFN 0x7
#define V_FW_VIID_PFN(x) ((x) << S_FW_VIID_PFN)
#define G_FW_VIID_PFN(x) (((x) >> S_FW_VIID_PFN) & M_FW_VIID_PFN)
#define S_FW_VIID_VIVLD 7
#define M_FW_VIID_VIVLD 0x1
#define V_FW_VIID_VIVLD(x) ((x) << S_FW_VIID_VIVLD)
#define G_FW_VIID_VIVLD(x) (((x) >> S_FW_VIID_VIVLD) & M_FW_VIID_VIVLD)
#define S_FW_VIID_VIN 0
#define M_FW_VIID_VIN 0x7F
#define V_FW_VIID_VIN(x) ((x) << S_FW_VIID_VIN)
#define G_FW_VIID_VIN(x) (((x) >> S_FW_VIID_VIN) & M_FW_VIID_VIN)
enum fw_vi_func {
FW_VI_FUNC_ETH,
FW_VI_FUNC_OFLD,
FW_VI_FUNC_IWARP,
FW_VI_FUNC_OPENISCSI,
FW_VI_FUNC_OPENFCOE,
FW_VI_FUNC_FOISCSI,
FW_VI_FUNC_FOFCOE,
FW_VI_FUNC_FW,
};
struct fw_vi_cmd {
__be32 op_to_vfn;
__be32 alloc_to_len16;
__be16 type_to_viid;
__u8 mac[6];
__u8 portid_pkd;
__u8 nmac;
__u8 nmac0[6];
__be16 norss_rsssize;
__u8 nmac1[6];
__be16 idsiiq_pkd;
__u8 nmac2[6];
__be16 idseiq_pkd;
__u8 nmac3[6];
__be64 r9;
__be64 r10;
};
#define S_FW_VI_CMD_PFN 8
#define M_FW_VI_CMD_PFN 0x7
#define V_FW_VI_CMD_PFN(x) ((x) << S_FW_VI_CMD_PFN)
#define G_FW_VI_CMD_PFN(x) \
(((x) >> S_FW_VI_CMD_PFN) & M_FW_VI_CMD_PFN)
#define S_FW_VI_CMD_VFN 0
#define M_FW_VI_CMD_VFN 0xff
#define V_FW_VI_CMD_VFN(x) ((x) << S_FW_VI_CMD_VFN)
#define G_FW_VI_CMD_VFN(x) \
(((x) >> S_FW_VI_CMD_VFN) & M_FW_VI_CMD_VFN)
#define S_FW_VI_CMD_ALLOC 31
#define M_FW_VI_CMD_ALLOC 0x1
#define V_FW_VI_CMD_ALLOC(x) ((x) << S_FW_VI_CMD_ALLOC)
#define G_FW_VI_CMD_ALLOC(x) \
(((x) >> S_FW_VI_CMD_ALLOC) & M_FW_VI_CMD_ALLOC)
#define F_FW_VI_CMD_ALLOC V_FW_VI_CMD_ALLOC(1U)
#define S_FW_VI_CMD_FREE 30
#define M_FW_VI_CMD_FREE 0x1
#define V_FW_VI_CMD_FREE(x) ((x) << S_FW_VI_CMD_FREE)
#define G_FW_VI_CMD_FREE(x) \
(((x) >> S_FW_VI_CMD_FREE) & M_FW_VI_CMD_FREE)
#define F_FW_VI_CMD_FREE V_FW_VI_CMD_FREE(1U)
#define S_FW_VI_CMD_TYPE 15
#define M_FW_VI_CMD_TYPE 0x1
#define V_FW_VI_CMD_TYPE(x) ((x) << S_FW_VI_CMD_TYPE)
#define G_FW_VI_CMD_TYPE(x) \
(((x) >> S_FW_VI_CMD_TYPE) & M_FW_VI_CMD_TYPE)
#define F_FW_VI_CMD_TYPE V_FW_VI_CMD_TYPE(1U)
#define S_FW_VI_CMD_FUNC 12
#define M_FW_VI_CMD_FUNC 0x7
#define V_FW_VI_CMD_FUNC(x) ((x) << S_FW_VI_CMD_FUNC)
#define G_FW_VI_CMD_FUNC(x) \
(((x) >> S_FW_VI_CMD_FUNC) & M_FW_VI_CMD_FUNC)
#define S_FW_VI_CMD_VIID 0
#define M_FW_VI_CMD_VIID 0xfff
#define V_FW_VI_CMD_VIID(x) ((x) << S_FW_VI_CMD_VIID)
#define G_FW_VI_CMD_VIID(x) \
(((x) >> S_FW_VI_CMD_VIID) & M_FW_VI_CMD_VIID)
#define S_FW_VI_CMD_PORTID 4
#define M_FW_VI_CMD_PORTID 0xf
#define V_FW_VI_CMD_PORTID(x) ((x) << S_FW_VI_CMD_PORTID)
#define G_FW_VI_CMD_PORTID(x) \
(((x) >> S_FW_VI_CMD_PORTID) & M_FW_VI_CMD_PORTID)
#define S_FW_VI_CMD_NORSS 11
#define M_FW_VI_CMD_NORSS 0x1
#define V_FW_VI_CMD_NORSS(x) ((x) << S_FW_VI_CMD_NORSS)
#define G_FW_VI_CMD_NORSS(x) \
(((x) >> S_FW_VI_CMD_NORSS) & M_FW_VI_CMD_NORSS)
#define F_FW_VI_CMD_NORSS V_FW_VI_CMD_NORSS(1U)
#define S_FW_VI_CMD_RSSSIZE 0
#define M_FW_VI_CMD_RSSSIZE 0x7ff
#define V_FW_VI_CMD_RSSSIZE(x) ((x) << S_FW_VI_CMD_RSSSIZE)
#define G_FW_VI_CMD_RSSSIZE(x) \
(((x) >> S_FW_VI_CMD_RSSSIZE) & M_FW_VI_CMD_RSSSIZE)
#define S_FW_VI_CMD_IDSIIQ 0
#define M_FW_VI_CMD_IDSIIQ 0x3ff
#define V_FW_VI_CMD_IDSIIQ(x) ((x) << S_FW_VI_CMD_IDSIIQ)
#define G_FW_VI_CMD_IDSIIQ(x) \
(((x) >> S_FW_VI_CMD_IDSIIQ) & M_FW_VI_CMD_IDSIIQ)
#define S_FW_VI_CMD_IDSEIQ 0
#define M_FW_VI_CMD_IDSEIQ 0x3ff
#define V_FW_VI_CMD_IDSEIQ(x) ((x) << S_FW_VI_CMD_IDSEIQ)
#define G_FW_VI_CMD_IDSEIQ(x) \
(((x) >> S_FW_VI_CMD_IDSEIQ) & M_FW_VI_CMD_IDSEIQ)
/* Special VI_MAC command index ids */
#define FW_VI_MAC_ADD_MAC 0x3FF
#define FW_VI_MAC_ADD_PERSIST_MAC 0x3FE
#define FW_VI_MAC_MAC_BASED_FREE 0x3FD
enum fw_vi_mac_smac {
FW_VI_MAC_MPS_TCAM_ENTRY,
FW_VI_MAC_MPS_TCAM_ONLY,
FW_VI_MAC_SMT_ONLY,
FW_VI_MAC_SMT_AND_MPSTCAM
};
enum fw_vi_mac_result {
FW_VI_MAC_R_SUCCESS,
FW_VI_MAC_R_F_NONEXISTENT_NOMEM,
FW_VI_MAC_R_SMAC_FAIL,
FW_VI_MAC_R_F_ACL_CHECK
};
enum fw_vi_mac_entry_types {
FW_VI_MAC_TYPE_EXACTMAC,
FW_VI_MAC_TYPE_HASHVEC,
FW_VI_MAC_TYPE_RAW,
};
struct fw_vi_mac_cmd {
__be32 op_to_viid;
__be32 freemacs_to_len16;
union fw_vi_mac {
struct fw_vi_mac_exact {
__be16 valid_to_idx;
__u8 macaddr[6];
} exact[7];
struct fw_vi_mac_hash {
__be64 hashvec;
} hash;
struct fw_vi_mac_raw {
__be32 raw_idx_pkd;
__be32 data0_pkd;
__be32 data1[2];
__be64 data0m_pkd;
__be32 data1m[2];
} raw;
} u;
};
#define S_FW_VI_MAC_CMD_VIID 0
#define M_FW_VI_MAC_CMD_VIID 0xfff
#define V_FW_VI_MAC_CMD_VIID(x) ((x) << S_FW_VI_MAC_CMD_VIID)
#define G_FW_VI_MAC_CMD_VIID(x) \
(((x) >> S_FW_VI_MAC_CMD_VIID) & M_FW_VI_MAC_CMD_VIID)
#define S_FW_VI_MAC_CMD_FREEMACS 31
#define M_FW_VI_MAC_CMD_FREEMACS 0x1
#define V_FW_VI_MAC_CMD_FREEMACS(x) ((x) << S_FW_VI_MAC_CMD_FREEMACS)
#define G_FW_VI_MAC_CMD_FREEMACS(x) \
(((x) >> S_FW_VI_MAC_CMD_FREEMACS) & M_FW_VI_MAC_CMD_FREEMACS)
#define F_FW_VI_MAC_CMD_FREEMACS V_FW_VI_MAC_CMD_FREEMACS(1U)
#define S_FW_VI_MAC_CMD_ENTRY_TYPE 23
#define M_FW_VI_MAC_CMD_ENTRY_TYPE 0x7
#define V_FW_VI_MAC_CMD_ENTRY_TYPE(x) ((x) << S_FW_VI_MAC_CMD_ENTRY_TYPE)
#define G_FW_VI_MAC_CMD_ENTRY_TYPE(x) \
(((x) >> S_FW_VI_MAC_CMD_ENTRY_TYPE) & M_FW_VI_MAC_CMD_ENTRY_TYPE)
#define S_FW_VI_MAC_CMD_HASHUNIEN 22
#define M_FW_VI_MAC_CMD_HASHUNIEN 0x1
#define V_FW_VI_MAC_CMD_HASHUNIEN(x) ((x) << S_FW_VI_MAC_CMD_HASHUNIEN)
#define G_FW_VI_MAC_CMD_HASHUNIEN(x) \
(((x) >> S_FW_VI_MAC_CMD_HASHUNIEN) & M_FW_VI_MAC_CMD_HASHUNIEN)
#define F_FW_VI_MAC_CMD_HASHUNIEN V_FW_VI_MAC_CMD_HASHUNIEN(1U)
#define S_FW_VI_MAC_CMD_VALID 15
#define M_FW_VI_MAC_CMD_VALID 0x1
#define V_FW_VI_MAC_CMD_VALID(x) ((x) << S_FW_VI_MAC_CMD_VALID)
#define G_FW_VI_MAC_CMD_VALID(x) \
(((x) >> S_FW_VI_MAC_CMD_VALID) & M_FW_VI_MAC_CMD_VALID)
#define F_FW_VI_MAC_CMD_VALID V_FW_VI_MAC_CMD_VALID(1U)
#define S_FW_VI_MAC_CMD_PRIO 12
#define M_FW_VI_MAC_CMD_PRIO 0x7
#define V_FW_VI_MAC_CMD_PRIO(x) ((x) << S_FW_VI_MAC_CMD_PRIO)
#define G_FW_VI_MAC_CMD_PRIO(x) \
(((x) >> S_FW_VI_MAC_CMD_PRIO) & M_FW_VI_MAC_CMD_PRIO)
#define S_FW_VI_MAC_CMD_SMAC_RESULT 10
#define M_FW_VI_MAC_CMD_SMAC_RESULT 0x3
#define V_FW_VI_MAC_CMD_SMAC_RESULT(x) ((x) << S_FW_VI_MAC_CMD_SMAC_RESULT)
#define G_FW_VI_MAC_CMD_SMAC_RESULT(x) \
(((x) >> S_FW_VI_MAC_CMD_SMAC_RESULT) & M_FW_VI_MAC_CMD_SMAC_RESULT)
#define S_FW_VI_MAC_CMD_IDX 0
#define M_FW_VI_MAC_CMD_IDX 0x3ff
#define V_FW_VI_MAC_CMD_IDX(x) ((x) << S_FW_VI_MAC_CMD_IDX)
#define G_FW_VI_MAC_CMD_IDX(x) \
(((x) >> S_FW_VI_MAC_CMD_IDX) & M_FW_VI_MAC_CMD_IDX)
#define S_FW_VI_MAC_CMD_RAW_IDX 16
#define M_FW_VI_MAC_CMD_RAW_IDX 0xffff
#define V_FW_VI_MAC_CMD_RAW_IDX(x) ((x) << S_FW_VI_MAC_CMD_RAW_IDX)
#define G_FW_VI_MAC_CMD_RAW_IDX(x) \
(((x) >> S_FW_VI_MAC_CMD_RAW_IDX) & M_FW_VI_MAC_CMD_RAW_IDX)
#define S_FW_VI_MAC_CMD_DATA0 0
#define M_FW_VI_MAC_CMD_DATA0 0xffff
#define V_FW_VI_MAC_CMD_DATA0(x) ((x) << S_FW_VI_MAC_CMD_DATA0)
#define G_FW_VI_MAC_CMD_DATA0(x) \
(((x) >> S_FW_VI_MAC_CMD_DATA0) & M_FW_VI_MAC_CMD_DATA0)
/* T4 max MTU supported */
#define T4_MAX_MTU_SUPPORTED 9600
#define FW_RXMODE_MTU_NO_CHG 65535
struct fw_vi_rxmode_cmd {
__be32 op_to_viid;
__be32 retval_len16;
__be32 mtu_to_vlanexen;
__be32 r4_lo;
};
#define S_FW_VI_RXMODE_CMD_VIID 0
#define M_FW_VI_RXMODE_CMD_VIID 0xfff
#define V_FW_VI_RXMODE_CMD_VIID(x) ((x) << S_FW_VI_RXMODE_CMD_VIID)
#define G_FW_VI_RXMODE_CMD_VIID(x) \
(((x) >> S_FW_VI_RXMODE_CMD_VIID) & M_FW_VI_RXMODE_CMD_VIID)
#define S_FW_VI_RXMODE_CMD_MTU 16
#define M_FW_VI_RXMODE_CMD_MTU 0xffff
#define V_FW_VI_RXMODE_CMD_MTU(x) ((x) << S_FW_VI_RXMODE_CMD_MTU)
#define G_FW_VI_RXMODE_CMD_MTU(x) \
(((x) >> S_FW_VI_RXMODE_CMD_MTU) & M_FW_VI_RXMODE_CMD_MTU)
#define S_FW_VI_RXMODE_CMD_PROMISCEN 14
#define M_FW_VI_RXMODE_CMD_PROMISCEN 0x3
#define V_FW_VI_RXMODE_CMD_PROMISCEN(x) ((x) << S_FW_VI_RXMODE_CMD_PROMISCEN)
#define G_FW_VI_RXMODE_CMD_PROMISCEN(x) \
(((x) >> S_FW_VI_RXMODE_CMD_PROMISCEN) & M_FW_VI_RXMODE_CMD_PROMISCEN)
#define S_FW_VI_RXMODE_CMD_ALLMULTIEN 12
#define M_FW_VI_RXMODE_CMD_ALLMULTIEN 0x3
#define V_FW_VI_RXMODE_CMD_ALLMULTIEN(x) \
((x) << S_FW_VI_RXMODE_CMD_ALLMULTIEN)
#define G_FW_VI_RXMODE_CMD_ALLMULTIEN(x) \
(((x) >> S_FW_VI_RXMODE_CMD_ALLMULTIEN) & M_FW_VI_RXMODE_CMD_ALLMULTIEN)
#define S_FW_VI_RXMODE_CMD_BROADCASTEN 10
#define M_FW_VI_RXMODE_CMD_BROADCASTEN 0x3
#define V_FW_VI_RXMODE_CMD_BROADCASTEN(x) \
((x) << S_FW_VI_RXMODE_CMD_BROADCASTEN)
#define G_FW_VI_RXMODE_CMD_BROADCASTEN(x) \
(((x) >> S_FW_VI_RXMODE_CMD_BROADCASTEN) & M_FW_VI_RXMODE_CMD_BROADCASTEN)
#define S_FW_VI_RXMODE_CMD_VLANEXEN 8
#define M_FW_VI_RXMODE_CMD_VLANEXEN 0x3
#define V_FW_VI_RXMODE_CMD_VLANEXEN(x) ((x) << S_FW_VI_RXMODE_CMD_VLANEXEN)
#define G_FW_VI_RXMODE_CMD_VLANEXEN(x) \
(((x) >> S_FW_VI_RXMODE_CMD_VLANEXEN) & M_FW_VI_RXMODE_CMD_VLANEXEN)
struct fw_vi_enable_cmd {
__be32 op_to_viid;
__be32 ien_to_len16;
__be16 blinkdur;
__be16 r3;
__be32 r4;
};
#define S_FW_VI_ENABLE_CMD_VIID 0
#define M_FW_VI_ENABLE_CMD_VIID 0xfff
#define V_FW_VI_ENABLE_CMD_VIID(x) ((x) << S_FW_VI_ENABLE_CMD_VIID)
#define G_FW_VI_ENABLE_CMD_VIID(x) \
(((x) >> S_FW_VI_ENABLE_CMD_VIID) & M_FW_VI_ENABLE_CMD_VIID)
#define S_FW_VI_ENABLE_CMD_IEN 31
#define M_FW_VI_ENABLE_CMD_IEN 0x1
#define V_FW_VI_ENABLE_CMD_IEN(x) ((x) << S_FW_VI_ENABLE_CMD_IEN)
#define G_FW_VI_ENABLE_CMD_IEN(x) \
(((x) >> S_FW_VI_ENABLE_CMD_IEN) & M_FW_VI_ENABLE_CMD_IEN)
#define F_FW_VI_ENABLE_CMD_IEN V_FW_VI_ENABLE_CMD_IEN(1U)
#define S_FW_VI_ENABLE_CMD_EEN 30
#define M_FW_VI_ENABLE_CMD_EEN 0x1
#define V_FW_VI_ENABLE_CMD_EEN(x) ((x) << S_FW_VI_ENABLE_CMD_EEN)
#define G_FW_VI_ENABLE_CMD_EEN(x) \
(((x) >> S_FW_VI_ENABLE_CMD_EEN) & M_FW_VI_ENABLE_CMD_EEN)
#define F_FW_VI_ENABLE_CMD_EEN V_FW_VI_ENABLE_CMD_EEN(1U)
#define S_FW_VI_ENABLE_CMD_LED 29
#define M_FW_VI_ENABLE_CMD_LED 0x1
#define V_FW_VI_ENABLE_CMD_LED(x) ((x) << S_FW_VI_ENABLE_CMD_LED)
#define G_FW_VI_ENABLE_CMD_LED(x) \
(((x) >> S_FW_VI_ENABLE_CMD_LED) & M_FW_VI_ENABLE_CMD_LED)
#define F_FW_VI_ENABLE_CMD_LED V_FW_VI_ENABLE_CMD_LED(1U)
#define S_FW_VI_ENABLE_CMD_DCB_INFO 28
#define M_FW_VI_ENABLE_CMD_DCB_INFO 0x1
#define V_FW_VI_ENABLE_CMD_DCB_INFO(x) ((x) << S_FW_VI_ENABLE_CMD_DCB_INFO)
#define G_FW_VI_ENABLE_CMD_DCB_INFO(x) \
(((x) >> S_FW_VI_ENABLE_CMD_DCB_INFO) & M_FW_VI_ENABLE_CMD_DCB_INFO)
#define F_FW_VI_ENABLE_CMD_DCB_INFO V_FW_VI_ENABLE_CMD_DCB_INFO(1U)
/* VI VF stats offset definitions */
#define VI_VF_NUM_STATS 16
enum fw_vi_stats_vf_index {
FW_VI_VF_STAT_TX_BCAST_BYTES_IX,
FW_VI_VF_STAT_TX_BCAST_FRAMES_IX,
FW_VI_VF_STAT_TX_MCAST_BYTES_IX,
FW_VI_VF_STAT_TX_MCAST_FRAMES_IX,
FW_VI_VF_STAT_TX_UCAST_BYTES_IX,
FW_VI_VF_STAT_TX_UCAST_FRAMES_IX,
FW_VI_VF_STAT_TX_DROP_FRAMES_IX,
FW_VI_VF_STAT_TX_OFLD_BYTES_IX,
FW_VI_VF_STAT_TX_OFLD_FRAMES_IX,
FW_VI_VF_STAT_RX_BCAST_BYTES_IX,
FW_VI_VF_STAT_RX_BCAST_FRAMES_IX,
FW_VI_VF_STAT_RX_MCAST_BYTES_IX,
FW_VI_VF_STAT_RX_MCAST_FRAMES_IX,
FW_VI_VF_STAT_RX_UCAST_BYTES_IX,
FW_VI_VF_STAT_RX_UCAST_FRAMES_IX,
FW_VI_VF_STAT_RX_ERR_FRAMES_IX
};
/* VI PF stats offset definitions */
#define VI_PF_NUM_STATS 17
enum fw_vi_stats_pf_index {
FW_VI_PF_STAT_TX_BCAST_BYTES_IX,
FW_VI_PF_STAT_TX_BCAST_FRAMES_IX,
FW_VI_PF_STAT_TX_MCAST_BYTES_IX,
FW_VI_PF_STAT_TX_MCAST_FRAMES_IX,
FW_VI_PF_STAT_TX_UCAST_BYTES_IX,
FW_VI_PF_STAT_TX_UCAST_FRAMES_IX,
FW_VI_PF_STAT_TX_OFLD_BYTES_IX,
FW_VI_PF_STAT_TX_OFLD_FRAMES_IX,
FW_VI_PF_STAT_RX_BYTES_IX,
FW_VI_PF_STAT_RX_FRAMES_IX,
FW_VI_PF_STAT_RX_BCAST_BYTES_IX,
FW_VI_PF_STAT_RX_BCAST_FRAMES_IX,
FW_VI_PF_STAT_RX_MCAST_BYTES_IX,
FW_VI_PF_STAT_RX_MCAST_FRAMES_IX,
FW_VI_PF_STAT_RX_UCAST_BYTES_IX,
FW_VI_PF_STAT_RX_UCAST_FRAMES_IX,
FW_VI_PF_STAT_RX_ERR_FRAMES_IX
};
struct fw_vi_stats_cmd {
__be32 op_to_viid;
__be32 retval_len16;
union fw_vi_stats {
struct fw_vi_stats_ctl {
__be16 nstats_ix;
__be16 r6;
__be32 r7;
__be64 stat0;
__be64 stat1;
__be64 stat2;
__be64 stat3;
__be64 stat4;
__be64 stat5;
} ctl;
struct fw_vi_stats_pf {
__be64 tx_bcast_bytes;
__be64 tx_bcast_frames;
__be64 tx_mcast_bytes;
__be64 tx_mcast_frames;
__be64 tx_ucast_bytes;
__be64 tx_ucast_frames;
__be64 tx_offload_bytes;
__be64 tx_offload_frames;
__be64 rx_pf_bytes;
__be64 rx_pf_frames;
__be64 rx_bcast_bytes;
__be64 rx_bcast_frames;
__be64 rx_mcast_bytes;
__be64 rx_mcast_frames;
__be64 rx_ucast_bytes;
__be64 rx_ucast_frames;
__be64 rx_err_frames;
} pf;
struct fw_vi_stats_vf {
__be64 tx_bcast_bytes;
__be64 tx_bcast_frames;
__be64 tx_mcast_bytes;
__be64 tx_mcast_frames;
__be64 tx_ucast_bytes;
__be64 tx_ucast_frames;
__be64 tx_drop_frames;
__be64 tx_offload_bytes;
__be64 tx_offload_frames;
__be64 rx_bcast_bytes;
__be64 rx_bcast_frames;
__be64 rx_mcast_bytes;
__be64 rx_mcast_frames;
__be64 rx_ucast_bytes;
__be64 rx_ucast_frames;
__be64 rx_err_frames;
} vf;
} u;
};
#define S_FW_VI_STATS_CMD_VIID 0
#define M_FW_VI_STATS_CMD_VIID 0xfff
#define V_FW_VI_STATS_CMD_VIID(x) ((x) << S_FW_VI_STATS_CMD_VIID)
#define G_FW_VI_STATS_CMD_VIID(x) \
(((x) >> S_FW_VI_STATS_CMD_VIID) & M_FW_VI_STATS_CMD_VIID)
#define S_FW_VI_STATS_CMD_NSTATS 12
#define M_FW_VI_STATS_CMD_NSTATS 0x7
#define V_FW_VI_STATS_CMD_NSTATS(x) ((x) << S_FW_VI_STATS_CMD_NSTATS)
#define G_FW_VI_STATS_CMD_NSTATS(x) \
(((x) >> S_FW_VI_STATS_CMD_NSTATS) & M_FW_VI_STATS_CMD_NSTATS)
#define S_FW_VI_STATS_CMD_IX 0
#define M_FW_VI_STATS_CMD_IX 0x1f
#define V_FW_VI_STATS_CMD_IX(x) ((x) << S_FW_VI_STATS_CMD_IX)
#define G_FW_VI_STATS_CMD_IX(x) \
(((x) >> S_FW_VI_STATS_CMD_IX) & M_FW_VI_STATS_CMD_IX)
struct fw_acl_mac_cmd {
__be32 op_to_vfn;
__be32 en_to_len16;
__u8 nmac;
__u8 r3[7];
__be16 r4;
__u8 macaddr0[6];
__be16 r5;
__u8 macaddr1[6];
__be16 r6;
__u8 macaddr2[6];
__be16 r7;
__u8 macaddr3[6];
};
#define S_FW_ACL_MAC_CMD_PFN 8
#define M_FW_ACL_MAC_CMD_PFN 0x7
#define V_FW_ACL_MAC_CMD_PFN(x) ((x) << S_FW_ACL_MAC_CMD_PFN)
#define G_FW_ACL_MAC_CMD_PFN(x) \
(((x) >> S_FW_ACL_MAC_CMD_PFN) & M_FW_ACL_MAC_CMD_PFN)
#define S_FW_ACL_MAC_CMD_VFN 0
#define M_FW_ACL_MAC_CMD_VFN 0xff
#define V_FW_ACL_MAC_CMD_VFN(x) ((x) << S_FW_ACL_MAC_CMD_VFN)
#define G_FW_ACL_MAC_CMD_VFN(x) \
(((x) >> S_FW_ACL_MAC_CMD_VFN) & M_FW_ACL_MAC_CMD_VFN)
#define S_FW_ACL_MAC_CMD_EN 31
#define M_FW_ACL_MAC_CMD_EN 0x1
#define V_FW_ACL_MAC_CMD_EN(x) ((x) << S_FW_ACL_MAC_CMD_EN)
#define G_FW_ACL_MAC_CMD_EN(x) \
(((x) >> S_FW_ACL_MAC_CMD_EN) & M_FW_ACL_MAC_CMD_EN)
#define F_FW_ACL_MAC_CMD_EN V_FW_ACL_MAC_CMD_EN(1U)
struct fw_acl_vlan_cmd {
__be32 op_to_vfn;
__be32 en_to_len16;
__u8 nvlan;
__u8 dropnovlan_fm;
__u8 r3_lo[6];
__be16 vlanid[16];
};
#define S_FW_ACL_VLAN_CMD_PFN 8
#define M_FW_ACL_VLAN_CMD_PFN 0x7
#define V_FW_ACL_VLAN_CMD_PFN(x) ((x) << S_FW_ACL_VLAN_CMD_PFN)
#define G_FW_ACL_VLAN_CMD_PFN(x) \
(((x) >> S_FW_ACL_VLAN_CMD_PFN) & M_FW_ACL_VLAN_CMD_PFN)
#define S_FW_ACL_VLAN_CMD_VFN 0
#define M_FW_ACL_VLAN_CMD_VFN 0xff
#define V_FW_ACL_VLAN_CMD_VFN(x) ((x) << S_FW_ACL_VLAN_CMD_VFN)
#define G_FW_ACL_VLAN_CMD_VFN(x) \
(((x) >> S_FW_ACL_VLAN_CMD_VFN) & M_FW_ACL_VLAN_CMD_VFN)
#define S_FW_ACL_VLAN_CMD_EN 31
#define M_FW_ACL_VLAN_CMD_EN 0x1
#define V_FW_ACL_VLAN_CMD_EN(x) ((x) << S_FW_ACL_VLAN_CMD_EN)
#define G_FW_ACL_VLAN_CMD_EN(x) \
(((x) >> S_FW_ACL_VLAN_CMD_EN) & M_FW_ACL_VLAN_CMD_EN)
#define F_FW_ACL_VLAN_CMD_EN V_FW_ACL_VLAN_CMD_EN(1U)
#define S_FW_ACL_VLAN_CMD_DROPNOVLAN 7
#define M_FW_ACL_VLAN_CMD_DROPNOVLAN 0x1
#define V_FW_ACL_VLAN_CMD_DROPNOVLAN(x) ((x) << S_FW_ACL_VLAN_CMD_DROPNOVLAN)
#define G_FW_ACL_VLAN_CMD_DROPNOVLAN(x) \
(((x) >> S_FW_ACL_VLAN_CMD_DROPNOVLAN) & M_FW_ACL_VLAN_CMD_DROPNOVLAN)
#define F_FW_ACL_VLAN_CMD_DROPNOVLAN V_FW_ACL_VLAN_CMD_DROPNOVLAN(1U)
#define S_FW_ACL_VLAN_CMD_FM 6
#define M_FW_ACL_VLAN_CMD_FM 0x1
#define V_FW_ACL_VLAN_CMD_FM(x) ((x) << S_FW_ACL_VLAN_CMD_FM)
#define G_FW_ACL_VLAN_CMD_FM(x) \
(((x) >> S_FW_ACL_VLAN_CMD_FM) & M_FW_ACL_VLAN_CMD_FM)
#define F_FW_ACL_VLAN_CMD_FM V_FW_ACL_VLAN_CMD_FM(1U)
/* port capabilities bitmap */
enum fw_port_cap {
FW_PORT_CAP_SPEED_100M = 0x0001,
FW_PORT_CAP_SPEED_1G = 0x0002,
FW_PORT_CAP_SPEED_2_5G = 0x0004,
FW_PORT_CAP_SPEED_10G = 0x0008,
FW_PORT_CAP_SPEED_40G = 0x0010,
FW_PORT_CAP_SPEED_100G = 0x0020,
FW_PORT_CAP_FC_RX = 0x0040,
FW_PORT_CAP_FC_TX = 0x0080,
FW_PORT_CAP_ANEG = 0x0100,
FW_PORT_CAP_MDIX = 0x0200,
FW_PORT_CAP_MDIAUTO = 0x0400,
FW_PORT_CAP_FEC = 0x0800,
FW_PORT_CAP_TECHKR = 0x1000,
FW_PORT_CAP_TECHKX4 = 0x2000,
FW_PORT_CAP_802_3_PAUSE = 0x4000,
FW_PORT_CAP_802_3_ASM_DIR = 0x8000,
};
#define S_FW_PORT_AUXLINFO_MDI 3
#define M_FW_PORT_AUXLINFO_MDI 0x3
#define V_FW_PORT_AUXLINFO_MDI(x) ((x) << S_FW_PORT_AUXLINFO_MDI)
#define G_FW_PORT_AUXLINFO_MDI(x) \
(((x) >> S_FW_PORT_AUXLINFO_MDI) & M_FW_PORT_AUXLINFO_MDI)
#define S_FW_PORT_AUXLINFO_KX4 2
#define M_FW_PORT_AUXLINFO_KX4 0x1
#define V_FW_PORT_AUXLINFO_KX4(x) ((x) << S_FW_PORT_AUXLINFO_KX4)
#define G_FW_PORT_AUXLINFO_KX4(x) \
(((x) >> S_FW_PORT_AUXLINFO_KX4) & M_FW_PORT_AUXLINFO_KX4)
#define F_FW_PORT_AUXLINFO_KX4 V_FW_PORT_AUXLINFO_KX4(1U)
#define S_FW_PORT_AUXLINFO_KR 1
#define M_FW_PORT_AUXLINFO_KR 0x1
#define V_FW_PORT_AUXLINFO_KR(x) ((x) << S_FW_PORT_AUXLINFO_KR)
#define G_FW_PORT_AUXLINFO_KR(x) \
(((x) >> S_FW_PORT_AUXLINFO_KR) & M_FW_PORT_AUXLINFO_KR)
#define F_FW_PORT_AUXLINFO_KR V_FW_PORT_AUXLINFO_KR(1U)
#define S_FW_PORT_AUXLINFO_FEC 0
#define M_FW_PORT_AUXLINFO_FEC 0x1
#define V_FW_PORT_AUXLINFO_FEC(x) ((x) << S_FW_PORT_AUXLINFO_FEC)
#define G_FW_PORT_AUXLINFO_FEC(x) \
(((x) >> S_FW_PORT_AUXLINFO_FEC) & M_FW_PORT_AUXLINFO_FEC)
#define F_FW_PORT_AUXLINFO_FEC V_FW_PORT_AUXLINFO_FEC(1U)
#define S_FW_PORT_RCAP_AUX 11
#define M_FW_PORT_RCAP_AUX 0x7
#define V_FW_PORT_RCAP_AUX(x) ((x) << S_FW_PORT_RCAP_AUX)
#define G_FW_PORT_RCAP_AUX(x) \
(((x) >> S_FW_PORT_RCAP_AUX) & M_FW_PORT_RCAP_AUX)
#define S_FW_PORT_CAP_SPEED 0
#define M_FW_PORT_CAP_SPEED 0x3f
#define V_FW_PORT_CAP_SPEED(x) ((x) << S_FW_PORT_CAP_SPEED)
#define G_FW_PORT_CAP_SPEED(x) \
(((x) >> S_FW_PORT_CAP_SPEED) & M_FW_PORT_CAP_SPEED)
#define S_FW_PORT_CAP_FC 6
#define M_FW_PORT_CAP_FC 0x3
#define V_FW_PORT_CAP_FC(x) ((x) << S_FW_PORT_CAP_FC)
#define G_FW_PORT_CAP_FC(x) \
(((x) >> S_FW_PORT_CAP_FC) & M_FW_PORT_CAP_FC)
#define S_FW_PORT_CAP_ANEG 8
#define M_FW_PORT_CAP_ANEG 0x1
#define V_FW_PORT_CAP_ANEG(x) ((x) << S_FW_PORT_CAP_ANEG)
#define G_FW_PORT_CAP_ANEG(x) \
(((x) >> S_FW_PORT_CAP_ANEG) & M_FW_PORT_CAP_ANEG)
#define S_FW_PORT_CAP_802_3 14
#define M_FW_PORT_CAP_802_3 0x3
#define V_FW_PORT_CAP_802_3(x) ((x) << S_FW_PORT_CAP_802_3)
#define G_FW_PORT_CAP_802_3(x) \
(((x) >> S_FW_PORT_CAP_802_3) & M_FW_PORT_CAP_802_3)
enum fw_port_mdi {
FW_PORT_CAP_MDI_UNCHANGED,
FW_PORT_CAP_MDI_AUTO,
FW_PORT_CAP_MDI_F_STRAIGHT,
FW_PORT_CAP_MDI_F_CROSSOVER
};
#define S_FW_PORT_CAP_MDI 9
#define M_FW_PORT_CAP_MDI 3
#define V_FW_PORT_CAP_MDI(x) ((x) << S_FW_PORT_CAP_MDI)
#define G_FW_PORT_CAP_MDI(x) (((x) >> S_FW_PORT_CAP_MDI) & M_FW_PORT_CAP_MDI)
enum fw_port_action {
FW_PORT_ACTION_L1_CFG = 0x0001,
FW_PORT_ACTION_L2_CFG = 0x0002,
FW_PORT_ACTION_GET_PORT_INFO = 0x0003,
FW_PORT_ACTION_L2_PPP_CFG = 0x0004,
FW_PORT_ACTION_L2_DCB_CFG = 0x0005,
FW_PORT_ACTION_DCB_READ_TRANS = 0x0006,
FW_PORT_ACTION_DCB_READ_RECV = 0x0007,
FW_PORT_ACTION_DCB_READ_DET = 0x0008,
FW_PORT_ACTION_LOW_PWR_TO_NORMAL = 0x0010,
FW_PORT_ACTION_L1_LOW_PWR_EN = 0x0011,
FW_PORT_ACTION_L2_WOL_MODE_EN = 0x0012,
FW_PORT_ACTION_LPBK_TO_NORMAL = 0x0020,
FW_PORT_ACTION_LPBK_SS_ASIC = 0x0022,
FW_PORT_ACTION_LPBK_WS_ASIC = 0x0023,
FW_PORT_ACTION_LPBK_WS_EXT_PHY = 0x0025,
FW_PORT_ACTION_LPBK_SS_EXT = 0x0026,
FW_PORT_ACTION_DIAGNOSTICS = 0x0027,
FW_PORT_ACTION_LPBK_SS_EXT_PHY = 0x0028,
FW_PORT_ACTION_PHY_RESET = 0x0040,
FW_PORT_ACTION_PMA_RESET = 0x0041,
FW_PORT_ACTION_PCS_RESET = 0x0042,
FW_PORT_ACTION_PHYXS_RESET = 0x0043,
FW_PORT_ACTION_DTEXS_REEST = 0x0044,
FW_PORT_ACTION_AN_RESET = 0x0045,
};
enum fw_port_l2cfg_ctlbf {
FW_PORT_L2_CTLBF_OVLAN0 = 0x01,
FW_PORT_L2_CTLBF_OVLAN1 = 0x02,
FW_PORT_L2_CTLBF_OVLAN2 = 0x04,
FW_PORT_L2_CTLBF_OVLAN3 = 0x08,
FW_PORT_L2_CTLBF_IVLAN = 0x10,
FW_PORT_L2_CTLBF_TXIPG = 0x20,
FW_PORT_L2_CTLBF_MTU = 0x40
};
enum fw_dcb_app_tlv_sf {
FW_DCB_APP_SF_ETHERTYPE,
FW_DCB_APP_SF_SOCKET_TCP,
FW_DCB_APP_SF_SOCKET_UDP,
FW_DCB_APP_SF_SOCKET_ALL,
};
enum fw_port_dcb_versions {
FW_PORT_DCB_VER_UNKNOWN,
FW_PORT_DCB_VER_CEE1D0,
FW_PORT_DCB_VER_CEE1D01,
FW_PORT_DCB_VER_IEEE,
FW_PORT_DCB_VER_AUTO=7
};
enum fw_port_dcb_cfg {
FW_PORT_DCB_CFG_PG = 0x01,
FW_PORT_DCB_CFG_PFC = 0x02,
FW_PORT_DCB_CFG_APPL = 0x04
};
enum fw_port_dcb_cfg_rc {
FW_PORT_DCB_CFG_SUCCESS = 0x0,
FW_PORT_DCB_CFG_ERROR = 0x1
};
enum fw_port_dcb_type {
FW_PORT_DCB_TYPE_PGID = 0x00,
FW_PORT_DCB_TYPE_PGRATE = 0x01,
FW_PORT_DCB_TYPE_PRIORATE = 0x02,
FW_PORT_DCB_TYPE_PFC = 0x03,
FW_PORT_DCB_TYPE_APP_ID = 0x04,
FW_PORT_DCB_TYPE_CONTROL = 0x05,
};
enum fw_port_dcb_feature_state {
FW_PORT_DCB_FEATURE_STATE_PENDING = 0x0,
FW_PORT_DCB_FEATURE_STATE_SUCCESS = 0x1,
FW_PORT_DCB_FEATURE_STATE_ERROR = 0x2,
FW_PORT_DCB_FEATURE_STATE_TIMEOUT = 0x3,
};
enum fw_port_diag_ops {
FW_PORT_DIAGS_TEMP = 0x00,
FW_PORT_DIAGS_TX_POWER = 0x01,
FW_PORT_DIAGS_RX_POWER = 0x02,
FW_PORT_DIAGS_TX_DIS = 0x03,
};
struct fw_port_cmd {
__be32 op_to_portid;
__be32 action_to_len16;
union fw_port {
struct fw_port_l1cfg {
__be32 rcap;
__be32 r;
} l1cfg;
struct fw_port_l2cfg {
__u8 ctlbf;
__u8 ovlan3_to_ivlan0;
__be16 ivlantype;
__be16 txipg_force_pinfo;
__be16 mtu;
__be16 ovlan0mask;
__be16 ovlan0type;
__be16 ovlan1mask;
__be16 ovlan1type;
__be16 ovlan2mask;
__be16 ovlan2type;
__be16 ovlan3mask;
__be16 ovlan3type;
} l2cfg;
struct fw_port_info {
__be32 lstatus_to_modtype;
__be16 pcap;
__be16 acap;
__be16 mtu;
__u8 cbllen;
__u8 auxlinfo;
__u8 dcbxdis_pkd;
__u8 r8_lo;
__be16 lpacap;
__be64 r9;
} info;
struct fw_port_diags {
__u8 diagop;
__u8 r[3];
__be32 diagval;
} diags;
union fw_port_dcb {
struct fw_port_dcb_pgid {
__u8 type;
__u8 apply_pkd;
__u8 r10_lo[2];
__be32 pgid;
__be64 r11;
} pgid;
struct fw_port_dcb_pgrate {
__u8 type;
__u8 apply_pkd;
__u8 r10_lo[5];
__u8 num_tcs_supported;
__u8 pgrate[8];
__u8 tsa[8];
} pgrate;
struct fw_port_dcb_priorate {
__u8 type;
__u8 apply_pkd;
__u8 r10_lo[6];
__u8 strict_priorate[8];
} priorate;
struct fw_port_dcb_pfc {
__u8 type;
__u8 pfcen;
__u8 r10[5];
__u8 max_pfc_tcs;
__be64 r11;
} pfc;
struct fw_port_app_priority {
__u8 type;
__u8 r10[2];
__u8 idx;
__u8 user_prio_map;
__u8 sel_field;
__be16 protocolid;
__be64 r12;
} app_priority;
struct fw_port_dcb_control {
__u8 type;
__u8 all_syncd_pkd;
__be16 dcb_version_to_app_state;
__be32 r11;
__be64 r12;
} control;
} dcb;
} u;
};
#define S_FW_PORT_CMD_READ 22
#define M_FW_PORT_CMD_READ 0x1
#define V_FW_PORT_CMD_READ(x) ((x) << S_FW_PORT_CMD_READ)
#define G_FW_PORT_CMD_READ(x) \
(((x) >> S_FW_PORT_CMD_READ) & M_FW_PORT_CMD_READ)
#define F_FW_PORT_CMD_READ V_FW_PORT_CMD_READ(1U)
#define S_FW_PORT_CMD_PORTID 0
#define M_FW_PORT_CMD_PORTID 0xf
#define V_FW_PORT_CMD_PORTID(x) ((x) << S_FW_PORT_CMD_PORTID)
#define G_FW_PORT_CMD_PORTID(x) \
(((x) >> S_FW_PORT_CMD_PORTID) & M_FW_PORT_CMD_PORTID)
#define S_FW_PORT_CMD_ACTION 16
#define M_FW_PORT_CMD_ACTION 0xffff
#define V_FW_PORT_CMD_ACTION(x) ((x) << S_FW_PORT_CMD_ACTION)
#define G_FW_PORT_CMD_ACTION(x) \
(((x) >> S_FW_PORT_CMD_ACTION) & M_FW_PORT_CMD_ACTION)
#define S_FW_PORT_CMD_OVLAN3 7
#define M_FW_PORT_CMD_OVLAN3 0x1
#define V_FW_PORT_CMD_OVLAN3(x) ((x) << S_FW_PORT_CMD_OVLAN3)
#define G_FW_PORT_CMD_OVLAN3(x) \
(((x) >> S_FW_PORT_CMD_OVLAN3) & M_FW_PORT_CMD_OVLAN3)
#define F_FW_PORT_CMD_OVLAN3 V_FW_PORT_CMD_OVLAN3(1U)
#define S_FW_PORT_CMD_OVLAN2 6
#define M_FW_PORT_CMD_OVLAN2 0x1
#define V_FW_PORT_CMD_OVLAN2(x) ((x) << S_FW_PORT_CMD_OVLAN2)
#define G_FW_PORT_CMD_OVLAN2(x) \
(((x) >> S_FW_PORT_CMD_OVLAN2) & M_FW_PORT_CMD_OVLAN2)
#define F_FW_PORT_CMD_OVLAN2 V_FW_PORT_CMD_OVLAN2(1U)
#define S_FW_PORT_CMD_OVLAN1 5
#define M_FW_PORT_CMD_OVLAN1 0x1
#define V_FW_PORT_CMD_OVLAN1(x) ((x) << S_FW_PORT_CMD_OVLAN1)
#define G_FW_PORT_CMD_OVLAN1(x) \
(((x) >> S_FW_PORT_CMD_OVLAN1) & M_FW_PORT_CMD_OVLAN1)
#define F_FW_PORT_CMD_OVLAN1 V_FW_PORT_CMD_OVLAN1(1U)
#define S_FW_PORT_CMD_OVLAN0 4
#define M_FW_PORT_CMD_OVLAN0 0x1
#define V_FW_PORT_CMD_OVLAN0(x) ((x) << S_FW_PORT_CMD_OVLAN0)
#define G_FW_PORT_CMD_OVLAN0(x) \
(((x) >> S_FW_PORT_CMD_OVLAN0) & M_FW_PORT_CMD_OVLAN0)
#define F_FW_PORT_CMD_OVLAN0 V_FW_PORT_CMD_OVLAN0(1U)
#define S_FW_PORT_CMD_IVLAN0 3
#define M_FW_PORT_CMD_IVLAN0 0x1
#define V_FW_PORT_CMD_IVLAN0(x) ((x) << S_FW_PORT_CMD_IVLAN0)
#define G_FW_PORT_CMD_IVLAN0(x) \
(((x) >> S_FW_PORT_CMD_IVLAN0) & M_FW_PORT_CMD_IVLAN0)
#define F_FW_PORT_CMD_IVLAN0 V_FW_PORT_CMD_IVLAN0(1U)
#define S_FW_PORT_CMD_TXIPG 3
#define M_FW_PORT_CMD_TXIPG 0x1fff
#define V_FW_PORT_CMD_TXIPG(x) ((x) << S_FW_PORT_CMD_TXIPG)
#define G_FW_PORT_CMD_TXIPG(x) \
(((x) >> S_FW_PORT_CMD_TXIPG) & M_FW_PORT_CMD_TXIPG)
#define S_FW_PORT_CMD_FORCE_PINFO 0
#define M_FW_PORT_CMD_FORCE_PINFO 0x1
#define V_FW_PORT_CMD_FORCE_PINFO(x) ((x) << S_FW_PORT_CMD_FORCE_PINFO)
#define G_FW_PORT_CMD_FORCE_PINFO(x) \
(((x) >> S_FW_PORT_CMD_FORCE_PINFO) & M_FW_PORT_CMD_FORCE_PINFO)
#define F_FW_PORT_CMD_FORCE_PINFO V_FW_PORT_CMD_FORCE_PINFO(1U)
#define S_FW_PORT_CMD_LSTATUS 31
#define M_FW_PORT_CMD_LSTATUS 0x1
#define V_FW_PORT_CMD_LSTATUS(x) ((x) << S_FW_PORT_CMD_LSTATUS)
#define G_FW_PORT_CMD_LSTATUS(x) \
(((x) >> S_FW_PORT_CMD_LSTATUS) & M_FW_PORT_CMD_LSTATUS)
#define F_FW_PORT_CMD_LSTATUS V_FW_PORT_CMD_LSTATUS(1U)
#define S_FW_PORT_CMD_LSPEED 24
#define M_FW_PORT_CMD_LSPEED 0x3f
#define V_FW_PORT_CMD_LSPEED(x) ((x) << S_FW_PORT_CMD_LSPEED)
#define G_FW_PORT_CMD_LSPEED(x) \
(((x) >> S_FW_PORT_CMD_LSPEED) & M_FW_PORT_CMD_LSPEED)
#define S_FW_PORT_CMD_TXPAUSE 23
#define M_FW_PORT_CMD_TXPAUSE 0x1
#define V_FW_PORT_CMD_TXPAUSE(x) ((x) << S_FW_PORT_CMD_TXPAUSE)
#define G_FW_PORT_CMD_TXPAUSE(x) \
(((x) >> S_FW_PORT_CMD_TXPAUSE) & M_FW_PORT_CMD_TXPAUSE)
#define F_FW_PORT_CMD_TXPAUSE V_FW_PORT_CMD_TXPAUSE(1U)
#define S_FW_PORT_CMD_RXPAUSE 22
#define M_FW_PORT_CMD_RXPAUSE 0x1
#define V_FW_PORT_CMD_RXPAUSE(x) ((x) << S_FW_PORT_CMD_RXPAUSE)
#define G_FW_PORT_CMD_RXPAUSE(x) \
(((x) >> S_FW_PORT_CMD_RXPAUSE) & M_FW_PORT_CMD_RXPAUSE)
#define F_FW_PORT_CMD_RXPAUSE V_FW_PORT_CMD_RXPAUSE(1U)
#define S_FW_PORT_CMD_MDIOCAP 21
#define M_FW_PORT_CMD_MDIOCAP 0x1
#define V_FW_PORT_CMD_MDIOCAP(x) ((x) << S_FW_PORT_CMD_MDIOCAP)
#define G_FW_PORT_CMD_MDIOCAP(x) \
(((x) >> S_FW_PORT_CMD_MDIOCAP) & M_FW_PORT_CMD_MDIOCAP)
#define F_FW_PORT_CMD_MDIOCAP V_FW_PORT_CMD_MDIOCAP(1U)
#define S_FW_PORT_CMD_MDIOADDR 16
#define M_FW_PORT_CMD_MDIOADDR 0x1f
#define V_FW_PORT_CMD_MDIOADDR(x) ((x) << S_FW_PORT_CMD_MDIOADDR)
#define G_FW_PORT_CMD_MDIOADDR(x) \
(((x) >> S_FW_PORT_CMD_MDIOADDR) & M_FW_PORT_CMD_MDIOADDR)
#define S_FW_PORT_CMD_LPTXPAUSE 15
#define M_FW_PORT_CMD_LPTXPAUSE 0x1
#define V_FW_PORT_CMD_LPTXPAUSE(x) ((x) << S_FW_PORT_CMD_LPTXPAUSE)
#define G_FW_PORT_CMD_LPTXPAUSE(x) \
(((x) >> S_FW_PORT_CMD_LPTXPAUSE) & M_FW_PORT_CMD_LPTXPAUSE)
#define F_FW_PORT_CMD_LPTXPAUSE V_FW_PORT_CMD_LPTXPAUSE(1U)
#define S_FW_PORT_CMD_LPRXPAUSE 14
#define M_FW_PORT_CMD_LPRXPAUSE 0x1
#define V_FW_PORT_CMD_LPRXPAUSE(x) ((x) << S_FW_PORT_CMD_LPRXPAUSE)
#define G_FW_PORT_CMD_LPRXPAUSE(x) \
(((x) >> S_FW_PORT_CMD_LPRXPAUSE) & M_FW_PORT_CMD_LPRXPAUSE)
#define F_FW_PORT_CMD_LPRXPAUSE V_FW_PORT_CMD_LPRXPAUSE(1U)
#define S_FW_PORT_CMD_PTYPE 8
#define M_FW_PORT_CMD_PTYPE 0x1f
#define V_FW_PORT_CMD_PTYPE(x) ((x) << S_FW_PORT_CMD_PTYPE)
#define G_FW_PORT_CMD_PTYPE(x) \
(((x) >> S_FW_PORT_CMD_PTYPE) & M_FW_PORT_CMD_PTYPE)
#define S_FW_PORT_CMD_LINKDNRC 5
#define M_FW_PORT_CMD_LINKDNRC 0x7
#define V_FW_PORT_CMD_LINKDNRC(x) ((x) << S_FW_PORT_CMD_LINKDNRC)
#define G_FW_PORT_CMD_LINKDNRC(x) \
(((x) >> S_FW_PORT_CMD_LINKDNRC) & M_FW_PORT_CMD_LINKDNRC)
#define S_FW_PORT_CMD_MODTYPE 0
#define M_FW_PORT_CMD_MODTYPE 0x1f
#define V_FW_PORT_CMD_MODTYPE(x) ((x) << S_FW_PORT_CMD_MODTYPE)
#define G_FW_PORT_CMD_MODTYPE(x) \
(((x) >> S_FW_PORT_CMD_MODTYPE) & M_FW_PORT_CMD_MODTYPE)
#define S_FW_PORT_CMD_DCBXDIS 7
#define M_FW_PORT_CMD_DCBXDIS 0x1
#define V_FW_PORT_CMD_DCBXDIS(x) ((x) << S_FW_PORT_CMD_DCBXDIS)
#define G_FW_PORT_CMD_DCBXDIS(x) \
(((x) >> S_FW_PORT_CMD_DCBXDIS) & M_FW_PORT_CMD_DCBXDIS)
#define F_FW_PORT_CMD_DCBXDIS V_FW_PORT_CMD_DCBXDIS(1U)
#define S_FW_PORT_CMD_APPLY 7
#define M_FW_PORT_CMD_APPLY 0x1
#define V_FW_PORT_CMD_APPLY(x) ((x) << S_FW_PORT_CMD_APPLY)
#define G_FW_PORT_CMD_APPLY(x) \
(((x) >> S_FW_PORT_CMD_APPLY) & M_FW_PORT_CMD_APPLY)
#define F_FW_PORT_CMD_APPLY V_FW_PORT_CMD_APPLY(1U)
#define S_FW_PORT_CMD_ALL_SYNCD 7
#define M_FW_PORT_CMD_ALL_SYNCD 0x1
#define V_FW_PORT_CMD_ALL_SYNCD(x) ((x) << S_FW_PORT_CMD_ALL_SYNCD)
#define G_FW_PORT_CMD_ALL_SYNCD(x) \
(((x) >> S_FW_PORT_CMD_ALL_SYNCD) & M_FW_PORT_CMD_ALL_SYNCD)
#define F_FW_PORT_CMD_ALL_SYNCD V_FW_PORT_CMD_ALL_SYNCD(1U)
#define S_FW_PORT_CMD_DCB_VERSION 12
#define M_FW_PORT_CMD_DCB_VERSION 0x7
#define V_FW_PORT_CMD_DCB_VERSION(x) ((x) << S_FW_PORT_CMD_DCB_VERSION)
#define G_FW_PORT_CMD_DCB_VERSION(x) \
(((x) >> S_FW_PORT_CMD_DCB_VERSION) & M_FW_PORT_CMD_DCB_VERSION)
#define S_FW_PORT_CMD_PFC_STATE 8
#define M_FW_PORT_CMD_PFC_STATE 0xf
#define V_FW_PORT_CMD_PFC_STATE(x) ((x) << S_FW_PORT_CMD_PFC_STATE)
#define G_FW_PORT_CMD_PFC_STATE(x) \
(((x) >> S_FW_PORT_CMD_PFC_STATE) & M_FW_PORT_CMD_PFC_STATE)
#define S_FW_PORT_CMD_ETS_STATE 4
#define M_FW_PORT_CMD_ETS_STATE 0xf
#define V_FW_PORT_CMD_ETS_STATE(x) ((x) << S_FW_PORT_CMD_ETS_STATE)
#define G_FW_PORT_CMD_ETS_STATE(x) \
(((x) >> S_FW_PORT_CMD_ETS_STATE) & M_FW_PORT_CMD_ETS_STATE)
#define S_FW_PORT_CMD_APP_STATE 0
#define M_FW_PORT_CMD_APP_STATE 0xf
#define V_FW_PORT_CMD_APP_STATE(x) ((x) << S_FW_PORT_CMD_APP_STATE)
#define G_FW_PORT_CMD_APP_STATE(x) \
(((x) >> S_FW_PORT_CMD_APP_STATE) & M_FW_PORT_CMD_APP_STATE)
/*
* These are configured into the VPD and hence tools that generate
* VPD may use this enumeration.
* extPHY #lanes T4_I2C extI2C BP_Eq BP_ANEG Speed
*
* REMEMBER:
* Update the Common Code t4_hw.c:t4_get_port_type_description()
* with any new Firmware Port Technology Types!
*/
enum fw_port_type {
FW_PORT_TYPE_FIBER_XFI = 0, /* Y, 1, N, Y, N, N, 10G */
FW_PORT_TYPE_FIBER_XAUI = 1, /* Y, 4, N, Y, N, N, 10G */
FW_PORT_TYPE_BT_SGMII = 2, /* Y, 1, No, No, No, No, 1G/100M */
FW_PORT_TYPE_BT_XFI = 3, /* Y, 1, No, No, No, No, 10G/1G/100M */
FW_PORT_TYPE_BT_XAUI = 4, /* Y, 4, No, No, No, No, 10G/1G/100M */
FW_PORT_TYPE_KX4 = 5, /* No, 4, No, No, Yes, Yes, 10G */
FW_PORT_TYPE_CX4 = 6, /* No, 4, No, No, No, No, 10G */
FW_PORT_TYPE_KX = 7, /* No, 1, No, No, Yes, No, 1G */
FW_PORT_TYPE_KR = 8, /* No, 1, No, No, Yes, Yes, 10G */
FW_PORT_TYPE_SFP = 9, /* No, 1, Yes, No, No, No, 10G */
FW_PORT_TYPE_BP_AP = 10, /* No, 1, No, No, Yes, Yes, 10G, BP ANGE */
FW_PORT_TYPE_BP4_AP = 11, /* No, 4, No, No, Yes, Yes, 10G, BP ANGE */
FW_PORT_TYPE_QSFP_10G = 12, /* No, 1, Yes, No, No, No, 10G */
FW_PORT_TYPE_QSA = 13, /* No, 1, Yes, No, No, No, 10G */
FW_PORT_TYPE_QSFP = 14, /* No, 4, Yes, No, No, No, 40G */
FW_PORT_TYPE_BP40_BA = 15, /* No, 4, No, No, Yes, Yes, 40G/10G/1G, BP ANGE */
FW_PORT_TYPE_NONE = M_FW_PORT_CMD_PTYPE
};
/* These are read from module's EEPROM and determined once the
module is inserted. */
enum fw_port_module_type {
FW_PORT_MOD_TYPE_NA = 0x0,
FW_PORT_MOD_TYPE_LR = 0x1,
FW_PORT_MOD_TYPE_SR = 0x2,
FW_PORT_MOD_TYPE_ER = 0x3,
FW_PORT_MOD_TYPE_TWINAX_PASSIVE = 0x4,
FW_PORT_MOD_TYPE_TWINAX_ACTIVE = 0x5,
FW_PORT_MOD_TYPE_LRM = 0x6,
FW_PORT_MOD_TYPE_ERROR = M_FW_PORT_CMD_MODTYPE - 3,
FW_PORT_MOD_TYPE_UNKNOWN = M_FW_PORT_CMD_MODTYPE - 2,
FW_PORT_MOD_TYPE_NOTSUPPORTED = M_FW_PORT_CMD_MODTYPE - 1,
FW_PORT_MOD_TYPE_NONE = M_FW_PORT_CMD_MODTYPE
};
/* used by FW and tools may use this to generate VPD */
enum fw_port_mod_sub_type {
FW_PORT_MOD_SUB_TYPE_NA,
FW_PORT_MOD_SUB_TYPE_MV88E114X=0x1,
FW_PORT_MOD_SUB_TYPE_TN8022=0x2,
FW_PORT_MOD_SUB_TYPE_AQ1202=0x3,
FW_PORT_MOD_SUB_TYPE_88x3120=0x4,
FW_PORT_MOD_SUB_TYPE_BCM84834=0x5,
FW_PORT_MOD_SUB_TYPE_BCM5482=0x6,
FW_PORT_MOD_SUB_TYPE_BCM84856=0x7,
FW_PORT_MOD_SUB_TYPE_BT_VSC8634=0x8,
/*
* The following will never been in the VPD. They are TWINAX cable
* lengths decoded from SFP+ module i2c PROMs. These should almost
* certainly go somewhere else ...
*/
FW_PORT_MOD_SUB_TYPE_TWINAX_1=0x9,
FW_PORT_MOD_SUB_TYPE_TWINAX_3=0xA,
FW_PORT_MOD_SUB_TYPE_TWINAX_5=0xB,
FW_PORT_MOD_SUB_TYPE_TWINAX_7=0xC,
};
/* link down reason codes (3b) */
enum fw_port_link_dn_rc {
FW_PORT_LINK_DN_RC_NONE,
FW_PORT_LINK_DN_RC_REMFLT, /* Remote fault detected */
FW_PORT_LINK_DN_ANEG_F, /* Auto-negotiation fault */
FW_PORT_LINK_DN_RESERVED3,
FW_PORT_LINK_DN_OVERHEAT, /* Port overheated */
FW_PORT_LINK_DN_UNKNOWN, /* Unable to determine reason */
FW_PORT_LINK_DN_RX_LOS, /* No RX signal detected */
FW_PORT_LINK_DN_RESERVED7
};
enum fw_port_stats_tx_index {
FW_STAT_TX_PORT_BYTES_IX = 0,
FW_STAT_TX_PORT_FRAMES_IX,
FW_STAT_TX_PORT_BCAST_IX,
FW_STAT_TX_PORT_MCAST_IX,
FW_STAT_TX_PORT_UCAST_IX,
FW_STAT_TX_PORT_ERROR_IX,
FW_STAT_TX_PORT_64B_IX,
FW_STAT_TX_PORT_65B_127B_IX,
FW_STAT_TX_PORT_128B_255B_IX,
FW_STAT_TX_PORT_256B_511B_IX,
FW_STAT_TX_PORT_512B_1023B_IX,
FW_STAT_TX_PORT_1024B_1518B_IX,
FW_STAT_TX_PORT_1519B_MAX_IX,
FW_STAT_TX_PORT_DROP_IX,
FW_STAT_TX_PORT_PAUSE_IX,
FW_STAT_TX_PORT_PPP0_IX,
FW_STAT_TX_PORT_PPP1_IX,
FW_STAT_TX_PORT_PPP2_IX,
FW_STAT_TX_PORT_PPP3_IX,
FW_STAT_TX_PORT_PPP4_IX,
FW_STAT_TX_PORT_PPP5_IX,
FW_STAT_TX_PORT_PPP6_IX,
FW_STAT_TX_PORT_PPP7_IX,
FW_NUM_PORT_TX_STATS
};
enum fw_port_stat_rx_index {
FW_STAT_RX_PORT_BYTES_IX = 0,
FW_STAT_RX_PORT_FRAMES_IX,
FW_STAT_RX_PORT_BCAST_IX,
FW_STAT_RX_PORT_MCAST_IX,
FW_STAT_RX_PORT_UCAST_IX,
FW_STAT_RX_PORT_MTU_ERROR_IX,
FW_STAT_RX_PORT_MTU_CRC_ERROR_IX,
FW_STAT_RX_PORT_CRC_ERROR_IX,
FW_STAT_RX_PORT_LEN_ERROR_IX,
FW_STAT_RX_PORT_SYM_ERROR_IX,
FW_STAT_RX_PORT_64B_IX,
FW_STAT_RX_PORT_65B_127B_IX,
FW_STAT_RX_PORT_128B_255B_IX,
FW_STAT_RX_PORT_256B_511B_IX,
FW_STAT_RX_PORT_512B_1023B_IX,
FW_STAT_RX_PORT_1024B_1518B_IX,
FW_STAT_RX_PORT_1519B_MAX_IX,
FW_STAT_RX_PORT_PAUSE_IX,
FW_STAT_RX_PORT_PPP0_IX,
FW_STAT_RX_PORT_PPP1_IX,
FW_STAT_RX_PORT_PPP2_IX,
FW_STAT_RX_PORT_PPP3_IX,
FW_STAT_RX_PORT_PPP4_IX,
FW_STAT_RX_PORT_PPP5_IX,
FW_STAT_RX_PORT_PPP6_IX,
FW_STAT_RX_PORT_PPP7_IX,
FW_STAT_RX_PORT_LESS_64B_IX,
FW_STAT_RX_PORT_MAC_ERROR_IX,
FW_NUM_PORT_RX_STATS
};
/* port stats */
#define FW_NUM_PORT_STATS (FW_NUM_PORT_TX_STATS + \
FW_NUM_PORT_RX_STATS)
struct fw_port_stats_cmd {
__be32 op_to_portid;
__be32 retval_len16;
union fw_port_stats {
struct fw_port_stats_ctl {
__u8 nstats_bg_bm;
__u8 tx_ix;
__be16 r6;
__be32 r7;
__be64 stat0;
__be64 stat1;
__be64 stat2;
__be64 stat3;
__be64 stat4;
__be64 stat5;
} ctl;
struct fw_port_stats_all {
__be64 tx_bytes;
__be64 tx_frames;
__be64 tx_bcast;
__be64 tx_mcast;
__be64 tx_ucast;
__be64 tx_error;
__be64 tx_64b;
__be64 tx_65b_127b;
__be64 tx_128b_255b;
__be64 tx_256b_511b;
__be64 tx_512b_1023b;
__be64 tx_1024b_1518b;
__be64 tx_1519b_max;
__be64 tx_drop;
__be64 tx_pause;
__be64 tx_ppp0;
__be64 tx_ppp1;
__be64 tx_ppp2;
__be64 tx_ppp3;
__be64 tx_ppp4;
__be64 tx_ppp5;
__be64 tx_ppp6;
__be64 tx_ppp7;
__be64 rx_bytes;
__be64 rx_frames;
__be64 rx_bcast;
__be64 rx_mcast;
__be64 rx_ucast;
__be64 rx_mtu_error;
__be64 rx_mtu_crc_error;
__be64 rx_crc_error;
__be64 rx_len_error;
__be64 rx_sym_error;
__be64 rx_64b;
__be64 rx_65b_127b;
__be64 rx_128b_255b;
__be64 rx_256b_511b;
__be64 rx_512b_1023b;
__be64 rx_1024b_1518b;
__be64 rx_1519b_max;
__be64 rx_pause;
__be64 rx_ppp0;
__be64 rx_ppp1;
__be64 rx_ppp2;
__be64 rx_ppp3;
__be64 rx_ppp4;
__be64 rx_ppp5;
__be64 rx_ppp6;
__be64 rx_ppp7;
__be64 rx_less_64b;
__be64 rx_bg_drop;
__be64 rx_bg_trunc;
} all;
} u;
};
#define S_FW_PORT_STATS_CMD_NSTATS 4
#define M_FW_PORT_STATS_CMD_NSTATS 0x7
#define V_FW_PORT_STATS_CMD_NSTATS(x) ((x) << S_FW_PORT_STATS_CMD_NSTATS)
#define G_FW_PORT_STATS_CMD_NSTATS(x) \
(((x) >> S_FW_PORT_STATS_CMD_NSTATS) & M_FW_PORT_STATS_CMD_NSTATS)
#define S_FW_PORT_STATS_CMD_BG_BM 0
#define M_FW_PORT_STATS_CMD_BG_BM 0x3
#define V_FW_PORT_STATS_CMD_BG_BM(x) ((x) << S_FW_PORT_STATS_CMD_BG_BM)
#define G_FW_PORT_STATS_CMD_BG_BM(x) \
(((x) >> S_FW_PORT_STATS_CMD_BG_BM) & M_FW_PORT_STATS_CMD_BG_BM)
#define S_FW_PORT_STATS_CMD_TX 7
#define M_FW_PORT_STATS_CMD_TX 0x1
#define V_FW_PORT_STATS_CMD_TX(x) ((x) << S_FW_PORT_STATS_CMD_TX)
#define G_FW_PORT_STATS_CMD_TX(x) \
(((x) >> S_FW_PORT_STATS_CMD_TX) & M_FW_PORT_STATS_CMD_TX)
#define F_FW_PORT_STATS_CMD_TX V_FW_PORT_STATS_CMD_TX(1U)
#define S_FW_PORT_STATS_CMD_IX 0
#define M_FW_PORT_STATS_CMD_IX 0x3f
#define V_FW_PORT_STATS_CMD_IX(x) ((x) << S_FW_PORT_STATS_CMD_IX)
#define G_FW_PORT_STATS_CMD_IX(x) \
(((x) >> S_FW_PORT_STATS_CMD_IX) & M_FW_PORT_STATS_CMD_IX)
/* port loopback stats */
#define FW_NUM_LB_STATS 14
enum fw_port_lb_stats_index {
FW_STAT_LB_PORT_BYTES_IX,
FW_STAT_LB_PORT_FRAMES_IX,
FW_STAT_LB_PORT_BCAST_IX,
FW_STAT_LB_PORT_MCAST_IX,
FW_STAT_LB_PORT_UCAST_IX,
FW_STAT_LB_PORT_ERROR_IX,
FW_STAT_LB_PORT_64B_IX,
FW_STAT_LB_PORT_65B_127B_IX,
FW_STAT_LB_PORT_128B_255B_IX,
FW_STAT_LB_PORT_256B_511B_IX,
FW_STAT_LB_PORT_512B_1023B_IX,
FW_STAT_LB_PORT_1024B_1518B_IX,
FW_STAT_LB_PORT_1519B_MAX_IX,
FW_STAT_LB_PORT_DROP_FRAMES_IX
};
struct fw_port_lb_stats_cmd {
__be32 op_to_lbport;
__be32 retval_len16;
union fw_port_lb_stats {
struct fw_port_lb_stats_ctl {
__u8 nstats_bg_bm;
__u8 ix_pkd;
__be16 r6;
__be32 r7;
__be64 stat0;
__be64 stat1;
__be64 stat2;
__be64 stat3;
__be64 stat4;
__be64 stat5;
} ctl;
struct fw_port_lb_stats_all {
__be64 tx_bytes;
__be64 tx_frames;
__be64 tx_bcast;
__be64 tx_mcast;
__be64 tx_ucast;
__be64 tx_error;
__be64 tx_64b;
__be64 tx_65b_127b;
__be64 tx_128b_255b;
__be64 tx_256b_511b;
__be64 tx_512b_1023b;
__be64 tx_1024b_1518b;
__be64 tx_1519b_max;
__be64 rx_lb_drop;
__be64 rx_lb_trunc;
} all;
} u;
};
#define S_FW_PORT_LB_STATS_CMD_LBPORT 0
#define M_FW_PORT_LB_STATS_CMD_LBPORT 0xf
#define V_FW_PORT_LB_STATS_CMD_LBPORT(x) \
((x) << S_FW_PORT_LB_STATS_CMD_LBPORT)
#define G_FW_PORT_LB_STATS_CMD_LBPORT(x) \
(((x) >> S_FW_PORT_LB_STATS_CMD_LBPORT) & M_FW_PORT_LB_STATS_CMD_LBPORT)
#define S_FW_PORT_LB_STATS_CMD_NSTATS 4
#define M_FW_PORT_LB_STATS_CMD_NSTATS 0x7
#define V_FW_PORT_LB_STATS_CMD_NSTATS(x) \
((x) << S_FW_PORT_LB_STATS_CMD_NSTATS)
#define G_FW_PORT_LB_STATS_CMD_NSTATS(x) \
(((x) >> S_FW_PORT_LB_STATS_CMD_NSTATS) & M_FW_PORT_LB_STATS_CMD_NSTATS)
#define S_FW_PORT_LB_STATS_CMD_BG_BM 0
#define M_FW_PORT_LB_STATS_CMD_BG_BM 0x3
#define V_FW_PORT_LB_STATS_CMD_BG_BM(x) ((x) << S_FW_PORT_LB_STATS_CMD_BG_BM)
#define G_FW_PORT_LB_STATS_CMD_BG_BM(x) \
(((x) >> S_FW_PORT_LB_STATS_CMD_BG_BM) & M_FW_PORT_LB_STATS_CMD_BG_BM)
#define S_FW_PORT_LB_STATS_CMD_IX 0
#define M_FW_PORT_LB_STATS_CMD_IX 0xf
#define V_FW_PORT_LB_STATS_CMD_IX(x) ((x) << S_FW_PORT_LB_STATS_CMD_IX)
#define G_FW_PORT_LB_STATS_CMD_IX(x) \
(((x) >> S_FW_PORT_LB_STATS_CMD_IX) & M_FW_PORT_LB_STATS_CMD_IX)
/* Trace related defines */
#define FW_TRACE_CAPTURE_MAX_SINGLE_FLT_MODE 10240
#define FW_TRACE_CAPTURE_MAX_MULTI_FLT_MODE 2560
struct fw_port_trace_cmd {
__be32 op_to_portid;
__be32 retval_len16;
__be16 traceen_to_pciech;
__be16 qnum;
__be32 r5;
};
#define S_FW_PORT_TRACE_CMD_PORTID 0
#define M_FW_PORT_TRACE_CMD_PORTID 0xf
#define V_FW_PORT_TRACE_CMD_PORTID(x) ((x) << S_FW_PORT_TRACE_CMD_PORTID)
#define G_FW_PORT_TRACE_CMD_PORTID(x) \
(((x) >> S_FW_PORT_TRACE_CMD_PORTID) & M_FW_PORT_TRACE_CMD_PORTID)
#define S_FW_PORT_TRACE_CMD_TRACEEN 15
#define M_FW_PORT_TRACE_CMD_TRACEEN 0x1
#define V_FW_PORT_TRACE_CMD_TRACEEN(x) ((x) << S_FW_PORT_TRACE_CMD_TRACEEN)
#define G_FW_PORT_TRACE_CMD_TRACEEN(x) \
(((x) >> S_FW_PORT_TRACE_CMD_TRACEEN) & M_FW_PORT_TRACE_CMD_TRACEEN)
#define F_FW_PORT_TRACE_CMD_TRACEEN V_FW_PORT_TRACE_CMD_TRACEEN(1U)
#define S_FW_PORT_TRACE_CMD_FLTMODE 14
#define M_FW_PORT_TRACE_CMD_FLTMODE 0x1
#define V_FW_PORT_TRACE_CMD_FLTMODE(x) ((x) << S_FW_PORT_TRACE_CMD_FLTMODE)
#define G_FW_PORT_TRACE_CMD_FLTMODE(x) \
(((x) >> S_FW_PORT_TRACE_CMD_FLTMODE) & M_FW_PORT_TRACE_CMD_FLTMODE)
#define F_FW_PORT_TRACE_CMD_FLTMODE V_FW_PORT_TRACE_CMD_FLTMODE(1U)
#define S_FW_PORT_TRACE_CMD_DUPLEN 13
#define M_FW_PORT_TRACE_CMD_DUPLEN 0x1
#define V_FW_PORT_TRACE_CMD_DUPLEN(x) ((x) << S_FW_PORT_TRACE_CMD_DUPLEN)
#define G_FW_PORT_TRACE_CMD_DUPLEN(x) \
(((x) >> S_FW_PORT_TRACE_CMD_DUPLEN) & M_FW_PORT_TRACE_CMD_DUPLEN)
#define F_FW_PORT_TRACE_CMD_DUPLEN V_FW_PORT_TRACE_CMD_DUPLEN(1U)
#define S_FW_PORT_TRACE_CMD_RUNTFLTSIZE 8
#define M_FW_PORT_TRACE_CMD_RUNTFLTSIZE 0x1f
#define V_FW_PORT_TRACE_CMD_RUNTFLTSIZE(x) \
((x) << S_FW_PORT_TRACE_CMD_RUNTFLTSIZE)
#define G_FW_PORT_TRACE_CMD_RUNTFLTSIZE(x) \
(((x) >> S_FW_PORT_TRACE_CMD_RUNTFLTSIZE) & \
M_FW_PORT_TRACE_CMD_RUNTFLTSIZE)
#define S_FW_PORT_TRACE_CMD_PCIECH 6
#define M_FW_PORT_TRACE_CMD_PCIECH 0x3
#define V_FW_PORT_TRACE_CMD_PCIECH(x) ((x) << S_FW_PORT_TRACE_CMD_PCIECH)
#define G_FW_PORT_TRACE_CMD_PCIECH(x) \
(((x) >> S_FW_PORT_TRACE_CMD_PCIECH) & M_FW_PORT_TRACE_CMD_PCIECH)
struct fw_port_trace_mmap_cmd {
__be32 op_to_portid;
__be32 retval_len16;
__be32 fid_to_skipoffset;
__be32 minpktsize_capturemax;
__u8 map[224];
};
#define S_FW_PORT_TRACE_MMAP_CMD_PORTID 0
#define M_FW_PORT_TRACE_MMAP_CMD_PORTID 0xf
#define V_FW_PORT_TRACE_MMAP_CMD_PORTID(x) \
((x) << S_FW_PORT_TRACE_MMAP_CMD_PORTID)
#define G_FW_PORT_TRACE_MMAP_CMD_PORTID(x) \
(((x) >> S_FW_PORT_TRACE_MMAP_CMD_PORTID) & \
M_FW_PORT_TRACE_MMAP_CMD_PORTID)
#define S_FW_PORT_TRACE_MMAP_CMD_FID 30
#define M_FW_PORT_TRACE_MMAP_CMD_FID 0x3
#define V_FW_PORT_TRACE_MMAP_CMD_FID(x) ((x) << S_FW_PORT_TRACE_MMAP_CMD_FID)
#define G_FW_PORT_TRACE_MMAP_CMD_FID(x) \
(((x) >> S_FW_PORT_TRACE_MMAP_CMD_FID) & M_FW_PORT_TRACE_MMAP_CMD_FID)
#define S_FW_PORT_TRACE_MMAP_CMD_MMAPEN 29
#define M_FW_PORT_TRACE_MMAP_CMD_MMAPEN 0x1
#define V_FW_PORT_TRACE_MMAP_CMD_MMAPEN(x) \
((x) << S_FW_PORT_TRACE_MMAP_CMD_MMAPEN)
#define G_FW_PORT_TRACE_MMAP_CMD_MMAPEN(x) \
(((x) >> S_FW_PORT_TRACE_MMAP_CMD_MMAPEN) & \
M_FW_PORT_TRACE_MMAP_CMD_MMAPEN)
#define F_FW_PORT_TRACE_MMAP_CMD_MMAPEN V_FW_PORT_TRACE_MMAP_CMD_MMAPEN(1U)
#define S_FW_PORT_TRACE_MMAP_CMD_DCMAPEN 28
#define M_FW_PORT_TRACE_MMAP_CMD_DCMAPEN 0x1
#define V_FW_PORT_TRACE_MMAP_CMD_DCMAPEN(x) \
((x) << S_FW_PORT_TRACE_MMAP_CMD_DCMAPEN)
#define G_FW_PORT_TRACE_MMAP_CMD_DCMAPEN(x) \
(((x) >> S_FW_PORT_TRACE_MMAP_CMD_DCMAPEN) & \
M_FW_PORT_TRACE_MMAP_CMD_DCMAPEN)
#define F_FW_PORT_TRACE_MMAP_CMD_DCMAPEN V_FW_PORT_TRACE_MMAP_CMD_DCMAPEN(1U)
#define S_FW_PORT_TRACE_MMAP_CMD_SKIPLENGTH 8
#define M_FW_PORT_TRACE_MMAP_CMD_SKIPLENGTH 0x1f
#define V_FW_PORT_TRACE_MMAP_CMD_SKIPLENGTH(x) \
((x) << S_FW_PORT_TRACE_MMAP_CMD_SKIPLENGTH)
#define G_FW_PORT_TRACE_MMAP_CMD_SKIPLENGTH(x) \
(((x) >> S_FW_PORT_TRACE_MMAP_CMD_SKIPLENGTH) & \
M_FW_PORT_TRACE_MMAP_CMD_SKIPLENGTH)
#define S_FW_PORT_TRACE_MMAP_CMD_SKIPOFFSET 0
#define M_FW_PORT_TRACE_MMAP_CMD_SKIPOFFSET 0x1f
#define V_FW_PORT_TRACE_MMAP_CMD_SKIPOFFSET(x) \
((x) << S_FW_PORT_TRACE_MMAP_CMD_SKIPOFFSET)
#define G_FW_PORT_TRACE_MMAP_CMD_SKIPOFFSET(x) \
(((x) >> S_FW_PORT_TRACE_MMAP_CMD_SKIPOFFSET) & \
M_FW_PORT_TRACE_MMAP_CMD_SKIPOFFSET)
#define S_FW_PORT_TRACE_MMAP_CMD_MINPKTSIZE 18
#define M_FW_PORT_TRACE_MMAP_CMD_MINPKTSIZE 0x3fff
#define V_FW_PORT_TRACE_MMAP_CMD_MINPKTSIZE(x) \
((x) << S_FW_PORT_TRACE_MMAP_CMD_MINPKTSIZE)
#define G_FW_PORT_TRACE_MMAP_CMD_MINPKTSIZE(x) \
(((x) >> S_FW_PORT_TRACE_MMAP_CMD_MINPKTSIZE) & \
M_FW_PORT_TRACE_MMAP_CMD_MINPKTSIZE)
#define S_FW_PORT_TRACE_MMAP_CMD_CAPTUREMAX 0
#define M_FW_PORT_TRACE_MMAP_CMD_CAPTUREMAX 0x3fff
#define V_FW_PORT_TRACE_MMAP_CMD_CAPTUREMAX(x) \
((x) << S_FW_PORT_TRACE_MMAP_CMD_CAPTUREMAX)
#define G_FW_PORT_TRACE_MMAP_CMD_CAPTUREMAX(x) \
(((x) >> S_FW_PORT_TRACE_MMAP_CMD_CAPTUREMAX) & \
M_FW_PORT_TRACE_MMAP_CMD_CAPTUREMAX)
enum fw_ptp_subop {
/* none */
FW_PTP_SC_INIT_TIMER = 0x00,
FW_PTP_SC_TX_TYPE = 0x01,
/* init */
FW_PTP_SC_RXTIME_STAMP = 0x08,
FW_PTP_SC_RDRX_TYPE = 0x09,
/* ts */
FW_PTP_SC_ADJ_FREQ = 0x10,
FW_PTP_SC_ADJ_TIME = 0x11,
FW_PTP_SC_ADJ_FTIME = 0x12,
FW_PTP_SC_WALL_CLOCK = 0x13,
FW_PTP_SC_GET_TIME = 0x14,
FW_PTP_SC_SET_TIME = 0x15,
};
struct fw_ptp_cmd {
__be32 op_to_portid;
__be32 retval_len16;
union fw_ptp {
struct fw_ptp_sc {
__u8 sc;
__u8 r3[7];
} scmd;
struct fw_ptp_init {
__u8 sc;
__u8 txchan;
__be16 absid;
__be16 mode;
__be16 r3;
} init;
struct fw_ptp_ts {
__u8 sc;
__u8 sign;
__be16 r3;
__be32 ppb;
__be64 tm;
} ts;
} u;
__be64 r3;
};
#define S_FW_PTP_CMD_PORTID 0
#define M_FW_PTP_CMD_PORTID 0xf
#define V_FW_PTP_CMD_PORTID(x) ((x) << S_FW_PTP_CMD_PORTID)
#define G_FW_PTP_CMD_PORTID(x) \
(((x) >> S_FW_PTP_CMD_PORTID) & M_FW_PTP_CMD_PORTID)
struct fw_rss_ind_tbl_cmd {
__be32 op_to_viid;
__be32 retval_len16;
__be16 niqid;
__be16 startidx;
__be32 r3;
__be32 iq0_to_iq2;
__be32 iq3_to_iq5;
__be32 iq6_to_iq8;
__be32 iq9_to_iq11;
__be32 iq12_to_iq14;
__be32 iq15_to_iq17;
__be32 iq18_to_iq20;
__be32 iq21_to_iq23;
__be32 iq24_to_iq26;
__be32 iq27_to_iq29;
__be32 iq30_iq31;
__be32 r15_lo;
};
#define S_FW_RSS_IND_TBL_CMD_VIID 0
#define M_FW_RSS_IND_TBL_CMD_VIID 0xfff
#define V_FW_RSS_IND_TBL_CMD_VIID(x) ((x) << S_FW_RSS_IND_TBL_CMD_VIID)
#define G_FW_RSS_IND_TBL_CMD_VIID(x) \
(((x) >> S_FW_RSS_IND_TBL_CMD_VIID) & M_FW_RSS_IND_TBL_CMD_VIID)
#define S_FW_RSS_IND_TBL_CMD_IQ0 20
#define M_FW_RSS_IND_TBL_CMD_IQ0 0x3ff
#define V_FW_RSS_IND_TBL_CMD_IQ0(x) ((x) << S_FW_RSS_IND_TBL_CMD_IQ0)
#define G_FW_RSS_IND_TBL_CMD_IQ0(x) \
(((x) >> S_FW_RSS_IND_TBL_CMD_IQ0) & M_FW_RSS_IND_TBL_CMD_IQ0)
#define S_FW_RSS_IND_TBL_CMD_IQ1 10
#define M_FW_RSS_IND_TBL_CMD_IQ1 0x3ff
#define V_FW_RSS_IND_TBL_CMD_IQ1(x) ((x) << S_FW_RSS_IND_TBL_CMD_IQ1)
#define G_FW_RSS_IND_TBL_CMD_IQ1(x) \
(((x) >> S_FW_RSS_IND_TBL_CMD_IQ1) & M_FW_RSS_IND_TBL_CMD_IQ1)
#define S_FW_RSS_IND_TBL_CMD_IQ2 0
#define M_FW_RSS_IND_TBL_CMD_IQ2 0x3ff
#define V_FW_RSS_IND_TBL_CMD_IQ2(x) ((x) << S_FW_RSS_IND_TBL_CMD_IQ2)
#define G_FW_RSS_IND_TBL_CMD_IQ2(x) \
(((x) >> S_FW_RSS_IND_TBL_CMD_IQ2) & M_FW_RSS_IND_TBL_CMD_IQ2)
#define S_FW_RSS_IND_TBL_CMD_IQ3 20
#define M_FW_RSS_IND_TBL_CMD_IQ3 0x3ff
#define V_FW_RSS_IND_TBL_CMD_IQ3(x) ((x) << S_FW_RSS_IND_TBL_CMD_IQ3)
#define G_FW_RSS_IND_TBL_CMD_IQ3(x) \
(((x) >> S_FW_RSS_IND_TBL_CMD_IQ3) & M_FW_RSS_IND_TBL_CMD_IQ3)
#define S_FW_RSS_IND_TBL_CMD_IQ4 10
#define M_FW_RSS_IND_TBL_CMD_IQ4 0x3ff
#define V_FW_RSS_IND_TBL_CMD_IQ4(x) ((x) << S_FW_RSS_IND_TBL_CMD_IQ4)
#define G_FW_RSS_IND_TBL_CMD_IQ4(x) \
(((x) >> S_FW_RSS_IND_TBL_CMD_IQ4) & M_FW_RSS_IND_TBL_CMD_IQ4)
#define S_FW_RSS_IND_TBL_CMD_IQ5 0
#define M_FW_RSS_IND_TBL_CMD_IQ5 0x3ff
#define V_FW_RSS_IND_TBL_CMD_IQ5(x) ((x) << S_FW_RSS_IND_TBL_CMD_IQ5)
#define G_FW_RSS_IND_TBL_CMD_IQ5(x) \
(((x) >> S_FW_RSS_IND_TBL_CMD_IQ5) & M_FW_RSS_IND_TBL_CMD_IQ5)
#define S_FW_RSS_IND_TBL_CMD_IQ6 20
#define M_FW_RSS_IND_TBL_CMD_IQ6 0x3ff
#define V_FW_RSS_IND_TBL_CMD_IQ6(x) ((x) << S_FW_RSS_IND_TBL_CMD_IQ6)
#define G_FW_RSS_IND_TBL_CMD_IQ6(x) \
(((x) >> S_FW_RSS_IND_TBL_CMD_IQ6) & M_FW_RSS_IND_TBL_CMD_IQ6)
#define S_FW_RSS_IND_TBL_CMD_IQ7 10
#define M_FW_RSS_IND_TBL_CMD_IQ7 0x3ff
#define V_FW_RSS_IND_TBL_CMD_IQ7(x) ((x) << S_FW_RSS_IND_TBL_CMD_IQ7)
#define G_FW_RSS_IND_TBL_CMD_IQ7(x) \
(((x) >> S_FW_RSS_IND_TBL_CMD_IQ7) & M_FW_RSS_IND_TBL_CMD_IQ7)
#define S_FW_RSS_IND_TBL_CMD_IQ8 0
#define M_FW_RSS_IND_TBL_CMD_IQ8 0x3ff
#define V_FW_RSS_IND_TBL_CMD_IQ8(x) ((x) << S_FW_RSS_IND_TBL_CMD_IQ8)
#define G_FW_RSS_IND_TBL_CMD_IQ8(x) \
(((x) >> S_FW_RSS_IND_TBL_CMD_IQ8) & M_FW_RSS_IND_TBL_CMD_IQ8)
#define S_FW_RSS_IND_TBL_CMD_IQ9 20
#define M_FW_RSS_IND_TBL_CMD_IQ9 0x3ff
#define V_FW_RSS_IND_TBL_CMD_IQ9(x) ((x) << S_FW_RSS_IND_TBL_CMD_IQ9)
#define G_FW_RSS_IND_TBL_CMD_IQ9(x) \
(((x) >> S_FW_RSS_IND_TBL_CMD_IQ9) & M_FW_RSS_IND_TBL_CMD_IQ9)
#define S_FW_RSS_IND_TBL_CMD_IQ10 10
#define M_FW_RSS_IND_TBL_CMD_IQ10 0x3ff
#define V_FW_RSS_IND_TBL_CMD_IQ10(x) ((x) << S_FW_RSS_IND_TBL_CMD_IQ10)
#define G_FW_RSS_IND_TBL_CMD_IQ10(x) \
(((x) >> S_FW_RSS_IND_TBL_CMD_IQ10) & M_FW_RSS_IND_TBL_CMD_IQ10)
#define S_FW_RSS_IND_TBL_CMD_IQ11 0
#define M_FW_RSS_IND_TBL_CMD_IQ11 0x3ff
#define V_FW_RSS_IND_TBL_CMD_IQ11(x) ((x) << S_FW_RSS_IND_TBL_CMD_IQ11)
#define G_FW_RSS_IND_TBL_CMD_IQ11(x) \
(((x) >> S_FW_RSS_IND_TBL_CMD_IQ11) & M_FW_RSS_IND_TBL_CMD_IQ11)
#define S_FW_RSS_IND_TBL_CMD_IQ12 20
#define M_FW_RSS_IND_TBL_CMD_IQ12 0x3ff
#define V_FW_RSS_IND_TBL_CMD_IQ12(x) ((x) << S_FW_RSS_IND_TBL_CMD_IQ12)
#define G_FW_RSS_IND_TBL_CMD_IQ12(x) \
(((x) >> S_FW_RSS_IND_TBL_CMD_IQ12) & M_FW_RSS_IND_TBL_CMD_IQ12)
#define S_FW_RSS_IND_TBL_CMD_IQ13 10
#define M_FW_RSS_IND_TBL_CMD_IQ13 0x3ff
#define V_FW_RSS_IND_TBL_CMD_IQ13(x) ((x) << S_FW_RSS_IND_TBL_CMD_IQ13)
#define G_FW_RSS_IND_TBL_CMD_IQ13(x) \
(((x) >> S_FW_RSS_IND_TBL_CMD_IQ13) & M_FW_RSS_IND_TBL_CMD_IQ13)
#define S_FW_RSS_IND_TBL_CMD_IQ14 0
#define M_FW_RSS_IND_TBL_CMD_IQ14 0x3ff
#define V_FW_RSS_IND_TBL_CMD_IQ14(x) ((x) << S_FW_RSS_IND_TBL_CMD_IQ14)
#define G_FW_RSS_IND_TBL_CMD_IQ14(x) \
(((x) >> S_FW_RSS_IND_TBL_CMD_IQ14) & M_FW_RSS_IND_TBL_CMD_IQ14)
#define S_FW_RSS_IND_TBL_CMD_IQ15 20
#define M_FW_RSS_IND_TBL_CMD_IQ15 0x3ff
#define V_FW_RSS_IND_TBL_CMD_IQ15(x) ((x) << S_FW_RSS_IND_TBL_CMD_IQ15)
#define G_FW_RSS_IND_TBL_CMD_IQ15(x) \
(((x) >> S_FW_RSS_IND_TBL_CMD_IQ15) & M_FW_RSS_IND_TBL_CMD_IQ15)
#define S_FW_RSS_IND_TBL_CMD_IQ16 10
#define M_FW_RSS_IND_TBL_CMD_IQ16 0x3ff
#define V_FW_RSS_IND_TBL_CMD_IQ16(x) ((x) << S_FW_RSS_IND_TBL_CMD_IQ16)
#define G_FW_RSS_IND_TBL_CMD_IQ16(x) \
(((x) >> S_FW_RSS_IND_TBL_CMD_IQ16) & M_FW_RSS_IND_TBL_CMD_IQ16)
#define S_FW_RSS_IND_TBL_CMD_IQ17 0
#define M_FW_RSS_IND_TBL_CMD_IQ17 0x3ff
#define V_FW_RSS_IND_TBL_CMD_IQ17(x) ((x) << S_FW_RSS_IND_TBL_CMD_IQ17)
#define G_FW_RSS_IND_TBL_CMD_IQ17(x) \
(((x) >> S_FW_RSS_IND_TBL_CMD_IQ17) & M_FW_RSS_IND_TBL_CMD_IQ17)
#define S_FW_RSS_IND_TBL_CMD_IQ18 20
#define M_FW_RSS_IND_TBL_CMD_IQ18 0x3ff
#define V_FW_RSS_IND_TBL_CMD_IQ18(x) ((x) << S_FW_RSS_IND_TBL_CMD_IQ18)
#define G_FW_RSS_IND_TBL_CMD_IQ18(x) \
(((x) >> S_FW_RSS_IND_TBL_CMD_IQ18) & M_FW_RSS_IND_TBL_CMD_IQ18)
#define S_FW_RSS_IND_TBL_CMD_IQ19 10
#define M_FW_RSS_IND_TBL_CMD_IQ19 0x3ff
#define V_FW_RSS_IND_TBL_CMD_IQ19(x) ((x) << S_FW_RSS_IND_TBL_CMD_IQ19)
#define G_FW_RSS_IND_TBL_CMD_IQ19(x) \
(((x) >> S_FW_RSS_IND_TBL_CMD_IQ19) & M_FW_RSS_IND_TBL_CMD_IQ19)
#define S_FW_RSS_IND_TBL_CMD_IQ20 0
#define M_FW_RSS_IND_TBL_CMD_IQ20 0x3ff
#define V_FW_RSS_IND_TBL_CMD_IQ20(x) ((x) << S_FW_RSS_IND_TBL_CMD_IQ20)
#define G_FW_RSS_IND_TBL_CMD_IQ20(x) \
(((x) >> S_FW_RSS_IND_TBL_CMD_IQ20) & M_FW_RSS_IND_TBL_CMD_IQ20)
#define S_FW_RSS_IND_TBL_CMD_IQ21 20
#define M_FW_RSS_IND_TBL_CMD_IQ21 0x3ff
#define V_FW_RSS_IND_TBL_CMD_IQ21(x) ((x) << S_FW_RSS_IND_TBL_CMD_IQ21)
#define G_FW_RSS_IND_TBL_CMD_IQ21(x) \
(((x) >> S_FW_RSS_IND_TBL_CMD_IQ21) & M_FW_RSS_IND_TBL_CMD_IQ21)
#define S_FW_RSS_IND_TBL_CMD_IQ22 10
#define M_FW_RSS_IND_TBL_CMD_IQ22 0x3ff
#define V_FW_RSS_IND_TBL_CMD_IQ22(x) ((x) << S_FW_RSS_IND_TBL_CMD_IQ22)
#define G_FW_RSS_IND_TBL_CMD_IQ22(x) \
(((x) >> S_FW_RSS_IND_TBL_CMD_IQ22) & M_FW_RSS_IND_TBL_CMD_IQ22)
#define S_FW_RSS_IND_TBL_CMD_IQ23 0
#define M_FW_RSS_IND_TBL_CMD_IQ23 0x3ff
#define V_FW_RSS_IND_TBL_CMD_IQ23(x) ((x) << S_FW_RSS_IND_TBL_CMD_IQ23)
#define G_FW_RSS_IND_TBL_CMD_IQ23(x) \
(((x) >> S_FW_RSS_IND_TBL_CMD_IQ23) & M_FW_RSS_IND_TBL_CMD_IQ23)
#define S_FW_RSS_IND_TBL_CMD_IQ24 20
#define M_FW_RSS_IND_TBL_CMD_IQ24 0x3ff
#define V_FW_RSS_IND_TBL_CMD_IQ24(x) ((x) << S_FW_RSS_IND_TBL_CMD_IQ24)
#define G_FW_RSS_IND_TBL_CMD_IQ24(x) \
(((x) >> S_FW_RSS_IND_TBL_CMD_IQ24) & M_FW_RSS_IND_TBL_CMD_IQ24)
#define S_FW_RSS_IND_TBL_CMD_IQ25 10
#define M_FW_RSS_IND_TBL_CMD_IQ25 0x3ff
#define V_FW_RSS_IND_TBL_CMD_IQ25(x) ((x) << S_FW_RSS_IND_TBL_CMD_IQ25)
#define G_FW_RSS_IND_TBL_CMD_IQ25(x) \
(((x) >> S_FW_RSS_IND_TBL_CMD_IQ25) & M_FW_RSS_IND_TBL_CMD_IQ25)
#define S_FW_RSS_IND_TBL_CMD_IQ26 0
#define M_FW_RSS_IND_TBL_CMD_IQ26 0x3ff
#define V_FW_RSS_IND_TBL_CMD_IQ26(x) ((x) << S_FW_RSS_IND_TBL_CMD_IQ26)
#define G_FW_RSS_IND_TBL_CMD_IQ26(x) \
(((x) >> S_FW_RSS_IND_TBL_CMD_IQ26) & M_FW_RSS_IND_TBL_CMD_IQ26)
#define S_FW_RSS_IND_TBL_CMD_IQ27 20
#define M_FW_RSS_IND_TBL_CMD_IQ27 0x3ff
#define V_FW_RSS_IND_TBL_CMD_IQ27(x) ((x) << S_FW_RSS_IND_TBL_CMD_IQ27)
#define G_FW_RSS_IND_TBL_CMD_IQ27(x) \
(((x) >> S_FW_RSS_IND_TBL_CMD_IQ27) & M_FW_RSS_IND_TBL_CMD_IQ27)
#define S_FW_RSS_IND_TBL_CMD_IQ28 10
#define M_FW_RSS_IND_TBL_CMD_IQ28 0x3ff
#define V_FW_RSS_IND_TBL_CMD_IQ28(x) ((x) << S_FW_RSS_IND_TBL_CMD_IQ28)
#define G_FW_RSS_IND_TBL_CMD_IQ28(x) \
(((x) >> S_FW_RSS_IND_TBL_CMD_IQ28) & M_FW_RSS_IND_TBL_CMD_IQ28)
#define S_FW_RSS_IND_TBL_CMD_IQ29 0
#define M_FW_RSS_IND_TBL_CMD_IQ29 0x3ff
#define V_FW_RSS_IND_TBL_CMD_IQ29(x) ((x) << S_FW_RSS_IND_TBL_CMD_IQ29)
#define G_FW_RSS_IND_TBL_CMD_IQ29(x) \
(((x) >> S_FW_RSS_IND_TBL_CMD_IQ29) & M_FW_RSS_IND_TBL_CMD_IQ29)
#define S_FW_RSS_IND_TBL_CMD_IQ30 20
#define M_FW_RSS_IND_TBL_CMD_IQ30 0x3ff
#define V_FW_RSS_IND_TBL_CMD_IQ30(x) ((x) << S_FW_RSS_IND_TBL_CMD_IQ30)
#define G_FW_RSS_IND_TBL_CMD_IQ30(x) \
(((x) >> S_FW_RSS_IND_TBL_CMD_IQ30) & M_FW_RSS_IND_TBL_CMD_IQ30)
#define S_FW_RSS_IND_TBL_CMD_IQ31 10
#define M_FW_RSS_IND_TBL_CMD_IQ31 0x3ff
#define V_FW_RSS_IND_TBL_CMD_IQ31(x) ((x) << S_FW_RSS_IND_TBL_CMD_IQ31)
#define G_FW_RSS_IND_TBL_CMD_IQ31(x) \
(((x) >> S_FW_RSS_IND_TBL_CMD_IQ31) & M_FW_RSS_IND_TBL_CMD_IQ31)
struct fw_rss_glb_config_cmd {
__be32 op_to_write;
__be32 retval_len16;
union fw_rss_glb_config {
struct fw_rss_glb_config_manual {
__be32 mode_pkd;
__be32 r3;
__be64 r4;
__be64 r5;
} manual;
struct fw_rss_glb_config_basicvirtual {
__be32 mode_pkd;
__be32 synmapen_to_hashtoeplitz;
__be64 r8;
__be64 r9;
} basicvirtual;
} u;
};
#define S_FW_RSS_GLB_CONFIG_CMD_MODE 28
#define M_FW_RSS_GLB_CONFIG_CMD_MODE 0xf
#define V_FW_RSS_GLB_CONFIG_CMD_MODE(x) ((x) << S_FW_RSS_GLB_CONFIG_CMD_MODE)
#define G_FW_RSS_GLB_CONFIG_CMD_MODE(x) \
(((x) >> S_FW_RSS_GLB_CONFIG_CMD_MODE) & M_FW_RSS_GLB_CONFIG_CMD_MODE)
#define FW_RSS_GLB_CONFIG_CMD_MODE_MANUAL 0
#define FW_RSS_GLB_CONFIG_CMD_MODE_BASICVIRTUAL 1
#define FW_RSS_GLB_CONFIG_CMD_MODE_MAX 1
#define S_FW_RSS_GLB_CONFIG_CMD_SYNMAPEN 8
#define M_FW_RSS_GLB_CONFIG_CMD_SYNMAPEN 0x1
#define V_FW_RSS_GLB_CONFIG_CMD_SYNMAPEN(x) \
((x) << S_FW_RSS_GLB_CONFIG_CMD_SYNMAPEN)
#define G_FW_RSS_GLB_CONFIG_CMD_SYNMAPEN(x) \
(((x) >> S_FW_RSS_GLB_CONFIG_CMD_SYNMAPEN) & \
M_FW_RSS_GLB_CONFIG_CMD_SYNMAPEN)
#define F_FW_RSS_GLB_CONFIG_CMD_SYNMAPEN V_FW_RSS_GLB_CONFIG_CMD_SYNMAPEN(1U)
#define S_FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV6 7
#define M_FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV6 0x1
#define V_FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV6(x) \
((x) << S_FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV6)
#define G_FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV6(x) \
(((x) >> S_FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV6) & \
M_FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV6)
#define F_FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV6 \
V_FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV6(1U)
#define S_FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV6 6
#define M_FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV6 0x1
#define V_FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV6(x) \
((x) << S_FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV6)
#define G_FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV6(x) \
(((x) >> S_FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV6) & \
M_FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV6)
#define F_FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV6 \
V_FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV6(1U)
#define S_FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV4 5
#define M_FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV4 0x1
#define V_FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV4(x) \
((x) << S_FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV4)
#define G_FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV4(x) \
(((x) >> S_FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV4) & \
M_FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV4)
#define F_FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV4 \
V_FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV4(1U)
#define S_FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV4 4
#define M_FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV4 0x1
#define V_FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV4(x) \
((x) << S_FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV4)
#define G_FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV4(x) \
(((x) >> S_FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV4) & \
M_FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV4)
#define F_FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV4 \
V_FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV4(1U)
#define S_FW_RSS_GLB_CONFIG_CMD_OFDMAPEN 3
#define M_FW_RSS_GLB_CONFIG_CMD_OFDMAPEN 0x1
#define V_FW_RSS_GLB_CONFIG_CMD_OFDMAPEN(x) \
((x) << S_FW_RSS_GLB_CONFIG_CMD_OFDMAPEN)
#define G_FW_RSS_GLB_CONFIG_CMD_OFDMAPEN(x) \
(((x) >> S_FW_RSS_GLB_CONFIG_CMD_OFDMAPEN) & \
M_FW_RSS_GLB_CONFIG_CMD_OFDMAPEN)
#define F_FW_RSS_GLB_CONFIG_CMD_OFDMAPEN V_FW_RSS_GLB_CONFIG_CMD_OFDMAPEN(1U)
#define S_FW_RSS_GLB_CONFIG_CMD_TNLMAPEN 2
#define M_FW_RSS_GLB_CONFIG_CMD_TNLMAPEN 0x1
#define V_FW_RSS_GLB_CONFIG_CMD_TNLMAPEN(x) \
((x) << S_FW_RSS_GLB_CONFIG_CMD_TNLMAPEN)
#define G_FW_RSS_GLB_CONFIG_CMD_TNLMAPEN(x) \
(((x) >> S_FW_RSS_GLB_CONFIG_CMD_TNLMAPEN) & \
M_FW_RSS_GLB_CONFIG_CMD_TNLMAPEN)
#define F_FW_RSS_GLB_CONFIG_CMD_TNLMAPEN V_FW_RSS_GLB_CONFIG_CMD_TNLMAPEN(1U)
#define S_FW_RSS_GLB_CONFIG_CMD_TNLALLLKP 1
#define M_FW_RSS_GLB_CONFIG_CMD_TNLALLLKP 0x1
#define V_FW_RSS_GLB_CONFIG_CMD_TNLALLLKP(x) \
((x) << S_FW_RSS_GLB_CONFIG_CMD_TNLALLLKP)
#define G_FW_RSS_GLB_CONFIG_CMD_TNLALLLKP(x) \
(((x) >> S_FW_RSS_GLB_CONFIG_CMD_TNLALLLKP) & \
M_FW_RSS_GLB_CONFIG_CMD_TNLALLLKP)
#define F_FW_RSS_GLB_CONFIG_CMD_TNLALLLKP \
V_FW_RSS_GLB_CONFIG_CMD_TNLALLLKP(1U)
#define S_FW_RSS_GLB_CONFIG_CMD_HASHTOEPLITZ 0
#define M_FW_RSS_GLB_CONFIG_CMD_HASHTOEPLITZ 0x1
#define V_FW_RSS_GLB_CONFIG_CMD_HASHTOEPLITZ(x) \
((x) << S_FW_RSS_GLB_CONFIG_CMD_HASHTOEPLITZ)
#define G_FW_RSS_GLB_CONFIG_CMD_HASHTOEPLITZ(x) \
(((x) >> S_FW_RSS_GLB_CONFIG_CMD_HASHTOEPLITZ) & \
M_FW_RSS_GLB_CONFIG_CMD_HASHTOEPLITZ)
#define F_FW_RSS_GLB_CONFIG_CMD_HASHTOEPLITZ \
V_FW_RSS_GLB_CONFIG_CMD_HASHTOEPLITZ(1U)
struct fw_rss_vi_config_cmd {
__be32 op_to_viid;
__be32 retval_len16;
union fw_rss_vi_config {
struct fw_rss_vi_config_manual {
__be64 r3;
__be64 r4;
__be64 r5;
} manual;
struct fw_rss_vi_config_basicvirtual {
__be32 r6;
__be32 defaultq_to_udpen;
__be64 r9;
__be64 r10;
} basicvirtual;
} u;
};
#define S_FW_RSS_VI_CONFIG_CMD_VIID 0
#define M_FW_RSS_VI_CONFIG_CMD_VIID 0xfff
#define V_FW_RSS_VI_CONFIG_CMD_VIID(x) ((x) << S_FW_RSS_VI_CONFIG_CMD_VIID)
#define G_FW_RSS_VI_CONFIG_CMD_VIID(x) \
(((x) >> S_FW_RSS_VI_CONFIG_CMD_VIID) & M_FW_RSS_VI_CONFIG_CMD_VIID)
#define S_FW_RSS_VI_CONFIG_CMD_DEFAULTQ 16
#define M_FW_RSS_VI_CONFIG_CMD_DEFAULTQ 0x3ff
#define V_FW_RSS_VI_CONFIG_CMD_DEFAULTQ(x) \
((x) << S_FW_RSS_VI_CONFIG_CMD_DEFAULTQ)
#define G_FW_RSS_VI_CONFIG_CMD_DEFAULTQ(x) \
(((x) >> S_FW_RSS_VI_CONFIG_CMD_DEFAULTQ) & \
M_FW_RSS_VI_CONFIG_CMD_DEFAULTQ)
#define S_FW_RSS_VI_CONFIG_CMD_IP6FOURTUPEN 4
#define M_FW_RSS_VI_CONFIG_CMD_IP6FOURTUPEN 0x1
#define V_FW_RSS_VI_CONFIG_CMD_IP6FOURTUPEN(x) \
((x) << S_FW_RSS_VI_CONFIG_CMD_IP6FOURTUPEN)
#define G_FW_RSS_VI_CONFIG_CMD_IP6FOURTUPEN(x) \
(((x) >> S_FW_RSS_VI_CONFIG_CMD_IP6FOURTUPEN) & \
M_FW_RSS_VI_CONFIG_CMD_IP6FOURTUPEN)
#define F_FW_RSS_VI_CONFIG_CMD_IP6FOURTUPEN \
V_FW_RSS_VI_CONFIG_CMD_IP6FOURTUPEN(1U)
#define S_FW_RSS_VI_CONFIG_CMD_IP6TWOTUPEN 3
#define M_FW_RSS_VI_CONFIG_CMD_IP6TWOTUPEN 0x1
#define V_FW_RSS_VI_CONFIG_CMD_IP6TWOTUPEN(x) \
((x) << S_FW_RSS_VI_CONFIG_CMD_IP6TWOTUPEN)
#define G_FW_RSS_VI_CONFIG_CMD_IP6TWOTUPEN(x) \
(((x) >> S_FW_RSS_VI_CONFIG_CMD_IP6TWOTUPEN) & \
M_FW_RSS_VI_CONFIG_CMD_IP6TWOTUPEN)
#define F_FW_RSS_VI_CONFIG_CMD_IP6TWOTUPEN \
V_FW_RSS_VI_CONFIG_CMD_IP6TWOTUPEN(1U)
#define S_FW_RSS_VI_CONFIG_CMD_IP4FOURTUPEN 2
#define M_FW_RSS_VI_CONFIG_CMD_IP4FOURTUPEN 0x1
#define V_FW_RSS_VI_CONFIG_CMD_IP4FOURTUPEN(x) \
((x) << S_FW_RSS_VI_CONFIG_CMD_IP4FOURTUPEN)
#define G_FW_RSS_VI_CONFIG_CMD_IP4FOURTUPEN(x) \
(((x) >> S_FW_RSS_VI_CONFIG_CMD_IP4FOURTUPEN) & \
M_FW_RSS_VI_CONFIG_CMD_IP4FOURTUPEN)
#define F_FW_RSS_VI_CONFIG_CMD_IP4FOURTUPEN \
V_FW_RSS_VI_CONFIG_CMD_IP4FOURTUPEN(1U)
#define S_FW_RSS_VI_CONFIG_CMD_IP4TWOTUPEN 1
#define M_FW_RSS_VI_CONFIG_CMD_IP4TWOTUPEN 0x1
#define V_FW_RSS_VI_CONFIG_CMD_IP4TWOTUPEN(x) \
((x) << S_FW_RSS_VI_CONFIG_CMD_IP4TWOTUPEN)
#define G_FW_RSS_VI_CONFIG_CMD_IP4TWOTUPEN(x) \
(((x) >> S_FW_RSS_VI_CONFIG_CMD_IP4TWOTUPEN) & \
M_FW_RSS_VI_CONFIG_CMD_IP4TWOTUPEN)
#define F_FW_RSS_VI_CONFIG_CMD_IP4TWOTUPEN \
V_FW_RSS_VI_CONFIG_CMD_IP4TWOTUPEN(1U)
#define S_FW_RSS_VI_CONFIG_CMD_UDPEN 0
#define M_FW_RSS_VI_CONFIG_CMD_UDPEN 0x1
#define V_FW_RSS_VI_CONFIG_CMD_UDPEN(x) ((x) << S_FW_RSS_VI_CONFIG_CMD_UDPEN)
#define G_FW_RSS_VI_CONFIG_CMD_UDPEN(x) \
(((x) >> S_FW_RSS_VI_CONFIG_CMD_UDPEN) & M_FW_RSS_VI_CONFIG_CMD_UDPEN)
#define F_FW_RSS_VI_CONFIG_CMD_UDPEN V_FW_RSS_VI_CONFIG_CMD_UDPEN(1U)
enum fw_sched_sc {
FW_SCHED_SC_CONFIG = 0,
FW_SCHED_SC_PARAMS = 1,
};
enum fw_sched_type {
FW_SCHED_TYPE_PKTSCHED = 0,
FW_SCHED_TYPE_STREAMSCHED = 1,
};
enum fw_sched_params_level {
FW_SCHED_PARAMS_LEVEL_CL_RL = 0,
FW_SCHED_PARAMS_LEVEL_CL_WRR = 1,
FW_SCHED_PARAMS_LEVEL_CH_RL = 2,
};
enum fw_sched_params_mode {
FW_SCHED_PARAMS_MODE_CLASS = 0,
FW_SCHED_PARAMS_MODE_FLOW = 1,
};
enum fw_sched_params_unit {
FW_SCHED_PARAMS_UNIT_BITRATE = 0,
FW_SCHED_PARAMS_UNIT_PKTRATE = 1,
};
enum fw_sched_params_rate {
FW_SCHED_PARAMS_RATE_REL = 0,
FW_SCHED_PARAMS_RATE_ABS = 1,
};
struct fw_sched_cmd {
__be32 op_to_write;
__be32 retval_len16;
union fw_sched {
struct fw_sched_config {
__u8 sc;
__u8 type;
__u8 minmaxen;
__u8 r3[5];
__u8 nclasses[4];
__be32 r4;
} config;
struct fw_sched_params {
__u8 sc;
__u8 type;
__u8 level;
__u8 mode;
__u8 unit;
__u8 rate;
__u8 ch;
__u8 cl;
__be32 min;
__be32 max;
__be16 weight;
__be16 pktsize;
__be16 burstsize;
__be16 r4;
} params;
} u;
};
/*
* length of the formatting string
*/
#define FW_DEVLOG_FMT_LEN 192
/*
* maximum number of the formatting string parameters
*/
#define FW_DEVLOG_FMT_PARAMS_NUM 8
/*
* priority levels
*/
enum fw_devlog_level {
FW_DEVLOG_LEVEL_EMERG = 0x0,
FW_DEVLOG_LEVEL_CRIT = 0x1,
FW_DEVLOG_LEVEL_ERR = 0x2,
FW_DEVLOG_LEVEL_NOTICE = 0x3,
FW_DEVLOG_LEVEL_INFO = 0x4,
FW_DEVLOG_LEVEL_DEBUG = 0x5,
FW_DEVLOG_LEVEL_MAX = 0x5,
};
/*
* facilities that may send a log message
*/
enum fw_devlog_facility {
FW_DEVLOG_FACILITY_CORE = 0x00,
FW_DEVLOG_FACILITY_CF = 0x01,
FW_DEVLOG_FACILITY_SCHED = 0x02,
FW_DEVLOG_FACILITY_TIMER = 0x04,
FW_DEVLOG_FACILITY_RES = 0x06,
FW_DEVLOG_FACILITY_HW = 0x08,
FW_DEVLOG_FACILITY_FLR = 0x10,
FW_DEVLOG_FACILITY_DMAQ = 0x12,
FW_DEVLOG_FACILITY_PHY = 0x14,
FW_DEVLOG_FACILITY_MAC = 0x16,
FW_DEVLOG_FACILITY_PORT = 0x18,
FW_DEVLOG_FACILITY_VI = 0x1A,
FW_DEVLOG_FACILITY_FILTER = 0x1C,
FW_DEVLOG_FACILITY_ACL = 0x1E,
FW_DEVLOG_FACILITY_TM = 0x20,
FW_DEVLOG_FACILITY_QFC = 0x22,
FW_DEVLOG_FACILITY_DCB = 0x24,
FW_DEVLOG_FACILITY_ETH = 0x26,
FW_DEVLOG_FACILITY_OFLD = 0x28,
FW_DEVLOG_FACILITY_RI = 0x2A,
FW_DEVLOG_FACILITY_ISCSI = 0x2C,
FW_DEVLOG_FACILITY_FCOE = 0x2E,
FW_DEVLOG_FACILITY_FOISCSI = 0x30,
FW_DEVLOG_FACILITY_FOFCOE = 0x32,
FW_DEVLOG_FACILITY_CHNET = 0x34,
FW_DEVLOG_FACILITY_COiSCSI = 0x36,
FW_DEVLOG_FACILITY_MAX = 0x38,
};
/*
* log message format
*/
struct fw_devlog_e {
__be64 timestamp;
__be32 seqno;
__be16 reserved1;
__u8 level;
__u8 facility;
__u8 fmt[FW_DEVLOG_FMT_LEN];
__be32 params[FW_DEVLOG_FMT_PARAMS_NUM];
__be32 reserved3[4];
};
struct fw_devlog_cmd {
__be32 op_to_write;
__be32 retval_len16;
__u8 level;
__u8 r2[7];
__be32 memtype_devlog_memaddr16_devlog;
__be32 memsize_devlog;
__be32 r3[2];
};
#define S_FW_DEVLOG_CMD_MEMTYPE_DEVLOG 28
#define M_FW_DEVLOG_CMD_MEMTYPE_DEVLOG 0xf
#define V_FW_DEVLOG_CMD_MEMTYPE_DEVLOG(x) \
((x) << S_FW_DEVLOG_CMD_MEMTYPE_DEVLOG)
#define G_FW_DEVLOG_CMD_MEMTYPE_DEVLOG(x) \
(((x) >> S_FW_DEVLOG_CMD_MEMTYPE_DEVLOG) & M_FW_DEVLOG_CMD_MEMTYPE_DEVLOG)
#define S_FW_DEVLOG_CMD_MEMADDR16_DEVLOG 0
#define M_FW_DEVLOG_CMD_MEMADDR16_DEVLOG 0xfffffff
#define V_FW_DEVLOG_CMD_MEMADDR16_DEVLOG(x) \
((x) << S_FW_DEVLOG_CMD_MEMADDR16_DEVLOG)
#define G_FW_DEVLOG_CMD_MEMADDR16_DEVLOG(x) \
(((x) >> S_FW_DEVLOG_CMD_MEMADDR16_DEVLOG) & \
M_FW_DEVLOG_CMD_MEMADDR16_DEVLOG)
enum fw_watchdog_actions {
FW_WATCHDOG_ACTION_SHUTDOWN = 0,
FW_WATCHDOG_ACTION_FLR = 1,
FW_WATCHDOG_ACTION_BYPASS = 2,
FW_WATCHDOG_ACTION_TMPCHK = 3,
FW_WATCHDOG_ACTION_PAUSEOFF = 4,
FW_WATCHDOG_ACTION_MAX = 5,
};
#define FW_WATCHDOG_MAX_TIMEOUT_SECS 60
struct fw_watchdog_cmd {
__be32 op_to_vfn;
__be32 retval_len16;
__be32 timeout;
__be32 action;
};
#define S_FW_WATCHDOG_CMD_PFN 8
#define M_FW_WATCHDOG_CMD_PFN 0x7
#define V_FW_WATCHDOG_CMD_PFN(x) ((x) << S_FW_WATCHDOG_CMD_PFN)
#define G_FW_WATCHDOG_CMD_PFN(x) \
(((x) >> S_FW_WATCHDOG_CMD_PFN) & M_FW_WATCHDOG_CMD_PFN)
#define S_FW_WATCHDOG_CMD_VFN 0
#define M_FW_WATCHDOG_CMD_VFN 0xff
#define V_FW_WATCHDOG_CMD_VFN(x) ((x) << S_FW_WATCHDOG_CMD_VFN)
#define G_FW_WATCHDOG_CMD_VFN(x) \
(((x) >> S_FW_WATCHDOG_CMD_VFN) & M_FW_WATCHDOG_CMD_VFN)
struct fw_clip_cmd {
__be32 op_to_write;
__be32 alloc_to_len16;
__be64 ip_hi;
__be64 ip_lo;
__be32 r4[2];
};
#define S_FW_CLIP_CMD_ALLOC 31
#define M_FW_CLIP_CMD_ALLOC 0x1
#define V_FW_CLIP_CMD_ALLOC(x) ((x) << S_FW_CLIP_CMD_ALLOC)
#define G_FW_CLIP_CMD_ALLOC(x) \
(((x) >> S_FW_CLIP_CMD_ALLOC) & M_FW_CLIP_CMD_ALLOC)
#define F_FW_CLIP_CMD_ALLOC V_FW_CLIP_CMD_ALLOC(1U)
#define S_FW_CLIP_CMD_FREE 30
#define M_FW_CLIP_CMD_FREE 0x1
#define V_FW_CLIP_CMD_FREE(x) ((x) << S_FW_CLIP_CMD_FREE)
#define G_FW_CLIP_CMD_FREE(x) \
(((x) >> S_FW_CLIP_CMD_FREE) & M_FW_CLIP_CMD_FREE)
#define F_FW_CLIP_CMD_FREE V_FW_CLIP_CMD_FREE(1U)
/******************************************************************************
* F O i S C S I C O M M A N D s
**************************************/
#define FW_CHNET_IFACE_ADDR_MAX 3
enum fw_chnet_iface_cmd_subop {
FW_CHNET_IFACE_CMD_SUBOP_NOOP = 0,
FW_CHNET_IFACE_CMD_SUBOP_LINK_UP,
FW_CHNET_IFACE_CMD_SUBOP_LINK_DOWN,
FW_CHNET_IFACE_CMD_SUBOP_MTU_SET,
FW_CHNET_IFACE_CMD_SUBOP_MTU_GET,
FW_CHNET_IFACE_CMD_SUBOP_MAX,
};
struct fw_chnet_iface_cmd {
__be32 op_to_portid;
__be32 retval_len16;
__u8 subop;
__u8 r2[3];
__be32 ifid_ifstate;
__be16 mtu;
__be16 vlanid;
__be32 r3;
__be16 r4;
__u8 mac[6];
};
#define S_FW_CHNET_IFACE_CMD_PORTID 0
#define M_FW_CHNET_IFACE_CMD_PORTID 0xf
#define V_FW_CHNET_IFACE_CMD_PORTID(x) ((x) << S_FW_CHNET_IFACE_CMD_PORTID)
#define G_FW_CHNET_IFACE_CMD_PORTID(x) \
(((x) >> S_FW_CHNET_IFACE_CMD_PORTID) & M_FW_CHNET_IFACE_CMD_PORTID)
#define S_FW_CHNET_IFACE_CMD_IFID 8
#define M_FW_CHNET_IFACE_CMD_IFID 0xffffff
#define V_FW_CHNET_IFACE_CMD_IFID(x) ((x) << S_FW_CHNET_IFACE_CMD_IFID)
#define G_FW_CHNET_IFACE_CMD_IFID(x) \
(((x) >> S_FW_CHNET_IFACE_CMD_IFID) & M_FW_CHNET_IFACE_CMD_IFID)
#define S_FW_CHNET_IFACE_CMD_IFSTATE 0
#define M_FW_CHNET_IFACE_CMD_IFSTATE 0xff
#define V_FW_CHNET_IFACE_CMD_IFSTATE(x) ((x) << S_FW_CHNET_IFACE_CMD_IFSTATE)
#define G_FW_CHNET_IFACE_CMD_IFSTATE(x) \
(((x) >> S_FW_CHNET_IFACE_CMD_IFSTATE) & M_FW_CHNET_IFACE_CMD_IFSTATE)
struct fw_fcoe_res_info_cmd {
__be32 op_to_read;
__be32 retval_len16;
__be16 e_d_tov;
__be16 r_a_tov_seq;
__be16 r_a_tov_els;
__be16 r_r_tov;
__be32 max_xchgs;
__be32 max_ssns;
__be32 used_xchgs;
__be32 used_ssns;
__be32 max_fcfs;
__be32 max_vnps;
__be32 used_fcfs;
__be32 used_vnps;
};
struct fw_fcoe_link_cmd {
__be32 op_to_portid;
__be32 retval_len16;
__be32 sub_opcode_fcfi;
__u8 r3;
__u8 lstatus;
__be16 flags;
__u8 r4;
__u8 set_vlan;
__be16 vlan_id;
__be32 vnpi_pkd;
__be16 r6;
__u8 phy_mac[6];
__u8 vnport_wwnn[8];
__u8 vnport_wwpn[8];
};
#define S_FW_FCOE_LINK_CMD_PORTID 0
#define M_FW_FCOE_LINK_CMD_PORTID 0xf
#define V_FW_FCOE_LINK_CMD_PORTID(x) ((x) << S_FW_FCOE_LINK_CMD_PORTID)
#define G_FW_FCOE_LINK_CMD_PORTID(x) \
(((x) >> S_FW_FCOE_LINK_CMD_PORTID) & M_FW_FCOE_LINK_CMD_PORTID)
#define S_FW_FCOE_LINK_CMD_SUB_OPCODE 24
#define M_FW_FCOE_LINK_CMD_SUB_OPCODE 0xff
#define V_FW_FCOE_LINK_CMD_SUB_OPCODE(x) \
((x) << S_FW_FCOE_LINK_CMD_SUB_OPCODE)
#define G_FW_FCOE_LINK_CMD_SUB_OPCODE(x) \
(((x) >> S_FW_FCOE_LINK_CMD_SUB_OPCODE) & M_FW_FCOE_LINK_CMD_SUB_OPCODE)
#define S_FW_FCOE_LINK_CMD_FCFI 0
#define M_FW_FCOE_LINK_CMD_FCFI 0xffffff
#define V_FW_FCOE_LINK_CMD_FCFI(x) ((x) << S_FW_FCOE_LINK_CMD_FCFI)
#define G_FW_FCOE_LINK_CMD_FCFI(x) \
(((x) >> S_FW_FCOE_LINK_CMD_FCFI) & M_FW_FCOE_LINK_CMD_FCFI)
#define S_FW_FCOE_LINK_CMD_VNPI 0
#define M_FW_FCOE_LINK_CMD_VNPI 0xfffff
#define V_FW_FCOE_LINK_CMD_VNPI(x) ((x) << S_FW_FCOE_LINK_CMD_VNPI)
#define G_FW_FCOE_LINK_CMD_VNPI(x) \
(((x) >> S_FW_FCOE_LINK_CMD_VNPI) & M_FW_FCOE_LINK_CMD_VNPI)
struct fw_fcoe_vnp_cmd {
__be32 op_to_fcfi;
__be32 alloc_to_len16;
__be32 gen_wwn_to_vnpi;
__be32 vf_id;
__be16 iqid;
__u8 vnport_mac[6];
__u8 vnport_wwnn[8];
__u8 vnport_wwpn[8];
__u8 cmn_srv_parms[16];
__u8 clsp_word_0_1[8];
};
#define S_FW_FCOE_VNP_CMD_FCFI 0
#define M_FW_FCOE_VNP_CMD_FCFI 0xfffff
#define V_FW_FCOE_VNP_CMD_FCFI(x) ((x) << S_FW_FCOE_VNP_CMD_FCFI)
#define G_FW_FCOE_VNP_CMD_FCFI(x) \
(((x) >> S_FW_FCOE_VNP_CMD_FCFI) & M_FW_FCOE_VNP_CMD_FCFI)
#define S_FW_FCOE_VNP_CMD_ALLOC 31
#define M_FW_FCOE_VNP_CMD_ALLOC 0x1
#define V_FW_FCOE_VNP_CMD_ALLOC(x) ((x) << S_FW_FCOE_VNP_CMD_ALLOC)
#define G_FW_FCOE_VNP_CMD_ALLOC(x) \
(((x) >> S_FW_FCOE_VNP_CMD_ALLOC) & M_FW_FCOE_VNP_CMD_ALLOC)
#define F_FW_FCOE_VNP_CMD_ALLOC V_FW_FCOE_VNP_CMD_ALLOC(1U)
#define S_FW_FCOE_VNP_CMD_FREE 30
#define M_FW_FCOE_VNP_CMD_FREE 0x1
#define V_FW_FCOE_VNP_CMD_FREE(x) ((x) << S_FW_FCOE_VNP_CMD_FREE)
#define G_FW_FCOE_VNP_CMD_FREE(x) \
(((x) >> S_FW_FCOE_VNP_CMD_FREE) & M_FW_FCOE_VNP_CMD_FREE)
#define F_FW_FCOE_VNP_CMD_FREE V_FW_FCOE_VNP_CMD_FREE(1U)
#define S_FW_FCOE_VNP_CMD_MODIFY 29
#define M_FW_FCOE_VNP_CMD_MODIFY 0x1
#define V_FW_FCOE_VNP_CMD_MODIFY(x) ((x) << S_FW_FCOE_VNP_CMD_MODIFY)
#define G_FW_FCOE_VNP_CMD_MODIFY(x) \
(((x) >> S_FW_FCOE_VNP_CMD_MODIFY) & M_FW_FCOE_VNP_CMD_MODIFY)
#define F_FW_FCOE_VNP_CMD_MODIFY V_FW_FCOE_VNP_CMD_MODIFY(1U)
#define S_FW_FCOE_VNP_CMD_GEN_WWN 22
#define M_FW_FCOE_VNP_CMD_GEN_WWN 0x1
#define V_FW_FCOE_VNP_CMD_GEN_WWN(x) ((x) << S_FW_FCOE_VNP_CMD_GEN_WWN)
#define G_FW_FCOE_VNP_CMD_GEN_WWN(x) \
(((x) >> S_FW_FCOE_VNP_CMD_GEN_WWN) & M_FW_FCOE_VNP_CMD_GEN_WWN)
#define F_FW_FCOE_VNP_CMD_GEN_WWN V_FW_FCOE_VNP_CMD_GEN_WWN(1U)
#define S_FW_FCOE_VNP_CMD_PERSIST 21
#define M_FW_FCOE_VNP_CMD_PERSIST 0x1
#define V_FW_FCOE_VNP_CMD_PERSIST(x) ((x) << S_FW_FCOE_VNP_CMD_PERSIST)
#define G_FW_FCOE_VNP_CMD_PERSIST(x) \
(((x) >> S_FW_FCOE_VNP_CMD_PERSIST) & M_FW_FCOE_VNP_CMD_PERSIST)
#define F_FW_FCOE_VNP_CMD_PERSIST V_FW_FCOE_VNP_CMD_PERSIST(1U)
#define S_FW_FCOE_VNP_CMD_VFID_EN 20
#define M_FW_FCOE_VNP_CMD_VFID_EN 0x1
#define V_FW_FCOE_VNP_CMD_VFID_EN(x) ((x) << S_FW_FCOE_VNP_CMD_VFID_EN)
#define G_FW_FCOE_VNP_CMD_VFID_EN(x) \
(((x) >> S_FW_FCOE_VNP_CMD_VFID_EN) & M_FW_FCOE_VNP_CMD_VFID_EN)
#define F_FW_FCOE_VNP_CMD_VFID_EN V_FW_FCOE_VNP_CMD_VFID_EN(1U)
#define S_FW_FCOE_VNP_CMD_VNPI 0
#define M_FW_FCOE_VNP_CMD_VNPI 0xfffff
#define V_FW_FCOE_VNP_CMD_VNPI(x) ((x) << S_FW_FCOE_VNP_CMD_VNPI)
#define G_FW_FCOE_VNP_CMD_VNPI(x) \
(((x) >> S_FW_FCOE_VNP_CMD_VNPI) & M_FW_FCOE_VNP_CMD_VNPI)
struct fw_fcoe_sparams_cmd {
__be32 op_to_portid;
__be32 retval_len16;
__u8 r3[7];
__u8 cos;
__u8 lport_wwnn[8];
__u8 lport_wwpn[8];
__u8 cmn_srv_parms[16];
__u8 cls_srv_parms[16];
};
#define S_FW_FCOE_SPARAMS_CMD_PORTID 0
#define M_FW_FCOE_SPARAMS_CMD_PORTID 0xf
#define V_FW_FCOE_SPARAMS_CMD_PORTID(x) ((x) << S_FW_FCOE_SPARAMS_CMD_PORTID)
#define G_FW_FCOE_SPARAMS_CMD_PORTID(x) \
(((x) >> S_FW_FCOE_SPARAMS_CMD_PORTID) & M_FW_FCOE_SPARAMS_CMD_PORTID)
struct fw_fcoe_stats_cmd {
__be32 op_to_flowid;
__be32 free_to_len16;
union fw_fcoe_stats {
struct fw_fcoe_stats_ctl {
__u8 nstats_port;
__u8 port_valid_ix;
__be16 r6;
__be32 r7;
__be64 stat0;
__be64 stat1;
__be64 stat2;
__be64 stat3;
__be64 stat4;
__be64 stat5;
} ctl;
struct fw_fcoe_port_stats {
__be64 tx_bcast_bytes;
__be64 tx_bcast_frames;
__be64 tx_mcast_bytes;
__be64 tx_mcast_frames;
__be64 tx_ucast_bytes;
__be64 tx_ucast_frames;
__be64 tx_drop_frames;
__be64 tx_offload_bytes;
__be64 tx_offload_frames;
__be64 rx_bcast_bytes;
__be64 rx_bcast_frames;
__be64 rx_mcast_bytes;
__be64 rx_mcast_frames;
__be64 rx_ucast_bytes;
__be64 rx_ucast_frames;
__be64 rx_err_frames;
} port_stats;
struct fw_fcoe_fcf_stats {
__be32 fip_tx_bytes;
__be32 fip_tx_fr;
__be64 fcf_ka;
__be64 mcast_adv_rcvd;
__be16 ucast_adv_rcvd;
__be16 sol_sent;
__be16 vlan_req;
__be16 vlan_rpl;
__be16 clr_vlink;
__be16 link_down;
__be16 link_up;
__be16 logo;
__be16 flogi_req;
__be16 flogi_rpl;
__be16 fdisc_req;
__be16 fdisc_rpl;
__be16 fka_prd_chg;
__be16 fc_map_chg;
__be16 vfid_chg;
__u8 no_fka_req;
__u8 no_vnp;
} fcf_stats;
struct fw_fcoe_pcb_stats {
__be64 tx_bytes;
__be64 tx_frames;
__be64 rx_bytes;
__be64 rx_frames;
__be32 vnp_ka;
__be32 unsol_els_rcvd;
__be64 unsol_cmd_rcvd;
__be16 implicit_logo;
__be16 flogi_inv_sparm;
__be16 fdisc_inv_sparm;
__be16 flogi_rjt;
__be16 fdisc_rjt;
__be16 no_ssn;
__be16 mac_flt_fail;
__be16 inv_fr_rcvd;
} pcb_stats;
struct fw_fcoe_scb_stats {
__be64 tx_bytes;
__be64 tx_frames;
__be64 rx_bytes;
__be64 rx_frames;
__be32 host_abrt_req;
__be32 adap_auto_abrt;
__be32 adap_abrt_rsp;
__be32 host_ios_req;
__be16 ssn_offl_ios;
__be16 ssn_not_rdy_ios;
__u8 rx_data_ddp_err;
__u8 ddp_flt_set_err;
__be16 rx_data_fr_err;
__u8 bad_st_abrt_req;
__u8 no_io_abrt_req;
__u8 abort_tmo;
__u8 abort_tmo_2;
__be32 abort_req;
__u8 no_ppod_res_tmo;
__u8 bp_tmo;
__u8 adap_auto_cls;
__u8 no_io_cls_req;
__be32 host_cls_req;
__be64 unsol_cmd_rcvd;
__be32 plogi_req_rcvd;
__be32 prli_req_rcvd;
__be16 logo_req_rcvd;
__be16 prlo_req_rcvd;
__be16 plogi_rjt_rcvd;
__be16 prli_rjt_rcvd;
__be32 adisc_req_rcvd;
__be32 rscn_rcvd;
__be32 rrq_req_rcvd;
__be32 unsol_els_rcvd;
__u8 adisc_rjt_rcvd;
__u8 scr_rjt;
__u8 ct_rjt;
__u8 inval_bls_rcvd;
__be32 ba_rjt_rcvd;
} scb_stats;
} u;
};
#define S_FW_FCOE_STATS_CMD_FLOWID 0
#define M_FW_FCOE_STATS_CMD_FLOWID 0xfffff
#define V_FW_FCOE_STATS_CMD_FLOWID(x) ((x) << S_FW_FCOE_STATS_CMD_FLOWID)
#define G_FW_FCOE_STATS_CMD_FLOWID(x) \
(((x) >> S_FW_FCOE_STATS_CMD_FLOWID) & M_FW_FCOE_STATS_CMD_FLOWID)
#define S_FW_FCOE_STATS_CMD_FREE 30
#define M_FW_FCOE_STATS_CMD_FREE 0x1
#define V_FW_FCOE_STATS_CMD_FREE(x) ((x) << S_FW_FCOE_STATS_CMD_FREE)
#define G_FW_FCOE_STATS_CMD_FREE(x) \
(((x) >> S_FW_FCOE_STATS_CMD_FREE) & M_FW_FCOE_STATS_CMD_FREE)
#define F_FW_FCOE_STATS_CMD_FREE V_FW_FCOE_STATS_CMD_FREE(1U)
#define S_FW_FCOE_STATS_CMD_NSTATS 4
#define M_FW_FCOE_STATS_CMD_NSTATS 0x7
#define V_FW_FCOE_STATS_CMD_NSTATS(x) ((x) << S_FW_FCOE_STATS_CMD_NSTATS)
#define G_FW_FCOE_STATS_CMD_NSTATS(x) \
(((x) >> S_FW_FCOE_STATS_CMD_NSTATS) & M_FW_FCOE_STATS_CMD_NSTATS)
#define S_FW_FCOE_STATS_CMD_PORT 0
#define M_FW_FCOE_STATS_CMD_PORT 0x3
#define V_FW_FCOE_STATS_CMD_PORT(x) ((x) << S_FW_FCOE_STATS_CMD_PORT)
#define G_FW_FCOE_STATS_CMD_PORT(x) \
(((x) >> S_FW_FCOE_STATS_CMD_PORT) & M_FW_FCOE_STATS_CMD_PORT)
#define S_FW_FCOE_STATS_CMD_PORT_VALID 7
#define M_FW_FCOE_STATS_CMD_PORT_VALID 0x1
#define V_FW_FCOE_STATS_CMD_PORT_VALID(x) \
((x) << S_FW_FCOE_STATS_CMD_PORT_VALID)
#define G_FW_FCOE_STATS_CMD_PORT_VALID(x) \
(((x) >> S_FW_FCOE_STATS_CMD_PORT_VALID) & M_FW_FCOE_STATS_CMD_PORT_VALID)
#define F_FW_FCOE_STATS_CMD_PORT_VALID V_FW_FCOE_STATS_CMD_PORT_VALID(1U)
#define S_FW_FCOE_STATS_CMD_IX 0
#define M_FW_FCOE_STATS_CMD_IX 0x3f
#define V_FW_FCOE_STATS_CMD_IX(x) ((x) << S_FW_FCOE_STATS_CMD_IX)
#define G_FW_FCOE_STATS_CMD_IX(x) \
(((x) >> S_FW_FCOE_STATS_CMD_IX) & M_FW_FCOE_STATS_CMD_IX)
struct fw_fcoe_fcf_cmd {
__be32 op_to_fcfi;
__be32 retval_len16;
__be16 priority_pkd;
__u8 mac[6];
__u8 name_id[8];
__u8 fabric[8];
__be16 vf_id;
__be16 max_fcoe_size;
__u8 vlan_id;
__u8 fc_map[3];
__be32 fka_adv;
__be32 r6;
__u8 r7_hi;
__u8 fpma_to_portid;
__u8 spma_mac[6];
__be64 r8;
};
#define S_FW_FCOE_FCF_CMD_FCFI 0
#define M_FW_FCOE_FCF_CMD_FCFI 0xfffff
#define V_FW_FCOE_FCF_CMD_FCFI(x) ((x) << S_FW_FCOE_FCF_CMD_FCFI)
#define G_FW_FCOE_FCF_CMD_FCFI(x) \
(((x) >> S_FW_FCOE_FCF_CMD_FCFI) & M_FW_FCOE_FCF_CMD_FCFI)
#define S_FW_FCOE_FCF_CMD_PRIORITY 0
#define M_FW_FCOE_FCF_CMD_PRIORITY 0xff
#define V_FW_FCOE_FCF_CMD_PRIORITY(x) ((x) << S_FW_FCOE_FCF_CMD_PRIORITY)
#define G_FW_FCOE_FCF_CMD_PRIORITY(x) \
(((x) >> S_FW_FCOE_FCF_CMD_PRIORITY) & M_FW_FCOE_FCF_CMD_PRIORITY)
#define S_FW_FCOE_FCF_CMD_FPMA 6
#define M_FW_FCOE_FCF_CMD_FPMA 0x1
#define V_FW_FCOE_FCF_CMD_FPMA(x) ((x) << S_FW_FCOE_FCF_CMD_FPMA)
#define G_FW_FCOE_FCF_CMD_FPMA(x) \
(((x) >> S_FW_FCOE_FCF_CMD_FPMA) & M_FW_FCOE_FCF_CMD_FPMA)
#define F_FW_FCOE_FCF_CMD_FPMA V_FW_FCOE_FCF_CMD_FPMA(1U)
#define S_FW_FCOE_FCF_CMD_SPMA 5
#define M_FW_FCOE_FCF_CMD_SPMA 0x1
#define V_FW_FCOE_FCF_CMD_SPMA(x) ((x) << S_FW_FCOE_FCF_CMD_SPMA)
#define G_FW_FCOE_FCF_CMD_SPMA(x) \
(((x) >> S_FW_FCOE_FCF_CMD_SPMA) & M_FW_FCOE_FCF_CMD_SPMA)
#define F_FW_FCOE_FCF_CMD_SPMA V_FW_FCOE_FCF_CMD_SPMA(1U)
#define S_FW_FCOE_FCF_CMD_LOGIN 4
#define M_FW_FCOE_FCF_CMD_LOGIN 0x1
#define V_FW_FCOE_FCF_CMD_LOGIN(x) ((x) << S_FW_FCOE_FCF_CMD_LOGIN)
#define G_FW_FCOE_FCF_CMD_LOGIN(x) \
(((x) >> S_FW_FCOE_FCF_CMD_LOGIN) & M_FW_FCOE_FCF_CMD_LOGIN)
#define F_FW_FCOE_FCF_CMD_LOGIN V_FW_FCOE_FCF_CMD_LOGIN(1U)
#define S_FW_FCOE_FCF_CMD_PORTID 0
#define M_FW_FCOE_FCF_CMD_PORTID 0xf
#define V_FW_FCOE_FCF_CMD_PORTID(x) ((x) << S_FW_FCOE_FCF_CMD_PORTID)
#define G_FW_FCOE_FCF_CMD_PORTID(x) \
(((x) >> S_FW_FCOE_FCF_CMD_PORTID) & M_FW_FCOE_FCF_CMD_PORTID)
/******************************************************************************
* E R R O R a n d D E B U G C O M M A N D s
******************************************************/
enum fw_error_type {
FW_ERROR_TYPE_EXCEPTION = 0x0,
FW_ERROR_TYPE_HWMODULE = 0x1,
FW_ERROR_TYPE_WR = 0x2,
FW_ERROR_TYPE_ACL = 0x3,
};
enum fw_dcb_ieee_locations {
FW_IEEE_LOC_LOCAL,
FW_IEEE_LOC_PEER,
FW_IEEE_LOC_OPERATIONAL,
};
struct fw_dcb_ieee_cmd {
__be32 op_to_location;
__be32 changed_to_len16;
union fw_dcbx_stats {
struct fw_dcbx_pfc_stats_ieee {
__be32 pfc_mbc_pkd;
__be32 pfc_willing_to_pfc_en;
} dcbx_pfc_stats;
struct fw_dcbx_ets_stats_ieee {
__be32 cbs_to_ets_max_tc;
__be32 pg_table;
__u8 pg_percent[8];
__u8 tsa[8];
} dcbx_ets_stats;
struct fw_dcbx_app_stats_ieee {
__be32 num_apps_pkd;
__be32 r6;
__be32 app[4];
} dcbx_app_stats;
struct fw_dcbx_control {
__be32 multi_peer_invalidated;
__be32 r5_lo;
} dcbx_control;
} u;
};
#define S_FW_DCB_IEEE_CMD_PORT 8
#define M_FW_DCB_IEEE_CMD_PORT 0x7
#define V_FW_DCB_IEEE_CMD_PORT(x) ((x) << S_FW_DCB_IEEE_CMD_PORT)
#define G_FW_DCB_IEEE_CMD_PORT(x) \
(((x) >> S_FW_DCB_IEEE_CMD_PORT) & M_FW_DCB_IEEE_CMD_PORT)
#define S_FW_DCB_IEEE_CMD_FEATURE 2
#define M_FW_DCB_IEEE_CMD_FEATURE 0x7
#define V_FW_DCB_IEEE_CMD_FEATURE(x) ((x) << S_FW_DCB_IEEE_CMD_FEATURE)
#define G_FW_DCB_IEEE_CMD_FEATURE(x) \
(((x) >> S_FW_DCB_IEEE_CMD_FEATURE) & M_FW_DCB_IEEE_CMD_FEATURE)
#define S_FW_DCB_IEEE_CMD_LOCATION 0
#define M_FW_DCB_IEEE_CMD_LOCATION 0x3
#define V_FW_DCB_IEEE_CMD_LOCATION(x) ((x) << S_FW_DCB_IEEE_CMD_LOCATION)
#define G_FW_DCB_IEEE_CMD_LOCATION(x) \
(((x) >> S_FW_DCB_IEEE_CMD_LOCATION) & M_FW_DCB_IEEE_CMD_LOCATION)
#define S_FW_DCB_IEEE_CMD_CHANGED 20
#define M_FW_DCB_IEEE_CMD_CHANGED 0x1
#define V_FW_DCB_IEEE_CMD_CHANGED(x) ((x) << S_FW_DCB_IEEE_CMD_CHANGED)
#define G_FW_DCB_IEEE_CMD_CHANGED(x) \
(((x) >> S_FW_DCB_IEEE_CMD_CHANGED) & M_FW_DCB_IEEE_CMD_CHANGED)
#define F_FW_DCB_IEEE_CMD_CHANGED V_FW_DCB_IEEE_CMD_CHANGED(1U)
#define S_FW_DCB_IEEE_CMD_RECEIVED 19
#define M_FW_DCB_IEEE_CMD_RECEIVED 0x1
#define V_FW_DCB_IEEE_CMD_RECEIVED(x) ((x) << S_FW_DCB_IEEE_CMD_RECEIVED)
#define G_FW_DCB_IEEE_CMD_RECEIVED(x) \
(((x) >> S_FW_DCB_IEEE_CMD_RECEIVED) & M_FW_DCB_IEEE_CMD_RECEIVED)
#define F_FW_DCB_IEEE_CMD_RECEIVED V_FW_DCB_IEEE_CMD_RECEIVED(1U)
#define S_FW_DCB_IEEE_CMD_APPLY 18
#define M_FW_DCB_IEEE_CMD_APPLY 0x1
#define V_FW_DCB_IEEE_CMD_APPLY(x) ((x) << S_FW_DCB_IEEE_CMD_APPLY)
#define G_FW_DCB_IEEE_CMD_APPLY(x) \
(((x) >> S_FW_DCB_IEEE_CMD_APPLY) & M_FW_DCB_IEEE_CMD_APPLY)
#define F_FW_DCB_IEEE_CMD_APPLY V_FW_DCB_IEEE_CMD_APPLY(1U)
#define S_FW_DCB_IEEE_CMD_DISABLED 17
#define M_FW_DCB_IEEE_CMD_DISABLED 0x1
#define V_FW_DCB_IEEE_CMD_DISABLED(x) ((x) << S_FW_DCB_IEEE_CMD_DISABLED)
#define G_FW_DCB_IEEE_CMD_DISABLED(x) \
(((x) >> S_FW_DCB_IEEE_CMD_DISABLED) & M_FW_DCB_IEEE_CMD_DISABLED)
#define F_FW_DCB_IEEE_CMD_DISABLED V_FW_DCB_IEEE_CMD_DISABLED(1U)
#define S_FW_DCB_IEEE_CMD_MORE 16
#define M_FW_DCB_IEEE_CMD_MORE 0x1
#define V_FW_DCB_IEEE_CMD_MORE(x) ((x) << S_FW_DCB_IEEE_CMD_MORE)
#define G_FW_DCB_IEEE_CMD_MORE(x) \
(((x) >> S_FW_DCB_IEEE_CMD_MORE) & M_FW_DCB_IEEE_CMD_MORE)
#define F_FW_DCB_IEEE_CMD_MORE V_FW_DCB_IEEE_CMD_MORE(1U)
#define S_FW_DCB_IEEE_CMD_PFC_MBC 0
#define M_FW_DCB_IEEE_CMD_PFC_MBC 0x1
#define V_FW_DCB_IEEE_CMD_PFC_MBC(x) ((x) << S_FW_DCB_IEEE_CMD_PFC_MBC)
#define G_FW_DCB_IEEE_CMD_PFC_MBC(x) \
(((x) >> S_FW_DCB_IEEE_CMD_PFC_MBC) & M_FW_DCB_IEEE_CMD_PFC_MBC)
#define F_FW_DCB_IEEE_CMD_PFC_MBC V_FW_DCB_IEEE_CMD_PFC_MBC(1U)
#define S_FW_DCB_IEEE_CMD_PFC_WILLING 16
#define M_FW_DCB_IEEE_CMD_PFC_WILLING 0x1
#define V_FW_DCB_IEEE_CMD_PFC_WILLING(x) \
((x) << S_FW_DCB_IEEE_CMD_PFC_WILLING)
#define G_FW_DCB_IEEE_CMD_PFC_WILLING(x) \
(((x) >> S_FW_DCB_IEEE_CMD_PFC_WILLING) & M_FW_DCB_IEEE_CMD_PFC_WILLING)
#define F_FW_DCB_IEEE_CMD_PFC_WILLING V_FW_DCB_IEEE_CMD_PFC_WILLING(1U)
#define S_FW_DCB_IEEE_CMD_PFC_MAX_TC 8
#define M_FW_DCB_IEEE_CMD_PFC_MAX_TC 0xff
#define V_FW_DCB_IEEE_CMD_PFC_MAX_TC(x) ((x) << S_FW_DCB_IEEE_CMD_PFC_MAX_TC)
#define G_FW_DCB_IEEE_CMD_PFC_MAX_TC(x) \
(((x) >> S_FW_DCB_IEEE_CMD_PFC_MAX_TC) & M_FW_DCB_IEEE_CMD_PFC_MAX_TC)
#define S_FW_DCB_IEEE_CMD_PFC_EN 0
#define M_FW_DCB_IEEE_CMD_PFC_EN 0xff
#define V_FW_DCB_IEEE_CMD_PFC_EN(x) ((x) << S_FW_DCB_IEEE_CMD_PFC_EN)
#define G_FW_DCB_IEEE_CMD_PFC_EN(x) \
(((x) >> S_FW_DCB_IEEE_CMD_PFC_EN) & M_FW_DCB_IEEE_CMD_PFC_EN)
#define S_FW_DCB_IEEE_CMD_CBS 16
#define M_FW_DCB_IEEE_CMD_CBS 0x1
#define V_FW_DCB_IEEE_CMD_CBS(x) ((x) << S_FW_DCB_IEEE_CMD_CBS)
#define G_FW_DCB_IEEE_CMD_CBS(x) \
(((x) >> S_FW_DCB_IEEE_CMD_CBS) & M_FW_DCB_IEEE_CMD_CBS)
#define F_FW_DCB_IEEE_CMD_CBS V_FW_DCB_IEEE_CMD_CBS(1U)
#define S_FW_DCB_IEEE_CMD_ETS_WILLING 8
#define M_FW_DCB_IEEE_CMD_ETS_WILLING 0x1
#define V_FW_DCB_IEEE_CMD_ETS_WILLING(x) \
((x) << S_FW_DCB_IEEE_CMD_ETS_WILLING)
#define G_FW_DCB_IEEE_CMD_ETS_WILLING(x) \
(((x) >> S_FW_DCB_IEEE_CMD_ETS_WILLING) & M_FW_DCB_IEEE_CMD_ETS_WILLING)
#define F_FW_DCB_IEEE_CMD_ETS_WILLING V_FW_DCB_IEEE_CMD_ETS_WILLING(1U)
#define S_FW_DCB_IEEE_CMD_ETS_MAX_TC 0
#define M_FW_DCB_IEEE_CMD_ETS_MAX_TC 0xff
#define V_FW_DCB_IEEE_CMD_ETS_MAX_TC(x) ((x) << S_FW_DCB_IEEE_CMD_ETS_MAX_TC)
#define G_FW_DCB_IEEE_CMD_ETS_MAX_TC(x) \
(((x) >> S_FW_DCB_IEEE_CMD_ETS_MAX_TC) & M_FW_DCB_IEEE_CMD_ETS_MAX_TC)
#define S_FW_DCB_IEEE_CMD_NUM_APPS 0
#define M_FW_DCB_IEEE_CMD_NUM_APPS 0x7
#define V_FW_DCB_IEEE_CMD_NUM_APPS(x) ((x) << S_FW_DCB_IEEE_CMD_NUM_APPS)
#define G_FW_DCB_IEEE_CMD_NUM_APPS(x) \
(((x) >> S_FW_DCB_IEEE_CMD_NUM_APPS) & M_FW_DCB_IEEE_CMD_NUM_APPS)
#define S_FW_DCB_IEEE_CMD_MULTI_PEER 31
#define M_FW_DCB_IEEE_CMD_MULTI_PEER 0x1
#define V_FW_DCB_IEEE_CMD_MULTI_PEER(x) ((x) << S_FW_DCB_IEEE_CMD_MULTI_PEER)
#define G_FW_DCB_IEEE_CMD_MULTI_PEER(x) \
(((x) >> S_FW_DCB_IEEE_CMD_MULTI_PEER) & M_FW_DCB_IEEE_CMD_MULTI_PEER)
#define F_FW_DCB_IEEE_CMD_MULTI_PEER V_FW_DCB_IEEE_CMD_MULTI_PEER(1U)
#define S_FW_DCB_IEEE_CMD_INVALIDATED 30
#define M_FW_DCB_IEEE_CMD_INVALIDATED 0x1
#define V_FW_DCB_IEEE_CMD_INVALIDATED(x) \
((x) << S_FW_DCB_IEEE_CMD_INVALIDATED)
#define G_FW_DCB_IEEE_CMD_INVALIDATED(x) \
(((x) >> S_FW_DCB_IEEE_CMD_INVALIDATED) & M_FW_DCB_IEEE_CMD_INVALIDATED)
#define F_FW_DCB_IEEE_CMD_INVALIDATED V_FW_DCB_IEEE_CMD_INVALIDATED(1U)
/* Hand-written */
#define S_FW_DCB_IEEE_CMD_APP_PROTOCOL 16
#define M_FW_DCB_IEEE_CMD_APP_PROTOCOL 0xffff
#define V_FW_DCB_IEEE_CMD_APP_PROTOCOL(x) ((x) << S_FW_DCB_IEEE_CMD_APP_PROTOCOL)
#define G_FW_DCB_IEEE_CMD_APP_PROTOCOL(x) \
(((x) >> S_FW_DCB_IEEE_CMD_APP_PROTOCOL) & M_FW_DCB_IEEE_CMD_APP_PROTOCOL)
#define S_FW_DCB_IEEE_CMD_APP_SELECT 3
#define M_FW_DCB_IEEE_CMD_APP_SELECT 0x7
#define V_FW_DCB_IEEE_CMD_APP_SELECT(x) ((x) << S_FW_DCB_IEEE_CMD_APP_SELECT)
#define G_FW_DCB_IEEE_CMD_APP_SELECT(x) \
(((x) >> S_FW_DCB_IEEE_CMD_APP_SELECT) & M_FW_DCB_IEEE_CMD_APP_SELECT)
#define S_FW_DCB_IEEE_CMD_APP_PRIORITY 0
#define M_FW_DCB_IEEE_CMD_APP_PRIORITY 0x7
#define V_FW_DCB_IEEE_CMD_APP_PRIORITY(x) ((x) << S_FW_DCB_IEEE_CMD_APP_PRIORITY)
#define G_FW_DCB_IEEE_CMD_APP_PRIORITY(x) \
(((x) >> S_FW_DCB_IEEE_CMD_APP_PRIORITY) & M_FW_DCB_IEEE_CMD_APP_PRIORITY)
struct fw_error_cmd {
__be32 op_to_type;
__be32 len16_pkd;
union fw_error {
struct fw_error_exception {
__be32 info[6];
} exception;
struct fw_error_hwmodule {
__be32 regaddr;
__be32 regval;
} hwmodule;
struct fw_error_wr {
__be16 cidx;
__be16 pfn_vfn;
__be32 eqid;
__u8 wrhdr[16];
} wr;
struct fw_error_acl {
__be16 cidx;
__be16 pfn_vfn;
__be32 eqid;
__be16 mv_pkd;
__u8 val[6];
__be64 r4;
} acl;
} u;
};
#define S_FW_ERROR_CMD_FATAL 4
#define M_FW_ERROR_CMD_FATAL 0x1
#define V_FW_ERROR_CMD_FATAL(x) ((x) << S_FW_ERROR_CMD_FATAL)
#define G_FW_ERROR_CMD_FATAL(x) \
(((x) >> S_FW_ERROR_CMD_FATAL) & M_FW_ERROR_CMD_FATAL)
#define F_FW_ERROR_CMD_FATAL V_FW_ERROR_CMD_FATAL(1U)
#define S_FW_ERROR_CMD_TYPE 0
#define M_FW_ERROR_CMD_TYPE 0xf
#define V_FW_ERROR_CMD_TYPE(x) ((x) << S_FW_ERROR_CMD_TYPE)
#define G_FW_ERROR_CMD_TYPE(x) \
(((x) >> S_FW_ERROR_CMD_TYPE) & M_FW_ERROR_CMD_TYPE)
#define S_FW_ERROR_CMD_PFN 8
#define M_FW_ERROR_CMD_PFN 0x7
#define V_FW_ERROR_CMD_PFN(x) ((x) << S_FW_ERROR_CMD_PFN)
#define G_FW_ERROR_CMD_PFN(x) \
(((x) >> S_FW_ERROR_CMD_PFN) & M_FW_ERROR_CMD_PFN)
#define S_FW_ERROR_CMD_VFN 0
#define M_FW_ERROR_CMD_VFN 0xff
#define V_FW_ERROR_CMD_VFN(x) ((x) << S_FW_ERROR_CMD_VFN)
#define G_FW_ERROR_CMD_VFN(x) \
(((x) >> S_FW_ERROR_CMD_VFN) & M_FW_ERROR_CMD_VFN)
#define S_FW_ERROR_CMD_PFN 8
#define M_FW_ERROR_CMD_PFN 0x7
#define V_FW_ERROR_CMD_PFN(x) ((x) << S_FW_ERROR_CMD_PFN)
#define G_FW_ERROR_CMD_PFN(x) \
(((x) >> S_FW_ERROR_CMD_PFN) & M_FW_ERROR_CMD_PFN)
#define S_FW_ERROR_CMD_VFN 0
#define M_FW_ERROR_CMD_VFN 0xff
#define V_FW_ERROR_CMD_VFN(x) ((x) << S_FW_ERROR_CMD_VFN)
#define G_FW_ERROR_CMD_VFN(x) \
(((x) >> S_FW_ERROR_CMD_VFN) & M_FW_ERROR_CMD_VFN)
#define S_FW_ERROR_CMD_MV 15
#define M_FW_ERROR_CMD_MV 0x1
#define V_FW_ERROR_CMD_MV(x) ((x) << S_FW_ERROR_CMD_MV)
#define G_FW_ERROR_CMD_MV(x) \
(((x) >> S_FW_ERROR_CMD_MV) & M_FW_ERROR_CMD_MV)
#define F_FW_ERROR_CMD_MV V_FW_ERROR_CMD_MV(1U)
struct fw_debug_cmd {
__be32 op_type;
__be32 len16_pkd;
union fw_debug {
struct fw_debug_assert {
__be32 fcid;
__be32 line;
__be32 x;
__be32 y;
__u8 filename_0_7[8];
__u8 filename_8_15[8];
__be64 r3;
} assert;
struct fw_debug_prt {
__be16 dprtstridx;
__be16 r3[3];
__be32 dprtstrparam0;
__be32 dprtstrparam1;
__be32 dprtstrparam2;
__be32 dprtstrparam3;
} prt;
} u;
};
#define S_FW_DEBUG_CMD_TYPE 0
#define M_FW_DEBUG_CMD_TYPE 0xff
#define V_FW_DEBUG_CMD_TYPE(x) ((x) << S_FW_DEBUG_CMD_TYPE)
#define G_FW_DEBUG_CMD_TYPE(x) \
(((x) >> S_FW_DEBUG_CMD_TYPE) & M_FW_DEBUG_CMD_TYPE)
/******************************************************************************
* P C I E F W R E G I S T E R
**************************************/
enum pcie_fw_eval {
PCIE_FW_EVAL_CRASH = 0,
PCIE_FW_EVAL_PREP = 1,
PCIE_FW_EVAL_CONF = 2,
PCIE_FW_EVAL_INIT = 3,
PCIE_FW_EVAL_UNEXPECTEDEVENT = 4,
PCIE_FW_EVAL_OVERHEAT = 5,
PCIE_FW_EVAL_DEVICESHUTDOWN = 6,
};
/**
* Register definitions for the PCIE_FW register which the firmware uses
* to retain status across RESETs. This register should be considered
* as a READ-ONLY register for Host Software and only to be used to
* track firmware initialization/error state, etc.
*/
#define S_PCIE_FW_ERR 31
#define M_PCIE_FW_ERR 0x1
#define V_PCIE_FW_ERR(x) ((x) << S_PCIE_FW_ERR)
#define G_PCIE_FW_ERR(x) (((x) >> S_PCIE_FW_ERR) & M_PCIE_FW_ERR)
#define F_PCIE_FW_ERR V_PCIE_FW_ERR(1U)
#define S_PCIE_FW_INIT 30
#define M_PCIE_FW_INIT 0x1
#define V_PCIE_FW_INIT(x) ((x) << S_PCIE_FW_INIT)
#define G_PCIE_FW_INIT(x) (((x) >> S_PCIE_FW_INIT) & M_PCIE_FW_INIT)
#define F_PCIE_FW_INIT V_PCIE_FW_INIT(1U)
#define S_PCIE_FW_HALT 29
#define M_PCIE_FW_HALT 0x1
#define V_PCIE_FW_HALT(x) ((x) << S_PCIE_FW_HALT)
#define G_PCIE_FW_HALT(x) (((x) >> S_PCIE_FW_HALT) & M_PCIE_FW_HALT)
#define F_PCIE_FW_HALT V_PCIE_FW_HALT(1U)
#define S_PCIE_FW_EVAL 24
#define M_PCIE_FW_EVAL 0x7
#define V_PCIE_FW_EVAL(x) ((x) << S_PCIE_FW_EVAL)
#define G_PCIE_FW_EVAL(x) (((x) >> S_PCIE_FW_EVAL) & M_PCIE_FW_EVAL)
#define S_PCIE_FW_STAGE 21
#define M_PCIE_FW_STAGE 0x7
#define V_PCIE_FW_STAGE(x) ((x) << S_PCIE_FW_STAGE)
#define G_PCIE_FW_STAGE(x) (((x) >> S_PCIE_FW_STAGE) & M_PCIE_FW_STAGE)
#define S_PCIE_FW_ASYNCNOT_VLD 20
#define M_PCIE_FW_ASYNCNOT_VLD 0x1
#define V_PCIE_FW_ASYNCNOT_VLD(x) \
((x) << S_PCIE_FW_ASYNCNOT_VLD)
#define G_PCIE_FW_ASYNCNOT_VLD(x) \
(((x) >> S_PCIE_FW_ASYNCNOT_VLD) & M_PCIE_FW_ASYNCNOT_VLD)
#define F_PCIE_FW_ASYNCNOT_VLD V_PCIE_FW_ASYNCNOT_VLD(1U)
#define S_PCIE_FW_ASYNCNOTINT 19
#define M_PCIE_FW_ASYNCNOTINT 0x1
#define V_PCIE_FW_ASYNCNOTINT(x) \
((x) << S_PCIE_FW_ASYNCNOTINT)
#define G_PCIE_FW_ASYNCNOTINT(x) \
(((x) >> S_PCIE_FW_ASYNCNOTINT) & M_PCIE_FW_ASYNCNOTINT)
#define F_PCIE_FW_ASYNCNOTINT V_PCIE_FW_ASYNCNOTINT(1U)
#define S_PCIE_FW_ASYNCNOT 16
#define M_PCIE_FW_ASYNCNOT 0x7
#define V_PCIE_FW_ASYNCNOT(x) ((x) << S_PCIE_FW_ASYNCNOT)
#define G_PCIE_FW_ASYNCNOT(x) \
(((x) >> S_PCIE_FW_ASYNCNOT) & M_PCIE_FW_ASYNCNOT)
#define S_PCIE_FW_MASTER_VLD 15
#define M_PCIE_FW_MASTER_VLD 0x1
#define V_PCIE_FW_MASTER_VLD(x) ((x) << S_PCIE_FW_MASTER_VLD)
#define G_PCIE_FW_MASTER_VLD(x) \
(((x) >> S_PCIE_FW_MASTER_VLD) & M_PCIE_FW_MASTER_VLD)
#define F_PCIE_FW_MASTER_VLD V_PCIE_FW_MASTER_VLD(1U)
#define S_PCIE_FW_MASTER 12
#define M_PCIE_FW_MASTER 0x7
#define V_PCIE_FW_MASTER(x) ((x) << S_PCIE_FW_MASTER)
#define G_PCIE_FW_MASTER(x) (((x) >> S_PCIE_FW_MASTER) & M_PCIE_FW_MASTER)
#define S_PCIE_FW_RESET_VLD 11
#define M_PCIE_FW_RESET_VLD 0x1
#define V_PCIE_FW_RESET_VLD(x) ((x) << S_PCIE_FW_RESET_VLD)
#define G_PCIE_FW_RESET_VLD(x) \
(((x) >> S_PCIE_FW_RESET_VLD) & M_PCIE_FW_RESET_VLD)
#define F_PCIE_FW_RESET_VLD V_PCIE_FW_RESET_VLD(1U)
#define S_PCIE_FW_RESET 8
#define M_PCIE_FW_RESET 0x7
#define V_PCIE_FW_RESET(x) ((x) << S_PCIE_FW_RESET)
#define G_PCIE_FW_RESET(x) \
(((x) >> S_PCIE_FW_RESET) & M_PCIE_FW_RESET)
#define S_PCIE_FW_REGISTERED 0
#define M_PCIE_FW_REGISTERED 0xff
#define V_PCIE_FW_REGISTERED(x) ((x) << S_PCIE_FW_REGISTERED)
#define G_PCIE_FW_REGISTERED(x) \
(((x) >> S_PCIE_FW_REGISTERED) & M_PCIE_FW_REGISTERED)
/******************************************************************************
* P C I E F W P F 0 R E G I S T E R
**********************************************/
/*
* this register is available as 32-bit of persistent storage (across
* PL_RST based chip-reset) for boot drivers (i.e. firmware and driver
* will not write it)
*/
/******************************************************************************
* P C I E F W P F 7 R E G I S T E R
**********************************************/
/*
* PF7 stores the Firmware Device Log parameters which allows Host Drivers to
* access the "devlog" which needing to contact firmware. The encoding is
* mostly the same as that returned by the DEVLOG command except for the size
* which is encoded as the number of entries in multiples-1 of 128 here rather
* than the memory size as is done in the DEVLOG command. Thus, 0 means 128
* and 15 means 2048. This of course in turn constrains the allowed values
* for the devlog size ...
*/
#define PCIE_FW_PF_DEVLOG 7
#define S_PCIE_FW_PF_DEVLOG_NENTRIES128 28
#define M_PCIE_FW_PF_DEVLOG_NENTRIES128 0xf
#define V_PCIE_FW_PF_DEVLOG_NENTRIES128(x) \
((x) << S_PCIE_FW_PF_DEVLOG_NENTRIES128)
#define G_PCIE_FW_PF_DEVLOG_NENTRIES128(x) \
(((x) >> S_PCIE_FW_PF_DEVLOG_NENTRIES128) & \
M_PCIE_FW_PF_DEVLOG_NENTRIES128)
#define S_PCIE_FW_PF_DEVLOG_ADDR16 4
#define M_PCIE_FW_PF_DEVLOG_ADDR16 0xffffff
#define V_PCIE_FW_PF_DEVLOG_ADDR16(x) ((x) << S_PCIE_FW_PF_DEVLOG_ADDR16)
#define G_PCIE_FW_PF_DEVLOG_ADDR16(x) \
(((x) >> S_PCIE_FW_PF_DEVLOG_ADDR16) & M_PCIE_FW_PF_DEVLOG_ADDR16)
#define S_PCIE_FW_PF_DEVLOG_MEMTYPE 0
#define M_PCIE_FW_PF_DEVLOG_MEMTYPE 0xf
#define V_PCIE_FW_PF_DEVLOG_MEMTYPE(x) ((x) << S_PCIE_FW_PF_DEVLOG_MEMTYPE)
#define G_PCIE_FW_PF_DEVLOG_MEMTYPE(x) \
(((x) >> S_PCIE_FW_PF_DEVLOG_MEMTYPE) & M_PCIE_FW_PF_DEVLOG_MEMTYPE)
/******************************************************************************
* B I N A R Y H E A D E R F O R M A T
**********************************************/
/*
* firmware binary header format
*/
struct fw_hdr {
__u8 ver;
__u8 chip; /* terminator chip family */
__be16 len512; /* bin length in units of 512-bytes */
__be32 fw_ver; /* firmware version */
__be32 tp_microcode_ver; /* tcp processor microcode version */
__u8 intfver_nic;
__u8 intfver_vnic;
__u8 intfver_ofld;
__u8 intfver_ri;
__u8 intfver_iscsipdu;
__u8 intfver_iscsi;
__u8 intfver_fcoepdu;
__u8 intfver_fcoe;
__u32 reserved2;
__u32 reserved3;
__be32 magic; /* runtime or bootstrap fw */
__be32 flags;
__be32 reserved6[23];
};
enum fw_hdr_chip {
FW_HDR_CHIP_T4,
FW_HDR_CHIP_T5,
FW_HDR_CHIP_T6
};
#define S_FW_HDR_FW_VER_MAJOR 24
#define M_FW_HDR_FW_VER_MAJOR 0xff
#define V_FW_HDR_FW_VER_MAJOR(x) \
((x) << S_FW_HDR_FW_VER_MAJOR)
#define G_FW_HDR_FW_VER_MAJOR(x) \
(((x) >> S_FW_HDR_FW_VER_MAJOR) & M_FW_HDR_FW_VER_MAJOR)
#define S_FW_HDR_FW_VER_MINOR 16
#define M_FW_HDR_FW_VER_MINOR 0xff
#define V_FW_HDR_FW_VER_MINOR(x) \
((x) << S_FW_HDR_FW_VER_MINOR)
#define G_FW_HDR_FW_VER_MINOR(x) \
(((x) >> S_FW_HDR_FW_VER_MINOR) & M_FW_HDR_FW_VER_MINOR)
#define S_FW_HDR_FW_VER_MICRO 8
#define M_FW_HDR_FW_VER_MICRO 0xff
#define V_FW_HDR_FW_VER_MICRO(x) \
((x) << S_FW_HDR_FW_VER_MICRO)
#define G_FW_HDR_FW_VER_MICRO(x) \
(((x) >> S_FW_HDR_FW_VER_MICRO) & M_FW_HDR_FW_VER_MICRO)
#define S_FW_HDR_FW_VER_BUILD 0
#define M_FW_HDR_FW_VER_BUILD 0xff
#define V_FW_HDR_FW_VER_BUILD(x) \
((x) << S_FW_HDR_FW_VER_BUILD)
#define G_FW_HDR_FW_VER_BUILD(x) \
(((x) >> S_FW_HDR_FW_VER_BUILD) & M_FW_HDR_FW_VER_BUILD)
enum {
T4FW_VERSION_MAJOR = 0x01,
T4FW_VERSION_MINOR = 0x05,
- T4FW_VERSION_MICRO = 0x1c,
+ T4FW_VERSION_MICRO = 0x25,
T4FW_VERSION_BUILD = 0x00,
T5FW_VERSION_MAJOR = 0x01,
T5FW_VERSION_MINOR = 0x05,
- T5FW_VERSION_MICRO = 0x1c,
+ T5FW_VERSION_MICRO = 0x25,
T5FW_VERSION_BUILD = 0x00,
};
enum {
/* T4
*/
T4FW_HDR_INTFVER_NIC = 0x00,
T4FW_HDR_INTFVER_VNIC = 0x00,
T4FW_HDR_INTFVER_OFLD = 0x00,
T4FW_HDR_INTFVER_RI = 0x00,
T4FW_HDR_INTFVER_ISCSIPDU= 0x00,
T4FW_HDR_INTFVER_ISCSI = 0x00,
T4FW_HDR_INTFVER_FCOEPDU = 0x00,
T4FW_HDR_INTFVER_FCOE = 0x00,
/* T5
*/
T5FW_HDR_INTFVER_NIC = 0x00,
T5FW_HDR_INTFVER_VNIC = 0x00,
T5FW_HDR_INTFVER_OFLD = 0x00,
T5FW_HDR_INTFVER_RI = 0x00,
T5FW_HDR_INTFVER_ISCSIPDU= 0x00,
T5FW_HDR_INTFVER_ISCSI = 0x00,
T5FW_HDR_INTFVER_FCOEPDU= 0x00,
T5FW_HDR_INTFVER_FCOE = 0x00,
/* T6
*/
T6FW_HDR_INTFVER_NIC = 0x00,
T6FW_HDR_INTFVER_VNIC = 0x00,
T6FW_HDR_INTFVER_OFLD = 0x00,
T6FW_HDR_INTFVER_RI = 0x00,
T6FW_HDR_INTFVER_ISCSIPDU= 0x00,
T6FW_HDR_INTFVER_ISCSI = 0x00,
T6FW_HDR_INTFVER_FCOEPDU= 0x00,
T6FW_HDR_INTFVER_FCOE = 0x00,
};
enum {
FW_HDR_MAGIC_RUNTIME = 0x00000000,
FW_HDR_MAGIC_BOOTSTRAP = 0x626f6f74,
};
enum fw_hdr_flags {
FW_HDR_FLAGS_RESET_HALT = 0x00000001,
};
/*
* External PHY firmware binary header format
*/
struct fw_ephy_hdr {
__u8 ver;
__u8 reserved;
__be16 len512; /* bin length in units of 512-bytes */
__be32 magic;
__be16 vendor_id;
__be16 device_id;
__be32 version;
__be32 reserved1[4];
};
enum {
FW_EPHY_HDR_MAGIC = 0x65706879,
};
#endif /* _T4FW_INTERFACE_H_ */
Index: user/ngie/bsnmp_cleanup/sys/dev/cxgbe/firmware/t5fw-1.15.37.0.bin.uu
===================================================================
--- user/ngie/bsnmp_cleanup/sys/dev/cxgbe/firmware/t5fw-1.15.37.0.bin.uu (nonexistent)
+++ user/ngie/bsnmp_cleanup/sys/dev/cxgbe/firmware/t5fw-1.15.37.0.bin.uu (revision 299697)
@@ -0,0 +1,10501 @@
+/*-
+ * Copyright (c) 2016 Chelsio Communications, Inc.
+ * 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.
+ */
+begin-base64 644 t5fw
+AAEEjgEPJQAAAQQJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAABG8EfgSHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAENoZWxzaW8gRlcgUlVOTUVNIERFQlVHPTAgKEJ1aWx0IFRodSBBcHIgMjEgMDc6
+MjM6NTAgUERUIDIwMTYgb24gdm5jNC5hc2ljZGVzaWduZXJzLmNvbTovaG9tZS9maXJtd2FyZS9j
+dnMvZnctcmVsZWFzZSksIFZlcnNpb24gVDV4eCAwMS4wZi4yNS4wMAAAAAAAAAAAAAAAAIi7Dzlg
+AMgAH/zhSOEAe/AAEAAA4QAwuHj///8f/OFAgAAAAeEAe3AAABAAH//89CAAAADhAZwE4QUAAAAC
+AEDhBQgAAAYAQAACAAwABgAM4QUABAAMAACAAAEC4QB7POEAe0ThAHvk4gAAAAABAADhAHuQIAAA
+AAAAgADhAHsAAABAAeEAe5wAAEAAREREQuAAAADjAARzREREQOMACAAgAAJcAAAAAB//k8AAAAAA
+H/+TxAAAAAAf/5PIAAAAAB//k8wf/8AAAAAAAAAAAADAABH/zSIKh5IQghAS/8wT/8yTIBL/zBP/
+zIQgBDMBkyAR/8oS/8uSEBH/yhL/y5IQEf/KAfQxAOQxAAUxAQIAEv/IAucxAhYAEf/GgRABAV/A
+IQIRAckTEf/EEv/EkhAR/8QS/8SSEGAAEQAAEf++Ev/CkhAR/74S/8GSEIEQEf/AwCCSERL/v5IS
+wCCSExL/vpIQghAC8lBlL/cR/7zHL5IQEf+7khAS/7sT/7uTIMAykyET/7qTIoIiEv+5E/+5kyAj
+IiEU/7gEMwHJOBP/t4MwA4MUCDMRFP+1pDOTIRP/qZMiYAAIwjCTIRP/ppMiEv+wkCCQIZAikCOQ
+JJAlkCaQJ5AokCmQKpArkCyQLZAukC8gJhAgJhGCIhL/o8AwLTcwLTc0LTc4LTc8Iz0BcjPtAAIA
+Ev+gIwoALzcALzcQLzcgLzcwIz0BcjPtAAIAEv+VwDAoNzAoNzQoNzgoNzwjPQFyM+0S/5TAMCc3
+ACc3ECc3ICc3MCM9AXIz7RL/jxX/jxb/j8Aw1yAFZgFgABQAAAQ2BQACANMP0w8FMwxuOxQHRxQH
+BEN2MeYENgUFMwxvO+0AAgAS/4MV/4EjCgACJwIHBEMEPgUFMwwHRxRvO/ADAgAS/33JLoMghCGF
+IrwidDsOhlC0VZYwtDN0M/Rj/+YAZT/iZV/fEv9xwDIDLgUDAgAS/2jAMCg3QCg3RCg3SCg3TCM9
+AXIz7QACABL/ay0nAMARAUkxAEgxAQIAwAAU/2gE0jEV/2eUUBT/ZwTTMRX/ZpRQFP9mBNQxFf9m
+lFAU/2UE1TEV/2WUUBD/ZQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/AAA
+H/wAAOMACfgf/AAAH/wAAOMACfgf/AAAH/wAAOMACfgf/4AAH/+KAOMACfgf/4oAH/+KAOMAE/gf
+/4oAH/+KAOMAE/gf/4oAH/+L2OMAE/gf/4vYH/+TtOMAFdAf/5PAH/+1POMAHbgf/7U8H/+1POMA
+PzQf/8AAH//94eMAPzQgAAAAIAABauMAfRggAAF4IAABfOMAfoQgAAF8IAABheMAfoggAAGYIAAB
+nOMAfpQgAAGcIAABpeMAfpggAAG4IAABvOMAfqQgAAG8IAABxeMAfqggAAHYIAAB2OMAfrQgAAHc
+IAAB4uMAfrQgAAH4IAAB+OMAfrwgAAH8IAAB/OMAfrwgAAIYIAACGOMAfrwgAAIcIAACHOMAfrwg
+AAI4IAACOOMAfrwgAAI8IAACPOMAfrwgAAJYIAACWOMAfrwgAAJcIAACYuMAfrwgAAJ4IAACeOMA
+fsQgAAJ8IAACguMAfsQgAAKYIAH6QeMAfswgAwAAIAMXYOMCdnggAxdgIAMXYOMCjdggAxdgIAdc
+HOMCjdggB1wgIAdfgOMG0pggCAAAIAgWEOMG1fggCBYQIAlDMuMG7AggCUNAIAlEwOMIGTggCwAA
+IAsAAOMIGrggCwAAIAsAAOMIGrggCwAAIAvBqOMIGrgAAAAAAAAAAAAAAAAgADcOIAA3ACAAOuog
+ADcAIAA6ZSAANwAgADeyIAA5/SAAOYIgADcAIAA5MSAAOOogADh9IAA27SAAOCcgADcAIAA3ACAA
+NwAgADfSAAAAAP///////w/8///w////APwgAMDzIADCLyAAwmAgAMInIADB7SAAweYgAMGvIADB
+pyAAwZ8gAMFSIADCXiAAwUogAMEmIADCYCAAwR8AAAAAARAYAQAEAAAAAAAAAAAAAAAAAAoAAAAK
+AAAAFAAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEA
+AQACAAMABAAFAAYABwAIAAkACgAOABEAFQAZAB4AIwAtADwAUABkAMgBLAGQAfQAAAAAAAAAAAAA
+AAAAAAAAAAAAAQABAAIAAgADAAMAAwADAAQABAAEAAQABAAFAAUABQAFAAUABQAGAAYABwAHAAAA
+AgAAAAYAAAAKAAAADgAAABQAAAAcAAAAKAAAADgAAABQAAAAcAAAAKAAAADgAAABQAAAAcAAAAKA
+AAADgAAABQEAAAcAAAAKAAAADgAAABQAAAAcAAAAKAAAADgAAABQAAAAcAAAAKAAAADgAAABQAAA
+AcAAAAKAAAADgAD/AAECAgAAAAAAAAAAAAAAIAikoyAIpPAgCKRDIAikDiAIpPAgCKMvIAijLyAI
+pPAgCKTwIAijLyAIpPAgCKTwIAijLCAIoy8gCKLdIAik8CAIpPAgCKTwIAik8CAIpPAgCKTwIAik
+8CAIpPAgCKTwIAik8CAIpPAgCKTwIAik8CAIpPAgCKTwIAik8CAIowcgAwugAAAAASADC6gAAAAC
+IAMQGAAAAP8gAwkgAAAA/yADC4wAAAACIAMLkAAAAAMgAwuYAAAABwAAAAAAAAAAIAMLcAAAAAEg
+Awt0AAAAAiADC3wAAAAEIAMQGAAAAP8gAwkgAAAA/wAAAAAAAAAAIAMJIAAAAAAgAxAYAAAAACAD
+ClAAAAABIAMKWAAAAAQgAwpgAAAACCADCmwAAAAgIAMKfAAAAEAgAwqEAAAAgCADCowAAAEAIAMK
+lAAAAgAgAwqoAAAEACADCrwAAAgAIAMK1AAAEAAgAwroAAAgACADCvgAAEAAIAMLBAAAgAAgAwsY
+AAEAACADCygAAgAAIAMLOAAQAAAgAwtQACAAACADC2gAQAAAAAAAAAAAAAAIBAIAAAAAAAAAAAAA
+AAAAIAMKPAAAABAgAwpEAAAAESADCiQAAAAAIAMKKAAAAAEgAwosAAAAAiADCjQAAAADAAAAAAAA
+//8AAAAAAAD//yADCaQAAAEAIAMJsAAAAIAgAwnAAAAAQCADCdAAAAAgIAMJ4AAAABAgAwnwAAAA
+CCADCfwAAAAEIAMKCAAAAAIgAwoUAAAAAQAAAAAAAAAAIAkpiCAJKUIgCSl+IAkpfiAJKUIgCSlC
+IAkpiCAJKYggCSlCIAkpiCAJKUIgCSmIIAkpfiAJKUIgCSlCIAkpQiAJKUIgCSlCIAkpiCAJKUIg
+CSlCIAkpQiAJKUIgCSlCIAkpiCAJKYggCSmIIAkpiCAJKYggCSmIIAkpiCAJKYggCSlCIAkpQiAJ
+KUIgCSlCIAkpQiAJKUIgCSlCIAkpQiAJKUIgCSlCIAkpQiAJKUIgCSlCIAkpQiAJKUIgCSlCAAIC
+BQUICAsLDg4RERQUFxcaGh0dICAjIyYmKSksLC8vMjI1NTg4OzsAAAAAAAAAAQMREQgIEAkDAQAA
+AAAAACAE1NAgAbikIABaKCABlxwgAbVoIAGxACABfCAgA/90H//AMB//6PwgAMMYH//b3CAAgYQg
+AHQIAAAAAAAAAAAgAZi4IACgAAAAAAAAAAAAH//VlB//x2gf/8T8H//DECAAcBAgAGjIIABnSCAA
+uKgf/+PEIAcisAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAb90IAGp
+WCAAy1QgAMp4H//vgB//0Ggf/80QIACd0CAFaaggATkIIAEbLCABAwggAPfgIADp2CAA4AggAM1w
+IATXOCAEHCggAS7YIAQ/UCAB58wgAIFAAAAAACAAy7QgBd2oIADAWCABn9QgABIgIAC0ACAADVgg
+A1tcH//ysCAAy3AgBB7AAAAAAAAAAAAgA3vcIABMACAAQmggAEr4AAAAACAAVeAgAFP8IABRsAAA
+AAAgAFnoIAEyiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAV4AgBNRwIABM
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAFkoIAOSTCAAWDgAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAQAAAAEAAAACAsAAAAgAxSgCAAAACADFKwIAAAAIAMUuAoAAAAgAxTEDAAAACAD
+FNASAAAAIAMU4A0AAAAgAxT0DgAAACADFQQTAAAAIAMVFAoAAAAgAxUoDgAAACADFTQYAAAAIAMV
+RA0AAAAgAxVgDgAAACADFXAQAAAAIAMVgBIAAAAgAxWUDgAAACADFagQAAAAIAMVuBEAAAAgAxXM
+CgAAACADFeALAAAAIAMV7A0AAAAgAxX4FAAAACADFggKAAAAIAMWIA8AAAAgAxYsBgAAACADFjwG
+AAAAIAMWRAYAAAAgAxZMBgAAACADFlQGAAAAIAMWXAkAAAAgAxZkBgAAACADFnAEAAAAIAMWeAYA
+AAAgAxaACwAAACADFogLAAAAIAMWlAQAAAAgAxZ4BAAAACADFqAJAAAAIAMWqAkAAAAgAxa0AAAA
+AAAAAAANAAAAIAMWwAoAAAAgAxbQBgAAACADFtwCAAAAIAMW5AMAAAAgAw/sAQAAACADFugAAAAA
+AAAAANdqpHjox7dWJCBw28G9zu71fA+vR4fGKqgwRhP9RpUBaYCY2ItE96///1uxiVzXvmuQESL9
+mHGTpnlDjkm0CCH2HiViwECzQCZeWlHptseq1i8QXQJEFFPYoeaB59P7yCHhzebDNwfW9NUNh0Va
+FO2p4+kF/O+j+GdvAtmNKkyK//o5Qodx9oFtnWEi/eU4DKS+6kRL3s+p9rtLYL6/vHAom37G6qEn
++tTvMIUEiB0F2dTQOebbmeUfonz4xKxWZfQpIkRDKv+Xq5Qjp/yToDllW1nDjwzMkv/v9H2FhF3R
+b6h+T/4s5uCjAUMUTggRofdTfoK9OvI1KtfSu+uG05EHDBEWBwwRFgcMERYHDBEWBQkOFAUJDhQF
+CQ4UBQkOFAQLEBcECxAXBAsQFwQLEBcGCg8VBgoPFQYKDxUGCg8VH//AAAAEACAgB1+AIAdjQB/8
+4gAf/610H/+xwB//rQSBgAAAgQAAAAQAAAgP////H/+w0AOAAAAf/7DAAP/4AAEAAAAAEAAAgQQB
+AIEEAAABBAAAAQQBAAAH//+AAAAAKgAAAB//hPAGAAAAH//P8CAEWdACAAAAgBAAAIAAAAVBQAAA
+QUABAIMAAAEf/5lcIAMN/AwAAAD//7//v////x//lBD//wAA//8A//AAAAD/f///H/zi5ABAAAAf
+/6lUAAEAAAAA//8f/5TA///QJB//Zzwf/ODoIAddXP//wOAf/2bwH/9nlB/83gAf/64oH/+fhAAA
+CHjg//4A4QGSAB//mfAA////H/+uPB//neQEQQAIBAEACMAAAADABAAApQAAADAAAAAf/5xo4QP+
+AOEEbgAAAIWEAACFgCALdwAgC3fAIAt3QCALd4Af/67AAAAckAAA/4AgB1/QIAddTCALeADhAC4A
+H/+utB//qcQf/6+AH/+q8AAAFuAf/65w4AAAoOEAMLgAAIAA4QBgEAAAQADhAwgA4QNIAOEDiADh
+A8gA4QAQCB/84UDhAHtwH/+0/B//tPQf/OAIH/+0+B//tRQf/7UMH/+1EB//tSwf/7UkH/+1KB/8
+4gAf/60EH/+qyB//neQgAc/sH/+vjAAA/4AAAB1wH/+UEB//sNCBgAAABAAACIKAAACBAAAAIAMN
+8AwAAAAf/5nsH/+Z3B//n3z//7//v////wQBAAjDAAAAH/+xwB//rXQf/7DAIAsDYAAPQkAgAwvo
+IAuCcCADC8ggAB8YIAsC0CAAFHAgCwOQIAsCoCALAwAgCwMwIANNcCADC/gQAAAAAoAAAO4AAAAg
+C4KgAAALAAAAYAAAYAAAYAAAAAAAht0gCwPAIAAmTCoAAAAgAEPwIAsEMCADV5AgCwRgIAsEoCAL
+BNAgABkkIAMMCCALBVADYAAAIAuCwCALBdAf/6+YH/+vlB//r/ggCwhwBQAAAIP/AAAAEAAAIAAt
+TCADDUgf/4lAH/+E8B//hvRnRSMB782riZi63P4QMlR2H/+AAAAAPyggAw/sz////yALCWA/////
+AgAAAEAAAAD//3//IAsKgCAARmggCwqwIAsLIAgAAAAA////IAsLkPf///8gCw4A//7//yALGzCA
+AAAAAABAACADDfQAAP//AACAACALHAAgCxyAIAscwCALHRAgCxxQ//v//w/2gAAgCyFwIAshoAAB
+AAAABAAAIAuKQB//rhAgAFXgIABXPCAAU/wgCyIwIABRsCALIsAgCyMQIAsjoOAAAAAgCyQgIAsj
+4FMAAAAgCyRAUgAAACALJIBRAAAAIAHw8B//quwgCycQIAsncCALJ0AgCynwH/+uPCALKkAf/53s
+H/+t6CALLAAUAAAAgAAAAngAAACAAAAGgAAABQAACgCAALAAAOMwkv//8ACAALEA4QGaAAACAAAg
+CyvAH/+bZAAAfkAf/64gAP/AAAEAAAAoAAAAJgAAACALLHAf/7B0H/+qgCALLRAFgAAABgAAAB//
+qkQrAAAAIABrWB/83gAf/6vcNQAAAAOAAAADQAAAB////wA///+AQAAACA///x////8gAAAAAADA
+AB//rgQ9AAAAH/+spAcAAACBBAEAgQQAAB//rEAAADqYAAAP/wBDAAAAAAgABAAAACALkDAf/7Hg
+H/+0cB//mVzhAHoAIGAAAB//rHQf/530H/+d6CALkGAAAweAIAuQ0B//m8gAIAAAAEAAAAAACQAA
+ADAA//z4f8AAAACj/7sAo/+6AA0AAADgAwAAg/+2AA////8P//gA/wAAAA///gEgC5EQIAsu4CAL
+LxAgC5GgAA8AAAAKAAD//wAPH/+d/B//rgwD/8AAg//AACALkiAgC5KQH/+u6B//slAf/7Iw/2Dw
+AB//gFAf/5PQBIAACABEAAD/H///AMAAAAGAwgAAAIEA/7//////AAAAgAAAAAAJfB/84gwPAAAA
+IAsvUB//roQAAAh8H/+vhB//n9gf/5nYH/+AYCAHXaAAACcQH//bECALmUAf/67kH/+d3N6tvu8g
+AwjQNAAAAD8AAAAf/69UH/+xmACZAAAAAIkGEAAHAgHAgACZAAAAH/+yVACIAAiCgAABH/+x6B//
+r9wADwP/AxEAAAMVAAAgCzPgH/+t8CALmZAgCzRAIAs0kCALNSAgCzQQIADyuCALNPAgCzbAIAs2
+8CALN0AgCzegIAD4KCkAAAAAAIkUIAD+WCALmgAgC5pgIAEH6B//sPTw8PDw/wD/AKqqqqrMzMzM
+H/+0YAAAIFAf/7JoAAP//wAAJ/8gARAEIAua0CAERnAf/65oH/+uxAAJAAAAACAAAABIAIIAAAAg
+ATKQIAubQCAAKOwgC6AAIAugMCALPmAgCz4wIAs+cCALPtAgCz9QIAs+oCALPvAgCz8gIAtA8CAL
+QUAgC55AIAueYCALQXAgC0HAIAufACALnyAgC0EgIAufUCALnpAgC57AIAtB8CALodAgC6JgIAuh
+ACALoRAgC6CQIAuhcCALoNAgC6CgIAuhUCALoeAgC6GgIAuiIDsAAAgOAAAA0AAAAB//gKAAAB+K
+H/zi5AAACFAAAB9AIAtEcCALRJAgC0SwAAkACB//sVwwAAAA///3/yALRwAgBEwsAACD/yAHYYgg
+B2KAFaAAAB//sagf/64UAAAIBgAAD/4AAIjMfwAAAPAAAAAgC6bgIAumQCALpqAgC6VgIAul8AAA
+4AAgC6KQIAujQCALpcAf/5t8AAQD/woAAAAf/7CEMwAAAOEAAAAf/7KkA//gAH///wAAAP/+AD/2
+kB//sbAAAB+YA//wACALjTAgC4zwIAuNUB//s7AgC0dwH/+rLBoAAAAgC0fAIAGPDB//sawf/6yA
+AA///x//sWAf/6xYH/+vHB//riQgC6dAH/+t2B//qpgf/6yMIAddSB//qRAgC0qwwAQAAB//rJgf
+/7IgH/+xiCALqFAgC0rwH/+sEOABAAAf/5+AIAupkCALSzAgAL0oH/+feCAAuhggC6kQIAupYB//
+m5wgC00wH/+fhCALWeDg//4AIAt/wB//lcwgC2YwIAtmwCAHX9AgC2lwIAtpoEgAAAAgAciQH/+r
+7CABypAf/6nEH/+aTB//rLQf/6oMAAAXsAAAFfwf/6ywIAdfvB//qnThAF4AH/+rlABNNaAAAEi5
+H/+Z8OEALgAf/6y84QMGAOEADgDgBQAAA/8AAB//qhQgAw38H/y//zwAAAAAB///gwAAAB//qcwg
+AeyYIAt+QB//rvTgBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgYAAAAAAAAD/////////
+////////////H//8FB///BQf//vYH//72B//+9gf//vYH//0IB//+JAf//a4H//2uB//9rggBySY
+AAAAAAAAAAAAAAAAAAAAACAHJwggBycIAAAAAAAAAAAAAAAAAAAAACAHJJggBySYH//5jB//+Ywf
+//mMH//5jB//+Ywf//mMAAAAACAB0QwAAAAAAAAAAAAAAAAAAAAAAgEAAAAAAAAAAAAAAAAAAAQA
+AAAAAAAAgYAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAKABHyfxPy
+f9MPA+YxAQIAFvJ9F/J+d2sGkGC0Zndj+FQPC1Xm0A8UAGP/+QAAAGwQCIoiKCAHiTD7Cv8oIAFA
+MPWhYmkAAUwwKiAWmRP4FgQgMgRasPS1GgIAAFCwWDybiBT0omhg/xBYMBryaRnyaSyiSvmSfyFX
+ADcgJqJJCWYB+WwAAVEANaAd8mMt0IAMhxH/8mIWACBV8PxyOiBuAmtwDU0UpN3/jwoABgJrcP/y
+lyoAhe8QLnI5/+YBDgCAf5AoIBaZEvoK7SAuBFowKTAQ+zELJgDOVlC8uwIqAlg8miggFCwgBKSI
++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
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIANdXiADXTYgA11NIANdTSADXU0gA11NIANdTSADXU0g
+A1+RIANfUiADXU0gA11NIANdTSADXU0gA11NIANdTSADXr4gA15LIANdsSADXZogA12LIANdewAA
+AAAAAAAAARAYAQABAAAAAAAAAAAAACAEP3ogBD/dIAQ/ZyAEP90gBD9nIAQ/3SAEP34gBD9+IAQ/
+xSAEP60gBD+VAAAAACAESKogBEiqIARGtiAESKogBEa2IARIhyAESF8gBEa2IARHkSAERrYgBEa2
+IARHiCAERrYgBEiqIARGtiAERrYgBEiqIARGwwMBAAIAAAAAIATKECAEy7QgBMzbIATKECAEzNMg
+BMy+IATKECAEyhAgBMoQIATKECAEyhAgBMoQIATKECAEyhAgBMoQIATKECAEzLEgBMykIATKECAE
+yhAgBMoQIATKECAEyhAgBMoQIATKECAEyhAgBMoQIATKECAEyhAgBMoQIATKECAEyhAgBMueIATK
+ECAEy5ggBMuYIATKECAEy5ggBMuYIATMhyAEy5gAAAAAAAAAAAAAAAAgBOx4IATseCAE69ogBOx4
+IATo3SAE7HAgBOxQIATo3SAE6N0gBOjdIATo3SAE6N0gBOu+IATseCAE6N0gBOu+IATseAAAAAAA
+AAAAAAAAACAE++AgBPpcIAT+OyAE/fsgBP3DIAT9iCAE/WggBPqwIAT9RyAE/QsgBPyzIAT8YyAE
+/BsgBPv4ARAYAQACAAABEBgBAAIAAAAAAAAAAAAAIAW/VyAFutkgBb8rIAW+/yAFvtIgBb69IAW6
++yAFuxIgBb6kIAW7RyAFuzMgBbr7IAW7RyAFuvsgBbr7IAW6+yAFv1cAAAAAAAAAAAAAAAAAAAAA
+IAYL8CAGBbggBgVgIAYCjCAF/nAAAAAAAAAAACAGBaAgBgWaIAYFmiAGBZogBgWgIAYFmiAGBZog
+BgWaIAYFmiAGBZogBgWaIAYFmiAGBaAgBgWaIAYFmiAGBZogBgWaIAYFmiAGBZogBgWaIAYFmiAG
+BZogBgWaIAYFmiAGBZogBgWaIAYFmiAGBZogBgWaIAYFmiAGBZogBgWaIAYFmiAGBZogBgWaIAYF
+miAGBZogBgWaIAYFmiAGBZogBgWaIAYFmiAGBZogBgWaIAYFmiAGBZogBgWaIAYFmiAGBZogBgWa
+IAYFmiAGBZogBgWaIAYFmiAGBZogBgWaIAYFmiAGBZogBgWaIAYFmiAGBaAgBgWaIAYFmiAGBZog
+BgWgIAYFmiAGBZogBgWaIAYFoCAGBZogBgWaIAYFmiAGBaAgBgWaIAYFmiAGBZogBgWgIAYFmiAG
+BZogBgWaIAYFoCAGBZogBgWaIAYFmiAGBaAgBgWaIAYFmiAGBZogBgWgIAYFmiAGBZogBgWaIAYF
+oCAGBZogBgWaIAYFmiAGBaAgBgWaIAYFmiAGBZogBgWgIAYFmiAGBZogBgWaIAYFoCAGBZogBgWa
+IAYFmiAGBaAgBgWaIAYFmiAGBZogBgWgIAYFmiAGBZogBgWaIAYFoCAGBZogBgWaIAYFmiAGBaAg
+BgWaIAYFmiAGBZogBgWaIAYFmiAGBZogBgWaIAYFmiAGBZogBgWaIAYFmiAGBZogBgWaIAYFmiAG
+BZogBgWaIAYFmiAGBZogBgWaIAYFoCAGBZogBgWaIAYFmiAGBZogBgWaIAYFmiAGBZogBgWaIAYF
+miAGBZogBgWaIAYFoCAGBZogBgWaIAYFmiAGBZogBgWaIAYFmiAGBZogBgWaIAYFmiAGBZogBgWa
+IAYFmiAGBZogBgWaIAYFmiAGBZogBgWaIAYFmiAGBZogBgWaIAYFmiAGBZogBgWaIAYFoCAGBZog
+BgWaIAYFmiAGBaAgBgWaIAYFmiAGBZogBgWgIAYFmiAGBZogBgWaIAYFmiAGBZogBgWaIAYFmiAG
+BZogBgWaIAYFmiAGBZogBgWaIAYFmiAGBZogBgWaIAYFmiAGBZogBgWaIAYFmiAGBZogBgWaIAYF
+miAGBZogBgWaIAYFmiAGBZogBgWaIAYFmiAGBZogBgWaIAYFmiAGBZogBgWaIAYFmiAGBZogBgWa
+IAYFmiAGBZogBgWaIAYFmiAGBZogBgWaIAYFmiAGBZogBgWaIAYFmiAGBZogBgWaIAYFmiAGBZog
+BgWaIAYFmiAGBZogBgWaIAYFmiAGBaAgBgWaIAYFmiAGBZogBgWaIAYFmiAGBZogBgWaIAYFmiAG
+BZogBgWaIAYFmiAGBZogBgWaIAYFmiAGBZogBgWaIAYFmiAGBZogBgWaIAYFmiAGBZogBgWaIAYF
+miAGBZogBgWaIAYFmiAGBZogBgWaIAYFmiAGBZogBgWaIAYFmiAGBZogBgWaIAYFmiAGBZogBgWa
+IAYFmiAGBZogBgWaIAYFmiAGBZogBgWaIAYFoAAAAAAAAAAAAAAAACAGBe8gBgdPIAYJZCAGCVYg
+BglBIAYJMyAGCR4gBgkQIAYI+yAGCO4gBgjbIAYIziAGCLsgBgiuIAYImyAGBesgBgiHIAYIeiAG
+CGcgBghZIAYIRCAGCAMgBgfDIAYIAyAGB8MgBge1IAYHoCAGBesgBgXrIAYF6yAGBesgBgeTIAYG
+CCAGBesgBgXrIAYF6yAGB3YgBgddIAYHRSAGBzQgBgXrIAYHISAGBwcgBgb0IAYG2iAGBscgBgav
+IAYGnCAGBokgBgYlAAAAAAAAAAAgBgw5IAYMQyAGDcIgBg2XIAYNkCAGDYkgBg2BIAYNeiAGDXMg
+Bg1sIAYNZSAGDVsgBg1RIAYNOSAGDQ4gBgziIAYM2SAGDL4gBgy0IAYMqiAGDJogBgyTIAYMgCAG
+DHkgBgwpIAYMUAAAAAAAAAAAIAamoCAGo/ggBqKMIAagOCAGneAgBpqoIAaboCAGnFAgBpocIAae
+pAMPCBKDjpOSUlYAABAAAABjb25maWd1cmF0aW9uIGZpbGUgcGFyc2VyIGZvdW5kIGFkZGl0aW9u
+YWwgY29uZmlndXJhdGlvbiBhZnRlciBbZmluaV0KAAAwAAAAZmNvZQAAAAB2bmljX2lkAHZsYW4A
+AAAAdG9zAGV0aGVydHlwZQAAAG1hY21hdGNoAAAAAG1wc2hpdHR5cGUAAGZyYWdtZW50YXRpb24A
+AABzcnZyc3JhbQAAAABmY29lbWFzawAAAABjb21wYWN0AGJhc2ljdmlydHVhbAAAAABzeW5tYXBl
+bgAAAABzeW40dHVwZW5pcHY2AAAAc3luMnR1cGVuaXB2NgAAAHN5bjR0dXBlbmlwdjQAAABzeW4y
+dHVwZW5pcHY0AAAAb2ZkbWFwZW4AAAAAdG5sbWFwZW4AAAAAdG5sYWxsbGtwAAAAaGFzaHRvZXBs
+aXR6AAAAAGxhbgB3YW4AY2x1c3RlcgBtYW51YWwAAHRwX3BpbwAAdHBfdG1fcGlvAAAAbmljX3Zt
+AABuaWNfdW0AAG5pY191bV9pc2dsAG5pY19oYXNoZmlsdGVyAABvZmxkAAAAAHJkZHAAAAAAcmRt
+YWMAAABpc2NzaV9pbml0aWF0b3JfcGR1AGlzY3NpX3RhcmdldF9wZHUAAAAAaXNjc2lfaW5pdGlh
+dG9yX2ZvZmxkAAAAaXNjc2lfdGFyZ2V0X2ZvZmxkAABmY29lX2luaXRpYXRvcgAAZmNvZV90YXJn
+ZXQAcG9mY29lX2luaXRpYXRvcgAAAABwb2Zjb2VfdGFyZ2V0AAAAaXNjc2lfdDEwZGlmAAAAAGlz
+Y3NpX2luaXRpYXRvcl9jbWRvZmxkAGlzY3NpX3RhcmdldF9jbWRvZmxkAAAAAHRsc2tleXMAcHBw
+AGRjYngAAAAAYjJiAHNvY2tldG51bQAAAGNlZQBpZWVlAAAAAGF1dG8AAAAAYW5fZGlzAABwZGxp
+dGVfZGlzAAAgAxbsAAQAAAAABAAABAAAAAAAAP8CAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAP8CAAAAAAAAAAAAAAABAAL/AgAAAAAAAAAAAAAAAAAC/wIAAAAA
+AAAAAAAAAAAAFgAAAAAAAAAAAAAAACAGmeAAAAAAIAaZMCAGltAgBpWoIAZ00CAGFEggBf3IIAX8
+qAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAEZvggBHNIIARzSCAEc0ggBIMgIASbyCAEqIggBLGs
+IARj/CAEYWggBBosIATJACAEF9wgBBTQIAX8fCAF+0wgBfSYIARzSCAF88AgBfJkIAXxmCAHKiAg
+A5rMIAP1dCAGsWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAEPfAgBCc8IAQ33CAE
+NVQgBDPcAAAAACAEMYAgBD0sAAAAACAEDKAAAAAAAAAAAAAAAAAgA1z0AAAAAAAD//8AAAP/AAAA
+PwAAAA8gBzsEIAbjICAHOvAgBuMwIAbjRCAG4oggBuPIIAbiWP8YMGBgAAAAAAECAwAAAAAgBqdM
+IARlVCAAgQgAAAAAAAAAgQAAAAAAAAAAAAAAACAD+KQgA/owIAP5zCAD+kQgA/jAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAACAD+VQAAAAAAAAAAAAAAAAwMTIzNDU2Nzg5YWJjZGVmQUJDREVG
+AAAAAAAAAAAAAEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1
+dnd4eXowMTIzNDU2Nzg5Ky8AAAAAAAAAAAAAAAAAAAAAIABFNAABAAAgAEUUAAUAASAARPgAAwAF
+IABE2AAHAABjglNjAAAAAP///////wAAAAQECAAEBAgABAQIAAQECAAHQwAAAAAAAAAAAAAAAAAA
+IQAJAIEAQQAhAAkAIQAJAIEAQQCBAEEAgQBBAIEAQQAhAAkAgQBBACEACQAhABEAgQBBAIEAQQAh
+AAkAgQBBACEACQAhAAkBAQBBAIEAIQCBACEAEBBhAQEAgQEBAIEDAgEAECBAAAAAAAAAAAAABAAC
+AAEAAIAAQAAgABAACCBAgAAAAAAAAAAAAAAAAAAgAwkgAAAAACADEBgAAAAAIAMJJAAAAAEgAxDA
+AAAAAiADCSwAAAAEIAMJNAAAAAggAwk8AAAAECADEMgAAAAgIAMJQAAAAEAgAwlMAAAAgCADCVgA
+AAEAIAMJZAAAAgAgAwl0AAAgACADCYAAAEAAIAMJjAAAgAAAAAAAAAAAAAAAKhwAACo8AAAqXAAA
+KnwAAAIEAAAARAAAAAQAAABAIAaq3CAGqpggBqlsIAaoHCAGp9ggBqesIAaoBAAAAAAAAAIAAAAE
+AAAACABZZXMAMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6AAAAAG5vbmUAAAAA
+YWxsACoAAABkaXNhYmxlZAAAAABlbmFibGVkADB4AABOQQAAVjAAAFYxAABWMgAAVjMAAFY0AABW
+NQAAVjYAAFY3AABWOAAAVjkAAFZBAABWQgAAVkMAAFZEAABWRQAAVkYAAFZHAABWSAAAVkkAAFZK
+AABWSwAAVkwAAFZNAABWTgAAVk8AAFZQAABWUQAAVlIAAFZTAABWVAAAVlUAAHBvcnQAAAAAcHJv
+dG9jb2wAAAAAZ2xvYmFsAABmdW5jdGlvbgAAAABmaW5pAAAAAHJlZwBmaWx0ZXJNb2RlAABmaWx0
+ZXJNYXNrAAByc3NfZ2xiX2NvbmZpZ19tb2RlAHJzc19nbGJfY29uZmlnX29wdGlvbnMAAHNnZV90
+aW1lcl92YWx1ZQB0cF9wbXJ4AHRwX3BtcnhfcGFnZXNpemUAAAAAdHBfcG1yeF9mbGFncwAAAHRw
+X25yeGNoAAAAAHRwX3BtdHgAdHBfcG10eF9wYWdlc2l6ZQAAAAB0cF9udHhjaAAAAAB0cF9tdHVz
+AHRwX3RjcHR1bmluZwAAAAB0cF90aW1lcnJlcwB0cF90aW1lcnZhbHMAAAAAdHBfYmFja29mZnZh
+bHMAAHNjaGVkX2lvcXR4X2JwX3ByaW9yaXR5AHBjaWVfbWFfcnNwX3RpbWVydmFsdWUAAHBsX3Rp
+bWVvdXRfdmFsdWUAAAAAbWVtZnJlZV9jb25maWcAAGJhcjJ0aHJvdHRsZWNvdW50AAAAY3BsdHhk
+YXRhX21lbWFsaWduAABtYwAAbWNfbW9kZV9icmMAbWNfcGQAAABvZmxkX2ZsYWdzAABudmYAd3hf
+Y2FwcwByX2NhcHMAAG5pcWZsaW50AAAAAG5lcQBucXBjcQAAAG5ldGhjdHJsAAAAAG52aQByc3Nu
+dmkAAG5leGFjdGYAbnJhd2YAAABjbWFzawAAAHBtYXNrAAAAbmV0aG9mbGQAAAAAbnJvdXRlAABu
+Y2xpcAAAAG5maWx0ZXIAbnNlcnZlcgBuaGFzaAAAAHRwX2wydAAAdHBfZGRwAAB0cF9kZHBfaXNj
+c2kAAAAAdHBfc3RhZwB0cF9wYmwAAHRwX3JxAAAAaXNjc2lfbnRhc2sAaXNjc2lfbnNlc3MAaXNj
+c2lfbmNvbm5fcGVyX3Nlc3Npb24AaXNjc2lfbmluaXRpYXRvcl9pbnN0YW5jZQAAAGlzY3NpX21h
+eF9zZ2UAAABwcG1fbWF4X3pvbmVzAAAAcHBtX3pvbmVfcmFuZ2UwAHBwbV96b25lX3JhbmdlMQBw
+cG1fem9uZV9yYW5nZTIAcHBtX3pvbmVfcmFuZ2UzAGZjb2VfbmZjZgAAAGZjb2VfbnZucAAAAGZj
+b2VfbnNzbgAAAGZjb2VfbmZjYgAAAGRjYgBkY2JfYXBwX3RsdgBkY2JfZGNieF9wcm90b2NvbAAA
+AGJnX21lbQAAbHBia19tZW0AAAAAaHdtAGx3bQBkd20AZGVib3VuY2V0aW1lAAAAAHZlcnNpb24A
+Y2hlY2tzdW0AAAAAU2Vzc2lvblR5cGUAT0ZNYXJrZXIAAAAASUZNYXJrZXIAAAAARGF0YURpZ2Vz
+dAAASGVhZGVyRGlnZXN0AAAAAEVycm9yUmVjb3ZlcnlMZXZlbAAASW1tZWRpYXRlRGF0YQAAAERh
+dGFQRFVJbk9yZGVyAABEYXRhU2VxdWVuY2VJbk9yZGVyAEluaXRpYWxSMlQAAE1heENvbm5lY3Rp
+b25zAABNYXhSZWN2RGF0YVNlZ21lbnRMZW5ndGgAAAAASW5pdGlhdG9yTmFtZQAAAEluaXRpYXRv
+ckFsaWFzAABEZWZhdWx0VGltZTJXYWl0AAAAAERlZmF1bHRUaW1lMlJldGFpbgAATWF4QnVyc3RM
+ZW5ndGgAAEZpcnN0QnVyc3RMZW5ndGgAAAAATWF4T3V0c3RhbmRpbmdSMlQAAABUYXJnZXROYW1l
+AABUYXJnZXRBbGlhcwBUYXJnZXRBZGRyZXNzAAAAVGFyZ2V0UG9ydGFsR3JvdXBUYWcAAAAAQXV0
+aE1ldGhvZAAAU2VuZFRhcmdldHM9QWxsAENIQVBfQQAAQ0hBUF9JAABDSEFQX0MAAENIQVBfTgAA
+Q0hBUF9SAABEaXNjb3ZlcnkAAABOb3JtYWwAAE5vbmUAAAAAQ1JDMzJDAABDUkMzMkMsTm9uZQBO
+b25lLENSQzMyQwBDSEFQAAAAAENIQVAsTm9uZQAAAE5vbmUsQ0hBUAAAAE5vdFVuZGVyc3Rvb2QA
+AABJcnJlbGV2YW50AABSZWplY3QAAE5vAAA1AAAAQ0hOZXQgMS4wMAAAAAAADAAAAAABAAF8AAwB
+AAAAABAAAAAUIAdUgAAAAwUOQAAAAAAAEAAAACggB1eIAAADGA5QAAAf/AAAH/wAAB//tUAf/7VA
+IAdfgCAHY0AgCUTAIAlEwCAKAAAgCoAAIAqAACAK5oAgAwAA4QAuAB//lBAAAGGo4QGOAAAAQA8A
+AZEMgAAAACALgCAgC4BQAABAAAAAgAAAAAgAIAuBUP//8/8gC4GAAACoLAAAqC8AAKgrAACoKgAA
+qOwAAIEAAACoNQAAqDcgCwEw4QBeACALAXAAAEAOAABAGiALAaAAABAAAAD/6QAA/+AAAFAAAAD/
++AAAqDv//8kkAABADQAA//cAAA//AAAPQgAA//UgCwIAAACABwAAgAQgC4GgIAuBwAAAuO4AADQA
+AAC07gAAtP8AALQAAAC4AB//rlQgCwIwIAMLyCALgeAgC4IgFaAAAAAAg/0gAwjQIANZOAABQUoA
+AQFuAACD/x//sMAAwAABIAuCMCALAnAgAwvYIAsD4CALBBAowAAAQAAAAiADCtQooAAAgAAAAiAL
+BQAf/64QAAD//wEAAAAoAAAA4QAAAGsAAAAgAwpQIAsFMBAAAAADYAAA7gAAACALgsAgA1MYIAuC
+4AAAJxAgA1rIIAuDMCALBYBAAAAAIAMMGCALBgAD4AAAH/+t2CADACAf/OIAH/+xwB//rQThAwYA
+/9///9////8AAQAKAuYC6SAAAADhAv4AIAMAMOEABgAAAgAA//3//wCYloAAD0JArWU0XTuayf87
+msoAAARMAAAArwDhAQ4AAACI9wAgAAABPwFA//he4AAHoSAALGNIH/+skCALg2AgC4PACAAAAB/8
+4uQgA2VEH/+uICALBjAgCwdgIAsGYA88AAAgCwbwIAPkgCAD5lggCwfADwAAACALCCAf/4bAH/+H
+sB//hPAgCwiQIAsI0CALCRAgAw3wIAMNcCALhVAgAw1QIAuFgCALhDAgC4SQIAuE8B//rnzgAAAA
+IABFVB//r4QA////IAuFoCALCaAgCwoAIAsKUCALCdAgA71MAAgAACADwgwgCwvgIAddoAAP/AAf
+/5nYH/+bQAAAMAAgCwwgIAsMsCALDVBVAAAADgAAACALhkAgAw5oAAAIBiALDYAgCw5gAAAP/h//
+rjQgCw7wIAsOwAAA8AAgC4ZgIAsPECALD3AgCw+gIAsQACALEFAgCxEQIAuGgCALELAgA37QIAOW
+gCALEXAgCxGwH/+uKCALEiAgCxJwIAuHUCADnLwgA6IMIAuHECALEyAgCxKwIAsTkCALE/AgCxRg
+IAdjACAHX9AgCxTgIAsVIO////8gCxWAIAsV0CALGKD9////IAsWMCALFqAgA6R8IAsXACALF2Ag
+CxfAIAsYECALGFAgC4egIAMOYAQAAAiBAAAAAABgACADDfQMAAAAH/+HIB//iCAgAw/wH/+HAD//
+///P////IAsZAB//h9wgCxlAIAsZgCALh8AgCxoAf///q///LlwAANGk///QTQAAnE4gCxqAIAsa
+QCALGcAf/4ccIAMN+AAAaAAf/4cYAAAgAB//h4AgCxrAIAPFoCALG3Af/64cIANUMCALiFAgC4fg
+IAuIMCADyWAD/9AAAAEAACALiWAf/5rgAEAAAABQDACD/9AAIAuI0CADfqggC4mQH/+u5CALHTAg
+Cx1wH/+snCALihAgCx2gIAsd0CALHfAgCx4gIAseYCALHqAf/64kIAsfEB//rmwgCyAgIAsfYABM
+S0AgA8VcIAsfsCALIGAEAQAIIAOm9CALIOAgCyCQIAshQCALhgAgA93MIAuF0CALJMAAAI4CIAsl
+MCALJYAgCyXQIAsk8CALJiADgAAAH/+w0CALJnAgCybA//f//yALJ7AgA9jYIAsocCALKTAgA9zU
+IAPW5CADxbwgA9wMIAspcAIAAAAgCymwAAAXcCADC7QgC4swIAuK4CALisAgA/cAIAuKkCALixDg
+//4AAAHikCADC5QgCyqQIAMLRB//rhggAwtMIAsq4B//rLwgCysAIAsrMCALK1Af/6uUIAdcICAL
+K4Af/6qw4QB+AB//rMwAAPP/BAAAABQAAAAqAAAAIAQAKCALLDAf/67gIAuMACALi9AgAB8YGgAA
+ACALLMAgC4ywH/+uxB//sZgwAAAQIAuNkCALjfAf/5W4AJwAAOAACSQf/64wIAstMCALLhAgCy3g
+IAuPUCALLbAf/55MIAstcAADBMDhAwIA4QCOAB//lcwAAJaAAACWQCAHX4AAAJagAACWYOEDACwA
+AwAAH/zeAOEAegAAAeAA4QGSAAAB4wAf/648IAsuQCALLnAf/7G0AA///x//sxQf/5V8IAdigBeQ
+AAAUsAAAIAdh0IAAAAQgB2KKAAAfiiADAJAWoAAACFABACCgAAA/8AAAI6AAAAP/AB8AwAAEH/+z
+GCAHJVAgBC0gIAuOICALjmAgByUU3q2+/xrAAAAgB2GIAAD/6iAHYpAAAAgUAACIAB//rhQf/66Q
+AB6EgCAERnAAEAAAH/+sjB//r0Qf/6yUIAMAoCALj8AgC4+QOAAAAP8///8wAAB0IAMA0CALLqAw
+AAAIMAAADDQAAAjQAAAAAACJFDsAAAggAwsENJAAAAVdSoAgBEwsABgAAP8H//8AOAAAADAAACAL
+j+AGAAAAIARZ0PgAAAAB///nAAHAACAAAIAEABAAH/+qwOEBmgDhAZpA4QGaPOEBmjjhAZo04QGa
+MB//ryAgAwtcIAMLVIAAAAP//P//H/+uLH////8f/5X8IARm+CALkwAgC5NAIAuTcCALk7AgC5Pg
+IAuUICALlFAgC5SQ//8AAA////D/8AAAIAuVMB//mvQgC5TwH/+qFCAEc0ggC5YwIAuWYCALldAg
+C5VwH/+avB//m/gf/55IAAD/gAAALuAgCy+QIAsvwP/7//8ABAAA4QHiwJAAAPD8/4DAAgAAIP7/
+gMAgCzAQIAswUAAA+AAAAwEIAAMBDI////8gCzCgIAsw8CALMSAgCzFg4QDeAAADAwgAAwIAH/+s
+wP//8ADhAO4A//9//wAA/AAf/65EAADgAAAADAAAAwMEAAERHAABERggC5bAABAIAIAACAAAAwEE
+///AAAAA//4AACWAAAMDAB//rLjg/+LAH/+rWB//newgC5cQIAuXQCALl2AgC5bwIAMBGAAA//Mg
+CzGwAAAqMAAA/48AAFK1AABICgAAj4IAAI+GAAA4AAAAj4oAAOM/AACDrgAA//EgCzHQAAAQQP//
+z78gC5eAAAASACALMgDhAy4A4QMyAP7///8gCzIgIAMBICALMoAgCzJQAIAAACALl6AgC5gwAAD+
+/wAA/8AAAP8/AAD5/x//qvggC5fQIAuY0CALmIAgCzMwIAsy8CALMsAgCzNQIAszoB//sHQQAAUN
+AcCAAAkAAAAf/69UIAMB0B//rKQAAIMAIAs2YAAAggAgCzWAIAs10CALNhAQAAcCAADAACALi5Ag
+C4tQAAAMvAAAiQYgCzgAIAuOoIiIiIgf/5pcIAMCICALOGAgCzgwIAs7UCALOxAgCzrQIAs6kCAL
+OlAgCzoQIAs5wCALOYAgCzkwIAs44CALOKAgC5uwIAub4CALnBAgC5xQIAuckCALnMAgCzyAIAs8
+MCALO5AgCzvQAACAwgAAGyEf/6r8IAs8sCALnPAgC50wIAudUAD/wAASAAAAIAUY+CALngAgC53A
+AACgAGAAAAAf/66YIAufgCALPNAgCz0AAAAcICALPTAgCz2QH/+tICALPdAgCz1gIAs/gAAAf6Yg
+C0AQIAs/oCALQEAgA0rsIAs/0CALQKAgC0BwIANMBCALQNAgA1DAIAugYCALQkAgC6KwIAtDYCAD
+DeAgC0KQIAtDgCALQvAgBTrUIAujkAAAH0AAABA2///v/x//sxwf/7GoAAAIUCALQ8AgC0QQIAtD
+8AD///wyAAAAH/+zmsAAAAAgAwJYM5AAACADCwAgC6PwIAukUCALpDAgC6SQIAtEMCAEVlwgAwJg
+IAtE4AAAgAUgC0UQgYAAAN6tvu8gC0VQMAAAHDAAAAQwAAAUAAD/7//+//8f/7JUAP/wAAAoAAAg
+C0WAAAAIQCADCsQgC0WwAP//+iALRgAwAAAAMAAANAAAgAEgAwJwAACAAiAFjzggC6UgEAAFEJkA
+AAA0AAAAIAuk0CALRkAAGQAAIAtGkCADDoAAABIPIAtGwB//sVwDFQAABQAAAIP/ABsgC0cwIAXi
+kP//QAAgC6cAIAtIACALSIAgC0jQAAGRrOEBkay/////IAtJAAsAAAAgBejAIAtJcCALSeAgC0pQ
+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
+AAAAAgAAAGEAAABzAAy3NgAAAAkAAAAGAAAAAwAAAP0AAAADAAAAHAAAABwAAAAQAAAAAwAAAAAA
+AABkAAAAcAANHO8AAAAJAAAABgAAAAMAAAApAAAAAQAAABwAAAAcAAAAUAAAAAEAAAACAAAAZAAA
+AHEADj3VAAAACQAAAAYAAAADAAAAKgAAAB8AAAAfAAAAHwAAABAAAAAAAAAAAgAAAGYAAAByAA7V
+vgAAAAoAAAAJAAAABAAAAGoAAAACAAAAHAAAABwAAAAQAAAAAgAAAAAAAABmAAAAdwAPQkAAAAAK
+AAAACQAAAAQAAAD9AAAAAgAAAB0AAAAdAAAAUAAAAAIAAAACAAAAZgAAAHcAD7xSAAAACgAAAAkA
+AAAEAAAAKQAAAAEAAAAdAAAAHQAAAFAAAAABAAAAAgAAAGsAAAB4ABBGBAAAAAoAAAAJAAAABAAA
+AGcAAAAZAAAAHgAAAB4AAABQAAAAAgAAAAIAAABrAAAAeQcAOwACADgABAM7AQAAAAABNgFsAZYA
+8AEgAVMA4QExAWEAvADkAQsA9QEiAUkAxgDrAQ8AwgDqARMAnQC/AN4AywDtAQ0AqgDJAOQAowDE
+AOAAgQCiAL0ArwDMAOMAlACwAMYAiwCoAL8AAACBAJ0AmgCzAMcAgQCbAK8AbgCPAKUAAAAAAAAA
+iQCfALEAbQCIAJsAAABhAHIAAAAAAAAAegCPAJ8AAAByAIcAAAAAAAAAAAAAAAAAAAAAAAAAAAD7
+ASYBagDZAP8BNgDuAS4BjACrANMBEwDWAPkBKgC5ANoBCgC3AOIBMACMAK0A4QC6ANkBBgCiAL4A
+5wCWALcA6gBlAIwAugCkAL8A5gCOAKgAzQB6AJgAwwAAAAAAlACRAKoAzQB7AJUAtwAAAHoAowAA
+AAAAAACAAJgAuABkAIEAowAAAAAAfQAAAAAAAABtAIYApQAAAGYAjgAAAAAAAAAAAAAAAAAAAAAA
+AAAAAQABKQFVAM4A8wEVAMcA7gEWAKEAwwDgAM0A7QEMAKsAygDjAKIAwQDdAH0AngC3AK0AyQDf
+AJMArQDBAIYAogC5AAAAAACLAJcArgDAAH0AlgCpAEwAgQCZAAAAAAAAAIUAmgCrAGIAfwCTAAAA
+AAAAAAAAAAAAAHYAiQCZAAAAVgB5AAAAAAAAAAAAAAAAAGYAegCJAAAAAAAAAAAAAAAAAAAAAAAA
+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
+AL8AEwBjAH8AeQBtAF0APQC5AJsADQBhAGsACwAJAFEAHwAxAFMAxwDxACEAtQCPANkArQAzAKUA
+QQBVAJcAkwDjACkAyQD/APkA8wDDAO0A3QDnACMAvQA7ALcATwAdAI0A1wCRAOEA6wDbABsAiwCJ
+AIcArwDRAJ8ANQAtALEA0wAXAKcASQBzAEMAZwChADcAzQBXABEAWwCZAAcALwCzAKsAlQAnAMEA
+5QBNANUAGQCFACsAFQBlAMsABQCpAEsAgwADAIEAAAD6APQAfAB2AMQA7gD8APYA3gDoAEYAcAAk
+AL4AfgB4ADwAuABgAGoAUAAeAMYA8ACOANgApABAAJIA4gD+APgA7ADcALwAOgAcAIwA4ADqAIoA
+iADQAJ4AsADSAEgAcgCgADYAEABaAC4AsgAmAMAA1AAYABQAZACoAEoAgAB6AHQARABuAF4AaACi
+AD4AugA4AM4AnAAOAFgAEgBiAGwAXACaAAwACgAIADAAUgAgALQArAAyAFQAlgAoAMgA8gDCAOYA
+IgC2AE4A1gCQANoAGgCGAK4ANAAsABYApgBCAGYAzABWAJgABgCqAJQA5ABMAIQAKgDKAAQAggAC
+AAEAAwACAAQAAAAAAAAAAAABAAIAHAAbABYAFQAeAB0AGAAXAAwACwAQAA8AIAAfABoAGQAUABMA
+CgAJAA4ADQASABEACAAHAAYABQAEAAMAAQAAAAIABAAAAAAAAAAAAAAwBAAAMBAAAFncAABagAAA
+WoQAAFqIAABajAAAWpAAAZQwAAAQJAAAEDAAABA8AAAQ3AAAEQwAAHssAAB7NAAB4owAAeaMAAHq
+jAAB7owAAfKMAAH2jAAB+owAAf6MAACNzAAAjoAAAH50AACP3AABkVgAAZJwAACP/AAEExwABBMY
+AAQTEAAEkxwABJMYAASTEAAAd+AAAHfkAAB39AAAeAQAAZw8AAEQdAABEIQAAJQIAACYXAAAlgwA
+AJYUAACWIAAAliwAAJbEAADQKAAAkAgAAwjcAANI3AADiNwAA8jcAAMI5AADSOQAA4jkAAPI5AAB
+kFQAAGAcAAGg2AABkJAAAHfgAAB35AAAd/QAAHgEAAB42AAAeOAAAHj0AAUAeAAFCHgABRMIAAGU
+BAAB48AAAefAAAHrwAAB78AAAfPAAAH3wAAB+8AAAf/AAAGUDAAAAAAAAAAAAAAAAAAAMAC///9A
+AAAwCL///0AAAZQQn////wABlDQAAAAQAAGUCJ//4/8AAZQ4AAAAEAAAECjh////AAAQLOH///8A
+ABA0Af///wAAEDgB////AAAQQAAEAAAAABEQAP///wAAERQA////AAB7KAB9/+IAAHswP//u/wAA
+ezgAAAABAAB7QD//7v8AAHwkAH3/4gAB4ogACAAAAAHmiAAIAAAAAeqIAAgAAAAB7ogACAAAAAHy
+iAAIAAAAAfaIAAgAAAAB+ogACAAAAAH+iAAIAAAAAI3I////8AAAjdD////wAACOfAAAAPAAAI6E
+AAAA8AAAfnB/v/9/AAB+eH+//38AAH4AAsAAAAABkVQB////AAGRnAH///8AAI/YA3///wAAj/j/
+////AAQTFAAAAAcABBMMAAAACwAEkxQAAAAHAASTDAAAAAsAAHfcAAAAAwAAd/T/////AAB4BAAA
+AAMAAZw4AAHAQAABnPgAAcBAAACQBAAAAD4AARB4AP///wABEHwA////AAEQiAAAAAAAAJQEAAD/
+/wAAlBAAAP//AACYVAAAAf8AAJhYAAAB/wAAlggAAAAAAACWHAD///8AAJYkAP///wAAligA////
+AACWMAD///8AANAgAAAABwAA0CQAAAAHAAMI2AAAAAMAA0jYAAAAAwADiNgAAAADAAPI2AAAAAMA
+AwjkAAAAAwADSOQAAAADAAOI5AAAAAMAA8jkAAAAAwABkFAAAADvAAGg1AAAAYMAAZCMADgAAAAB
+kJgAOAAAAAUAdAAAAAcABQBwAAAABQAFCHQAAAAHAAUIcAAAAAUABRMEAAAAASADEPAgCNoEIAMQ
+9CAI6XAgAxEAIAjogCADEQwgCOgwIAMRICAI54QgAxE4IAjmGCADEUggCOUAIAMRUCAI5NggAxFk
+IAjksCADEXQgCOSAIAMRgCAI42QgAxGIIAjjPCADEZwgCOMIIAMRqCAI4aQgAxGwIAjg/CADEcAg
+CN/4IAMRzCAI3uggAxHcIAjd4CADEewgCNy0IAMSBCAI2YQgAxIcIAjZOCADEjAgCNkQIAMSQCAI
+2HwgAxJUIAjYVCADEmggCNdUIAMSbCAI1mQgAxJ4IAjVZCADEoAgCNU8IAMSjCAI1PwgAxKQIAjU
+gCADEpggCNRIIAMSoCAI1BAgAxKsIAjT2CADErAgCNOgIAMSuCAI02ggAxLEIAjTMCADEsggCNS4
+IAMS0CAI0vggAxLYIAjSwCADEuAgCNKIIAMS6CAIz6ggAxLwIAjSOCADEvwgCNIwIAMTBCAI0fgg
+AxMMIAjRwCADExQgCNGIIAMTHCAI0VAgAxDIIAjNZCADEyQgCM0sIAMTLCAIzPQgAxM0IAjMvCAD
+E0QgCMyEIAMTTCAIzEwgAxNUIAjMFCADE1wgCMvsIAMTaCAIy8QgAxN0IAjLlCADE4wgCMtsIAMT
+qCAIy0QgAxO4IAjLHCADE8ggCMr0IAMT2CAIyswgAxPoIAjKpCADE/ggCMp8IAMUCCAIylQgAxQU
+IAjKLCADFCAgCMoEIAMULCAIycggAxQ4IAjIkCADFDwgCMbEIAMUSCAIxeAgAxRcIAjFrCADFGQg
+CMV4IAMUcCAIxUQgAxR0IAjFECADFHggCMTcIAMUfCAIxKwgAxFsIAjDqCADFIwgCMOAIAMUlCAI
+w1ggAxDUIAjsaCADENwgCOucIAMQwCAI6uwgAxDoIAjqSCALAAAAAEGMAABBiAAAQYYAAIAAAABB
+gQAAqBkAAKgaAADDAAAAqBsAAKgcAACoFwAA//8AABAEAADlnwAAHxEAAO4JAAD//gAA6v8gCwAg
+AAD/AAAAqBggCwBgAABgDQAPQkAAAN6tIAsAoCALAPDhAF4A/v/+/wEAAAABAAEAIDAAACALgHAg
+C4CQAAAgQAABhqAgC4DAAABADSALgPAgC4EgAAAw1CALAVAAAGGoAAD/6SALTIAf/51AIAtMoOEA
+cgAf/5zE4QQSAACLFEDhA/4AAAQASOEEAgAABAAhH/+UEIYQAAAABABAgAAAAIAUAAOAFgADgBIA
+I4ARsgOAEAAFACrxLwABhp8ACvEvIAuqEAAEAAggC0zAH/+cCCAHX9Af/66AIAuq0OAAAADhAHYA
+IAuqQCALqoAgC0zwH/+fCB//nRDhAZoAP////wABngzhAZ4AAAGedAABnqwAAZ7YAAGe8AABnxwf
+/58QAAH//wABn0wAAZ+cAAGfsOEAegAgC04QIAtOYCALTsAAAA//IAtPICALT5AgC0/QIAtQECAL
+UFAgC1CQIAtQ0CALURAgC1FQIAtRkB//nSwgAw7w4QSSACADDpD/AP//AAwAAIAAAB+AAAA/H/+d
+NP/A//8AEAAAH/+ukAAACAAAJgwAIAtR0CALUjAgC6xgIAur8CALqxAgC6tQIAuroOEALgAEAAAA
+H/+V9OEAVgACgFAAgAAAgAAAQAD/8QCAAfAAAI4B4IAAAB8AIAgAACAIE/QAABTwIAgBAOEBkgDh
+AA4AAAEAAAACAAAAfwBAAAMAAACCAIAAwQDA//8j/wAAyAAQIAEgH/+ceB//rrzhAH4A4QCOADwA
+AAD//7//UGjoR5IAAADwAPAA37//+yAAAAR/9///gABCAP/3/38ABgAA/wAAAABJJJIAAH4YEAEQ
+AQAAfkAgASABFRUVFYQhhCEQEBAQ4QGOAAAA/n8EBAGAH/+rQB//lczhAM4ARERERIiIiIjMzMzM
+4QCOBOEAjgjhAI4M4P/+ACAIDaQAAAjAgAHEEcQRxBEA/wD/AEAAQP//P/8gC60QIAutQB//nMD/
+D///zIhEACALrNAgC61w///gAf/w/wAAAgAzKioVFf7///8f/6woH/+b6B//mbgf/64QH/+d6B//
+nkgf/5u0AAD//R//lQQf/5XQIAtUIB//q/AgC1RwIAtToCALU+Af/6uk4wACAOL//wAgC1SwIAjq
+SCALrmAgAAAAADAAAABgAAAgYAAA0AAAACALraAgC64wAAAQACADCNgf/7DAH/+stB//gLAf/60Q
+H/+uKP//8AAgC68wIAtW8CALV3AgC1fgIAuu4CALrqAgC68AH/+szCALWHAAACgAAAA//wAAwAAA
+BAAA4QAyAB//gOAf/4EgH/+BYB//m0D/gA////4AHwAAe2Af/OIACAAAAB//nSAf/5YIH/+rLB//
+lXThAv4A4QO+AOEDPgDhA34A4QHiAOEBDgDhAJIA///w/x//qhAAAAkAH/+b7OEBDgThAQ4I4QEO
+DB//nhD/8AAAAAKABh//rsD/+///IAtf8CALYFAf/4HgH/+cnB//m5gf/664EAAAAP/w//8gAwzg
+H/+aEAAAfkzhAIoAAADwACALYMAgC2EgIAthgB//rpQf/6qYH/+sjCALYcAgC2JAIAu00CALYfAf
+/6yoH/+d3CALYsAgC2KAH/+cECALs1AgC2MwIAtjcCALtcAgC7Ug39AAACALtWAf/6zAH/+sdP+A
+AAD//+AAIAtjsCALY+AgC7MAIAddpCADDOwf/66EIAtkIB//rMQf/7NcH/+zkB//rQQEAAAIEgAA
+ACALsHCBAAAAAAAwAB//sGQgC7CgIAMM6B//sawf/7RoH/+vkB//s6hJAAAAIAuwACALr1AgC6+w
+LgA2AAAPA/8DEQAAAxUAAB//r4AgB1wgIAtkYB//q9Af/5qwH/+qfB//nfwf/58wIAC9KB//7Tgf
+/+yAH//uPAAAE4gf/6u0AgCCEAIAAhAAACAAAgAAEAAaAAAA+saIACAAAPAAAAAf/6y44QMGACAH
+XHQgB10cH/+B8CALZLAgC2SAIAtk4CALsqD//3//AAAyAB//m8gf/53sH/+sgCALssAAAPgAADw8
+PB//scAf/5Z4H/+aQB//riQKFChQIAgPBCAHXWAf/5SoIAMO9B//lfz//8f/AAL/wB//m2wgC7SA
+IAu0ICALtrAf/5wMIAtlgCALtlAgC7YgIAtlECALtoAgC7OwH/+cAB//qigf/6okH/+CcB//qwAf
+/6tUH/+cWB//nFQf/5xMH/+cSB//gpAf/6tYIAMJQCADC4Af/4KwH/+utCALagAf/6rYH/+q3B//
+quAf/6sUH/+rEB//qwwf/6sIH/+rBB//qvwf/6rsH/+q8B//qvQf/4LgH/+qYB//m5wAAEADH/+V
+FB//qhSH////H/+cgB//nAQf/5zgH/+eHAAP//AgC2pAH/+DkCALaqAf/4OgH/+u1CALauAf/5z4
+IAtrMB//nMwgC2tgIAtrkB//g7Af/5w8AAAlgCALa8AgC2wAH/+b5B//mdAf/4PQH/+b4B//mngf
+/5nMH/+D2P//AAAD5/wYIAtsMB//g+Af/6ugIAMJlB//q5wP////IAMPICALbJAgCBPk///rICAI
+E5T//+twIAgSVP//7LAgCBF0///tkB//nGQD///gAARyDAAEchQABHIcAARwFAAEcCgABHAgAARw
+LAAAhYA////gAARAJAAEQEwABEokAAQA4AAEAAQgC28wIAtvYB//nCAABALEAAQCwCALu+AgC7wQ
+AARwZCALvEAABEHAAARBxAAEQcgABEB4AARA3AAEQUAABEFEIAtwMCALcHAgC3CgIAtvkCALb9Ag
+C3AAAARwWAAAECgABEFgIAtw8AAAd3cAADMzIAtyMCALcTAgC3GwIAtx8CALcXAgC3DAAAAgKAAE
+dBgABErAAARAwAAEQMQABEHwAARB9AAEdBQgC7ugIAtzUCALcxAgC3LQIAtykCALclAABAJwAAAI
+8AAEAnQABAJ8AAQCkAAAvygABHBcAAR0AAAA8AYABEvwAARyKAABmy8AAWMdAAQBMAAEAOwABAEI
+AAR2AAAEAQQABHYEAAD/+AAEAQAABADkAAR2CAAA/8EABHIAAABVVQAEcgQABAD4AAQA3AAEANgA
+BHJIAAQBOAAEARgABHJMAAQA9AAEclAABHQIAARyCAAEQEgABErcIAtzkCALc9AgC3QQAARBLAAE
+QTwABEDgIAt0UAAEQQAgC3SAAARwSAAEcGAABHIgAAR2DAAEeASAEAAAIAu8gCADD7CAEgADAAQA
+6IAQAAMABADAAABOIAAEAMwABADEAAQAyAAEATQgCAbUIAgLFAACACEABACAAA//KQAEAEQgC3Sw
+AAQCRAAEAkwABAJIBgYAAAAEAYAAAB54AAEwsAAEANAABADUAAQA8AAEAPwAAgjVAAEEagAEAQwA
+BAEQAACiwgAEARQABAEcAAQBJAAEASgABAEsAAQBQAAEAUQABAJQAAQBIAAEAmAABAJkAAQCVAAB
+ACF3NZQAAARB/AAES/wAAIAgAAAICAAEcDAgCAPAAARgwAAEYMQAAIgAAARB1AAES9QABEHYAARL
+2AAEQdwABEvcAARwOAAEcAAgC3TgAARwBCALdSAABGDIAACAJAAEQBwABEocAAAXLCALdWAgC3WQ
+O5rKAAAEYOQABGDQIAt1wAAEQAAABEAEAARADAAEQAggAws0AARKBAAEcDQABHAIAARQAAAEVAAA
+BGDMAAB/AAAEQdAABEvQAARwUAAEUGgABFBAAARUaCAIB/AABFBQAARUUAAEUiQAAEBAAARSKAAE
+UiwABEAQAARIEAAEQBQABEgUIAgIEAAEQeAABEvgIAgINAAEQegABEvoAARB5AAES+QABEHsAARL
+7AAEQBgABEoYAADu8AAEUGAABFRgAAARAAAAETAAABAwIAgD6CAIAzwgCAVIIAgEnCAIBqggCAX8
+AAQTBAAEEyQA////AIECIB//lUAAAPD/AABQDQCAAADhAeJA4QASAP/ADAAf/5SkH/+WECALeNAB
+////A9/SQAIWDsDhA0YAIAt5IB//mvAABFSwAADj7wAEULAABGDgAADB8x//rQgf/4Qw//x//yAL
+eUCAAAUAAAB+6IAABwAgC7+QgAAEAIAABgAgC79wgAABAIAAAgAf/50w/58AAEAIAAACAAAA+MAA
+AAAAYCz/f///IAt5YCAJQ0AgC3mgH/+U4CAJRMAgAwjQIAt50B//rjgAD///IAddWB//rbAf/69g
+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
+W6dbKzLmJTYp9DYqLAAgLTD6MiQqACBu8Pz6gCD+Alrw/TblKgBAZvD7NiMqACBasFtt1dEPAAD9
+MqsgBH4p4PncAAAEeitgKDD1KRY2Bz0U/RY9IV0AtiAoMYH7CgAgABB4MPyIEAAAEFAw8AHzagMA
+QrCnWfcMBgH+AkpwCckBf5ttKjJCf69nGNkTLTD3Bf4M+NlVHgMAQ7Co3S3QgA7+DPsyKC4AIHHw
+990oAf4Cc7D1FhEuAEBzMP42JyoFROrQrn6w7v02KC4AQHMwLjYnKEApwKT7CgYgIBBIMPzZuBgJ
+AEow+EQpIgAAa/BbpyDRDwAAAAD13AAHZwA3YAX7Nws7FPsWMSIAAFLwWkXpKzD9LTD4LjD5LzD7
+/DD8IgAAErD5MP8oACBrsPkWAigAIHow+xYBKAAgYjD8FgAoACBaMPzZPBgAIEow+BYsIAUQUDD4
+FgMgBhBYMFunBCkw9SUw9AJ7DP28AAAE/6pgKhIs+RYpIgAAcvD8CgAsACBNcPwWKywAIG6w/RYq
+JfAAtqD/nAAAARBIMPkWNCAAEEAw+BYtL/8QSDApFi5gBgUrMP0tMPguMPkvMPssMPz6MP8oACBv
+sPoWAigAIH5w+xYBKAAgZnD8FgAoACBecPzZFRgAIFZw+RYyIAYQWDD5FgMgBRBQMFum3SoSMsyp
+LRI98AA1YAAQeDDAsfsWNCAIEFgwW6joLjD1LRIy/t0IAAAQYDBbp1woEjT4CAYOAQBG8P0SPS4A
+QEfwLkAp/DGBIAgQWDAPuwz72igAQBBAMPzMEA4JAEOw/kQpKgMAYrAc2VMqFhn/2CgPdAFQMP28
+AAAGEFgw+BY+KXQBQDD4FgAgBRBQMFumuSkSGdMP/hI+JeMANmAa2JApNij6NicoACBWcC0SNv/Y
+zBAKADegKTYrLjYsK/J5KvJ6C6oMKhY8DTsUKxYzWkV6LjD0KTGA/BI8IAgQaDAK3Qz05ZxowAQ+
+YC4SM9MPDe4oCe42L0ApKAqACP8CL0QpwPD6FgEgABBIMP4WGCt0AWQw/NkpH3QBcDD7FgIgBRBQ
+MPkWACAGEFgwW6aSKRIYyJwc2Gv5NiYsACBh8Cw2JS0yJWTQ4S0yJ2TQ2y0WHRzZHv4yKCAFEFAw
+/hYvIAYQWDBbpoQnMhcrQoosMPcoMiIqQo7/QpIsACArMCzAgC4SL/r5CAgAIFow98woCAAgSjAI
+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
+BsAAOCAHLcAgAxBQCMAAPCAHLFwgAxBUAsAAQCAHLcAgAxBYCMAARCAHLFwgAxBcCEAATCAHLOwg
+AxBgCEAAUCAHLOwgAxBkCEAAVCAHLOwgAxBoCEAAWCAHLOwgAxBsIEAAXCAHLOwgAxBwIEAAbCAH
+LOwgAxB0IEAAfCAHLOwgAxB4IEAAjCAHLOwgAxB8IEAAnCAHLOwgAxCAIEAArCAHLOwgAxCEIEAA
+vCAHLOwgAxCIIEAAzCAHLOwgAxCMDEAA3CAHKrwgAxCQDEAA6CAHKrwgAxCUDEAA9CAHKrwgAxCY
+DEABACAHKrwgAxCcDEABDCAHKrwgAxCgDEABGCAHKrwgAxCkDEABJCAHKrwgAxCoDEABMCAHKrwg
+AxCsCEABPCAHLOwgAxCwCEABQCAHLOwgAxC0CEABRCAHLOwgAxC4EEABSCAHLOwgAxC8EEABUCAH
+LOxiY204NDg1Nl9sb2Fkc2VxdWVuY2U6IFN0YXJ0ZWQKAGJjbTg0ODU2X2xvYWRzZXF1ZW5jZTog
+VXBsb2FkIGltYWdlIHRvIFBIWSBvbi1jaGlwIG1lbW9yeQoAAAAAAABiY204NDg1Nl9sb2Fkc2Vx
+dWVuY2U6IGRvbmUgbG9hZGluZyBpbWFnZSAoaSA9ICV1KQoAAAAAAAAAAAAAAAAAYmNtODQ4NTZf
+bG9hZHNlcXVlbmNlOiBET1dOTE9BRCBGQUlMRUQgKGxvID0gJSN4LCBoaT0lI3gsIGNudD0ldSkK
+AAAAAAAAAAAAAAAAAABiY204NDg1Nl9sb2Fkc2VxdWVuY2U6IERvd25sb2FkIGNvbXBsZXRlZCBh
+ZnRlciAldSBsb29wcwoAAAAAAAAAaHdfY2w0NV9pbml0WyV1XSBhY2FwcyAlI3gKAAAAAABiY204
+NDg1Nl9pbml0WyV1XQoAAAAAAAAAAAAAAAAAAGh3X2JjbTg0ODU2X2xvd3Bvd2VyWyV1XTogZW5h
+YmxlPSVkCgAAAAAAAAAAAAAAAGh3X2JjbTg0ODU2X2xvd3Bvd2VyWyV1XSwgZmFpbGVkIHRvIHNl
+dCAzMC4weDQwMEEgYml0IDc7IDMwLjB4NDAwRSBiaXQ9MSBhZnRlciA1bXMsIHJlZz0leAoAAAAA
+AGh3X2JjbTU0ODJfY2ZnbWRpWyV1XSBzZXR0aW5nIHR5cGUgJXUKAAAAAAAAAAAAAHJlbW92ZSBt
+dWx0aWNhc3QgbWFjIFsleDoleDoleDoleDoleDoleF0gZnJvbSBUQ0FNCgAAAAAAAAAAAAAAAABp
+cHY2X2pvaW5fZ3JwOiBpZCAldSwgcmVmX2NudCAldQoAAAAAAAAAAAAAAAAAAABkaGNwNl90aW1l
+cl9jYjogcmVzZW5kaW5nIERIQ1A2U09MSUNJVCBhZ2FpbgoAAABkaGNwNl90aW1lcl9jYjogc2Vu
+ZGluZyBESENQNlJFUVVFU1QKAAAAAAAAAAAAAABkaGNwNl90aW1lcl9jYjogc2VuZGluZyBESENQ
+NlJFTkVXIHJlcXVlc3QKAAAAAABkaGNwNl90aW1lcl9jYjogc2VuZGluZyBESENQNlJFQklORCBy
+ZXF1ZXN0CgAAAABkaGNwNl90aW1lcl9jYjogREhDUDZSRVBMWSByY3ZkLCBzdGF0ZSAldQoAAAAA
+AABmYWlsZWQgdG8gcmVuZXcvcmViaW5kIGRoY3B2NiBhZGRyZXNzCgAAAAAAAAAAAAB0eXBlICV4
+LCB4aWQgJXgsIHR5cGVfeGlkICV4CgAAAGlwdjZfbXVsdGljYXN0X3F1ZXJ5X3RpbWVyX2NiIG5v
+ZGVfaWQgJWQKAAAAAAAAAGlwdjZfZ2VuZXJhbF9xdWVyeV90aW1lcl9jYgoAAAAAYWRkIG11bHRp
+Y2FzdCBtYWMgWyV4OiV4OiV4OiV4OiV4OiV4XSBpbiBUQ0FNCgAAY2huZXRfaXB2Nl9kYWRfY2I6
+IGhhbmRsZSAldSwgYWRkcl9pZCAldSwgYWRkciBzdGF0ZSAldQoAAAAAAAAAAGlwdjYgcHJlZmVy
+cmVkIGFkZHIgWyUwNHggJTA0eCAlMDR4ICUwNHhdCgAAAAAAAFN0YXJ0aW5nIGFkZHIgdmFsaWRp
+dHkgdGltZXIgZm9yICV1IHNlY29uZHMKAAAAAFZhbGlkaXR5IGV4cGlyZWQgZm9yIGFkZHJfaWQg
+JXUKAAAAAAAAAAAAAAAAAAAAAHNlbmRpbmcgaXB2NiBlY2hvIHJlcGx5CgAAAAAAAAAAY2huZXRf
+aXB2Nl9yc19vdXRwdXQ6IGwyZGV2X2ZjIDB4JXgKAAAAAAAAAAAAAAAAY2huZXRfaXB2Nl9uc19v
+dXRwdXQ6IGwyZGV2X2ZjIDB4JXgsIGZsb3djX2lkIDB4JXgsIHZsYW4gZmxhZyAweCV4CgAAAAAA
+AAAAAAAAAABjaG5ldF9pcHY2X25hX291dHB1dDogbDJkZXZfZmMgMHgleAoAAAAAAAAAAAAAAABj
+aG5ldF9pcHY2X21sZHYyX3JlcG9ydF9vdXRwdXQ6IGwyZGV2X2ZjIDB4JXgKAABnYXRoZXJfdGFz
+a3NfdG9fdHhfbGlzdDogdGFzayBpbiB1c2UgWyV1XQoAAAAAAABnYXRoZXJfdGFza3NfdG9fdHhf
+bGlzdDogaWR4IFsldV0sIHRhc2sgZmlkIFsweCV4XSwgdGFzayBzdGF0ZSBbMHgleF0sIHRhc2sg
+Y29ubiBbMHgleF0sIHRhc2sgZmZsYWdzIFsweCV4XSwgY29ubiBmaWQgWzB4JXhdLCBkZHAgWyVk
+XQoAAAAAAAAAAABnYXRoZXJfdGFza3NfdG9fdHhfbGlzdDogdGFzayBbMHgleF0sIHN0YXRlIFsw
+eCV4XSBvbiBjb25uIFsweCV4XSBub3QgdmFsaWQgdG8gZ2F0aGVyLCBza2lwcGluZwoAAAAAAAAA
+AAAAAAAAAAAAZ2F0aGVyX3Rhc2tzX3RvX3R4X2xpc3Q6IHRhc2sgWzB4JXhdLCBzdGlsbCBxdWV1
+ZWQgb24gdHggcGVuZGluZyBsaXN0LiBSZW1vdmluZyBpdC4KAAAAAAAAAAAAAAAAZ2F0aGVyX3Rh
+c2tzX3RvX3R4X2xpc3Q6IGNvbm5fZmMtPmZsb3djX2ZsYWdzIFsweCV4XSwgbGlzdF9lbXB0eSBb
+MHgleF0sIGFkZF90YXNrX2NvdW50IFsweCV4XQoAdG9fdHhfbGlzdDogbm8gdGFzayB0byBjbG9z
+ZSBmb3IgY29ubiBbMHgleF0sIGJhaWxpbmcgdG8gcmVjb3Zlcnkgc3RhdGUgWzB4JXhdCgBzZXRf
+ZGlnZXN0OiB1cGxzdWJtb2RlOiV4CgAAAAAAAGF1dGhlbnRpY2F0ZV90YXJnZXQ6IEtFWV9DSEFQ
+X1JFU1AgLSBbMHgleCV4JXgleCV4JXgleCV4XQoAAAAAAABhdXRoZW50aWNhdGVfdGFyZ2V0OiBL
+RVlfQ0hBUF9SRVNQIC0gWzB4JXgleCV4JXgleCV4JXgleF0KAAAAAAAAYXV0aGVudGljYXRlX3Rh
+cmdldDogSW5jb3JyZWN0IHBhc3N3b3JkCgAAAAAAAAAAQ0hBUF9DOiBkaWdlc3QgZXhwYW5zaW9u
+IGVycm9yCgBDSEFQX046IFRhcmdldCB1c2VyaWQgbWlzbWF0Y2gKAENIQVBfUjogZGlnZXN0IGV4
+cGFuc2lvbiBlcnJvcgoAaVNDU0kgU2VjLXBhcmFtcyByZWNlaXZlZCBoYXZlIGVycm9ycyEhCgAA
+AAAAAAAAVGFyZ2V0IG1vdmVkIHRlbXAuIGNvbm4gJXgsIHNlc3MgJXgKAAAAAAAAAAAAAAAATG9n
+aW4gRmFpbGVkISEuIGNvbm5fZmMgWzB4JXhdLCBzZXNzX2ZjIFsweCV4XSwgc3RhdHVzX2NsYXNz
+IFsweCV4XQoAAAAAAAAAAAAAAABQcm90b2NvbCBFcnJvciBjYml0ICVkIHRiaXQgJWQgY3NnICVk
+IG5zZyAlZAoAAAByZWN2X25vcGluOiBjdHJsIHRhc2sgYWxyZWFkeSBwZW5kaW5nCgAAAAAAAAAA
+AABvZmxkX3J4X2RhdGE6IGFpZWUsIGlzY3NpIGNvbm4gWzB4JXhdIGZvciBzZXNzIFsweCV4XSwg
+dHlwZSBbMHgleF0gdHJhbnNpdGVkIGluIHRvZSBtb2RlLiBLaWNraW5nIHJlY292ZXJ5IAoAAAAA
+b2ZsZF9yeF9kYXRhOiBjb25uIHRpZCBbMHgleF0sIHJ4X2RhdGEtPnNlcSBbMHgleF0sIHJ4X2Rh
+dGEtPmxlbiBbMHgleF0sIHJ4X2RhdGEtPnN0YXR1cyBbMHgleF0KAAAAAAAAAAAAAAAAAAAAAG9m
+bGRfcnhfZGF0YTogY3NrIHsgaWQgWzB4JXhdLCBjc29ja19vZmZzZXQgWzB4JXhdLCBkbGVuIFsw
+eCV4XSB9CgAAAAAAAAAAAAAAAAAAYWN0X2VzdDogdGNiX2ZjIFsweCV4XSwgZmxvd2NfaWNvbm5f
+ZmxhZ3MgWzB4JXhdCgAAAAAAAAAAAAAAAAAAAGFjdF9lc3RhYjogdGNiX2ZjLT5mbG93Y19idWYg
+WzB4JXhdLCB0Y2JfZmMtPmZsb3djX3R5cGUgWzB4JXhdIHRjYl9mYy0+Zmxvd2Nfc3RhdGUgWzB4
+JXhdLCBucGFnZXMgWzB4JXhdLCBmbG93Y190cF9zbmRfbWF4IFsweCV4XQoAAAAAAAAAAAAAAAAA
+AGFjdF9lc3RhYjogYXRpZCBbMHgleF0sIHRpZCBbMHgleF0sIG9wIFsweCV4XSwgcmN2X2lzbiBb
+MHgleF0sIHNuZF9pc24gWzB4JXhdLCBjc29jay0+Zmxvd2Nfc3RhdGUgWzB4JXhdLCB0Y3Bfb3B0
+IFsweCV4XSwgdGNiX2ZjLT5mbG93Y19pZCBbMHgleF0gCgAAAAAAAAAAAAAAAABjc2tfZmMtPmZs
+b3djX2Nzb2NrX2Nvb2tpZSBbMHgleF0gCgAAAAAAAAAAAAAAAABuZXRfbDJkZXZfZmluZF9ieV9h
+ZGRyNjogbDJkZXZfZmMtPmZsb3djX2lkIFsweCV4XSwgbDJkYy0+bHBvcnQgWyV1XSwgbDJkX2Zj
+LT5mbG93Y19pZCBbMHgleF0sIGFkZHIgWyUwNHg6JTA0eDolMDR4OiUwNHhdCgAAAAAAAGNobmV0
+X3F1ZXVlX3htaXQ6IGZjLT5mbG93Y19pZCBbMHgleF0sIGJ1Zl9sZW4gWzB4JXhdLCBidWZmZXJl
+ZCBbMHgleF0sIGZpZm8ubnVtX2J5dGVzIFslMHhdCgAAAG5ldGlmX2RvX2RoY3B2Njogd3ItPnBh
+cmFtLnZsYW5pZCBbJXVdLCBsMmRldl9mYy0+Zmxvd2NfbmV0X2wyZGV2X3ZsYW5kZXYgWzB4JXhd
+CgAAAAAAAAAAAAAAAAAAAG5ldGlmX2RvX2RoY3B2NjogaXB2NiBub3QgZW5hYmxlZAoAAAAAAAAA
+AAAAAAAAAGRoY3AgcmVzcCB0byBkcml2ZXIKAAAAAAAAAAAAAAAAbDNpbjZfZGV2X2NvbmZpZzog
+d3ItPnBhcmFtLnZsYW5pZCBbJXVdLCBsMmRldl9mYy0+Zmxvd2NfbmV0X2wyZGV2X3ZsYW5kZXYg
+WzB4JXhdCgAAAAAAAAAAAAAAAAAAbDNpbjZfZGV2X2NvbmZpZzogaXB2NiBub3QgZW5hYmxlZAoA
+AAAAAAAAAAAAAAAAbmV0X2wzaW42X2Rldl9jb25maWc6IGwyZGV2X2ZjLT5mbG93Y19pZCBbMHgl
+eF0sIGFkZHJlc3MgYWxyZWFkeSB1c2VkIGJ5IHBvcnQgJWQsIGFkZHJfaWQgJWQKAAAAbmV0X2wz
+aW42X2Rldl9jb25maWc6ICBhZGRyIFsweCUwNHglMDR4JTA0eCUwNHhdLCByZWZfY250IFsweCV4
+XSBpbiB1c2UKAAAAAAAAAABsM2luNF9kZXZfY29uZmlnOiB3ci0+cGFyYW0udmxhbmlkIFsldV0s
+IGwyZGV2X2ZjLT5mbG93Y19uZXRfbDJkZXZfdmxhbmRldiBbMHgleF0KAAAAAAAAAAAAAAAAAABu
+ZXRfbDNpbjRfZGV2X2NvbmZpZzogbDJkZXZfZmMtPmZsb3djX2lkIFsweCV4XSwgYWRkcmVzcyBh
+bHJlYWR5IHVzZWQgYnkgcG9ydCAlZAoAAAAAAAAAAAAAAAAAAABuZXRfbDNpbjRfZGV2X2NvbmZp
+ZzogIGFkZHIgWzB4JXhdLCBtYXNrIFsweCV4XSwgZ3cgWzB4JXhdLCByZWZfY250IFsweCV4XSBp
+biB1c2UKAAAAAAAAAAAAAAAAAABsMmRldl9mYyBbMHgleCBdIEZhaWxlZCB0byBzdGFydCB0aW1l
+ciBmb3IgaXB2NCBkYWQKAAAAAAAAAAAAAAAAd3JoX2NobmV0X2lmY29uZjogbDJkZXZfZmMtPmZs
+b3djX2lkIFsweCV4XSwgbDJkZXZfZmMtPmZsb3djX3R5cGUgWyUweF0sIGlmY29uZl93ci0+c3Vi
+b3AgWzB4JXhdCgAAAAAAAAAAAAAAAAAAAHdyaF9jaG5ldF9pZmNvbmY6IGwyZGV2X2ZjLT5mbG93
+Y19pZCBbMHgleF0sIHVua25vd24gc3Vib3AgWzB4JXhdCgAAAAAAAAAAAAAAAAAAd3JoX2NobmV0
+X2lmY29uZjogbDJkZXZfZmMtPmZsb3djX2lkIFsweCV4XSwgcmMgJWQKAAAAAAAAAAAAAAAAAG5l
+dGlmX2lwX2NvbmZsaWN0X3RpbWVyX2NiOiBsMmRldl9mYy0+Zmxvd2NfaWQgWzB4JXhdLCBleHBl
+Y3RpbmcgdGltZXIgaGFuZGxlIFslZF0sIGJ1dCBnb3QgaGFuZGxlIFslZF0gZXhwaXJ5CgBuZXRp
+Zl9pcF9jb25mbGljdF90aW1lcl9jYjogbDJkZXZfZmMtPmZsb3djX2lkIFsweCV4XSwgaW5kZXZj
+dHh0LT5zdGF0ZSBbJWRdLCBpbmRldmN0eHQtPnJldHJ5X2NudCBbJWRdCgAAAAAAAAAAbmV0aWZf
+aXBfY29uZmxpY3RfdGltZXJfY2I6IGwyZGV2X2ZjLT5mbG93Y19pZCBbMHgleF0sIGluZGV2Y3R4
+dCBbMHgleF0sIGluIGZyZWUgc3RhdGUKAAAAAAAAAAAAY21kaF9jaG5ldF9pZmFjZTogZmMgWzB4
+JXhdLCBmYy0+Zmxvd2NfaWQgWzB4JXhdLCBmYy0+Zmxvd2NfdHlwZSBbMHgleF0sIHAgWzB4JXhd
+LCBsZW4xNiBbJXVdLCBsb2MgWzB4JXhdCgAAAAAAAGNtZGhfY2huZXRfaWZhY2U6bDJkZXZfZmMg
+WzB4JXhdLCBsMmRldl9mYy0+Zmxvd2NfaWQgWzB4JXhdLCBsMmRldi0+Zmxvd2NfdHlwZSBbJXVd
+LCBsMmRldl9mYy0+Zmxvd2NfbmV0X2wyZGV2X2ZsYWdzIFslMHhdCgAAAAAAY21kaF9jaG5ldF9p
+ZmFjZTogcjJbMF06JXUgcjJbMV06JXUsIHN1Ym9wOjB4JXgKAAAAAAAAAAAAAAAAAAAAAGNtZGhf
+Y2huZXRfaWZhY2U6IGwyZGV2X2ZjLT5mbG93Y19uZXRfbDJkZXZfZmxhZ3MgY2hhbmdlZCBmcm9t
+IFslMHhdIHRvIFslMHhdLCByYyBbJWRdCgAAAAAAAAAAAGNobmV0X2wyZGV2X3VwX21iX2NiOiBy
+YyBbJWRdLCBwb3J0IFsldV0sIHN0YXRlIFsldV0sIGNvb2tpZSBbMHgleF0KAAAAAAAAAAAAAAAA
+ZGhjcF9wcm9jZXNzX2NiOiBsMmRldl9mYy0+Zmxvd2NfaWQgWzB4JXhdLCBkaGN0eHQtPnN0YXRl
+IFslMHhdLCBkaGN0eHQtPnJ0cnlfY250IFsldV0KAAAAAAAAAAAAZGhjcF90aW1lcl9jYjogREhD
+UERJU0NPVkVSIHNlbnQsIGJ1dCBubyByZXBseSBmcm9tIGFueSBwb3NzaWJsZSBzZXJ2ZXIgb24g
+dGhlIG5ldHdvcmsuIFJldHJ5aW5nIGFnYWluCgAAAAAAAAAAAGRoY3BfdGltZXJfY2I6IGwyZGV2
+X2ZjLT5mbG93Y19pZCBbMHgleF0sIHNlbmRpbmcgREhDUERJU0NPVkVSIGZvciBkaGN0eHQgWzB4
+JXhdIG9uIHBpZCBbJWRdCgAAAGRoY3BfdGltZXJfY2I6IGwyZGV2X2ZjLT5mbG93Y19pZCBbMHgl
+eF0sIERIQ1BPRkZFUiByZWNlaXZlZCBmb3IgZGhjdHh0IFsleF0gcGlkIFslZF0KAAAAAAAAAAAA
+AGRoY3BfdGltZXJfY2I6IGwyZGV2X2ZjLT5mbG93Y19pZCBbMHgleF0sICBESENQQUNLIHJlY2Vp
+dmVkIGZvciBkaGN0eHQgWyV4XSwgcGlkIFslZF0KAAAAAAAAAAAAAGRoY3BfdGltZXJfY2I6IGwy
+ZGV2X2ZjLT5mbG93Y19pZCBbMHgleF0sIGRoY3R4dC0+aXBhZGRyIFsweCV4XQoAAAAAAAAAAAAA
+AAAAAAAAZGhjcF90aW1lcl9jYjogc3RhcnRpbmcgdGltZXIgZm9yIGxlYXNlIFsldV0gc2Vjb25k
+cwoAAAAAAAAAAAAAAGRoY3BfdGltZXJfY2I6IGxlYXNlIHRpbWUgb2YgWyV1XSBzZWNvbmRzIGV4
+cGlyZWQsIHNlbmRpbmcgcmVuZXcgcmVxdWVzdAoAAAAAAAAAZGhjcF90aW1lcl9jYjogbDJkZXZf
+ZmMtPmZsb3djX2lkIFsweCV4XSwgbm8gcmVwbHkgZnJvbSBkaGNwIHNlcnZlciwgdGltaW5nIG91
+dAoAAAAAAAAAAAAAAAAAAAAAYXV0aF9uZWdvX3NlY3VyaXR5OiBzZW5kX2ZsYWcgWzB4JXhdLCBh
+dXRoX3BvbGljeSBbMHgleF0KAAAAAAAAAGF1dGhfbmVnb19zZWN1cml0eTogS0VZX0NIQVBfUkVT
+UCAtIGhhc2hbMHgleCV4JXgleCV4JXgleCV4XQoAAABhdXRoX25lZ29fc2VjdXJpdHk6IEtFWV9D
+SEFQX1JFU1AgLSBoYXNoWzB4JXgleCV4JXgleCV4JXgleF0KAAAAYXV0aF9uZWdvX3NlY3VyaXR5
+OiBLRVlfQ0hBUF9SRVNQIC0gZXJyb3IgZW5jb2RpbmcgdG8gaGV4CgAAAAAAAGF1dGhfbmVnb19z
+ZWN1cml0eTogS0VZX0NIQVBfUkVTUCAtIGVsZW4gWzB4JXhdCgAAAAAAAAAAAAAAAAAAAABhdXRo
+X25lZ29fc2VjdXJpdHk6IEtFWV9DSEFQX0NIQUwgLSBlcnJvciBlbmNvZGluZyB0byBoZXgKAAAA
+AAAAYXV0aF9uZWdvX3NlY3VyaXR5OiBLRVlfQ0hBUF9DSEFMIC0gZWxlbiBbMHgleF0KAAAAAAAA
+AAAAAAAAAAAAAGxvZ291dF90aW1lZG91dDogbG9nb3V0IHJlcXVlc3QgdGltZWRvdXQsIHBvc3Np
+YmxlIG5ldHdvcmsgaXNzdWVzLiBGb3JjZWZ1bGx5IGJyZWFraW5nIHBhdGggZm9yIHNlc3MgWzB4
+JXhdCgAAAABwaW5nX3RhcmdldDogcGluZyB0aW1lb3V0LCBraWNraW5nIHJlY292ZXJ5IGZvciBz
+ZXNzIFsweCV4XQoAAAAAY3NvY2tfZmFpbGVkOiBjc2tfZmMtPmZsb3djX2lkIFsweCV4XSwgY3Nr
+X2ZjLT5mbG93Y19zdGF0ZSBbMHgleF0sIHNlc3NfZmMtPmZsb3djX2lkIFsweCV4XSwgc2Vzc19m
+Yy0+Zmxvd2Nfc3RhdGUgWzB4JXhdLCBldnQgWzB4JXhdCgAAAAAAAAAAAAAAY2huZXRfZmluZF9p
+cDZfbDJ0X2VudHJ5OiBmaW5kIHByZWZpeCBtYXRjaCBbJTA0eCAlMDR4ICUwNHggJTA0eF0KAAAA
+AAAAAAAAAAAAAABObyByb3V0ZXIgY29uZmlndXJlZCwgbDJkZXZfZmMtPmZsb3djX2lkIDB4JXgK
+AAAKUm91dGVyIGxpZmUgJXUgZXhwaXJlZC4gZGVsZXRpbmcgcm91dGVyIFslMDR4ICUwNHggJTA0
+eCAlMDR4XQoAVXNpbmcgcm91dGVyIFslMDR4ICUwNHggJTA0eCAlMDR4XSB0byByZWFjaCBbJTA0
+eCAlMDR4ICUwNHggJTA0eF0KAAAAAAAAAAAAAAAAAABsMnRlbnQgWyUweF0sIGwydGVudC0+aWR4
+IFslZF0KAHJjIFslZF0sIGNza19mYyBbMHgleF0sIGNza19mYy0+Zmxvd2NfaWQgWzB4JXhdCgAA
+AAAAAAAAAAAAAAAAAABjc29ja19hbGxvYzogc3JjX2FkZHI6MHgleCwgZHN0X2FkZHI6MHgleAoA
+AAAAAABjb25uZWN0aW9uIG92ZXIgaXB2NiwgbDJkZXYgZmxvd2NfaWQgMHgleAoAAAAAAABjc2tf
+YWxrOiBJbnZhbGlkIGwyZGV2OjB4JXgKAAAAAGNza19hbGs6IG5leHQ6JXUsIGlkeDoldSwgdXNl
+ZDoldSwgc3BvcnQ6JXUKAAAAAGNzb2NrX2FsbG9jOiBjc29ja19zcmNfYWRkcjoweCV4LCBjc29j
+a19kc3RfYWRkcjoweCV4CgAAAAAAAAAAAABjc29ja19hbGxvYzogdHhfY2ggWzB4JXhdLCBscG9y
+dCBbMHgleF0sIGNvb2tpZSBbJTA4eF0KAAAAAAAAAAAAY3NvY2tfYWxsb2M6IGF2YWlsYWJsZSBb
+JXVdLCBuY3NvY2sgWyV1XSwgcG9zOmF0aWQgWzB4JXhdLCBjc2tfZmMgWzB4JXhdLCBjc2tfZmMt
+PmZsb3djX2lkIFsweCV4XSwgc3BvcnQgWyV1XQoAAHJlY292ZXJ5X3RpbWVvdXQ6IHNlc3MgaWQg
+WzB4JXhdIHN0YXRlIFsweCV4XSwgcmNvdW50IFslZF0sIGZsYWdzIFsweCV4XQoAAAAAAAAAcmVj
+b3ZlcnlfdGltZW91dDogc2VzcyBpZCBbMHgleF0gaW4gbG9nb3V0LCBhYm9ydCB0aGUgY29ubmVj
+dGlvbgoAAAAAAAAAAAAAAAAAAAByZWNvdmVyeV90aW1lb3V0OiBzZXNzX2ZjLT5mbG93Y19mb2lz
+Y3NpX3Nlc3NfZmxhZ3MgWzB4JXhdLCBjb25uZWN0aW9uIHJlcXVlc3QgcGVuZGluZywgYmFpbGlu
+ZyBvdXQKAAAAAAAAAAAAAAAAZm9pc2NzaTogUmVjb3ZlcnkgdGltZWQgb3V0IGFmdGVyIFsldV0g
+cmV0cnksIGJhaWxpbmcgb3V0CgAAAAAAAFRDUCBjb25uIGVzdGFibGlzaG1lbnQgZmFpbGVkICVk
+CgAAAAAAAAAAAAAAAAAAAGRpc2NvdmVyeV9kYXRhOiBzZXNzIHsgaWQgWzB4JXhdLCBmbGFncyBb
+MHgleF0sIGJ1ZmZlcmVkIFsldV0uIH0KAAAAAAAAAAAAAAAAAAAAZGlzY292ZXJ5X2RhdGE6IHNl
+c3MgeyBpZCBbMHgleF0gfSwgdWxwdHhjaCBbJXVdIG5vIGNyZWRpdHMgYXZhaWxhYmxlLCByZXNj
+aGVkdWxpbmcgcmVxdWVzdC4KAAAASW52YWxpZCBvcGNvZGUgMHgleCBpbiBjdHJsIHBhdGgKAAAA
+AAAAAAAAAAAAAAAARERQIGVycm9yIFsweCV4XSwgYWJvcnRpbmcgY29ubm4gWzB4JXhdCgAAAAAA
+AAAAcnhfZGF0YV9kZHA6IFJlc3BvbmNlIHJlY2lldmVkIGZvciB0YXNrIFsweCV4XSB3aGlsZSBp
+bnZhbGlkIHRhc2sgb3IgY29ubmVjdGlvbiBzdGF0ZS4gdGFzayBzdGF0ZSBbMHgleF0sIGNvbm4g
+c3RhdGUgWzB4JXhdLCBjb25uIGZsYWdzIFsweCV4XQoAaWhkcjogUmVzcG9uY2UgcmVjaWV2ZWQg
+Zm9yIHRhc2sgWzB4JXhdIHdoaWxlIGludmFsaWQgdGFzayBvciBjb25uZWN0aW9uIHN0YXRlLiB0
+YXNrIHN0YXRlIFsweCV4XSwgY29ubiBzdGF0ZSBbMHgleF0sIGNvbm4gZmxhZ3MgWzB4JXhdCgAA
+AAAAAAAAaWhkcjogSW52YWxpZCB0YXNrIHN0YXRlIDB4JXggZm9yIHRhc2sgMHgleCwgaXR0IFsw
+eCV4XSwgb3BjIFsweCV4XQoAAAAAAAAAAAAAAABwcm9jZXNzX3RtZl9yZXNwb25zZTogYnVmZmVy
+ZWQgWzB4JXhdLCBpc3Rhc2tfZmMtPmZsb3djX2J1Zi0+c2NoZWRfbm9kZS5uZXh0IFsweCV4XSwg
+aXN0YXNrX2ZjIFsweCV4XSwgaXN0YXNrX2ZjLT5mbG93Y19pZCBbMHgleF0KAAAAAAAAAAAAAAAA
+AABwcm9jZXNzX3RtZl9yZXNwb25zZTogd3Igb3AgWzB4JXhdLCB0bWYgb3AgWzB4JXhdCgAAAAAA
+AAAAAAAAAAAAdG1mX3Jlc3A6IGZsb3djOjB4JXgsIGlkOjB4JXgsIHN0YXRlOjB4JXgsIHlpZWxk
+OjB4JXgKAAAAAAAAAAAAAHRtZl9yZXNwOiB0X3Rhc2s6MHgleCBmcmVlZC4KAAAAc2NzaV9jbWRf
+cmVzcDogZmxvd2M6MHgleCwgaWQ6MHgleCwgc3RhdGU6MHgleCwgeWllbGQ6MHgleAoAAAAAAGRh
+dGFfaW5fcmVzcDogZmxvd2M6MHgleCwgaWQ6MHgleCwgc3RhdGU6MHgleCwgeWllbGQ6MHgleAoA
+AAAAAAByZXR1cm5fcGVuZGluZ190YXNrOiBjb29raWUgWzB4JTA4eF0sIFsweCUwOHhdCgByZXR1
+cm5fcGVuZGluZ190YXNrOiBkZWxheSBwcm9jZXNzaW5nLCBjb25uIGZsYWdzIFsweCV4XQoAAAAA
+AAAAcmV0dXJuX3BlbmRpbmdfdGFzazogRG9uZSBzZW5kaW5nIHRhc2sgZXJyb3IgdG8gaG9zdCwg
+dWxwdHhsZW4xNiBbJXVdCgAAAAAAAAAAAAByZXR1cm5fcGVuZGluZ190YXNrOiBkZXF1ZXVlIHRh
+c2sgWzB4JXhdLCBzdGF0ZSBbMHgleF0gZnJvbSB0eF9saXN0CgAAAAAAAAAAAAAAAHJldHVybl9w
+ZW5kaW5nX3Rhc2s6IGFsbCB0YXNrcyByZXR1cm5lZCwgcmVjb3Zlcnkgc3RhdGUgdHJhbnMgdG8g
+WzB4JXhdCgAAAAAAAAAAY2xlYXJfZGRwX21hcDogaXN0YXNrX2ZjIFsweCV4XSwgaXN0YXNrX2Zj
+LT5mbG93Y19pZCBbMHgleF0gYnVmZmVyZWQgJXUKAAAAAAAAAABjbGVhcl9kZHBfbWFwOiBpc3Rh
+c2tfZmMtPmZsb3djX2l0YXNrX25wcG9kICV1LCBucHBvZCAldSwgcHBkYWRkciBbMHgleF0KAAAA
+AAAAAGNsZWFyX2RkcF9tYXA6IGFsbCByZXR1cm5lZCB0YXNrcyBkZHAgY2xlYXJlZCwgcmVjb3Zl
+cnkgc3RhdGUgdHJhbnMgdG8gWzB4JXhdCgAAd3JoX2ZvaXNjc2lfbm9kZTogbm9kZV93ci0+Zmxv
+d2lkX2xlbjE2IDIgWyV4XQoAd3JoX2ZvaXNjc2lfY2hhcDogaWRfbGVuIFsleF0sIHNlY19sZW4g
+WyV4XQoAAAAAd3JoX2ZvaXNjc2lfY2hhcDogdGd0X2lkX2xlbiBbJXhdLCB0Z3Rfc2VjX2xlbiBb
+JXhdCgAAAAAAAAAAAAAAAHNlc3Npb25fYmxvY2s6IHNlc3NfZmMtPmZsb3djX2lkIFsweCV4XSwg
+c2Vzc19mYy0+Zmxvd2Nfc3RhdGUgWzB4JXhdLCBjb25uX2ZjLT5mbG93Y19pZCBbMHgleF0sIGNv
+bm5fZmMtPmZsb3djX3N0YXRlIFsweCV4XSwgY3NrX2ZjLT5mbG93Y19pZCBbMHgleF0sIGNza19m
+Yy0+Zmxvd2Nfc3RhdGUgWzB4JXhdCgAAAAAAAAAAAAAAAAAAAHNlc3Npb25fdW5ibG9jazogc2Vz
+c19mYy0+Zmxvd2NfaWQgWzB4JXhdLCBzZXNzX2ZjLT5mbG93Y19zdGF0ZSBbMHgleF0sIGNvbm5f
+ZmMtPmZsb3djX2lkIFsweCV4XSwgY29ubl9mYy0+Zmxvd2Nfc3RhdGUgWzB4JXhdLCBjc2tfZmMt
+PmZsb3djX2lkIFsweCV4XSwgY3NrX2ZjLT5mbG93Y19zdGF0ZSBbMHgleF0KAAAAAAAAAAAAAAAA
+AHN0YXJ0X2xvZ291dDogU2Vzcy1pZCBbMHgleF0gYWxyZWFkeSBsb2dnaW4gb3V0LgoAAAAAAAAA
+AAAAAAAAAABwZWVyX2NvbjogY3NrX2ZjID0+IGZsb3dpZCBbMHgleF0sIGZsb3djX2J1ZiBbMHgl
+eF0KAAAAAAAAAAAAAAAAYWxsb2Nfc2VzczogbG9naW5fcmV0cnkgWyVkXSwgcmVjb3ZfdGltZW91
+dCBbJWRdCgAAAAAAAAAAAAAAAAAAAGZvaXNjc2lfY3RybDogc3Vib3AgWzB4JXhdLCBzZXNzX3R5
+cGVfdG9fZXJsIFsweCV4XSwgc2Vzc190eXBlIFsweCV4XQoAAAAAAAAAAAAAZm9pc2NzaV9jdHJs
+OiByZWNlaXZlZCBibG9ja2VkIGZyb20gZHJpdmVyLCB0cmlnZ2VyaW5nIHJldHVybiB0YXNrcyBu
+b3cuCgAAAAAAAABXQVRDSERPR19kaXNwYXRjaCBjYXNlIHRvIGF2b2lkOiBDb3VudGVyX3dhdGNo
+ZG9nICV1IENvdW50ZXJfc2NoZWQgJXUgCgAAAAAAAAAAAFdBVENIRE9HOiBkZXZpY2Ugc2h1dGRv
+d24KAAAAAAAAV0FUQ0hET0c6IHBvcnRbJXVdIHBhdXNlIHdhdGNoZG9nIHRpbWVvdXQKAAAAAAAA
+V0FUQ0hET0c6IGJ5cGFzcyB0aW1lb3V0CgAAAAAAAABXQVRDSERPRzogRkxSIC0gbm90IGltcGxl
+bWVudGVkIHlldAoAAAAAAAAAAAAAAABXQVRDSERPRzogdGVtcGVyYXR1cmUgb2YgJWRDIGV4Y2Vl
+ZHMgdGhyZXNob2xkIG9mICVkQwoAAAAAAAAAAAAAZmlsdGVyOiBwb3JncmFtbWluZyB0aWQgJXUg
+KGxlIHRjYW0gaW5kZXggJXUpLi4uCgAAAAAAAAAAAAAAAAAAAGZpbHRlcjogcmVxdWVzdGluZyBj
+b21wbGV0aW9uLi4uCgAAAAAAAAAAAAAAAAAAAGNobmV0X2lwdjZfbGlua19jaGFuZ2Vfbm90aWZ5
+OiBsMmRldl9mYyBbMHgleF0sIHN0YXR1cyAldQoAAAAAAABsMmRldl9zZW5kX3BvcnRfZXZlbnQ6
+IHdyIFsweCV4XSBwZW5kaW5nIG9uIHBvcnQgWyVkXSwgY3VycmVudCB0cnkgWyVkXQoAAAAAAAAA
+AEZDT0UgRnJlZTogc3RpbGwgeWllbGRlZCB3aGVuIGZyZWVpbmcuLi5mbG93Y19pZCAleCBmbG93
+Y19mbGFncyAleCAKAAAAAAAAAAAAAAAARkMgeGNoZyBhbGxvYyBmYWlsZWQ6IGF2YWlsICVkCgBk
+Y2J4X2llZWVfY21kaFsldV0gd3JpdGUgb25seSBwZXJtaXR0ZWQgb24gbG9jYWwgY29uZgoAAAAA
+AAAAAAAAZGNieF9pZWVlX2NtZGhbJXVdIGNhbm5vdCB3cml0ZSAldSBhcHBzIChNQVg6ICV1KQoA
+AAAAAAAAAAAAAAAAAGRjYnhfaWVlZV9jbWRoWyV1XSByZXF1ZXN0aW5nIERDQl9JRUVFX0NNRAoA
+AAAAAGRjYnhfaWVlZV9jbWRoWyV1XSB1bmtub3duIGZlYXR1cmUgd3JpdGU6ICV1CgAAAGRjYnhf
+aWVlZV9jbWRoWyV1XSB1bmtub3duIGZlYXR1cmUgcmVhZDogJXUKAAAAAEZDb0UgRERQIGZhaWxl
+ZCA6IG94X2lkIDB4JXggcnhfaWQgMHgleAoAAAAAAAAAAEZDb0UgRERQIGZhaWxlZCA6IERkcFJl
+cG9ydCAweCV4IERkcFZhbGlkIDB4JXgKAFBSTEkgUnNwIHRpbWVkb3V0IDogZmxvd2NfaWQgMHgl
+eCBveF9pZCAweCV4IHJ4X2lkIDB4JXggCgAAAAAAAABjYW5ub3QgYWxsb2NhdGUgb2ZmbG9hZGVk
+IGZpbHRlciBjb25uZWN0aW9uCgAAAABjYW5ub3QgYWxsb2NhdGUgb2ZmbG9hZGVkIGZpbHRlciBJ
+UHY2IGNvbm5lY3Rpb24KAAAAAAAAAAAAAAAAAAAAZGlzcGF0Y2hfZGVmZXJyZWRfY2xhc3NfY2xh
+c3Nfc2hhcGluZ1sldToldV06IGxpc3RfZW1wdHkKAAAAAAAAAGxvb3BiYWNrIGJ1ZmZlciBncm91
+cFsldV0gaXMgZGlzYWJsZWQKAAAAAAAAAAAAAGludmFsaWQgYnVmZmVyIGdyb3VwWyV1XSBjb25m
+aWd1cmF0aW9uOiBtdHUgJXUgbHdtICV1IGh3bSAldSBkd20gJXUKAAAAAAAAAAAAAAAAZmMgJXUg
+dmYgJXUgZ290IGl2Zj0weCV4LHJhbmdlOiAlI3gtJSN4ICgldS8ldSB1c2VkKQoAAAAAAAAAAAAA
+AFZJICV1IGNhbm5vdCBnZXQgUlNTIHNsaWNlOiBObyBtb3JlIHNsaWNlcyBhdmFpbGFibGUgKHVz
+ZWQgJXUvJXUpCgAAAAAAAAAAAAAAAAAAcGZuICV1IHZmbiAldSB3aXRoIHBvcnQgbWFzayAweCV4
+IGNhbm5vdCBhY2Nlc3MgcG9ydCAldSwgcmV0ICVkCgAAAAAAAAAAAAAAAAAAAABwZm4gJXUgdmZu
+ICV1IGNvdWxkIG5vdCBhbGxvY2F0ZSB2aWlkLCByZXQgJWQKAABwZm4gJXUgdmZuICV1IGNvdWxk
+IG1hcCB2aWlkICAweCV4IHRvIGZsb3djLCByZXQgJWQKAAAAAAAAAAAAAAAAcGZuICV1IHZmbiAl
+dSBjb3VsZCBub3QgYWxsb2NhdGUgdXdpcmUgZnVuYyAlZCBtYWMgYWRkciwgcmV0ICVkCgAAAAAA
+AAAAAAAAAAAAAABtaWlfaW5pdFsldV06IGFjYXBzIDB4JXgKAAAAAAAAAG1paV9mb3JjZV9zcGVl
+ZFsldV06IHJjYXBzIDB4JXgKAAAAAAAAAAAAAAAAAAAAAG1paV9wZG93blsldV06IHBvd2VyZG93
+biBlbiAldQoAcG9ydF9jbWRfaGFuZGxlcjogdW5rbm93biB1LmRjYi50eXBlIDB4JXgKAAAAAAAA
+cG9ydFsldToweCUwMng6MHglMDJ4XTogdW5rbm93biBhY3Rpb24gMHgleAoAAAAAcG9ydFsldTow
+eCUwMng6MHglMDJ4XTogdW5rbm93biByZWFkIGFjdGlvbiAweCV4CgAAAAAAAAAAAAAAAAAAAGNw
+bF9lcnJfbm90aWZ5OiB0aWQgJXUgY3BsIDB4JTA4eCUwOHgKAAAAAAAAAAAAAGNwbF9lcnJfbm90
+aWZ5OiB0aWQgJXUgY3BsIDB4JTA4eCUwOHggMHglMDh4JTA4eAoAAAAAAAAAAAAAAAAAAABjcGxf
+ZXJyX25vdGlmeTogdGlkICV1IGxlbiAldQoAAEZDT0UgRnJlZTogc3RpbGwgeWllbGRlZCB3aGVu
+IGZyZWVpbmcuLi5mbG93Y19pZCAleCBmbG93Y19mbGFncyAleCAKAAAAAAAAAAAAAAAARkNPRSBC
+UCBXUiBFUlI6IFdSIHdpdGggY29va2llICV4JXggZXJyb3JlZCBiYWNrIAoAAAAAAAAAAAAAAAAA
+AHNjc2lfYWJvcnQ6IEVudGVyaW5nIEFib3J0X3Rhc2ssIGJ1ZmZlcmVkIFsldV0KAHNjc2lfYWJv
+cnQ6IHJjIFsweCV4XSByZWYgdGFzayBub3Qgb3V0c3RhbmRpbmcKAHNjc2lfYWJvcnQ6IGlkYXRh
+LT5vcCBbMHgleF0sIGZsYWdzIFsweCV4XSwgZnVuYyBbMHgleF0sIGx1bl9pZHggWzB4JXhdCgAA
+AAAAAAAAc2NzaV9hYm9ydDogd3ItPmlxaWQgWzB4JXhdLCBpc3Rhc2tfZmMtPmZsb3djX3NnZV9p
+cWlkIFsweCV4XSwgaXN0YXNrX2ZjIHRhc2sgZmxhZ3MgWzB4JXhdCgAAAAAAc2NzaV9hYnJ0OnRh
+c2sgZmxvd2NbMHgleF0sIHRtZl9saXN0X2VtcHR5OgoAAAAAc2NzaV9hYm9ydDogY29ubiBbMHgl
+eF0sIGNtZHNuIFsweCV4XSwgc2VudF9jbWRzbiBbMHgleF0sIG1heF9jbWRzbiBbMHgleF0sIGl0
+dCBbMHgleF0KAAAAAAAAAAAAYWJvcnQvY2xvc2UgV1Igd2l0aCBjb29raWUgMHglbHggd2FzIGlz
+c3VlZCBvbiBzc24gMHgleCBpbiB3cm9uZyBzdGF0ZSAweCV4CgAAAABhYm9ydCBXUiBvbiBzc24g
+MHgleCBkaWQgbm90IGZpbmQgV1Igd2l0aCBjb29raWUgMHgleCV4CgAAAAAAAAAAY2xvc2UgV1Ig
+d2l0aCBjb29raWUgMHglbHggb24gc3NuIDB4JXg7ZGlkIG5vdCBmaW5kIFdSIHdpdGggY29va2ll
+IDB4JWx4CgAAAAAAAABhYm9ydCBXUiBvbiBzc24gMHgleCB3YXMgaXNzdWVkIG9uIHhjaGcgMHgl
+eCB3aXRoIHJ4X2lkIDB4JXggaW4gd3Jvbmcgc3RhdGUgMHgleAoAAAAAAAAAAAAAAAAAAABzY3Np
+X2x1cjogRW50ZXJpbmcgTFVSIGhhbmRsZXIsIGJ1ZmZlcmVkIFsldV0KAABzY3NpX2x1cjogaWRh
+dGEtPm9wIFsweCV4XSwgZmxhZ3MgWzB4JXhdLCBmdW5jIFsweCV4XSwgbHVuX2lkeCBbMHgleF0K
+AAAAAAAAAAAAAHNjc2lfbHVyOiB3ci0+aXFpZCBbMHgleF0sIGlzdGFza19mYy0+Zmxvd2Nfc2dl
+X2lxaWQgWzB4JXhdLCBpc3Rhc2tfZmMgdGFzayBmbGFncyBbMHgleF0KAAAAAAAAAHNjc2lfbHVy
+OiBjb25uIFsweCV4XSwgY21kc24gWzB4JXhdLCBzZW50X2NtZHNuIFsweCV4XSwgbWF4X2NtZHNu
+IFsweCV4XSwgaXR0IFsweCV4XQoAAAAAAAAAAAAAAGRjYnhfYXBwbHlfYXBwX2NmZ1sldV1ORVcg
+QVBQIFRMViAKAAAAAAAAAAAAAAAAAGRjYnhfY2VlX2ZlYV9zbVsldV0gRmVhdHVyZVsldV0gRkVB
+VFVSRV9MSU5LVVAKAGRjYnhfY2VlX2ZlYV9zbVsldV0gRmVhdHVyZVsldV0gU0VUX0xPQ0FMX1BB
+UkFNRVRFUlMKAAAAAAAAAAAAAABkY2J4X2NlZV9mZWFfc21bJXVdIEZlYXR1cmVbJXVdIEZFQVRV
+UkVfTk9fQURWRVJUSVNFCgAAAAAAAAAAAAAAZGNieF9jZWVfZmVhX3NtWyV1XSBGZWF0dXJlWyV1
+XSBGRUFUVVJFX1BFRVJfTk9UX0FEVkVSVElTRV9EQ0JYCgAAAAAAAAAAAAAAAAAAAABkY2J4X2Nl
+ZV9mZWFfc21bJXVdIEZlYXR1cmVbJXVdIEZFQVRVUkVfUEVFUl9OT1RfQURWRVJUSVNFX0ZFQVRV
+UkUKAAAAAAAAAAAAAAAAAGRjYnhfY2VlX2ZlYV9zbVsldV0gRmVhdHVyZVsldV0gRkVBVFVSRV9V
+UERBVEVfT1BFUl9WRVJTSU9OCgAAAABkY2J4X2NlZV9mZWFfc21bJXVdIEZlYXR1cmVbJXVdIEZF
+QVRVUkVfUEVFUl9VUERBVEVfT1BFUl9WRVJTSU9OCgAAAAAAAAAAAAAAAAAAAGRjYnhfY2VlX2Zl
+YV9zbVsldV0gRmVhdHVyZVsldV0gRkVBVFVSRV9HRVRfUEVFUl9DRkcKAAAAAAAAAAAAAABkY2J4
+X2NlZV9mZWFfc21bJXVdIEZlYXR1cmVbJXVdIEZFQVRVUkVfQ0ZHX05PVF9DT01QQVRJQkxFCgAA
+AAAAZGNieF9jZWVfZmVhX3NtWyV1XSBGZWF0dXJlWyV1XSBGRUFUVVJFX1VTRV9MT0NBTF9DRkcK
+AAAAAAAAAAAAAGRjYnhfY2VlX2ZlYV9zbVsldV0gRmVhdHVyZVsldV0gRkVBVFVSRV9VU0VfUEVF
+Ul9DRkcKAAAAAAAAAAAAAABkY2J4X2NlZV9mZWFfc21bJXVdIEZlYXR1cmVbJXVdIEZFQVRVUkVf
+RkVBVFVSRV9ESVNBQkxFRAoAAAAAAAAAZGNieF9jZWVfZmVhX3NtWyV1XSBGZWF0dXJlWyV1XSBG
+RUFUVVJFX0VSUk9SX0NIQU5HRQoAAAAAAAAAAAAAAGRjYnhfaWVlZV9wcm9jZXNzWyV1XSByZWNl
+aXZlZCBCV3MgZG8gbm90IGFkZCB1cCB0byAxMDAhCgAAAAAAAABXQVJOSU5HOiByZWNlaXZlZCBB
+cHAgVExWIGNvbnRhaW5zIG1vcmUgdGhhbkZXIGNhbiBoYW5kbGUgKG1heDogJXU7IHRsdiBjb250
+YWluczogJXUKAAAAAAAAAAAAAABkY2J4X2llZWVfcHJvY2Vzc1sldV0gc3VidHlwZSAlI3ggcmVt
+X2Z0X2NoYW5nZWQgJXUgc21fY2hhbmdlICV1CgAAAAAAAAAAAAAAAAAAAGRjYnhfaWVlZV9wcm9j
+ZXNzWyV1XSBzdWJ0eXBlIHVua25vd24KAAAAAAAAAAAAAGRjYnhfcGFyc2VfcGt0WyV1XSBlcnJv
+ciAlZAoAAAAAaXB2Nl9hZGRfcHJlZml4X2luX2xpc3Q6IG5vZGUgZm91bmQgMHgleAoAAAAAAAAA
+aXB2Nl9hZGRfcHJlZml4X2luX2xpc3QsIG5vZGUgbm90IGZvdW5kCgAAAAAAAAAAY2huZXRfYXJw
+X3VwZGF0ZV9jYWNoZTogYXJwIGlwNCBlbnRyeSBmb3VuZCAKAAAAY2huZXRfYXJwX3VwZGF0ZV9j
+YWNoZTogYXJwIGlwNiBlbnRyeSBmb3VuZCAKAAAAY2huZXRfYXJwX3VwZGF0ZV9jYWNoZTogYm90
+aCBpcDQgYW5kIGlwNiBhZGRyIGNhbm5vdCBiZSBudWxsCgAAAGNobmV0X2wydF91cGRhdGU6IGwy
+dF91cGRhdGUgcmVxdWVzdCBzZW50IGwydGVudCBbJTA4eF0sIGwydGVudC0+aWR4IFslZF0sIGwy
+dGVudC0+dmxhbiBbJWRdCgAAAGNobmV0X2lwdjZfcmFfaW5wdXQ6IEludmFsaWQgUkEKAAAAAAAA
+AAAAAAAAAAAAAGlwdjYgUkEgcmN2ZAoAAAByb3V0ZXIgbm90IHByZXNlbnQgaW4gb3VyIGxpc3Qu
+IGFkZGluZyBpdAoAAAAAAABJbnZhbGlkIG9wdGlvbiBsZW5ndGggJXUgaW4gU0xMQSBvcHRpb24K
+AAAAAAAAAABHT1QgU0xMQSBvcHRpb24gaW4gUkEsIGxlbiAldQoAAEludmFsaWQgb3B0aW9uIGxl
+bmd0aCAldSBpbiBwcmVmaXggb3B0aW9uCgAAAAAAAEludmFsaWQgb3B0aW9uIGxlbmd0aCAldSBp
+biBtdHUgb3B0aW9uCgAAAAAAAAAAAEludmFsaWQgcGFja2V0IHdpdGggJXUgZXh0cmEgYnl0ZXMK
+AAAAAAAAAAAAAAAAAG1sZDYgcXVlcnkgcmN2ZAoAAAAAAAAAAAAAAAAAAAAAY2huZXRfaXB2Nl9t
+bGQ2X3F1ZXJ5X2lucHV0OiBJbnZhbGlkIE1MRCBxdWVyeQoAVW5zdXBwb3J0ZWQgcXVlcnkgdmVy
+c2lvbi4gb25seSBtbGR2MiBxdWVyeSBzdXBwb3J0ZWQKAAAAAAAAAAAAAHF1ZXJ5IHJlc3BvbnNl
+IGRlbGF5ICV1IChpbiAxMG1zIHVuaXQpIAoAAAAAAAAAAGFscmVhZHkgYSBnZW5lcmFsIHF1ZXJ5
+IHBlbmRpbmcgaW4gJXUgKDEwbXMpCgAAAERlYnVnIHRoZSBjb2RlLiBncnBfbm9kZSBtdXN0IGJl
+IHByZXNlbnQKAAAAAAAAAGFscmVhZHkgYSBtdWx0aWNhc3QgcXVlcnkgcGVuZGluZyBpbiAldSAo
+MTBtcykKAGlwdjYgZWNobyByZXEgcmN2ZAoAAAAAAAAAAAAAAAAAREhDUHY2IHBhY2tldCB0eXBl
+ICV1LCBvcHRzbGVuICV1IHJlY2VpdmVkCgAAAAAASW52YWxpZCBkaGNwIHN0YXRlICVkCgAAAAAA
+AAAAAABJZ25vcmUgREhDUHY2IG1zZyB4aWQgJXgsICBkaDZjdHh0LT54aWQgJXgKAAAAAABFcnJv
+ciBpbiBESENQdjYgb3B0aW9ucyBwYXJzaW5nLiBJZ25vcmluZyBtc2csIGkgJWQsIG9wdHNsZW4g
+JWQKAAAAAAAAAAAAAAAAAAAAAERIQ1AgZmFpbGVkLCBzdGF0dXNjb2RlICVkLiBJZ25vcmluZyBh
+ZHZlcnRpc2UKAGljbXA2IGNoZWNrc3VtIHZhbGlkYXRpb24gZmFpbGVkLCBvciBlcnIgcmN2ZGln
+bm9yaW5nIGljbXA2IG1zZyAldSwgZGxlbiAldQoAAAAAbmV0aWZfcHJvY2Vzc19kaGNwOiBsMmRl
+dl9mYy0+Zmxvd2NfaWQgWzB4JXhdLCBwcm9jZXNzaW5nLCBvcHRfbGVuICV1CgAAAAAAAAAAAABj
+aG5ldF9kaGNwX3JlY3Y6IHZsYW5pZCBbJXVdLCBsMmRldl9waWRfZmMtPmZsb3djX25ldF9sMmRl
+dl92bGFuZGV2IFsweCV4XSwgbDJkZXZfZmMgWzB4JXhdCgAAAABjaG5ldF9kaGNwX3JlY3Y6IGwy
+ZGV2X2ZjLT5mbG93Y19pZCBbMHgleF0sIGRoY3R4dC0+c3RhdGUgWyVkXSwgbWFsYWNpb3VzIGRo
+Y3AgcmVjdiBmb3Igbm8gcmVxdWVzdAoAAAAAAAAAAAAAAAAAZGhjdHh0LT5zdGF0ZSA6ICVkCgAA
+AAAAAAAAAAAAAABsMmRldl9mYy0+Zmxvd2NfaWQgWzB4JXhdLCBCYWQgREhDUCBjb29raWUgcmVj
+aWV2ZWQsIGFib3J0aW5nCgAAQ291bGQgbm8gYWxsb2NhdGUgcGNiISEgRnJlZWluZyBmY2YgISEh
+CgAAAAAAAAAAdm5fcGFyc2UgdW5rbm93biBzdWJjb2RlICV1CgAAAAB2bl9wYXJzZSB1bmtub3du
+IGR0eXBlICV1CgAAAAAAAGlnbm9yaW5nIGZpcCByZWN2IGZvciBwY2IgZmxvdzoleCBpbiBvZmZs
+aW5lIHN0YXRlCgAAAAAAAAAAAAAAAABmaXBfdm4ydm5fcmVjdl9lcnIgCgAAAAAAAAAAAAAAAENv
+dWxkIG5vdCBhbGxvY2F0ZSBmbG93YyEhISEKAAAAQ291bGQgbm90IGFsbG9jYXRlIFNDQiBmbG93
+YyEhISEKAAAAAAAAAAAAAAAAAAAAQ291bGQgbm90IGZpbmQgcmlnaHQgc2NiIGZvciBsb2dvCgAA
+AAAAAAAAAAAAAAAAaWdub3JpbmcgZmlwIHJlY3YgZm9yIGZjZiBmbG93OiV4IGluIG9mZmxpbmUg
+c3RhdGUKAAAAAAAAAAAAAAAAAENvdWxkIG5vdCBmaW5kIHJpZ2h0IHNjYiBmb3IgZmxvZ2kKAAAA
+AAAAAAAAAAAAAHBvcnQgMHgleCwgc3RhdGUgMHgleCwgcmV0cnkgbm90IHN1cHBvcnRlZAoAAAAA
+AEZsb2dpIHJlc3AgcmN2IHdpdGggdW5rbm93biB4Y2hnIG94X2lkJXggc2lkICUyeCUyeCUyeCBk
+aWQgJTJ4JTJ4JTJ4CgAAAAAAAAAAAAAATl9QT1JUIDB4JXgleCV4IHJlamVjdGVkIFBMT0dJIHdp
+dGggcmVhc29uIGNvZGUgJXgKAAAAAAAAAAAAAAAAAEFCVFMgd2hpbGUgYXdhaXRpbmcgUFJMSSBS
+c3A6IGZsb3djX2lkIDB4JXggb3hfaWQgMHgleCByeF9pZCAweCV4IAoAAAAAAAAAAAAAAAAAQUJU
+UyBmYWtlIFJzcDogbG9jIDB4JXggb3hfaWQgMHgleCByeF9pZCAweCV4CgAAbGxkcF9yeF9wa3Rf
+aGFuZGxlclsldV0gZHJvcCBwcmUtaW5pdCAoY291bnQgPSAldSkKAAAAAAAAAAAAAAAAACV4JXgl
+eCBSZWNpZXZlZCBMT0dPIGZyb20gJXgleCV4IAoAAAAAAAAAAAAAAAAAAEZhaWxlZCB0byBwb3N0
+IHhjaGcgZXJyOiBzc25pIDB4JXggY29va2llIDB4JWx4IHJ2YWwgJXggCgAAAAAAAAB0Y3BfcmVs
+ZWFzZV90aWQ6IHRpZCBbMHgleF0sIGZsb3djIGZsYWdzIFsweCV4XSwgYnVmZmVyZWQgWzB4JXhd
+CgAAAAAAAAAAAAAAAAAAAHRjcF9yZWxlYXNlX3RpZDogc2l6ZW9mKHRjYl9mYy0+Zmxvd2NfaWNv
+bm4pIFsldV0sIGJ5dGVzCgAAAAAAAABhY3Rfb3Blbl9ycGw6IGF0aWQgWzB4JXhdLCB0aWQgWzB4
+JXhdLCB0Y2JfZmMtPnsgaWQgWzB4JXhdLCBzdGF0ZSBbMHgleF0sIHR5cGUgWzB4JXhdIH0sIGNw
+bF9vcCBbMHgleF0sIHN0YXR1cyBbMHgleF0KAAAAAAAAAAAAAGFjdF9vcGVuX3JwbDogY3NrX2Zj
+LT57IGlkIFsweCV4XSwgc3RhdGUgWzB4JXhdLCBjc29ja19mbGFncyBbMHgleF0gfSAKAAAAAAAA
+AAAAYWN0X29wZW5fcnBsOiByZWN2ZCBuZWcgYWR2aWNlIFsweCV4XQoAAAAAAAAAAAAAc2VuZF9h
+Ym9ydF9ycGw6IGNza19mYy0+Zmxvd2NfdHlwZSBbMHgleF0sIGNza19mYy0+Zmxvd2NfaWQgWzB4
+JXhdLCB0aWQgWzB4JXhdLCB1bHB0eGNoIFsldV0sIGJ1ZmZlcmVkIFsldV0KAAAAAHdyaF9vZmxk
+X3RjcF9jbG9zZV9jb25fcmVwbHk6IHRjYl9mYy0+Zmxvd2NfaWQgWzB4JXhdLCB0Y2JfZmMtPmZs
+b3djX3R5cGUgWzB4JXhdLCBsZW4xNiBbJXVdLCBsb2MgWyV1XQoAAAAAAAAAAAB3cmhfb2ZsZF90
+Y3BfY2xvc2VfY29uX3JlcGx5OiBycGwtPm9wX1RpZCBbMHgleF0sIHJwbD5zdGF0dXMgWzB4JXhd
+LCBycGwtPnNuZF9ueHQgWzB4JXhdLCBycGwtPnJjdl9ueHQgWzB4JXhdCgAAdGNwX2Fib3J0X3Jw
+bF9yc3M6IHRpZCBbMHgleF0sIHN0YXR1cyBbMHgleF0KAAAAdGNwX2Fib3J0X3JlcV9yc3M6IHRp
+ZCBbMHgleF0sIHN0YXR1cyBbMHgleF0KAAAAb2ZsZF9hYm9ydF9yZXFfbmVnYWR2WyV1XTogd3Ig
+MHglMDh4IGNwbF9hYm9ydF9yZXEgREVMSVZFUkVECgAAAGhvc3Rfd3JbJXVdOiB3ciAweCUwOHgg
+Y3BsX2Fib3J0X3JlcSBzdGF0dXMgMHgleAoAAAAAAAAAAAAAAAAAAABwa3RzY2hlZF9jbF9ybFsl
+dToldV06IG1vZGUgfCB1bml0IHwgcmF0ZSAweCUwNnggbWluICV1IG1heCAldSBwa3RzaXplICV1
+CgAAAAAAAHBhcmFtX2NobmV0WzB4JXg6MHgleF06IGNobmV0IDB4JXggcmVhZCAldSBwZiAldSBy
+ZXQgJWQKAAAAAAAAAABwYXJhbV9kbWFxWzB4JXg6MHgleF06IGRtYXEgMHgleCByZWFkICV1IHBm
+ICV1IHJldCAlZAoAAAAAAAAAAAAATUNbJXVdIGluaXRfc3RhdGVfbWFjaGluZSAweCUwMngKAAAA
+AAAAAAAAAAAAAAAATUMgaW5pdGlhbGl6YXRpb24gbm90IGNvbXBsZXRpbmcsIE1DIGN1cnJlbnQg
+aW5pdCBzdGF0ZSBpcyAweCUwMngKAAAAAAAAAAAAAAAAAABNQ1sldV0gX2h3X21jX2luaXRfbWMK
+AAAAAAAAAAAAAF9od19tY19pbml0X21jOiBlcnJvciwgcmV0ICVkCgAAX2h3X21jX2luaXRfbWNf
+ZnBnYVsldV06IGVycm9yICVkCgAAAAAAAAAAAAAAAAAAcGh5OiBmYWlsZWQgdG8gYWxsb2NhdGVk
+IG1lbW9yeSBmb3IgcGh5IGZ3IGZpbGUsIHJldCAlZAoAAAAAAAAAAGh3X2xlX2ZpbHRlcl9jdHVw
+bGU6IHR1cGxlICV1IG5vdCBzcGVjaWZpZWQgYnV0IHJlcXVpcmVkIGZvciBtYXNrIDB4JXgKAAAA
+AAAAAAAAbGUgY29uZmlndXJhdGlvbjogaGFzaCByZWdpb24gdG9vIGxhcmdlIHRvIGVuYWJsZSBz
+ZXJ2ZXIgc3JhbQoAAGxlIGNvbmZpZ3VyYXRpb246IGNhbm5vdCBlbmFibGUgc2VydmVyIHNyYW0g
+d2hlbiBoYXNoIHJlZ2lvbiBpcyBkaXNhYmxlZAoAAAAAAAAAaHdfdHBfdGNwX3NldHRpbmdzX3c6
+IHRpbWVyX3JzICV1dXMgdGltZXN0YW1wX3JlcyAldXVzIGRlbGF5ZWRhY2tfcmVzICV1dXMKAAAA
+AABod190cF90Y3Bfc2V0dGluZ3NfdzogZGFja190aW1lciAldXVzIG1zbCAldXVzIHJ4dF9taW4s
+bWF4ICV1LCV1dXMgcGVyc19taW4sbWF4ICV1LCV1dXMKAAAAAAAAAABod190cF90Y3Bfc2V0dGlu
+Z3Nfdzoga2VlcF9pZGxlLGludHZsICV1LCV1cyBtYXhydHQgJXV1cyBpbml0c3J0dCAldXVzIGZp
+bndhaXQyX3RpbWVyICV1dXMKAAAAAABod190cF90Y3Bfc2V0dGluZ3NfdzogY2FwcGluZyBkYWNr
+X3RpbWVyIGZyb20gJXUgdG8gJXUAAAAAAAAAAAAAaHdfdHBfdGNwX3NldHRpbmdzX3c6IGNhcHBp
+bmcgbXNsIGZyb20gJXUgdG8gJXUAaHdfdHBfdGNwX3NldHRpbmdzX3c6IGNhcHBpbmcgcnh0X21p
+biBmcm9tICV1IHRvICV1AAAAAAAAAAAAAAAAAGh3X3RwX3RjcF9zZXR0aW5nc193OiBjYXBwaW5n
+IHJ4dF9tYXggZnJvbSAldSB0byAldQAAAAAAAAAAAAAAAABod190cF90Y3Bfc2V0dGluZ3Nfdzog
+Y2FwcGluZyBwZXJzX21pbiBmcm9tICV1IHRvICV1AAAAAAAAAAAAAAAAaHdfdHBfdGNwX3NldHRp
+bmdzX3c6IGNhcHBpbmcgcGVyc19tYXggZnJvbSAldSB0byAldQAAAAAAAAAAAAAAAGh3X3RwX3Rj
+cF9zZXR0aW5nc193OiBjYXBwaW5nIGtlZXBfaWRsZSBmcm9tICV1IHRvICV1AAAAAAAAAAAAAABo
+d190cF90Y3Bfc2V0dGluZ3NfdzogY2FwcGluZyBrZWVwX2ludHZsIGZyb20gJXUgdG8gJXUAAAAA
+AAAAAAAAaHdfdHBfdGNwX3NldHRpbmdzX3c6IGNhcHBpbmcgaW5pdF9zcnR0X21heHJ0dCBmcm9t
+ICV1IHRvICV1AAAAAGh3X3RwX3RjcF9zZXR0aW5nc193OiBjYXBwaW5nIGluaXRfc3J0dF9pbml0
+c3J0dCBmcm9tICV1IHRvICV1AABod190cF90Y3Bfc2V0dGluZ3NfdzogY2FwcGluZyBmaW53YWl0
+Ml90aW1lciBmcm9tICV1IHRvICV1AAAAAAAAbGUgY29uZmlndXJhdGlvbjogbmVudHJpZXMgJXUg
+cm91dGUgJXUgY2xpcCAldSBmaWx0ZXIgJXUgYWN0aXZlICV1IHNlcnZlciAldSBoYXNoICV1CgAA
+AAAAAAAAAAAAbGUgY29uZmlndXJhdGlvbjogbmVudHJpZXMgJXUgcm91dGUgJXUgY2xpcCAldSBm
+aWx0ZXIgJXUgc2VydmVyICV1IGFjdGl2ZSAldSBoYXNoICV1IG5zZXJ2ZXJzcmFtICV1CgAAAAAA
+AAAAAAAAAGh3X3NnZV9xdWV1ZV9iYXNlX21hcFsldV06IGV4Y2VlZGVkIG51bWJlciBvZiBlZ3Jl
+c3MgcXVldWVzLCAldQoAAAAAAAAAAAAAAAAAAAAAaHdfc2dlX3F1ZXVlX2Jhc2VfbWFwWyV1XTog
+ZXhjZWVkZWQgbnVtYmVyIG9mIGluZ3Jlc3MgcXVldWVzIHdpdGggZnJlZWxpc3QgYW5kIGludGVy
+cnVwdCwgJXUKAAAAaHdfc2dlX3F1ZXVlX2Jhc2VfbWFwWyV1XTogZXhjZWVkZWQgbnVtYmVyIG9m
+IGluZ3Jlc3MgcXVldWVzLCAldQoAAAAAAAAAAAAAAAAAAABza3UoMHgleCk6IGN1c3RvbSBza3Ug
+NDBHX1NPIGRvZXMgbm90IHN1cHBvcnQgZXh0bWVtCgAAAAAAAAAAAAAAc2t1KDB4JXgpOiBjdXN0
+b20gc2t1IDEwRyBkb2VzIG5vdCBzdXBwb3J0IDQwRyBwb3J0cwoAAAAAAAAAAAAAAHNrdSgweCV4
+KTogY3VzdG9tIHNrdSAxMEdfU08gZG9lcyBub3Qgc3VwcG9ydCA0MEcgcG9ydHMoJXUpIG9yIGV4
+dG1lbSgldSkKAAAAAAAAc2t1OiBjdXN0b20gc2t1KDB4JXgpIDQwRyBwb3J0cygldSkgZXh0bWVt
+KCV1KSBzdXBwb3J0ZWQKAAAAAAAAAGNmX3BhcnNlOiBmaWxlIG1lbXR5cGUgMHgleCBtZW1hZGRy
+IDB4JXggbWFwcGVkIEAgJXA6CgAAAAAAAAAAAABjb25maWd1cmVkIHdpdGggY2FwcyBuYm18bGlu
+ayAweCUwOHggc3dpdGNofG5pYyAweCUwOHggdG9lfHJkbWEgMHglMDh4IGlzY3NpfGZjb2UgMHgl
+MDh4CgAAAAAAAABuZXQgVkkgYWxsb2NhdGlvbiBmYWlsZWQgZm9yIGZjX2lkICV1IHdpdGggZXJy
+b3IgJWQKAAAAAAAAAAAAAAAAbmV0IFZJIG1hYyBhZGRyZXNzIHByb2dyYW1taW5nIGZhaWxlZCBm
+b3IgZmNfaWQgJXUgd2l0aCBlcnJvciAlZAoAAAAAAAAAAAAAAAAAAABuZXQgVkkgcnhtb2RlIHBy
+b2dyYW1taW5nIGZhaWxlZCBmb3IgZmNfaWQgJXUgd2l0aCBlcnJvciAlZAoAAAAAbmV0IFZJIHJz
+cyBpbmRpcmVjdGlvbiB0YWJsZSBwcm9ncmFtbWluZyBmb3IgZmNfaWQgJXUgZmFpbGVkIHdpdGgg
+ZXJyb3IgJWQKAAAAAABuZXQgVkkgcnNzIGNvbmZpZyBjb21tYW5kIGZhaWxlZCBmb3IgZmNfaWQg
+JXUgd2l0aCBlcnJvciAlZAoAAAAAbmV0IFZJIGNvbW1hbmQgZmFpbGVkIGZvciBmY19pZCAldSB3
+aXRoIGVycm9yICVkCgAAAAAAAAAAAAAAAAAAAHByb2dyYW1tZWQgSFcgdGFnbSBbMHglMDh4XSwg
+SFcgcGdzeiBmYWN0b3IgWzB4JTA4eF0sIEZPaVNDU0kgdGFnbSBbMHglMDh4XSwgcnRhZ20gWzB4
+JTA4eF0sIG1heHN6X2JpdHMgWyV1XSwgc3pfYml0cyBbJXVdLgoAAAAAYmFzZSBbIDB4JTA4eF0s
+IGxsaW1pdCBbMHglMDh4XSwgdWxpbWl0IFsweCUwOHhdLCBzaXplIFsldV0sIG1heF90eHN6IFsl
+dV0sIG1heF9yeHN6IFsldV0sIGlvc2l6ZSBbJXVdCgAAAAAAAAAAAG5wcG9kcyBbJXVdLCBpZHhf
+bWFzayBbMHglMDh4XSwgaWR4X2ZpcnN0IFsldV0sIGlkeF9sYXN0IFsldV0sIHNjc2lfcGxkX3Np
+emUgWyV1XSwgQUxJR04oc2NzaV9wbGRfc2l6ZSwgMTYpIFsldV0sIHBwZF96b25lcyBbJXVdLgoA
+AAAAAAAAAAAAAAAAAGZvaXNjc2lfaW5pdDogaW5pdF9kb25lOiV1LCBmb2lzY3NpX250YXNrczol
+dSwgZm9pc2NzaV9uc2VzczoldSwgbmNzb2NrOiV1LCBuc3BvcnRzOiV1LCBmb2lzY3NpX25pbml0
+OiV1LCByYzolZAoAAAAAAAAAAAAAAAAAAAAAY2hfY2xfcmF0ZVsldS8ldV06IGNhcHBlZCBjbGFz
+cyByYXRlIGZyb20gcmVxdWVzdGVkICV1IHRvIGNvbmZpZ3VyZWQgKGVmZmVjdGl2ZSkgY2hhbm5l
+bCByYXRlICV1CgAAAAAAAAAAAAAAAAAAAGNoX2NsX3JhdGVbJXUvJXVdOiBpbmNyZWFzZWQgZGVm
+aWNpdF9pbmNyIGZyb20gcmVxdWVzdGVkICV1IHRvIHJlcXVpcmVkIG1pbiBvZiAldTsgcmF0ZSAl
+dSAoZWZmICV1KSBkZWZpY2l0X21heCAldQoAAAAAAAAAAAAAAAAAcGt0c2NoZWQgY2hhbm5lbCAl
+dSBzZXRzIHNwZWVkIChmcm9tICV1KSB0byAldSBrYnBzCgAAAAAAAAAAAAAAAG5ldF9sMmRldl9u
+b3RpZnk6IGwyZGV2X2ZjLT5mbG93Y19pZCBbMHgleF0sIHBvcnQgWyVkXSwgZXZlbnQgWzB4JXhd
+LCB1bHB0eGNoIFsldV0sIGNsYXNzIFsweCV4XSwgdnByaW8gWzB4JXhdLCB2aWQgWzB4JXhdLCB2
+aV9yZWFkeSBbJXVdCgAAAAAAAG5ldF9sMmRldl9ub3RpZnk6IHBnaWQgWzB4JXhdLCBwcmlvIFsw
+eCV4XSwgY2ggWzB4JXhdCgAAAAAAAAAAAABbJXVdIHVuYWJsZSB0byBleGVjdXRlIGludGVybmFs
+IERDQl9JRUVFX0NNRAoAAABkY2J4IHVwZGF0ZVsldV0gc2VudCB0byBkcml2ZXIgKHR5cGUgJSN4
+IHN1YnR5cGUgJSN4IGxvY2F0aW9uICV1IGZsb3djaWQgJXUpCgAAAHBvcnRbJXVdIHB0eXBlICV1
+IGxhbmUgJXU6IHJ4Y2ZnID0gJSN4CgAAAAAAAAAAAHBvcnRbJXVdIHB0eXBlICV1IGxhbmUgJXU6
+IHR4Y2ZnID0gJSN4CgAAAAAAAAAAAHBvcnRbJXVdIGxpbmsgZG93biAoJXUpIChsc3RhdHVzICUj
+eCkKAAAAAAAAAAAAAGh3X2kyY190cmFuc2FjdGlvbjogbmRhdGEgJXUgYWRkcl9vcCAweCV4IGRh
+dGFbMF0gMHgleCBkaWZmICV1CgBod19pMmNfdHJhbnNhY3Rpb246IG5kYXRhICV1IGFkZHJfb3Ag
+MHgleCBkYXRhWzBdIDB4JXggZGlmZiAldSBkcG9zICV1IGNvbnQgJXUgZmFpbGVkIHdpdGggZXJy
+ICVkCgAAAAAAAAAAAAAAAAAAaTJjIHRyYW5zYWN0aW9uIGZhaWxlZCB0byBjb21wbGV0ZQoAAAAA
+AAAAAAAAAAAAaTJjIGVycm9yIGNhdXNlZCBieSBtb2R1bGUgdW5wbHVnCgAAAAAAAAAAAAAAAAAA
+c2VuZHRvIHBlbmRpbmc6IHdyX3BlbmQgJXAgZm9yIHBvcnQgJXUsIHdhbnQgdG8gc2VuZCB0byBw
+b3J0ICV1CgAAAAAAAAAAAAAAAAAAAABwb3J0WyV1XSB1cGRhdGUgKGZsb3djaWQgJXUgcmMgJXUp
+CgAAAAAAAAAAAAAAAABwb3J0X3NldF9sb29wYmFjayBwb3J0ICUjeCBjdXJyZW50ICUjeCBtb2Rl
+ICUjeAoAAAAAAAAAAAAAAAAAAAAAcG9ydFsldV0gc3BlZWQgdXBkYXRlOiAlI3gKAAAAAABwb3J0
+WyV1XSBiZWdpbm5pbmcgZGVib3VuY2UKAAAAAFFTRlAgbW9kdWxlIHVucGx1ZyAtIHJlaW5pdGlh
+bGl6aW5nIHJ4X2xvcyAgdG8gMHhmZgoAAAAAAAAAAAAAAABncGlvX3FzZnBfbW9kdWxlX3VwZGF0
+ZTogY2hhbmdlZCByeF9sb3MgZnJvbSAweCV4IHRvIDB4JXgKAAAAAAAAZ3Bpb19xc2ZwX21vZHVs
+ZV91cGRhdGU6IGNoYW5nZWQgdHhfZGlzIGZyb20gMHgleCB0byAweCV4CgAAAAAAAHBvcnRfbGlu
+a19zdGF0ZV9oYW5kbGVyWyV1XSBwb3dlcmluZyBkb3duCgAAAAAAAHBvcnRfbGlua19zdGF0ZV9o
+YW5kbGVyWyV1XSBwb3dlcmluZyB1cAoAAAAAAAAAAHBvcnRfbGlua19zdGF0ZV9oYW5kbGVyWyV1
+XSB1bmtub3duIHN0YXRlIChzdGF0ZSA9ICUjeCkKAAAAAAAAAABwb3J0X2xpbmtfc3RhdGVfaGFu
+ZGxlcjogU29tZXRoaW5nIHdlbnQgdGVycmlibHkgd3JvbmcuIHJldCA9ICVkCgAAAAAAAAAAAAAA
+AAAAAGh3X3NnZV9tYW1lbV9pbml0OiBlbmNvdW50ZXJlZCBlcnJvciAlZAoAAAAAAAAAAGxlIGlu
+aXRpYWxpemF0aW9uOiBuZW50cmllcyAldSByb3V0ZSAldSBjbGlwICV1IGZpbHRlciAldSBhY3Rp
+dmUgJXUgc2VydmVyICV1IGhhc2ggJXUKAAAAAAAAAAAAAGxlIGluaXRpYWxpemF0aW9uOiBuZW50
+cmllcyAldSByb3V0ZSAldSBjbGlwICV1IGZpbHRlciAldSBzZXJ2ZXIgJXUgYWN0aXZlICV1IGhh
+c2ggJXUgbnNlcnZlcnNyYW0gJXUKAAAAAAAAAAAAAABod190cF9pbml0OiB0Y2IgcmVnaW9uIChz
+dGFydCAweCUwOHMgc2l6ZSAldSkgbXVzdCBiZSBpbiBmaXJzdCAyNTZNQiBvZiBNQSBtZW1vcnkK
+AAAAAAAAAAAAAAAAAABod190cF9pbml0OiBwZ21uZ3QgcmVnaW9uIChzdGFydCAweCUwOHMgc2l6
+ZSAldSkgbXVzdCBiZSBpbiBmaXJzdCAyNTZNQiBvZiBNQSBtZW1vcnkKAAAAAAAAAAAAAABod190
+cF9pbml0OiBUUCBwZ21uZ3QgaW5pdGlhbGl6YXRpb24gZGlkIG5vdCBjb21wbGV0ZQoAAAAAAAAA
+AAAAYnVmbV9pbml0OiBuICV1IGJ1ZmxsNjRpbnRfc2l6ZSAweCV4CgAAAAAAAAAAAAAAYnVmbV9p
+bml0OiBub3QgZW5vdWdoIG1lbW9yeSB0byBhbGxvY2F0ZSBpbnRlcm5hbCBidWZsbDY0IGJ1ZmZl
+cnMKAAAAAAAAAAAAAAAAAABidWZtX2luaXQ6IG5vdCBlbm91Z2ggbWVtb3J5IHRvIGFsbG9jYXRl
+IGJ1ZmxsNjQgYnVmZmVycwoAAAAAAAAAbWVtX2luaXRfYnVmOiBub3QgZW5vdWdoIG1lbW9yeSB0
+byBhbGxvY2F0ZSBmbG93IGJ1ZmZlcnMKAAAAAAAAAG1lbV9pbml0X2J1Zjogbm90IGVub3VnaCBt
+ZW1vcnkgdG8gYWxsb2NhdGUgdGNiX2NhY2hlIChvZmZlcmVkICV1IHRyeWluZyB0byB1c2UgJXUg
+YXZhaWxhYmxlICV1KQoAAAAAAAAAAAAAAAAAAABtcGFydGl0aW9uX290aGVyczogc3RhcnQgMHgl
+MDh4IHNpemUgJXUgKHVudXNlZCAldSkKAAAAAAAAAAAAAAAAbXBhcnRpdGlvbl9vdGhlcnM6IHN0
+YXJ0IDB4JTA4eCBzaXplICV1ICh1bnVzZWQgJXUpCgAAAAAAAAAAAAAAAG1lbV9pbml0OiBFREMg
+b3ZlcmNvbW1pdHRlZCBieSAlZCBieXRlcwoAAAAAAAAAAG1lbV9pbml0OiBub3QgZW5vdWdoIG1l
+bW9yeSB0byBhbGxvY2F0ZSBmbG93IHRhYmxlCgAAAAAAAAAAAAAAAABjeGNuaWNfZGV2aWNlX2lu
+aXQ6IGN4Y25pYyBbMHglMHhdLCBjeGNuaWMtPmZpbHRlciBbJTB4XQoAAAAAAAAAcG9mY29lIGlu
+aXQgZG9uZQoAAAAAAAAAAAAAAAAAAABQb3J0WyV1XTogVW5rbm93biBTR01JSSBzdWItdHlwZSAl
+I3gKAAAAAAAAAAAAAABQb3J0WyV1XTogVW5rbm93biBCVF9YRkkgc3ViLXR5cGUgJSN4CgAAAAAA
+AAAAAABwb3J0X2luaXRbJXVdOiBwb3J0IHR5cGUgMHgleCBpcyBub3Qgc3VwcG9ydGVkCgBtcGFy
+dGl0aW9uX2luaXQ6IG1vdmVkIHBtcnhfc3RhcnQgZnJvbSAweCUwOHggdG8gMHglMDh4IHRvIG1h
+a2Ugcm9vbSBmb3IgTEUgSEFTSCBhbmQvb3IgVFAgVENCcwoAAAAAAAAAAAAAAAAAAAAAbXBhcnRp
+dGlvbl9pbml0OiBtb3ZlZCBwbXJ4X3N0YXJ0IGZyb20gMHglMDh4IHRvIDB4JTA4eCAoRURSQU0p
+CgAAAAAAAAAAAAAAAAAAAABFUSBwZm4gJXUgdmZuICV1OiBkZXN0cm95aW5nIGVxaWQgJXUgd2l0
+aCBwZW5kaW5nIFdSKHMpIChudW1fYnl0ZXMgJXUgYW5kIGZsYWdzIDB4JTA4eAoAAAAAAAAAAABs
+MmRldl9mYy0+Zmxvd2NfaWQgWyV1XSwgbDJkYy0+cGZuIFsldV0sIGwyZGMtPnZmbiBbJXVdLCBs
+MmRjLT5scG9ydCBbJXVdLCBsMmRldl9mYy0+Zmxvd2lkIFsldV0gbDJkYy0+dHhfY2ggWyV1XSwg
+ZGV2LnZwZC5wb3J0dmVjIFsleF0KAAAAAAAAAABwb3J0dmVjIFsldV0KAAAAbDJkZXZfdmlfZnNt
+OiBtYiBbMHgleF0sIGRlZmVycmVkLCBzdGF0ZSBbMHgleF0sIHBvcnQgWzB4JXhdCgAAAGwyZGV2
+X3ZpX2ZzbTogdmlpZCBbMHgleF0gcG9ydCBbMHgleF0sIG1hYy1pZCBbJTAyeDolMDJ4OiUwMng6
+JTAyeDolMDJ4OiUwMnhdLiAKAAAAAAAAAAAAAAAAAAAAAGwyZGV2X3ZpX2ZzbTogc2dlX2VxaWQg
+WzB4JXhdLCBzZ2VfaXFpZCBbMHgleF0sIHNnZV9lcWNyIFsweCV4XSwgcnNzX3N6IFsweCV4XQoA
+bDJkZXZfdmlfZnNtOiBsMmRldl9mYy0+Zmxvd2NfbmV0X2wyZGV2X210dSBbJXVdLCBtYl9zY3Jh
+dGNoIFsweCV4XSwgcG9ydCBbMHgleF0KAAAAAAAAAAAAAAAAAAAAbDJkZXZfdmlfZnNtOiB2aWlk
+IFslZF0sIHZpX2ZjLT5mbG93Y192aV9mbGFncyBbMHgleF0KAAAAAAAAAAAAAGwyZGV2X3ZpX2Zz
+bTogcGZuIFsweCV4XSwgdmZuIFsweCV4XSwgbDJkZXZfZmMtPmZsb3djX2lkIFsweCV4XSwgbHBv
+cnQgWzB4JXhdLCB2aWlkIFsweCV4XSwgZmxhZ3MgWzB4JXhdCgAAAAAAAABsMmRldl92aV9mc206
+IEVycm9yIGZyZWVpbmcgVkksIHJjIFsweCV4XQoAAAAAAABsMmRldl92aV9mc206IHBpZCBbMHgl
+eF0sIHZpaWQgWzB4JXhdLCBtYl9sb2MgWzB4JXhdLCBtYl9vcmlnWzB4JXhdLCBsMmRldl9mbGFn
+cyBbMHgleF0sIHJjIFsweCV4XQoAAAAAAAAAAAAAAAAAQWggaGEuLi5kb3VibGUgZnJlZSBveF9p
+ZCAweCV4LCByeF9pZCAweCV4CgAAAAAASG9zdCBQUkxJIFJlc3BvbnNlIHRpbWVkb3V0OiBveF9p
+ZCAweCV4IHJ4X2lkIDB4JXgKAAAAAAAAAAAAAAAAAHBmbiAldSB2Zm4gJXUgdmlhIGNvbW1hbmQK
+AAAAAAAARGVwcmVjYXRlZCBjb25maWcgb3B0aW9uIGZvdW5kIGluIGNvbmZpZyBmaWxlLiBJZ25v
+cmluZy4uCgAAAAAAAGNvbmZpZ3VyYXRpb24gZmlsZSBwYXJzZXI6IHBsIHRpbWVvdXQgdmFsdWUg
+aXMgdG9vIGxhcmdlLCBjaGFuZ2luZyBmcm9tICV1IHRvICV1dXNlY3MKAAAAAAAAAAAAAFBMX1BD
+SUVfTElOSy5zcGVlZCBvZiAldSBpcyBub3Qgc3VwcG9ydGVkCmZpbGUsIHJldCBGV19FSU8KAAAA
+AABzY2hlZF9pb3F0eF9icF9wcmlvcml0eTogaGFzICV1IGVudHJpZXMgb25seSwgcmVxdWlyZXMg
+JXUgZW50cmllcwoAAAAAAAAAAAAAAAAAAHRwX2JhY2tvZmY6IHBhcnNlZCAlZCBpbnN0ZWFkIG9m
+ICV1IGVudHJpZXMKAAAAAHRwX3RpbWVydmFsczogcGFyc2VkICVkIGluc3RlYWQgb2YgJXUgZW50
+cmllcwoAAHRwX3RpbWVycmVzOiBwYXJzZWQgJWQgaW5zdGVhZCBvZiAldSBlbnRyaWVzCgAAAHRw
+X210dXMgaGFzICV1IGVudHJpZXMgb25seSwgcmVxdWlyZXMgJXUgZW50cmllcwoAAAAAAAAAAAAA
+AAAAAAB0cF9tdHVzWyV1XSBpcyAldSBieXRlcyB3aGljaCBpcyBub3Qgc3VwcG9ydGVkCgBjb25m
+aWd1cmF0aW9uIGZpbGUgcGFyc2VyOiBzZ2UgdGltZXIgdmFsdWVbJWRdIGlzIHRvbyBsYXJnZSwg
+Y2hhbmdpbmcgZnJvbSAldSB0byAldXVzZWNzCgAAAAAAAABmaWx0ZXJtYXNrIDB4JXggaXMgbm90
+IGVxdWFsL3N1YnNldCB0by9vZiBmaWx0ZXJtb2RlCgAAAAAAAAAAAAAAaHdfbGVfY2xpcF9oYW5k
+bGVyOiByZW1vdmVkIHBvcz0ldSAoPWlkeCAldSkKAAAAaHdfbGVfY2xpcF9oYW5kbGVyOiBhZGRp
+bmcgdG8gcG9zPSV1ICg9aWR4ICV1KQoAbW9kdWxlWyV1XTogcG9ydCBtb2R1bGUgaW5zZXJ0ZWQg
+YW5kIHJlYWR5CgAAAAAAbW9kdWxlWyV1XTogcG9ydCBtb2R1bGUgcmVtb3ZlZAoAAAAAAAAAAAAA
+AAAAAAAAbW9kdWxlWyV1XTogdW5rbm93biBtb2R1bGUgaWRlbnRpZmllciAweCUwMngKAAAAbW9k
+dWxlWyV1XTogZ3BpbyAldSB0cmFucyAxMEcgMHglMDJ4IDFHIDB4JTAyeCAobGVuZ3RoICV1KSBj
+YWJsZSAweCUwMnggKGxlbmd0aCAldSkgbW9kdWxlX3R5cGUgMHglMDJ4CgAAAAAAAAAAAG1vZHVs
+ZVsldV06IGdwaW8gJXUgdHJhbnMgMTBHIDB4JTAyeCAxRyAweCUwMnggKGxlbmd0aCAldSkgY2Fi
+bGUgMHglMDJ4IChsZW5ndGggJXUpIG1vZHVsZV90eXBlIDB4JTAyeAoAAAAAAAAAAABjcl9tb2R1
+bGVfcnhfbG9zWyV1XTogcnhfbG9zIGNoYW5nZWQgdG8gJXUKAAAAAABNQzogZXhwZWN0ZWQgc3Rh
+dGUgdG8gc3dpdGNoIHRvIENGRy4AAAAAAAAAAAAAAABNQzogZXhwZWN0ZWQgc3RhdGUgdG8gc3dp
+dGNoIHRvIEFjY2Vzcy4AAAAAAAAAAABNQzogZXhwZWN0ZWQgc3RhdGUgdG8gc3dpdGNoIHRvIENG
+Ry4AAAAAAAAAAAAAAABNQzogZXhwZWN0ZWQgc3RhdGUgdG8gc3dpdGNoIHRvIEFjY2Vzcy4AAAAA
+AAAAAABJSS4xLmJ4IGRwMThbJXVdIHFbJXVdICUjeCAlI3ggJSN4ICUjeCBtaW4gJSN4IG1heCAl
+I3gKAAAAAAAAAAAASUkuMS5jLWQuICUjeCAlI3ggJSN4ICUjeCBhbGwgICUjeAoAAAAAAAAAAAAA
+AAAASUkuMi5iICglI3ggLSAlI3ggKyAlI3gpICUgMTI4ID0gJSN4CgAAAAAAAAAAAAAASUkuMyBp
+bmV3XzFlIGFmdGVyIGxpbWl0IGNvbXB1dGUgaXRlbXBfMWUgJXgsIGluZXdfMWUgJXgKAAAAAAAA
+AElJLjMuIGl0ZW1wXzFlICUjeCBpbmV3XzFlICUjeCBpbmV3XzFlICVkCgAAAAAAAElJLjQuIHNl
+dF8xZSAlI3gKAAAAAAAAAAAAAAAAAAAATUM6IGNhbGlicmF0aW9uIGZhaWxlZCBmb3IgZXJyYXRh
+MjkgZHAxOCAldQoAAAAASVYuMS4gZHAxOFsldV0gcGhhc2Vfc2VsIGJlZm9yZSAlI3ggYWZ0ZXIg
+JSN4LCBnYXRlX2RlbGF5ICUjeAoAAE1DIGVycmF0YTI5IGlzc3VlOiBkcDE4ICV1IHF1YWQgJXUg
+Y2Fubm90IGJlIGRlY3JlYXNlZAoAAAAAAAAAAABNQyBlcnJhdGEyOSBpc3N1ZTogZHAxOCAldSBx
+dWFkICV1IGNhbm5vdCBiZSBkZWNyZWFzZWQKAAAAAAAAAAAATUMgZXJyYXRhMjkgaXNzdWU6IGRw
+MTggJXUgcXVhZCAldSBjYW5ub3QgYmUgZGVjcmVhc2VkCgAAAAAAAAAAAE1DIGVycmF0YTI5IGlz
+c3VlOiBkcDE4ICV1IHF1YWQgJXUgY2Fubm90IGJlIGRlY3JlYXNlZAoAAAAAAAAAAAB0ZW1wMl8x
+ZSsweDEwID0gJSN4CgAAAAAAAAAAAAAAAE1DOiBjYWxpYnJhdGlvbiBmYWlsZWQgZm9yIGVycmF0
+YTIxIGl0ZXJhdGlvbiAldQoAAAAAAAAAAAAAAAAAAABNQyBlcnJhdGEgMjE6IGRwMThbJXVdIHBy
+MCBuMDIgZmFpbGVkIHRvIGdldCBhdmVyYWdlCgAAAAAAAAAAAAAATUMgZXJyYXRhIDIxOiBkcDE4
+WyV1XSBwcjAgbjEzIGZhaWxlZCB0byBnZXQgYXZlcmFnZQoAAAAAAAAAAAAAAE1DIGVycmF0YSAy
+MTogZHAxOFsldV0gcHIxIG4wMiBmYWlsZWQgdG8gZ2V0IGF2ZXJhZ2UKAAAAAAAAAAAAAABNQyBl
+cnJhdGEgMjE6IGRwMThbJXVdIHByMSBuMTMgZmFpbGVkIHRvIGdldCBhdmVyYWdlCgAAAAAAAAAA
+AAAATUMgaW5pdGlhbGl6YXRpb24gZmFpbGVkOiBERkkgaW5pdCBub3QgZ29pbmcgdG8gMAoAAAAA
+AAAAAAAAAAAAAE1DIGluaXRpYWxpemF0aW9uIGZhaWxlZDogREZJIGluaXQgbm90IGNvbXBsZXRp
+bmcKAAAAAAAAAAAAAAAAAABNQyBpbml0aWFsaXphdGlvbiBmYWlsZWQ6IENhbGlicmF0aW9uIGRp
+ZG4ndCBjb21wbGV0ZS4KAAAAAAAAAAAARFAxOCAldSwgYnl0ZV9sYW5lICV1LCBiaXRfc2VsZWN0
+ICV1CgAAAAAAAAAAAAAARFAxOCAldSwgYnl0ZV9sYW5lICV1LCBiaXRfc2VsZWN0ICV1CgAAAAAA
+AAAAAAAATUMgZmFpbGVkIHRvIGdldCBVUENUTCBwb3dlciB1cCBkb25lCgAAAAAAAAAAAAAATUMg
+aW5pdGlhbGl6YXRpb24gZmFpbGVkOiBEaWRuJ3QgZ2V0IGFsbCBEUDE4cyBsb2NrZWQKAAAAAAAA
+AAAAAE1DIGluaXRpYWxpemF0aW9uIGZhaWxlZDogRGlkbid0IGdldCBib3RoIEFEUnMgbG9ja2Vk
+CgAAAAAAAAAAAABDdXJyZW50IFNsZXcgdHhfcm93ICVkOiB0eF9jb2wgJWQsIHZhbCAlZAoAAAAA
+AABDdXJyZW50IFNsZXcgYWRkcl9yb3cgJWQ6IGFkZHJfY29sICVkLCB2YWwgJWQKAABNQyBpbml0
+aWFsaXphdGlvbiBmYWlsZWQ6IFNMRVdfRE9ORV9TVEFUVVMgbmV2ZXIgdG9nZ2xlZAAAAAAAAAAA
+ZmxyX3BmdmZfZnNtWyV1OiV1XTogdW5rbm93biBzdGF0ZSAldQoAAAAAAAAAAAAAcGZuICV1IHZm
+biAldSBpbiBkM2hvdCwgaWdub3JpbmcsIGQzaG90IDB4JTA4eCBQQ0lFX1NUQVQgMHglMDh4CgAA
+AAAAAAAAAAAAAAAAAABodyBwZiBiaXRtYXAgMHglMDJ4IHZmaWQgYml0bWFwIDB4JTA4eDoweCUw
+OHg6MHglMDh4OjB4JTA4eAoAAAAAYWZ0ZXIgdmZpZCBmaXh1cCwgdmZpZCBiaXRtYXAgMHglMDh4
+OjB4JTA4eDoweCUwOHg6MHglMDh4CgAAAAAAAE1DWyV1XTogZmFpbGVkIHRvIHN3aXRjaCBjb250
+cm9sbGVyIHRvIENGRyBzdGF0ZQoAAAAAAAAAAAAAAAAAAABNQ1sldV06IGZhaWxlZCB0byBzd2l0
+Y2ggY29udHJvbGxlciB0byBJTklUX01FTSBzdGF0ZQoAAAAAAAAAAAAATUNbJXVdOiBmYWlsZWQg
+dG8gc3dpdGNoIGNvbnRyb2xsZXIgdG8gQ0ZHIHN0YXRlCgAAAAAAAAAAAAAAAAAAAE1DWyV1XTog
+cGVyaW9kaWMgY2FsaWJyYXRpb24gZmFpbGVkIHdpdGggZXJyb3IgJXUKAAAAAAAAAAAAAAAAAAB0
+aW1lciBxdWV1ZSAldSBsb3N0IGEgdGljayEgbmV4dCAlcCBsYXN0ICVwIG51bWUgJXUKAAAAAAAA
+AAAAAAAAZmxyX3RpbWVyX3N0YXJ0OiBmbG93Y19pZCAldSAlcCBidWYgJXAKAAAAAAAAAAAATUFD
+OiBQTExzIGRpZG4ndCBsb2NrCgAAAAAAAAAAAABwY2llOiByZWFkIGZyb20gc2VyY2ZnIHBjaWVf
+aXBfdXJfbWF4ZnVuYyAweCV4IHBmYml0bWFwIDB4JXgKAAAAcGNpZTogbnBmICV1IChwZmJpdG1h
+cCAweCUwMngpIG52ZiAldSAocGYgMC4uNyAweCUwOHglMDh4KSB2ZnN0cmlkZSAldQoAAAAAAAAA
+AABod19tYWNfcHJlcDogZXJyb3IsIHJldCAlZAoAAAAAAGh3X2dwaW9fcHJlcDogZXJyb3IsIHJl
+dCAlZAoAAAAATUMgQ0xLIHNldHRpbmcgZmFpbGVkOiBQTExfTV9MT0NLIG5ldmVyIHRvZ2dsZWQK
+AAAAAAAAAAAAAAAAAAAAAGZhaWxlZCB0byBmaW5kIHRoZSAlYyVjIFZQRCBwYXJhbWV0ZXIKAAAA
+AAAAAAAAAGZhaWxlZCB0byBwYXJzZSB0aGUgJWMlYyBWUEQgcGFyYW1ldGVyCgAAAAAAAAAAAG1l
+bV9wcmVwOiBlcnJvciwgcmV0ICVkCgAAAAAAAAAAZmFpbGVkIHRvIHN1Y2Nlc3NmdWxseSBmaW5k
+IENoZWxzaW8gVlBECgAAAAAAAAAAdnBkX3ByZXA6IGVycm9yLCByZXQgJWQKAAAAAAAAAABzZXJj
+ZmdfcHJlcDogZXJyb3IsIHJldCAlZAoAAAAAAGxvZyBpbml0aWFsaXplZCBAIDB4JTA4eCBzaXpl
+ICV1ICgldSBlbnRyaWVzKSBmd3JldiAweCUwOHggcGNpZV9mdyAweCUwOHgKAAAAAAAAYm9vdHN0
+cmFwIGZpcm13YXJlIHRvb2sgJXUgbXNlY3MgdG8gcnVuCgAAAAAAAAAAUEkgZXJyb3IgZmxvd2lk
+X2xlbjE2IDB4JXgsIGFwcF90YWcgMHgleCwgcmVmX3RhZyAweCV4LCBwaXNjICUwNHggJTA0eCAl
+MDR4ICUwNHgKAAAAAAAAAAAAAAAAAAAAZmxvd2MgJXUgKFNHRSBlcWlkICV1KSAoRVRIQ1RSTCBx
+dWV1ZSkgZXhwZXJpZW5jZWQgYSBQQ0kgRE1BIFJFQUQgd29yayByZXF1ZXN0IGVycm9yIChpbmJv
+dW5kIHF1ZXVlICV1KQoAAAAAAAAAAGZsb3djICV1IChTR0UgZXFpZCAldSkgZXhwZXJpZW5jZWQg
+YW4gdW5leHBlY3RlZCBQQ0kgRE1BIFJFQUQgd29yayByZXF1ZXN0IGVycm9yIChpbmJvdW5kIHF1
+ZXVlICV1KQoAAAAAAAAAAAAAAABmbG93YyAldSBleHBlcmllbmNlZCBhbiB1bmV4cGVjdGVkIFBD
+SSBETUEgUkVBRCBlcnJvciAoaW5ib3VuZCBxdWV1ZSAldSkKAAAAAAAAAGdhdGhlcl90YXNrc19m
+b3JfdG1mOiBpZHggWzB4JXhdLCB0YXNrLWlkIFsweCV4XSwgY21kLWlkIFsweCV4XSwgYWN0aXZl
+IHRhc2tzIFsweCV4XS4gY29ubi1pZCBbMHgleF0sIGNtZCBjb25uLWlkIFsweCV4XSwgdGFzayBj
+b25uLWlkIFsweCV4XQoAAGdhdGhlcl90YXNrc19mb3JfdG1mOiBJbnZhbGlkIHR5cGUgWzB4JXhd
+LCBiYWlsaW5nIG91dC4KAAAAAAAAAABnYXRoZXJfdGFza3NfZm9yX3RtZjogdGFzayBpZCBbMHgl
+eF0sIHN0YXRlIFsweCV4XSwgbGlkeCBbMHgleF0sIGNvb2tpZSBoaSBbMHglMDh4XSA6IGxvIFsw
+eCUwOHhdCgAAAAAAAAAAAAAAAAAAZ2F0aGVyX3Rhc2tzX2Zvcl90bWY6IHJjIFsweCV4XSwgWzB4
+JXhdIHRhc2sgZ2F0aGVyZWQgZm9yIHRtZiB0eXBlIFsweCV4XSBwcm9jZXNzaW5nLgoAAAAAAAAA
+AAAAc2NzaV9kYXRhX291dDogY29ubl9mYyBbMHgleF0sIHN0YXRlIFsweCV4XSwgc2Vzc19mYyBb
+MHgleF0gaW4gcmVjb3ZlcnkuIFNraXBwaW5nIGlzdGFza19mYyBbMHgleF0gZnJvbSBUWC4KAAAA
+AHNlbmRfbXNnX3BsZDogZmMgeyBpZCBbMHgleF0sIGZsYWdzIFsweCV4XSwgYnVmZmVyZWQgWyV1
+XS4gfQoAAABzZW5kX21zZ19wbGQ6IHNlc3MgeyBpZCBbMHgleF0gfSwgdWxwdHhjaCBbJXVdIG5v
+IGNyZWRpdHMgYXZhaWxhYmxlLCByZXNjaGVkdWxpbmcgcmVxdWVzdC4KAAAAAABzZW5kX2Fib3J0
+X3JlcTogY3NrX2ZjLT5mbG93Y190eXBlIFsweCV4XSwgY3NrX2ZjLT5mbG93Y19pZCBbMHgleF0s
+IHRpZCBbMHgleF0sIHVscHR4Y2ggWyV1XSwgYnVmZmVyZWQgWyV1XQoAAAAAaHcgcmVnaXN0ZXIg
+b3BlcmF0aW9uIG5vdCBjb21wbGV0aW5nLCByZWcgMHglMDh4IG1hc2sgMHglMDh4IHZhbHVlIDB4
+JTA4eCAocmVnIDB4JTA4eCkKAAAAAAAAAAAATURJTyBDTDQ1OiBmYWlsZWQgdG8gc2V0IHVwIE1N
+RCBhZGRyCgAAAAAAAAAAAAAATURJTzogZmFpbGVkIHRvIHJlYWQKAAAAAAAAAAAAAABod19iY204
+NDg1Nl9jaGVjayBlbnRyeQoAAAAAAAAAAGh3X2JjbTg0ODU2X2NoZWNrIGxvb3AgJXUgKGNoZWNr
+ICUjeCkKAAAAAAAAAAAAAGh3X2JjbTg0ODU2X2NoZWNrIHVwX3J1bm5pbmcgKGxvb3BfY250PSV1
+KQoAAAAAAGh3X2JjbTg0ODU2X2NoZWNrIGZhaWxlZCAoYmFkIENSQykKAAAAAAAAAAAAAAAAAFBI
+WSBmaXJtd2FyZSBsb2FkIHN1Y2Nlc3NmdWwhICh3b3cuLi4pCgAAAAAAAAAAAE1ESU8gQ0w0NTog
+ZmFpbGVkIHRvIHNldCB1cCBNTUQgYWRkcgoAAAAAAAAAAAAAAE1ESU86IGZhaWxlZCB0byB3cml0
+ZQoAAAAAAAAAAAAAbWlpX2Fkdl9mY1sldV06IHJjYXBzIDB4JXgKAAAAAABtaWlfYWR2X3NwZWVk
+WyV1XTogcmNhcHMgMHgleAoAAG5ldGlmX3NldF9tYWM6IGwyZGV2X2ZjLT5mbG93Y19uZXRfbDJk
+ZXZfbWJzIFsweCV4XQoAAAAAAAAAAAAAAAByZW1vdmluZyBtYWMKAAAAbm9kZS0+Z3JwIFslMDR4
+ICUwNHggJTA0eCAlMDR4XSwgbm9kZV9pZCAldSwgcmVmX2NudCAldQoAAAAAAAAAAERBRCBmb3Ig
+YWRkciBbJTA0eCAlMDR4ICUwNHggJTA0eF0KAAAAAAAAAAAAAAAAAGNwbF90eF9wa3Q6IHZsYW5p
+ZCBbMHgleF0KAAAAAAAAY3BsX3R4X3BrdDogdmxhbmlkIFsweCV4XQoAAAAAAABmbG93Y19pZCBb
+JXVdIGwyZGV2X2ZjIFsweCV4XSBhbHJlYWR5IHJlY2VpdmVkIFJBLCBub3Qgc2VuZGluZyBSUwoA
+AAAAAAAAAAAAAAAAAGZsb3djaWQgWyV1XSBsMmRldl9mYyBbMHgleF0gTm8gSVB2NiByb3V0ZXIK
+AAAAAHNlbmRfY2xvc2VfcmVxOiBjc2tfZmMtPmZsb3djX3R5cGUgWzB4JXhdLCBjc2tfZmMtPmZs
+b3djX2lkIFsweCV4XSwgY3NrX2ZjLT50Y2Jfc3RhdGUgWzB4JXhdCgAAAHNlbmRfY2xvc2VfcmVx
+OiBjc2tfZmMtPmZsb3djX3R5cGUgWzB4JXhdLCBjc2tfZmMtPmZsb3djX2lkIFsweCV4XSwgdGlk
+IFsweCV4XSwgdWxwdHhjaCBbJXVdLGJ1ZmZlcmVkIFsldV0KAAAAAABvZmxkX3RjcF9kb19hY3Rp
+dmVfY2xvc2U6IGNza19mYyBbMHgleF0sIGNza19mYy0+Zmxvd2NfaWQgWzB4JXhdLCBjc2tfZmMt
+PnRjYl9zdGF0ZSBbMHgleF0KAAAAAABvZmxkX3RjcF9kb19hY3RpdmVfY2xvc2U6IGNza19mYyBb
+MHgleF0sIGNza19mYy0+Zmxvd2NfaWQgWzB4JXhdLCBjc2tfZmMtPnRjYl9zdGF0ZSBbMHgleF0K
+AAAAAABvZmxkX3RjcF9kaXNjb25uZWN0OiB0Y2JfZmMtPmZsb3djX2lkIFsweCV4XSwgY3NrX2Zj
+LT5mbG93Y19pZCBbMHgleF0sIGNzay0+dGNiX3N0YXRlIFsweCV4XQoAAABkZWNvZGVfYmFzZTY0
+X3N0cmluZzogZGxlbiBbJWRdCgAAAAAAAAAAAAAAAAAAAABkZWNvZGVfaGV4X3N0cmluZzogZGxl
+biBbJWRdCgAAAGZvaXNjc2lfdmFsaWRhdGVfbG9naW5fc3RhZ2U6IC0gMQoAAAAAAAAAAAAAAAAA
+AGFzeW5jX3BkdTogbG9nb3V0IHJlcXVlc3RlZCBibG9ja2luZyBzZXNzaW9uCgAAAGFzeW5jX3Bk
+dTogc2Vzcy9jb25uIGRyb3AgcmVxdWVzdGVkIGJsb2NraW5nIHNlc3Npb24KAAAAAAAAAAAAAABj
+cGxfdHhfcGt0OiB2bGFuaWQgWzB4JXhdCgAAAAAAAHJlaW5pdCBsaW5rLWxvY2FsIGFkZHJlc3MK
+AAAAAAAAbmV0X2wyZGV2X2ZpbmRfYnlfYWRkcjogbDJkZXZfZmMtPmZsb3djX2lkIFsweCV4XSwg
+bDJkYy0+bHBvcnQgWyV1XSwgbDJkX2ZjLT5mbG93Y19pZCBbMHgleF0sIGwyZGMtPmluNF9kZXYu
+aW5fYWRkci5hZGRyIFsweCV4XSwgYWRkciBbMHgleF0KAAAAbmV0X2wyZGV2X210dV9jb25maWc6
+IGwyZGV2X2ZjLT5mbG93Y19pZCBbMHgleF0sIG10dSAldQoAAAAAAAAAAG5ldGlmX2RvX2RoY3A6
+IHdyLT5wYXJhbS52bGFuaWQgWyV1XSwgbDJkZXZfZmMtPmZsb3djX25ldF9sMmRldl92bGFuZGV2
+IFsweCV4XQoAY3BsX3R4X3BrdDogdmxhbmlkIFsweCV4XQoAAAAAAABlbmNvZGUgaGV4IHN0cmlu
+ZzogZGxlbiBbJWRdCgAAAGNobmV0X2ZpbmRfbDJ0X2VudHJ5OiBkYWRkciBbJTA4eF0sIFsweCUw
+OHhdLCBsb2NhbCBuZXR3b3JrIFslZF0KAAAAAAAAAAAAAAAAAAAAbDJ0ZW50IFslMHhdLCBsMnRl
+bnQtPmlkeCBbJWRdCgB0Y3Bfc2VuZF9hb3Blbl9yZXE6IGNza19mYy0+Zmxvd2NfaWQgWzB4JXhd
+LCBjc2tfZmMtPmZsb3djX3N0YXRlIFsweCV4XSwgYnVmZmVyZWQgWyV1XSwgcmVzX2NudCBbMHgl
+eF0sIGlxX2lkeCBbMHgleF0KAAAAAAAAAAAAAHRjcF9zZW5kX2FvcGVuX3JlcTogY3NrX2ZjLT5m
+bG93Y19pZCBbMHgleF0sIGNza19mYy0+Zmxvd2Nfc3RhdGUgWzB4JXhdLCBubyB2YWxpZCBsMnRf
+ZW50eS4gRGVsYXlpbmcgYW5vdGhlciByZXRyeSBmb3IgMSBzZWNvbmRzLgoAAAAAAAAAAAAAAAAA
+AGFvcGVuX3JlcTogaHdfbGVfZmlsdGVyX2N0dXBsZSBmYWlsZWQKAAAAAAAAAAAAAG9mbGRfdGNw
+X3NlbmRfYW9wZW5fcmVxOiBjcGxfcmVxLT5GaWx0ZXJfaGkgWzB4JTB4XSwgY3BsX3JlcS0+Rmls
+dGVyX2xvX0ZDb0VNYXNrIFsweCUweF0sIGN0dXBsZXNbMF0gWzB4JXhdLCBjdHVwbGVzWzFdIFsw
+eCV4XQoAbGFkZHJfcmV0OiBsMmRjLmFkZHIgOjB4JXgsIHNyY19hZGRyOjB4JXgKAAAAAAAAaXR0
+X3RvX3Rhc2tfaWR4OiB0YWcgWzB4JTA4eF0sIGhpIFsldV0sIGxvIFsldV0sIG5tYXNrYml0cyBb
+JXVdLCB0YXNrX2lkeCBbJXVdCgBXQVRDSERPRzogTm8gdGVtcGVyYXR1cmUgc2Vuc29yIGF2YWls
+YWJsZS4KAAAAAABXQVRDSERPRzogQWN0aXZhdGluZwoAAAAAAAAAAAAAAFdBVENIRE9HIC0gRW5h
+YmxlIGFjdGlvbiAldSB0aW1lICV1CgAAAAAAAAAAAAAAAFdBVENIRE9HIC0gRGlzYWJsZSBhY3Rp
+b24gJXUKAAAAV0FUQ0hET0c6IERlLWFjdGl2YXRpbmcKAAAAAAAAAABwb3J0WyV1XSBzZXQgUEFV
+U0UgUEFSQU1TOiBwcHBlbiAldSB0eHBlICUjeCByeHBlICUjeAoAAAAAAAAAAAAAbXBzX2xpbmtf
+dXBbJXVdIGFjYXBzICUjeCAoODAyLjMgJSN4KSArIGxwYWNhcHMgJSN4ID0+ICUjeAoAAAAAAGlw
+djZfaGFuZGxlX2xpbmtfZG93biBmbG93Y19pZCAweCV4CgAAAAAAAAAAAAAAAGlwdjZfaGFuZGxl
+X2xpbmtfdXAgZmxvd2NfaWQgMHgleAoAAAAAAAAAAAAAAAAAAGZvaXNjc2kgY29ubl9mYyBbMHgl
+eF0sIGZsb3djX3NjaGVkY2wgWzB4JXhdLCBpbmdfY2ggWzB4JXhdLCBlZ3JfY2ggWzB4JXhdCgAA
+AAAAbDJkZXZfbm90aWZ5IHdpdGggdW5rbm93biBmbGFnIFsweCV4XQoAAAAAAAAAAAAARkNvRSBG
+Q0IgbGlua2Rvd246IGlvX3JlcSAweCV4JXggaXFpZCAweCV4IGZsb3dpZCAweCV4IG9wIDB4JXgK
+AGZjX3NlbmRfYWxsb2NfY3BsOiBmYWlsZWQgdG8gc2V0dXAgZmlsdGVyIGN0dXBsZQoAAAAAAAAA
+AAAAAAAAAABmY29lX2NvbXB1dGVfY3R1cGxlIDB4JXg6JXgKAAAAAGNvbXB1dGVfY3R1cGxlKCk6
+IGZhaWxlZCB0byBzZXR1cCBmaWx0ZXIgY3R1cGxlCgAAAAAAAAAAAAAAAAAAAABmY29lIG5vdGlm
+eSA6IFVwZGF0ZSBuZXcgRENCWCB2YWx1ZXMgVkkgc3RhdGUgMHgleCBwcmkgMHgleCBzY2hlZGNs
+IDB4JXggZGNieF9kb25lIDB4JXgKAAAAAAAAAABmY29lIG5vdGlmeSA6IEZDRiBmbG93aWQgMHgl
+eCwgdWxwY2ggMHgleCAKAAAAAABmY29lIG5vdGlmeSA6IEZDb0UgTElOS1VQOiBwb3J0IDB4JXgs
+IGV2ZW50IDB4JXgKAAAAAAAAAAAAAAAAAAAAZmNvZSBub3RpZnkgOiBGQ29FIExJTktET1dOOiBw
+b3J0IDB4JXgsIGV2ZW50IDB4JXgKAAAAAAAAAAAAAAAAAGZjb2Ugbm90aWZ5IDogRENCWCA6IHBv
+cnQgMHgleCwgcHJpb3JpdHkgMHgleCB1bHB0eGNoIDB4JXggY2xhc3MgMHgleAoAAAAAAAAAAAAA
+Y2hfY2xfcmF0ZVsldS8ldV06IGNhcHBlZCBkZWZpY2l0X2luY3IgZnJvbSByZXF1aXJlZCAldSB0
+byAldTsgcmF0ZSAldSAoZWZmICV1KSBkZWZpY2l0X21heCAldQoARENCWDogc3VtIG9mIHJhdGVz
+IG9uIGFsbCBjbGFzc2VzIG11c3QgYmUgMTAwIChhY3R1YWw6ICV1KQoAAAAAAFJERVYgbXNnIGZs
+b3djOiV4IHN0YXRlIDB4JXggZXZlbnQgMHgleAoAAAAAAAAAAGNhbmNlbCBmY2I6JXggc2NiOiV4
+IHN0YXRlOiV4CgAARkNvRSBGQ0YgdGltZXI6IGZsb3djIHN0YXRlIDB4JXgsIHBvcnQgMHgleCAs
+ZmNmIDB4JXgsIGZsb3djX2lkIDB4JXgKAAAAAAAAAAAAAAByaV93cl9pbml0WyV1XTogbXNzICV1
+IGlzIG5vdCA4LWJ5dGUgYWxpZ25lZAoAAABjb3JlX3Byb2dyYW1fdGNiOiB0aWQgJSN4IHRfc3Rh
+dGUgJSN4IHJjdl9hZHYgMHglMDh4IHJjdl9zY2FsZSAlI3ggdHhfbWF4ICUjeCByY3Zfbnh0ICUj
+eCBhdGlkICUjeAoAAAAAAAAAAAAAAAAACW9wdDAgJSN4JXggb3B0MiAlI3ggaXB2NiAlI3ggZmxh
+Z3NfdGltZXIgMHglMDh4CgAAAAAAAAAAAAAAAAAAAG9mbGRfY29ubmVjdGlvbl93cjogY29ubmVj
+dGlvbiB3aXRoIDUtdHVwbGUgbHAgMHglMDR4IGZwIDB4JTA0eCBsaXAgMHglMDh4JTA4eCBwaXAg
+MHglMDh4JTA4eCBmaWx0ZXIgMHglMDh4IGV4aXN0cyBAIExFIGluZGV4ICV1CgAAAAAAAAAAAAAA
+AAAAAG9mbGRfY29ubmVjdGlvbl93cjogY29ubmVjdGlvbiB3aXRoIDUtdHVwbGUgbHAgMHglMDR4
+IGZwIDB4JTA0eCBsaXAgMHglMDh4IHBpcCAweCUwOHggZmlsdGVyIDB4JTA4eCBleGlzdHMgQCBM
+RSBpbmRleCAldQoAAAAAAAAAb2ZsZF9jb25uZWN0aW9uX3dyOiBjb25uZWN0aW9uIHdpdGggNS10
+dXBsZSBscCAweCUwNHggZnAgMHglMDR4IGxpcCAweCUwOHglMDh4IHBpcCAweCUwOHglMDh4IGZp
+bHRlciAweCUwOHgKAAAAAG9mbGRfY29ubmVjdGlvbl93cjogY29ubmVjdGlvbiB3aXRoIDUtdHVw
+bGUgbHAgMHglMDR4IGZwIDB4JTA0eCBsaXAgMHglMDh4IHBpcCAweCUwOHggZmlsdGVyIDB4JTA4
+eAoAAAAAAAAAAAAAAABJUUZMSU5UIHBmbiAldSB2Zm4gJXU6IGlxaWQgJXUgdG9vIGxhcmdlICht
+YXggJXUpCgAAAAAAAAAAAAAAAAAASVFGTElOVCBwZm4gJXUgdmZuICV1OiBpcWlkICV1IG5vdCBh
+bGxvY2F0ZWQKAAAASVFGTElOVCBwZm4gJXUgdmZuICV1OiBmbDBpZCAldSB0b28gbGFyZ2UgKG1h
+eCAldSkKAAAAAAAAAAAAAAAAAElRRkxJTlQgcGZuICV1IHZmbiAldTogZmwwaWQgJXUgbm90IGFs
+bG9jYXRlZAoAAElRRkxJTlQgcGZuICV1IHZmbiAldTogZmwxaWQgJXUgdG9vIGxhcmdlIChtYXgg
+JXUpCgAAAAAAAAAAAAAAAABJUUZMSU5UIHBmbiAldSB2Zm4gJXU6IGZsMWlkICV1IG5vdCBhbGxv
+Y2F0ZWQKAABJUUZMSU5UIHBmbiAldSB2Zm4gJXU6IGZsMWlkICV1IGlzIHZhbGlkIGJ1dCBub3Qg
+ZmwwaWQgJXUKAAAAAAAASVFGTElOVCBwZm4gJXUgdmZuICV1OiBmbDFpZCAldSBpcyB2YWxpZCBi
+dXQgaGVhZGVyIHNwbGl0IGZlYXR1cmUgaXMgbm90IGVuYWJsZWQKAAAAAAAAAAAAAAAAAAAAaHdf
+dWxwdHhfd29ya2Fyb3VuZF9wcjE2OTQ5X2VuYWJsZWRfcGY6IHBmICV1IGVuYWJsZWQgJXUKAAAA
+AAAAAGh3X3VscHR4X3dvcmthcm91bmRfcHIxNjk0OV9lbmFibGVkX3ZmaWQ6IHZmaWQgJXUgZW5h
+YmxlZCAldQoAAABFUSBwZm4gJXUgdmZuICV1OiBjcmVhdGluZyBFVEggZXFpZCAldSB3aXRoIHBl
+bmRpbmcgV1IocykgKG51bV9ieXRlcyAldSBhbmQgZmxhZ3MgMHglMDh4CgAAAAAAAABFUSBwZm4g
+JXUgdmZuICV1OiBjcmVhdGluZyBDVFJMIGVxaWQgJXUgd2l0aCBwZW5kaW5nIFdSKHMpIChudW1f
+Ynl0ZXMgJXUgYW5kIGZsYWdzIDB4JTA4eAoAAAAAAABFUSBwZm4gJXUgdmZuICV1OiBlcWlkICV1
+IHRvbyBsYXJnZSAobWF4ICV1KQoAAABFUSBwZm4gJXUgdmZuICV1OiBlcWlkICV1IG5vdCBhbGxv
+Y2F0ZWQKAAAAAAAAAABkY2J4X3BvcHVsYXRlX2N0cmwgY29kZSBpbmNvbXBsZXRlCgAAAAAAAAAA
+AAAAAAB2aV90Y2FtX3JhdyBpZHggJXUgbWFjIDB4JTA0eCAlMDh4CgAAAAAAAAAAAAAAAABwb3J0
+X2JsaW5rX2xlZF9yZXN0b3JlCgAAAAAAAAAAAHBvcnRfYmxpbms6IGJsaW5rZHVyPTB4JXggYmxp
+bmtfcmVmY250CgAAAAAAAAAAAHBvcnRfYmxpbms6IAlibGlua19yZWZjbnQ9MHgleAoAcG9ydF9i
+bGluazogCWJsaW5rX3JlZmNudD0weCV4CgBtaWlfYW5yZXN0YXJ0WyV1XTogYWNhcHMgMHgleAoA
+AHBvcnRfY21kX2hhbmRsZXI6IHVua25vd24gdS5kY2IudHlwZSAweCV4CgAAAAAAAHBvcnRbJXU6
+MHglMDJ4OjB4JTAyeF06IGwxY2ZnLCBpbnZhbGlkIHJlcXVlc3QsIHBjYXBzIDB4JXggYWNhcHMg
+MHgleCByY2FwcyAweCV4CgAAAAAAAAAAAAAAAAAAAHBvcnRbJXU6MHglMDJ4OjB4JTAyeF06IGwx
+Y2ZnLCBwY2FwcyAlI3ggYWNhcHMgJSN4IHJjYXBzICUjeCBtY2FwcyAlI3gKAAAAAAAAAAAAcG9y
+dFsldToweCUwMng6MHglMDJ4XTogbDFjZmcsIG1kaSBpc3N1ZSBwY2FwcyAweCV4IGFjYXBzIDB4
+JXggcmNhcHMgMHgleAoAAAAAAABwb3J0WyV1OjB4JTAyeDoweCUwMnhdOiBsMWNmZywgY2Fubm90
+IGZvcmNlIG5vL211bHRpcGxlIHNwZWVkKHMpLCBwY2FwcyAweCV4IGFjYXBzIDB4JXggcmNhcHMg
+MHgleAoAAAAAAAAAAAAAAAAAZXRoX2Zsb3djX2hhbmRsZXJbMHgleF06IGZsYWdzIDB4JTA4eCBu
+dW1fYnl0ZXMgJXUgc2NoZWRjbCAweCV4IC0+IDB4JXgKAAAAAAAAAAB0YXNrX2lkeF90b19pdHQ6
+IHRhc2tfaWR4IFsldV0sIGhpIFsldV0sIGxvIFsldV0sIG5tYXNrYml0cyBbJXVdLCBzd190YWcg
+WzB4JTA4eF0sIHBwb2RfaWR4IFslZF0KAAAAAAAAAAAAAAAAAAAAc2NzaV9jbWQ6IHJlY2VpdmVk
+IFRNRiBvcCBbMHgleF0gZnVuYyBbMHgleF0gb24gY29ubiBbMHgleF0gdGhyb3VnaCBjb21tYW5k
+IHBhdGguCgAAAAAAAAAAAAAAAAAAc2NzaV9jbWQ6IGNvbm5fZmMgWzB4JXhdLCBzdGF0ZSBbMHgl
+eF0sIHNlc3NfZmMgWzB4JXhdIGluIHJlY292ZXJ5LiBTa2lwcGluZyBpc3Rhc2tfZmMgWzB4JXhd
+IGZyb20gVFguCgAAAAAAAAAAAHNjc2lfcmVhZDogY29ubl9mYyBbMHgleF0sIHN0YXRlIFsweCV4
+XSwgc2Vzc19mYyBbMHgleF0gaW4gcmVjb3ZlcnkuIFNraXBwaW5nIGlzdGFza19mYyBbMHgleF0g
+ZnJvbSBUWC4KAAAAAAAAAABzY3NpX3dyaXRlOiBjb25uX2ZjIFsweCV4XSwgc3RhdGUgWzB4JXhd
+LCBzZXNzX2ZjIFsweCV4XSBpbiByZWNvdmVyeS4gU2tpcHBpbmcgaXN0YXNrX2ZjIFsweCV4XSBm
+cm9tIFRYLgoAAAAAAAAAZGNieF9jb250cm9sX3NtWyV1XSBDT05UUk9MX0xJTktVUAoAAAAAAAAA
+AAAAAAAAZGNieF9jb250cm9sX3NtWyV1XSBDT05UUk9MX1VQREFURV9EQ0JYX1RMVgoAAAAAZGNi
+eF9jb250cm9sX3NtWyV1XSBDT05UUk9MX1BFRVJfTk9UX0FEVkVSVElTRV9EQ0JYCgAAAAAAAAAA
+AAAAAGRjYnhfY29udHJvbF9zbVsldV0gQ09OVFJPTF9VUERBVEVfT1BFUl9WRVJTSU9OCgAAAAAA
+AAAAAAAAAAAAAABkY2J4X2NvbnRyb2xfc21bJXVdIENPTlRST0xfUFJPQ0VTU19QRUVSX1RMVgoA
+AABkY2J4X2NvbnRyb2xfc21bJXVdIENPTlRST0xfQUNLX1BFRVIKAAAAAAAAAAAAAABkY2J4X2ll
+ZWVfdmFsaWRhdGVbJXVdIGVycm9yIChvdWkgJSN4IHN1YnR5cGUgJSN4IGxlbiAlI3gpCgAAAAAA
+ZGNieF9jZWVfdmFsaWRhdGVbJXVdIGVycm9yCgAAAABjaG5ldF9sMnRfdXBkYXRlOiBsMmRldl9m
+YyBbMHgleF0sIGwyZGV2X2ZjLT5mbG93Y19pZCBbJXVdIGwyZGV2X2ZjLT5mbG93Y19mbGFncyBb
+MHgleF0sIGludGYgWzB4JXhdCgAAAAAAAAAAAAAAY2huZXRfbDJ0X3VwZGF0ZTogbDJkZXZfZmMt
+PmZsb3djX2lkIFsldV0gYWxyZWFkeSBzY2hlZHVsZWQKAAAAAGNobmV0X2wydF91cGRhdGU6IGlu
+IGRlbGF5ZWRfcHJvY2Vzc2luZywgbDJ0ZW50IFslMDh4XQoAAAAAAAAAAABESENQdjYgUkVQTFkg
+cmVjZWl2ZWQgc3RhdGUgJXUKAGRoY3AgcmVwbHkgcmVjZWl2ZWQgaW4gd3Jvbmcgc3RhdGUgJWQK
+AAAAAAAAAAAAAHVua25vd24gc2VydmVyaWQuIElnbm9yaW5nIGRoY3AgcmVwbHkKAAAAAAAAAAAA
+AHJlY2VpdmVkIHJlcGx5IHdpdGggZGlmZmVyZW50IGFkZHJlc3MuIGlnbm9yaW5nIGRoY3AgcmVw
+bHkKAAAAAABESENQdjYgQURWRVJUSVNFIHJlY2VpdmVkCgAAAAAAAGRoY3AgYWR2ZXJ0aXNlIHJl
+Y2VpdmVkIGluIHdyb25nIHN0YXRlICVkCgAAAAAAAGlnbm9yaW5nIHJjdmQgYWR2ZXJ0aXNlIHBy
+ZWZlcmVuY2UgJXUKAAAAAAAAAAAAAHByZWZpeCBub2RlIDB4JXgsIHZhbGlkX2xpZmV0aW1lICV1
+LCBjdXJyZW50X3RpbWUgJXUgZXhwaXJlZCwgZGVsZXRpbmcgaXQKAAAAAAAARGVsZXRlZCBwcmVm
+aXg6IDB4WyUwNHggJTA0eCAlMDR4ICUwNHhdCgAAAAAAAAAAU3RhcnQgREhDUHY2IHRvIGdldCB0
+aGUgaXAgYWRkcmVzcwoAAAAAAAAAAAAAAAAATm8gZGhjcCwgZGhjcCBzdGF0ZSAlZCwgYWRkciBz
+dGF0ZSAlZAoAAAAAAAAAAAAAcGluZyByZXEgcGF5bG9hZCB0b28gbGFyZ2UgJXUuIElnbm9yaW5n
+IHJlcS4KAAAAUlIgcmN2ZAoAAAAAAAAAAGNobmV0X2lwdjZfcmRfaW5wdXQ6IEludmFsaWQgUmVk
+aXJlY3QKAAAAAAAAAAAAAGNobmV0X2lwdjZfbmFfaW5wdXQ6IEludmFsaWQgTkEKAAAAAAAAAAAA
+AAAAAAAAAGlwdjYgTkEgcmN2ZAoAAABjaG5ldF9pcHY2X25hX2lucHV0OiBEdXBsaWNhdGUgYWRk
+cmVzcyBkZXRlY3RlZCEKAAAAAAAAAAAAAAAAAAAATkEgaW4gcmVwb25zZSBvZiBOUwoAAAAAAAAA
+AAAAAABjaG5ldF9pcHY2X25zX2lucHV0OiBJbnZhbGlkIE5TCgAAAAAAAAAAAAAAAAAAAABjaG5l
+dF9pcHY2X25zX2lucHV0OiBJbnZhbGlkIE5TIGlwdjZoLT5wbGVuICV1CgBpcHY2IE5TIHJjdmQK
+AAAAY2huZXRfaXB2Nl9uc19pbnB1dDogRHVwbGljYXRlIGFkZHJlc3MgZGV0ZWN0ZWQKAAAAAAAA
+AAAAAAAAAAAAAGNobmV0X2lwdjZfbnNfaW5wdXQ6IHNvbWVib2R5IHRyeWluZyB0byB1c2Ugb3Vy
+IGFkZHJlc3MKAAAAAAAAAABjaG5ldF9pcHY2X25zX2lucHV0OiByZXEgZm9yIGFkZHIgcmVzb2x1
+dGlvbgoAAABIb3AgYnkgSG9wIG9wdGlvbgoAAAAAAAAAAAAAAAAAAHByb2Nlc3NfZGhjcF9vcHRz
+OiByb290IHBhdGggbGVuIFslZF0gYnl0ZXMKAAAAAG5ldGlmX3Byb2Nlc3NfZGhjcF9vcHRzOiBs
+MmRldl9mYy0+Zmxvd2NfaWQgWzB4JXhdLCBNU0dfVFlQRSBbJWRdLCBkaGN0eHQtPnN0YXRlIFsl
+ZF0KAAAAAAAAAAAAAGljbXBfcmVjdjogbDJkZXZfZmMtPmZsb3djX2lkIFsweCV4XSwgcGlkIFsw
+eCV4XSwgaWNtcCB0eXBlIFsweCV4XQoAAAAAAAAAAAAAAAAAdm4ydm46IHBvcnQgMHgleCBkaWQ6
+MHgleCV4JXggVVAKAAAAAAAAAAAAAAAAAAAAdm4ydm46IHBvcnQgMHgleCBkaWQ6MHgleCV4JXgg
+RE9XTgoAAAAAAAAAAAAAAAAAZmNfc2VuZF9hbGxvY19jcGw6IGZhaWxlZCB0byBzZXR1cCBmaWx0
+ZXIgY3R1cGxlCgAAAAAAAAAAAAAAAAAAAGZjb2VfY29tcHV0ZV9jdHVwbGUgMHgleDoleAoAAAAA
+Y29tcHV0ZV9jdHVwbGUoKTogZmFpbGVkIHRvIHNldHVwIGZpbHRlciBjdHVwbGUKAAAAAAAAAAAA
+AAAAAAAAAGZjb2VfY29tcHV0ZV9jdHVwbGUgdmxhbiAleCB2aWlkICV4IHBvcnQgJXggbXBzX2lk
+eCAleAoAAAAAAAAAAABBQlRTIEFDQyBhd2FpdGluZyBQUkxJIFJzcDogZmxvd2NfaWQgMHgleCBv
+eF9pZCAweCV4IHJ4X2lkIDB4JXggaXFpZCAweCV4CgAAAAAAAHBvcnQgMHgleCwgc3RhdGUgMHgl
+eCwgY29tbWFuZCBmYWlsZWQgcmV0cmllcyAweCV4CgAAAAAAAAAAAAAAAABhcnBfcmVjdjogaXBp
+ZCBbMHgleF0sIGluX2FkZHIuYWRkciBbMHgleF0sIHNpcCBbMHgleF0sIHJpcCBbMHgleF0sIGFy
+cF9vcCBbMHgleF0KAAAAAAAAAAAAAAAAAABjaG5ldF9hcnBfcmVjdjogaXAgY29uZmxpY3QgZGV0
+ZWN0ZWQKAAAAAAAAAAAAAABjaG5ldF9hcnBfcmVjdjogcGlkIFsldV0sIHZsYW4gWzB4JXhdLCBh
+cnAgb3AgWzB4JXhdLCBzaXAgWzB4JXhdLCByaXAgWzB4JXhdCgAAAGNobmV0X2lwdjZfcmVjdjog
+dmxhbiBleHRyYWN0ZWQsIHZsYW5pZCBbJXVdLCBsMmRldl9mYy0+Zmxvd2NfbmV0X2wyZGV2X3Zs
+YW5kZXYgWzB4JXhdCgAAAAAAAAAAAEludmFsaWQgZGF0YSBsZW5ndGggZGxlbiAldSwgcGFja2V0
+IGluZGljYXRlcyAldSBieXRlcwoAAAAAAAAAAABVbmtub3duIElQdjYgbnh0IHByb3RvY29sICV1
+CgAAAGNzb2NrX2ZyZWU6IHNpemVvZihjc2tfZmMtPnUuY3NvY2spIFsldV0sIGJ5dGVzCgAAAAAA
+AAAAAAAAAAAAAABHb3QgQ09OTl9FWElTVCBmb3IgeGlkOjB4JXgsIHRhZzoweCV4LCByZXRyeWlu
+Zy4KAAAAAAAAAAAAAAAAAAAAY3NvY2tfcGVlcl9jbG9zZTogY3NrX2ZjLT5mbG93Y19pZCBbMHgl
+eF0sIHRjYl9mYy0+Zmxvd2NfaWQgWzB4JXhdLCBjc2tfZmMtPmZsb3djX3N0YXRlIFsweCV4XSwg
+dGNiX2ZjLT5mbG93Y19zdGF0ZSBbMHgleF0KAAAAAABjc29ja19wZWVyX2Nsb3NlOiBjc2tfZmMt
+PmZsb3djX2lkIFsweCV4XSwgY3NrX2ZjLT5mbG93Y19zdGF0ZSAgWzB4JXhdCgAAAAAAAAAAAHRj
+cF9jbHNfYWJydF9ycGw6IHRjYiB0aWQgWzB4JTA2eF0sIGZsb3djX3R5cGUgWzB4JXhdLCBjcGxv
+cCBbMHgleF0gCgAAAAAAAAAAAAAAY2hfcmF0ZVsldV06IGNhcHBlZCB0aWNrIGZyb20gcmVxdWly
+ZWQgJXUgdG8gc3VwcG9ydGVkICV1OyByYXRlICV1IChlZmYgJXUpIGRlZmljaXRfaW5jciAldSB0
+aWNrICV1CgAAAAAAAAAAAAAAAHBrdHNjaGVkX2NoX3JsWyV1XTogY2hhbm5lbCBybCBub3QgYXZh
+aWxhYmxlIGluIGNvbmp1bmN0aW9uIHdpdGggZmxvdyBzaGFwaW5nCgAAcGt0c2NoZWRfY2hfcmxb
+JXVdOiByYXRlICV1IG1heCAldQoAAAAAAAAAAAAAAAAAcGt0c2NoZWRfY2xfd3JyWyV1OiV1XTog
+d2VpZ2h0ICV1CgAAAAAAAAAAAAAAAAAAZXFfcGFyYW1zWzB4JXg6MHgleF06IGRtYXEgMHgleCBy
+ZWFkICV1IHBmICV1IGVxaWRfYXBpICV1IHJldCAlZAoAAAAAAAAAAAAAAAAAAAB3YWl0X2Zvcl9j
+YWxpYl9kb25lOiByZXQgJWQgaW4gJXUgYXR0ZW1wdHMKAAAAAABod19tYV9hZGRyX3RvX21lbV90
+eXBlX29mZjogTUEgYWRkcmVzcyAweCUwOHggaXMgbm90IG1hcHBlZAoAAAAAaHdfbWFfYWRkcl90
+b19tZW1fdHlwZV9vZmY6IE1BIGFkZHJlc3MgMHglMDh4IG1hcHMgdG8gdHlwZSAldSBvZmZzZXQg
+MHgleAoAAAAAAABtZW1fbWFsbG9jX3RlbXA6IGZhaWxlZCB0byBhbGxvY2F0ZSAldSBieXRlcywg
+cmV0dXJuaW5nIE5VTEwKAAAAbWVtX21hbGxvYzogZmFpbGVkIHRvIGFsbG9jYXRlICV1IGJ5dGVz
+LCByZXR1cm5pbmcgTlVMTAoAAAAAAAAAAGxlIGNvbmZpZ3VyYXRpb246IGhhc2ggbW9kZSByZXF1
+aXJlcyBhdCBsZWFzdCAxNiBlbnRyaWVzLCBuaGFzaCAldQoAAAAAAAAAAAAAAAAAbGUgY29uZmln
+dXJhdGlvbjogaGFzaCBtb2RlIHJlcXVpcmVzIGF0IGVudHJpZXMgdG8gYmUgYSBwb3dlciBvZiAy
+LCBuaGFzaCAldQoAAABsZSBjb25maWd1cmF0aW9uOiByZXF1ZXN0ZWQgJXUgdGNhbSBlbnRyaWVz
+IGJ1dCBvbmx5ICV1IGF2YWlsYWJsZSAobnJvdXRlICV1IG5jbGlwICV1IG5maWx0ZXIgJXUgbnNl
+cnZlciAldQoAAAAAbGUgY29uZmlndXJhdGlvbjogdGNhbSByZWdpb25zIG11c3QgaGF2ZSBtdWx0
+aXBsZSBvZiAzMiBlbnRyaWVzLCBucm91dGUgJXUgbmNsaXAgJXUgbmZpbHRlciAldSBuc2VydmVy
+ICV1CgAAAAAAAGh3X3RwX3RjcF90dW5pbmdzOiB0dW5pbmcgZm9yIGNsdXN0ZXIgZW52aXJvbm1l
+bnQKAAAAAAAAAAAAAAAAAABod190cF90Y3BfdHVuaW5nczogdHVuaW5nIGZvciBMQU4gZW52aXJv
+bm1lbnQKAABod190cF90Y3BfdHVuaW5nczogdHVuaW5nIGZvciBXQU4gZW52aXJvbm1lbnQKAABo
+d190cF90Y3BfdHVuaW5nczogbWFudWFsIHR1bmluZwoAAAAAAAAAAAAAAAAAAABfaHdfY2ltX2Zs
+YXNoX21lbWNweTogbWVtY3B5WCBzdGFydAoAAAAAAAAAAAAAAABfaHdfY2ltX2ZsYXNoX21lbWNw
+eTogZHN0IDB4JTA4IG9mZnNldCAweCUwOHggc2l6ZSAldSwgd2lkdGggb2YgJXUgaXMgbm90IHN1
+cHBvcnRlZAoAAAAAAAAAAAAAAABfaHdfY2ltX2ZsYXNoX21lbWNweTogbWVtY3B5WCBlbmQKAAAA
+AAAAAAAAAAAAAABjb25maWd1cmF0aW9uIGZpbGUgcGFyc2VyIGVuY291bnRlcmVkIGVycm9yIEAg
+bGluZSAldToKAAAAAAAAAAAASE9TVCBQQUdFX1NJWkUgWzB4JTBseF0gdG9vIHNtYWxsLCBtaW4g
+WzB4JTBseF0gcmVxdWlyZWQKAAAAAAAAAHBhZ2Ugc2l6ZSBbJWx1XSBtaXNtYXRjaAoAAAAAAAAA
+UEFHRSBzaXplICVsdSB1bnN1cHBvcnRlZCwgZGRwIGRpc2FibGVkCgAAAAAAAAAASG9zdCBwYWdl
+X3NpemUgJWx1LCBkZHBfaWR4ICV1CgBGQ29FIEREUCBpbml0OiBmY29lIGxsaW1pdCAweCV4LCBm
+Y29lIHVsaW1pdCAweCV4IGdibCBsbGltaXQgMHgleCBnYmwgdWxpbWl0IDB4JXggcGNic3ogJXgK
+AAAAAABGQ29FIEREUCBpbml0OiBmY29lIHBwb2Qgb2ZmIDB4JXgsIGZjb2Ugc3QgcHBvZCBhZGRy
+IDB4JXggZmNvZSBudW0gcHBvZHMgMHgleAoAAGZjb2UgeGNoZyBtZ3IgaW5pdDogTnVtYmVyIG9m
+IGV4Y2hhbmdlcyBmb3IgRkNvRSBpcyAleAoAAAAAAAAAAABmY29lX2wydF9pbml0OiBObyB1bHB0
+eCBjcmVkaXQgY2g6WyV1XQoAAAAAAAAAAABmY29lX2wydF9pbml0OiBjaDpbJXVdIGwydF9pZHgg
+WyV1XQoAAAAAAAAAAAAAAABubyBsMnQgZW50cmllcyBjb25maWd1cmVkOyBmb3JjaW5nICV1IGVu
+dHJpZXMsIHN0YXJ0aW5nIGF0ICV1CgAAZGNieF9pZWVlX2NvbnN0cnVjdFsldV0gZXRzICV1IHBm
+YyAldSBhcHAgJXUKAAAAZGNieF90aW1lb3V0WyV1XQoAAAAAAAAAAAAAAAAAAABkY2J4X3J1bl92
+ZXJzaW9uX3NtWyV1XSBEQ0JYX1ZFUl9TVEFURV9SVU5fSUVFRQoAAAAAAAAAAAAAAAAAAAAAZGNi
+eF9ydW5fdmVyc2lvbl9zbVsldV0gRENCWF9WRVJfU1RBVEVfUlVOX0NFRQoAZGNieF9ydW5fdmVy
+c2lvbl9zbVsldV0gRENCWF9WRVJfU1RBVEVfUlVOX05PTkUKAAAAAAAAAAAAAAAAAAAAAE1BQyBm
+YWlsZWQgdG8gcmVzeW5jIHR4CgAAAAAAAAAAcG9ydFsldV0gbGluayB1cCAoJXUpIChzcGVlZCAl
+I3ggYWNhcHMgJSN4IGxwY2FwcyAlI3gpCgAAAAAAAAAAAHBvcnRfaHNzX3NpZ2RldFsldV06IGhz
+c19zaWdkZXQgY2hhbmdlZCB0byAweCV4CgAAAAAAAAAAAAAAAAAAAABwb3J0WyV1XSBpbml0aWFs
+aXppbmcgS1IKAAAAAAAAAGRpc2FibGluZyB0eCAlI3ggcnggJSN4CgAAAAAAAAAAQ2FsY3VsYXRp
+b24gb3V0IG9mIGJvdW5kcyBmdXJpbmcgaW5pdDogJSN4ICUjeCAlI3gKAAAAAAAAAAAAAAAAAF9o
+d190cF9wZ21uZ3Q6IHR4X3BhZ2VfbWF4ICV1IHJ4X3BhZ2VfbWF4ICV1IHBzdHJ1Y3RzICV1IHNp
+emUgJXUKAAAAAAAAAAAAAAAAAAAAbXBhcnRpdGlvbl9vdGhlcnNfdG90YWw6IGRkcCAldSBkZHBf
+aXNjc2kgJXUgc3RhZyAldSBwYmwgJXUgcnEgJXUgcnF1ZHAgJXUgLT4gJXUKAAAAAAAAAAAAAAAA
+AAAAX21wYXJ0aXRpb25fYmFua3NfbWNYOiBuYmFua3NfcG10eCAldSAoJXVNQikgbmJhbmtzX3Bt
+cnggJXUgKCV1TUIpIG5iYW5rc19vdGhlcnMgJXUgKCV1TUIpIG5iYW5rc19mdyAldSAoJXVNQikK
+AF9tcGFydGl0aW9uX2JhbmtzX21jMTogbmJhbmtzX3BtdHggJXUgKCV1TUIpIG5iYW5rc19vdGhl
+cnMgJXUgKCV1TUIpIG5iYW5rc19mdyAldSAoJXVNQikKAAAAAAAAAF9tcGFydGl0aW9uX2Jhbmtz
+X21jMDogbmJhbmtzX3BtcnggJXUgKCV1TUIpIG5iYW5rc19vdGhlcnMgJXUgKCV1TUIpCgAAAAAA
+AAAAAAAAbWVtX21hbGxvY19pbnRlcm5hbDogZmFpbGVkIHRvIGFsbG9jYXRlICV1IGJ5dGVzLCBy
+ZXR1cm5pbmcgTlVMTAoAAAAAAAAAAAAAAAAAAABod19lZGNfYmlzdFsldV06IGJpc3RfY21kWzB4
+JTA4eF0gYWRkciAweCV4IGxlbiAweCV4CgAAAAAAAAAAAAAAaHdfZWRjX2Jpc3RbJXVdOiBkb25l
+LCBlbmNvdW50ZXJlZCAldSBlcnJvcnMgb24gZmlyc3QgYW5kICV1IGVycm9ycyBvbiBzZWNvbmQg
+YXR0ZW1wdCAoJXVnYnBzKQoAbWVtX2luaXRfY2FjaGVzOiBjYWNoZV9zaXplICV1IGZsb3djX2J1
+Zl90Y2JfY2FjaGVfc2l6ZSAldSBidWZsbDY0X2NhY2hlX3NpemUgJXUKAAAAAAAAAAAAAAAAAAAA
+bXBhcnRpdGlvbl9wbXR4OiBtIDB4JTA4eCBzaXplICV1CgAAAAAAAAAAAAAAAAAAbXBhcnRpdGlv
+bl9wbXJ4OiBtIDB4JTA4eCBzaXplICV1CgAAAAAAAAAAAAAAAAAAbXBhcnRpdGlvbl9lZGMgKG5v
+IGV4dG1lbSk6IG0gMHglMDh4IHNpemUgJXUKAAAAbXBhcnRpdGlvbl9lZGNfZXN0aW1hdGU6IGh3
+IG1vZHVsZXMgcmVxdWlyZSAlZCBieXRlcyBpbiBFREMKAAAAAFRlbXBlcmF0dXJlL1ZvbHRhZ2Ug
+U2Vuc29yOiBDb3JlIGNsb2NrICVkID4gNTAwOyB1c2luZyA1MDAgdG8gc3RheSBpbiBjb21wbGlh
+bmNlIHdpdGggaGFyZHdhcmUuCgAAAAAAAAAAAAAAAAAAAABjaG5ldF9ieWU6bDJkZXZfZmMtPmZs
+b3djX2lkIFsweCV4XSwgbDJkZXZfZmMtPmZsb3djX3BjaWVfcGZuIFsweCV4XSwgbDJkZXZfZmMt
+PmZsb3djX3BjaWVfdmZuIFsweCV4XSwgcG9ydCBbMHgleF0KAAAAAAAAAAAAAAAAAGNobmV0X2J5
+ZTp2bGFuZGV2X2ZjLT5mbG93Y19pZCBbMHgleF0sIHZsYW5kZXZfZmMtPmZsb3djX3BjaWVfcGZu
+IFsweCV4XSwgdmxhbmRldl9mYy0+Zmxvd2NfcGNpZV92Zm4gWzB4JXhdLCBwb3J0IFsweCV4XQoA
+AAAAAAAAaHdfbWFjX2FlY19jb21wbGV0ZVsldV0gb24gbGFuZXMgJSN4IChzaWdkZXQgJSN4KQoA
+AAAAAAAAAAAAAAAAAGFlY19mc21bJXVdIDogc3RhdGUgU1RBUlQgKHNpZ2RldCAlI3gpCgAAAAAA
+AAAAAGFlY19mc21bJXVdIDogdHJhbnNpdGlvbmluZyB0byBUUkFJTklORwoAAAAAAAAAAGFlY19m
+c21bJXVdIDogVFJBSU5JTkdfQ09NUExFVEUKAAAAAAAAAAAAAAAAAAAAAGFlY19mc21bJXVdIDog
+RE9ORQoAAAAAAAAAAAAAAAAAYWVjX2ZzbVsldV0gOiB0aW1lZCBvdXQgdHJhaW5pbmcKAAAAAAAA
+AAAAAAAAAAAAYmVhbl9mc21bJXVdIDogc3RhdGUgU1RBUlQgKGNvdW50ID0gJXUpCgAAAAAAAAAA
+YmVhbl9mc21bJXVdIDogZW50ZXJpbmcgc3RhdGUgV0FJVF9TSUdERVQKAAAAAAAAYmVhbl9mc21b
+JXVdIDogZW50ZXJpbmcgc3RhdGUgTlhQX0hBTkRMRQoAAAAAAAAAYmVhbl9mc21bJXVdIDogZW50
+ZXJpbmcgc3RhdGUgV0FJVF9DT01QTEVURQoAAAAAYmVhbl9mc21bJXVdIDogREwgNDBHIE5lZ290
+aWF0aW9uIEVycm9yIC0gQXR0ZW1wdGluZyB0byBjb250aW51ZQoAAAAAAAAAAAAAAAAAAABiZWFu
+X2ZzbVsldV0gOiBzdGF0ZSBET05FCgAAAAAAAGJlYW5fZnNtWyV1XSA6IHN0YXRlIFJFU1RBUlQK
+AAAAYmVhbl9mc21bJXVdIFRJTUVPVVQ7IHN0YXRlICV1IGV0aF9zdGF0dXMgJSN4IGJlYW5fc3Rh
+dHVzICUjeCBoc3Mgc2lnZGV0ICUjeCByZXRyeV9jbnQgJXUKAAAAAAAAcG9ydCAldSBuZWdvdGlh
+dGVkIHVuc3VwcG9ydGVkIHNwZWVkICUjeAoAAAAAAAAAYmVhbi9hZWMgY29tcGxldGUgKHJldHJ5
+OiAldSkKAABwb3J0WyV1XSByZXNldHRpbmcgS1IKAAAAAAAAAAAAAFJhbmdlIGNhbGM6IEF2ZXJh
+Z2VkICUjeCBidXQgaWdub3JlZCB2YWx1ZSAlI3ggKGl0ZXJhdGlvbiAldSkKAABNQyBjYWxpYnJh
+dGlvbiBmYWlsZWQ6IERGSSBpbml0IG5vdCBnb2luZyB0byAwCgBNQyBjYWxpYnJhdGlvbiBmYWls
+ZWQ6IERGSSBpbml0IG5vdCBjb21wbGV0aW5nCgBNQyBjYWxpYnJhdGlvbiBmYWlsZWQ6IENhbGli
+cmF0aW9uIGRpZG4ndCBjb21wbGV0ZS4KAAAAAAAAAAAAAAAATUMgY29tbWFuZCBmYWlsZWQgdG8g
+Y29tcGxldGUob3Bjb2RlICUjeCBjYWRkciAlI3ggYmFkZHIgJSN4IGRlbGF5ICVkKQoAAAAAAAAA
+AABwZm5fYml0bWFwIDB4JXgKAAAAAAAAAAAAAAAAAAAAAGJhZCBtYWlsYm94IGNtZDogcGZuIDB4
+JXggdmZuIDB4JXg7IG9wY29kZSAweCV4ID4gTEFTVEMyRSAweCV4CgBtYWlsYm94IGNtZCBub3Qg
+eWV0IHN1cHBvcnRlZDogcGZuIDB4JXggdmZuIDB4JXg7IG9wY29kZSAweCV4CgAAYmFkIG1haWxi
+b3ggY21kOiBwZm4gMHgleCB2Zm4gMHgleDsgb3Bjb2RlIDB4JXggaXMgdmFsaWQgcG9zdCBkZXZp
+Y2UgaW5pdCBvbmx5CgBiYWQgbWFpbGJveCBjbWQ6IHBmbiAweCV4IHZmbiAweCV4OyBvcGNvZGUg
+MHglMDJ4IHJhbWFzayAweCV4IGNtZCByYW1hc2sgMHgleAoAAGJhZCBtYWlsYm94IGNtZDogcGZu
+IDB4JXggdmZuIDB4JXg7IG9wY29kZSAweCUwMnggbGVuMTYgMHgleCB2ZXJzdXMgZXhwZWN0ZWQg
+bGVuMTYgMHgleAoAAAAAAAAAAGluc3VmZmljaWVudCBjYXBzIHRvIHByb2Nlc3MgbWFpbGJveCBj
+bWQ6IHBmbiAweCV4IHZmbiAweCV4OyByX2NhcHMgMHgleCB3eF9jYXBzIDB4JXggcmVxdWlyZWQg
+cl9jYXBzIDB4JXggd19jYXBzIDB4JXgKAAAAAAAAAAAAaW5zdWZmaWNpZW50IGNhcHMgdG8gcHJv
+Y2VzcyBtYWlsYm94IGNtZDogcGZuIDB4JXggdmZuIDB4JXg7IHJfY2FwcyAweCV4IHd4X2NhcHMg
+MHgleCByZXF1aXJlZCByX2NhcHMgMHgleCB3X2NhcHMgMHgleAoAAAAAAAAAAABkb3dubG9hZF9z
+cmFtOiBlcnJvciwgcmV0ICVkCgAAAGRvd25sb2FkX3RjYW06IGVycm9yLCByZXQgJWQKAAAAaHdf
+cG93ZXJfcHJlcDogVkREPU5PTkUgYnV0IFZDUz0lZAoAAAAAAAAAAAAAAAAAaHdfcG93ZXJfcHJl
+cDogdW5zdXBwb3J0ZWQgZXh0ZXJuYWwgYWRqdXN0YWJsZSBwb3dlciByZWd1bGF0b3JzIFZERD0l
+ZCwgVkNTPSVkCgBod19wb3dlcl9wcmVwOiB1bnN1cHBvcnRlZCBWREQ9JWQKAAAAAAAAAAAAAAAA
+AABod19wb3dlcl9wcmVwOiB1bnN1cHBvcnRlZCBWQ1M9JWQKAAAAAAAAAAAAAAAAAABod19wb3dl
+cl9wcmVwOiBpMmMgd3JpdGUgZXJyb3IsIFZERD0lZCxyZXQ9JWQKAABod19wb3dlcl9wcmVwOiB1
+bnN1cHBvcnRlZCBWREQ9JWQKAAAAAAAAAAAAAAAAAABod19wb3dlcl9wcmVwOiBpMmMgd3JpdGUg
+ZXJyb3IsIFZDUz0lZCxyZXQ9JWQKAABod19wb3dlcl9wcmVwOiB1bnN1cHBvcnRlZCBWQ1M9JWQK
+AAAAAAAAAAAAAAAAAABWUEQgcmVnaW9uIGlzIHRvbyBzbWFsbCAoU0VSQ0ZHX1NSX1BGTlZQRFNJ
+WkUgMHgleCkKAAAAAAAAAAAAAAAAY2ZfcHJlcDogZXJyb3IsIHJldCAlZAoAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAACCAAABIAAAAAAAAACCAAABAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAGgIAAAAAAAAAAAAAAAACAAAAAAAAAAAAHAAAAAAAAAAAAAAABAAAAABAAAAAAAAAA
+AwAAAAAAAAAAAAAAAwAAAAAAAAAAAIAQAwAAAAAAAAgAAAAAAgAAAAAAAAAAACAAAAAAAAAAAAAA
+AAEAA4AAAAAAAAAAAAAAAgAAAAAAAAAAACADgAAAAAAAAAAAABACgACAAAAAAAAAAIAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAACAAAAAAAAAAAAAAAIAAAoAAAAAAAAAAAAAAAoAA
+AAAAAAAAAIAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAoAAAAAAAAAAAAEAAwAAAAAAAAAAAAAC
+gwAAAAAAAAAAABACgAAAAAAAAAAAADAAAwAAAAAAAAgAADAAAwAAAAAAAAAAADAFgwAAAAAAAAgA
+ADAFgwAAAAAAAAAAADAEgwAAAAAAAAgAADAEgwAAAAAAAAAAADADAwAAAAAAAAgAADADAwAAAAAA
+AAAAADgDAwAAAAAAAAAAADgFgwAAAAAAAAAAADgEgwAAAAAAAAAAADgAAwAAAAAAAAAAADQGggAA
+AAAAAAAAADwDggAAAAAAAAAAADwAAwAAAAAAAAgAADwAAwAAAAAAAAAAADwEgwAAAAAAAAAAADwF
+AwAAAAAAAAAAAD0EAwAAAAAAAAAAADwDgwAAAAAAAAAAACwAAgAAAAAAAAAAACwFggAAAAAAAAAA
+ACwFAgAAAAAAAAAAABAGgAAAAAAAAAAAABAGgoAAAAAAAAAAAAAOggAAAAAAAAAAABAHgoAAAAAg
+AAAAAAAHggAAAAAgAAAAABAHAoAAAAAAAAAAABAHAoAAAAAAAAAAABAHAoAAAAAAAAAAAAAHAgAA
+AAAgAAAAABAXgwAAAAAAAAgAABAXgwAAAAAAAAgAABAAAAAAAAAAAAAAABAGA4AAAAAAAAAAAAAO
+AwAAAAAAAAAAABAGA0AAAAAAAAAAABAGAwAAAAAAAAAAABAGAAAAAAAAAAAAAAAGA4AAAAAAAAAA
+AAAGAwAAAAAAAAAAAAAOAgAAAAAAAAAAAAAOAgAAAAAAAAAAABAGAgAAAAAAAAAAABAGAgAAAAAA
+AAAAABAGAoAAAAAAAAAAABAGAoAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAIAAAAAAAAAAAAQAwAAAAAAAAgAAAAAAAAAAAAAAAAAAP//////////////////
+////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////
+/wAAACAAAAAAwAAAAAAAACAAAAAA4AAAAAAAAAACAAAAAAAAAEAAAAAAAAAAAAAAAAAAASEAAAAA
+AAAAAAABASAAAAAAAAAAAAAAAgAAAAQABAAAAAAAgUAAAAAAAAAAAAAGgAAABAAAAAAAAACAAEAA
+AAAAAAIAAACAACAAAAAAAAIAAAiAAAAAAABAAAAAAgEAQAAAAAAAAAAAAAEAQgAAAAAAAAAAAAAA
+IAAAAAAAAAAAAAIQIAAAAAAAAAAAAAIMAgAAAAAAAAAAAACFAgAAAAQAAAAAAACAQgAAAAAAAAAA
+AICAQgBAAAAAAAAAAICAQgAAAAAAAAAAAAIAIgAAAAAAAAAAAACAQQAAAAAAAAAAAICAQQAAAAAA
+AAAAAACAQYAAAAAAAAAAAICAQYAAAAAAAAAAAAIAIQAAAAAAAAAAAAAQIIAAAAAAAAAAAAIlAIAA
+AAAAAAAAAAAFAAAAAAAAAAAAAAiIBIAAAAAAAAAAAAiIBIAAAAAAAAAAAAiiAIAAAAAAAAAAAAii
+AIAAAAAAAAAAAAijAIAAAAAAAAAAAAijAIAAAAAAAAAAAAikgIAAAAAAAAAAAAikgIAAAAAAAAAA
+AASkgMAAAAAAAAAAAASiAMAAAAAAAAAAAASjAMAAAAAAAAAAAASIBMAAAAAAAAAAAAAJAYAAAAAA
+AAAAAAIMAIAAAAAAAAAAAACIBMAAAAAAAAAAAACIBIAAAAAAAAAAAAILAIAAAAAAAAAAAACKgIAA
+AAAAAAAAAAALgIAAAAAAAAAAAACMAIAAAAAAAAAAAAIgEIAAAAAAAAAAAAIKAIAAAAAAAAAAAAIK
+gIAAAAAAAAAAAAAJAoAAAAAAAAAAAAABAQAAAAAAAAAAAAABAIAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAIAAAAAAAAAAAAAAgRAAAAAAAAAAAAAAgQgAAAAAAAAAAAAAgQQAAAAAAAAAAAAAgYAAAAAA
+AAAAAACAAMAAAAAAAAAAAACAAKAAAAAAAAAAAAAACAAAAAAAAAAAAACBgAAAAAAAAAAAAACBgIAA
+AAAAAAAAAACJgIAAAAAAAAAAAACJgMAAAAAAAAAAAAABggAAAAAAAAAAAAIBgAAAAAAAAAAAAAIB
+gIAAAAAAAAAAAABBgYAAAAAAAAAAAAIBgYAAAAAAAAAAAABJgYAAAAAAAAAAAAIJgYAAAAAAAAAA
+AAIBgQAAAAAAAAAAAABBgQAAAAAAAAAAACAAAAAAAAAAAAAAABAAAAIBAAAAAAAAABAAAAIAAAAA
+AAAAABAAAAAAAAAAAAAAAACAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////////////////
+////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////wAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAACACSAAAAAAAAAANmACAAQAAAAAAIAJIAAAAAAAAAA3IBJQRA
+AAAAAAAAAAAAAAAAAAADlgAgAEAAAAAACAAAAAIAiAOHAABWACAAQAAAAAAAAAAAAAAAAAAAA5YA
+IABAAAAAAAAAAAAAAAAAAAADlgAgAEAAAAAAAAAAAAAAAAAAAAOWACAAQAAAAAAAAAAAAAAAAAAA
+A5YAIABAAAAAAAAAAAAAAAAAAAADlgAgAEAAAAAAAAAAAAAAAAAAAAOWACAAQAAAAAAAAAAAAAAA
+AAAAA5YAIABAAAAAAAgAAAACAIgDhQAAlgEgAEAAAAAACAAAAAIAiAOFAACWASAAQAAAAAAAAAAA
+AAAAAAAAA5YAIABAAAAAAAAAAAAAAAAAAAADlgAgAEAAAAAACAAAAAIAiAOFAACWASAAQAAAAAAA
+AAAAAAAAAAAAA5YAIABAAAAAAAAAAAAAAAAAAgADlgAmBEAAAAAACEcgAQQAAAKwAALSBUAkRAAA
+AAAIRyABBAAAArIAAtIFRiRAAAAAAAgAAAACAIgDhwAAlgEmBEAAAAAAAAAAAAAAAAAAAAOWACAA
+QAAAAAAARyABBgyhgrJAAZIEQCREAAAAAAgAAAACAIgDhwAAlgEmBEAAAAAAAEcgAQQMoEKxgAIS
+BUAkRAAAAAAIAAAAAgCIA4cAAJYBJgRAAAAAAAgAAAACAIgDhQAAlgEgAEAAAAAACAAAAAIAiAOF
+AACWASAAQAAAAAAIAAAAAgCIA4UAAJYBIABAAAAAAAAAAAAAAAAAAAADlgAgAEAAAAAADcUSugKw
+gNMUVIviSkYkQAAAAAAFxRK6AreA0xRUi2JJpiRAAAAAAAXFEqIGsIDTFFSL4kpGJEAAAAAADcUS
+oga3gNMUVItiSaYkQAAAAAAFxRKiBrCA0xRUi+JKRiRAAAAAAA3FEqIGt4DTFFSLYkmmJEAAAAAA
+BcUSogawgNMUVIviSkYkQAAAAAANxRKiBreA0xRUi2JJpiRAAAAAAAnEEKACAICQAACLYmnGJEAA
+AAAAAcQQoAawgJMGVItiacYkQAAAAAABxBCgBrCAkwZUi2JpxiRAAAAAAAHFELgGsICTFlSLYkjG
+JEAAAAAACKEQiAIAgVgSAAtSAKYkQAAAAAAJwBCQArCAAxZUipIBxiRAAAAAAAnAELgGsIADEJSL
+4gJGJEAAAAAACcAQuAK0gAMQlItiAaYkQAAAAAAJwBC4ArSAAxCUi2IBpiRAAAAAAAnAELgCtIAD
+EJSLYgGmJEAAAAAACcAQuAK0gAMQlItiAaYkQAAAAAABoBCQBrSAAxCUi2IBpiRAAAAAAAHAEIAC
+sIADFFSKUgDGJEAAAAAAAcAQgAKwgAMUVIpSAMYkQAAAAAABwBCAArCAAxRUilIAxiRAAAAAAAhH
+IAEEAAACsAAC0gRAJEAAAAAAAIEAAAIAhVgHQAtSAKYkQAAAAAAAAAAABACgQAGAAdYAIABAAAAA
+AAAAAAAGAKGAAEABVgAgAEAAAAAAAAAAAAQAoEABgAHWACAAQAAAAAAIgQAAAgCFWYAEC1IApiRA
+AAAAAAoBQAAAAAAYAgADQgEmpEIAAAAAAAAAAAAAAAAAAAOWACAAQAAAAAAAAAAABACgQAGAAdYA
+IABAAAAAAAgAAAACAIgDhQAD1gAgAEAAAAAACAAAAAIAiAOFAAPWACAAQAAAAAAAAAAAAAAAAAAA
+A5YAIABAAAAAAAAAAAAAAAAAAAADlgAgAEAAAAAAAAAAAAQAoEABgAHWACAAQAAAAAAJwBC4ArSA
+AxCUi2IBpiRAAAAAAAAAAAAAAAAAAgADlgAmBEAAAAAAAAAAAAAAAAAAAAOWACAAQAAAAAAIAAAA
+AgCIA4UAAJYBIABAAAAAAAAAAAAEAKBAAYAB1gAgAEAAAAAAAAAAAAQAoEABgAHWACAAQAAAAAAA
+AAAABACgQAGAAdYAIABAAAAAAAihEIgCAIFYEAAJEgGmJEAAAAAAAAAAAAQAoEABgAHWACAAQAAA
+AAAAAAAABgChgABAAVYAIABAAAAAAAgAAAACAIgDh0AI0gJGJEIAAAAACcUSogKUiNISgIsiScYk
+QAAAAAABwBCABqSIAQVUi1IAxiRAAAAAAAnAEIACpIgAhVSLUgDGJEAAAAAACcAQgAa0iAMBFItS
+AaYkQAAAAAANwAAAArCAwxZUi+IDRiRAAAAAAAAAAAAAAAAAAAADlgAgAEAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAgAMAAEAAAAAgAAAgAmJEAAAAAAAEcwAAYDIAK3AAgCAcAkQAAAAAAI
+AwAAAgagCrcACAIBxiRGAAAAAAAAAAAAAAAAAgAAAgAmJEAAAAAAACBQAAQAAAAAAAACASYkRgAA
+AAAIYCAAhAAAAAAAAAYAIABAAAAAAAhgIACEAAAAAgEwAgAmJUAAAAAACGAAAAQAhAGCBAQCAcYk
+wgAAAAABwAAAAkOAAwIMiAIBpiRAAAAAAAgAYAAEAAAAAgAAAgAmJEAAAAAACABgAAQAAAAAAAAE
+ASAAQAAAAAAAAAAAAAAAAAAAAAQBIABAAAAAAAQIFIAGCgAABwFMAiCmJkAAAAAACIAAAAYAhAGA
+BAgCAaYkwAAAAAAAQAAAAgCgAABACAIApiRGAAAAAAAAAAAAAAAAAgAAAgAmJEAAAAAABAAAAAKE
+AAMCiggCBMAkQAAAAAAAAAAAAAAAAAIAAAYBIEhAAAAAAAAgUAAEAAAAAgAAAgAmJEAAAAAACGAg
+AIQAAAACAAAGACYEQAAAAAAIYCAAhAAAAAIAAAIBJiVAAAAAAAhgAAAEAIQBgAQEAgHGJMAAAAAA
+CABgAAQAAAAAAAAEASAAQAAAAAAAAIAAIAAAAAAAAAIAJkxwAAAAAAAAgAAgAAAAAAAABgEgAAAA
+AAAAAACAACAAAAAAAAACACZMcAAAAAAAAIAAIAAAAAAAAAYBIAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJwAAACLSMBAkWBAIExiRAAAAAAAnAAAAMNIAE
+CRYEAgTGJEAAAAAABAh0gEwJAABQAFwCYeYkQAAAAAAMCHSARAAAAFIAQAJhJiRAAAAAAAgCEKAE
+AAAAAAEAAgAmJEAAAAAACAIQoAQAAAAAAQACACYkQAAAAAAECHQAQgEAAAcAiAJgxiRAAAAAAA3I
+FAACCQAABECcAmDmJEAAAAAACcgQgAK0gAQClIgCZcYkQAAAAAANyHQATLSAAwCUiAJgpiTAAAAA
+AAXIdABINJADAJSIAmCmJMAAAAAACEcAAAQAAAAAAAACASAkQAAAAAAIRwAABAAAAAAAAAIEQCRA
+AAAAAABHIAEMByHCtwAIAgDAJEQAAAAAAEcgAQwHIcK3AAgCAMAkRAAAAAAARyABDAchwrcACAIA
+wCREAAAAAAAAIAEIAIQABUCIAgHGJMAAAAAAAAAgAQgAhAAFQIgCAcYkwAAAAAAAACABCACEAAVA
+iAIBxiTAAAAAAAAAIAGGggABAsCIAgPGJMAAAAAAAAAgAYKCAAACwIgCA8YkwAAAAAAJwCABgqSA
+AQVAiAIBxiTAAAAAAAgAAAAMAIQABUCIAgHGJMAAAAAAAAAgAYaCAAECwIgCA8YkwAAAAAAAACAB
+goIAAADAiAICpiTAAAAAAAnAIAGCpIABBUCIAgHGJMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAIAAAABAAEECQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFtnbG9iYWxdCnJz
+c19nbGJfY29uZmlnX21vZGU9YmFzaWN2aXJ0dWFsCnJzc19nbGJfY29uZmlnX29wdGlvbnM9dG5s
+bWFwZW4saGFzaHRvZXBsaXR6LHRubGFsbGxrcApwbF90aW1lb3V0X3ZhbHVlPTEwMDAwCnJlZ1sw
+eDEwMDhdPTB4NDA4MTAvMHgyMWM3MApyZWdbMHgxMDBjXT0weDIyMjIyMjIyCnJlZ1sweDEwYTBd
+PTB4MDEwNDA4MTAKcmVnWzB4MTA0NF09NDA5NgpyZWdbMHgxMDQ4XT02NTUzNgpyZWdbMHgxMDRj
+XT0xNTM2CnJlZ1sweDEwNTBdPTkwMjQKcmVnWzB4MTA1NF09OTIxNgpyZWdbMHgxMDU4XT0yMDQ4
+CnJlZ1sweDEwNWNdPTEyOApyZWdbMHgxMDYwXT04MTkyCnJlZ1sweDEwNjRdPTE2Mzg0CnJlZ1sw
+eDEwYTRdPTB4YTAwMGEwMDAvMHhmMDAwZjAwMApyZWdbMHgxMGE4XT0weDQwMjAwMC8weDQwMjAw
+MApiYXIydGhyb3R0bGVjb3VudD01MDAKc2dlX3RpbWVyX3ZhbHVlPTUsMTAsMjAsNTAsMTAwLDIw
+MApyZWdbMHgxMTI0XT0weDAwMDAwNDAwLzB4MDAwMDA0MDAKcmVnWzB4MTEzMF09MHgwMGQ1ZmZl
+YgpyZWdbMHgxMTNjXT0weDAwMDJmZmMwCnJlZ1sweDdkMDRdPTB4MDAwMTAwMDAvMHgwMDAxMDAw
+MApyZWdbMHg3ZDZjXT0weDAwMDAwMDAwLzB4MDAwMDcwMDAKcmVnWzB4N2Q3OF09MHgwMDAwMDQw
+MC8weDAwMDAwMDAwCnJlZ1sweDdkYzBdPTB4MGUyZjg4NDkKZmlsdGVyTW9kZT1mY29lbWFzayxz
+cnZyc3JhbSxmcmFnbWVudGF0aW9uLG1wc2hpdHR5cGUscHJvdG9jb2wsdmxhbixwb3J0LGZjb2UK
+ZmlsdGVyTWFzaz1wcm90b2NvbCxmY29lCnRwX3Btcng9MzAKdHBfcG1yeF9wYWdlc2l6ZT02NEsK
+dHBfbnJ4Y2g9MAp0cF9wbXR4PTUwCnRwX3BtdHhfcGFnZXNpemU9NjRLCnRwX250eGNoPTAKdHBf
+bXR1cz04OCwyNTYsNTEyLDU3Niw4MDgsMTAyNCwxMjgwLDE0ODgsMTUwMCwyMDAyLDIwNDgsNDA5
+Niw0MzUyLDgxOTIsOTAwMCw5NjAwCnJlZ1sweDdkMDhdPTB4MDAwMDA4MDAvMHgwMDAwMDgwMApy
+ZWdbMHg3ZDQ4XT0weDAwMDAwMDAwLzB4MDAwMDA0MDAKcmVnWzB4N2Q2MF09MHgwNjAwMDAwMC8w
+eDA3MDAwMDAwCnJlZ1sweDE5MTY4XT0weDA0MDIwMTAwCnJlZ1sweDE5YzA0XT0weDAwNDAwMDAw
+LzB4MDA0MDAwMDAKbWNfbW9kZV9icmNbMF09MQptY19tb2RlX2JyY1sxXT0xCnJlZ1sweDhkYzBd
+PTB4MDAwMDAwMDQvMHgwMDAwMDAwNApbZnVuY3Rpb24iMCJdCm52Zj0xNgp3eF9jYXBzPWFsbApy
+X2NhcHM9YWxsCm52aT0xCm5pcWZsaW50PTgKbmV0aGN0cmw9OApuZXE9MTYKbmV4YWN0Zj04CmNt
+YXNrPWFsbApwbWFzaz0weDEKW2Z1bmN0aW9uIjEiXQpudmY9MTYKd3hfY2Fwcz1hbGwKcl9jYXBz
+PWFsbApudmk9MQpuaXFmbGludD04Cm5ldGhjdHJsPTgKbmVxPTE2Cm5leGFjdGY9OApjbWFzaz1h
+bGwKcG1hc2s9MHgyCltmdW5jdGlvbiIyIl0KbnZmPTE2Cnd4X2NhcHM9YWxsCnJfY2Fwcz1hbGwK
+bnZpPTEKbmlxZmxpbnQ9OApuZXRoY3RybD04Cm5lcT0xNgpuZXhhY3RmPTgKY21hc2s9YWxsCnBt
+YXNrPTB4NApbZnVuY3Rpb24iMyJdCm52Zj0xNgp3eF9jYXBzPWFsbApyX2NhcHM9YWxsCm52aT0x
+Cm5pcWZsaW50PTgKbmV0aGN0cmw9OApuZXE9MTYKbmV4YWN0Zj04CmNtYXNrPWFsbApwbWFzaz0w
+eDgKW2Z1bmN0aW9uIjQiXQp3eF9jYXBzPWFsbApyX2NhcHM9YWxsCm52aT0yOApuaXFmbGludD0x
+NzAKbmV0aGN0cmw9MTAwCm5lcT0yNTYKbnFwY3E9MTIyODgKbmV4YWN0Zj00MApjbWFzaz1hbGwK
+cG1hc2s9YWxsCm5ldGhvZmxkPTEwMjQKbnJvdXRlPTMyCm5jbGlwPTMyCm5maWx0ZXI9NDk2Cm5z
+ZXJ2ZXI9NDk2Cm5oYXNoPTEyMjg4CnByb3RvY29sPW5pY192bSxvZmxkLHJkZHAscmRtYWMsaXNj
+c2lfaW5pdGlhdG9yX3BkdSxpc2NzaV90YXJnZXRfcGR1LGlzY3NpX3QxMGRpZgp0cF9sMnQ9MzA3
+Mgp0cF9kZHA9Mgp0cF9kZHBfaXNjc2k9Mgp0cF9zdGFnPTIKdHBfcGJsPTUKdHBfcnE9NwpbZnVu
+Y3Rpb24iNSJdCnd4X2NhcHM9YWxsCnJfY2Fwcz1hbGwKbnZpPTQKbmlxZmxpbnQ9MzQKbmV0aGN0
+cmw9MzIKbmVxPTY0Cm5leGFjdGY9MTYKY21hc2s9YWxsCnBtYXNrPWFsbApuc2VydmVyPTE2Cm5o
+YXNoPTIwNDgKdHBfbDJ0PTEwMjAKcHJvdG9jb2w9aXNjc2lfaW5pdGlhdG9yX2ZvZmxkCnRwX2Rk
+cF9pc2NzaT0yCmlzY3NpX250YXNrPTIwNDgKaXNjc2lfbnNlc3M9MjA0OAppc2NzaV9uY29ubl9w
+ZXJfc2Vzc2lvbj0xCmlzY3NpX25pbml0aWF0b3JfaW5zdGFuY2U9NjQKW2Z1bmN0aW9uIjYiXQp3
+eF9jYXBzPWFsbApyX2NhcHM9YWxsCm52aT00Cm5pcWZsaW50PTM0Cm5ldGhjdHJsPTMyCm5lcT02
+NgpuZXhhY3RmPTMyCmNtYXNrPWFsbApwbWFzaz1hbGwKbmhhc2g9MjA0OAp0cF9sMnQ9NApwcm90
+b2NvbD1mY29lX2luaXRpYXRvcgp0cF9kZHA9MgpmY29lX25mY2Y9MTYKZmNvZV9udm5wPTMyCmZj
+b2VfbnNzbj0xMDI0CltmdW5jdGlvbiIxMDIzIl0Kd3hfY2Fwcz1hbGwKcl9jYXBzPWFsbApudmk9
+NApjbWFzaz1hbGwKcG1hc2s9YWxsCm5leGFjdGY9OApuZmlsdGVyPTE2CltmdW5jdGlvbiIwLyoi
+XQp3eF9jYXBzPTB4ODIKcl9jYXBzPTB4ODYKbnZpPTEKbmlxZmxpbnQ9NApuZXRoY3RybD0yCm5l
+cT00Cm5leGFjdGY9NApjbWFzaz1hbGwKcG1hc2s9MHgxCltmdW5jdGlvbiIxLyoiXQp3eF9jYXBz
+PTB4ODIKcl9jYXBzPTB4ODYKbnZpPTEKbmlxZmxpbnQ9NApuZXRoY3RybD0yCm5lcT00Cm5leGFj
+dGY9NApjbWFzaz1hbGwKcG1hc2s9MHgyCltmdW5jdGlvbiIyLyoiXQp3eF9jYXBzPTB4ODIKcl9j
+YXBzPTB4ODYKbnZpPTEKbmlxZmxpbnQ9NApuZXRoY3RybD0yCm5lcT00Cm5leGFjdGY9NApjbWFz
+az1hbGwKcG1hc2s9MHg0CltmdW5jdGlvbiIzLyoiXQp3eF9jYXBzPTB4ODIKcl9jYXBzPTB4ODYK
+bnZpPTEKbmlxZmxpbnQ9NApuZXRoY3RybD0yCm5lcT00Cm5leGFjdGY9NApjbWFzaz1hbGwKcG1h
+c2s9MHg4Cltwb3J0IjAiXQpkY2I9cHBwLGRjYngKYmdfbWVtPTI1CmxwYmtfbWVtPTI1Cmh3bT0z
+MApsd209MTUKZHdtPTMwCmRjYl9hcHBfdGx2WzBdPTB4ODkwNixldGhlcnR5cGUsMwpkY2JfYXBw
+X3RsdlsxXT0weDg5MTQsZXRoZXJ0eXBlLDMKZGNiX2FwcF90bHZbMl09MzI2MCxzb2NrZXRudW0s
+NQpbcG9ydCIxIl0KZGNiPXBwcCxkY2J4CmJnX21lbT0yNQpscGJrX21lbT0yNQpod209MzAKbHdt
+PTE1CmR3bT0zMApkY2JfYXBwX3RsdlswXT0weDg5MDYsZXRoZXJ0eXBlLDMKZGNiX2FwcF90bHZb
+MV09MHg4OTE0LGV0aGVydHlwZSwzCmRjYl9hcHBfdGx2WzJdPTMyNjAsc29ja2V0bnVtLDUKW3Bv
+cnQiMiJdCmRjYj1wcHAsZGNieApiZ19tZW09MjUKbHBia19tZW09MjUKaHdtPTMwCmx3bT0xNQpk
+d209MzAKZGNiX2FwcF90bHZbMF09MHg4OTA2LGV0aGVydHlwZSwzCmRjYl9hcHBfdGx2WzFdPTB4
+ODkxNCxldGhlcnR5cGUsMwpkY2JfYXBwX3RsdlsyXT0zMjYwLHNvY2tldG51bSw1Cltwb3J0IjMi
+XQpkY2I9cHBwLGRjYngKYmdfbWVtPTI1CmxwYmtfbWVtPTI1Cmh3bT0zMApsd209MTUKZHdtPTMw
+CmRjYl9hcHBfdGx2WzBdPTB4ODkwNixldGhlcnR5cGUsMwpkY2JfYXBwX3RsdlsxXT0weDg5MTQs
+ZXRoZXJ0eXBlLDMKZGNiX2FwcF90bHZbMl09MzI2MCxzb2NrZXRudW0sNQpbZmluaV0KdmVyc2lv
+bj0weDE0MjUwMDFjCmNoZWNrc3VtPTB4ZjkxMTVkNzYKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFtnbG9iYWxdCnJzc19nbGJfY29u
+ZmlnX21vZGU9YmFzaWN2aXJ0dWFsCnJzc19nbGJfY29uZmlnX29wdGlvbnM9dG5sbWFwZW4saGFz
+aHRvZXBsaXR6LHRubGFsbGxrcApwbF90aW1lb3V0X3ZhbHVlPTEwMDAwCnJlZ1sweDEwMDhdPTB4
+NDA4MTAvMHgyMWM3MApyZWdbMHgxMDBjXT0weDIyMjIyMjIyCnJlZ1sweDEwYTBdPTB4MDEwNDA4
+MTAKcmVnWzB4MTA0NF09NDA5NgpyZWdbMHgxMDQ4XT02NTUzNgpyZWdbMHgxMDRjXT0xNTM2CnJl
+Z1sweDEwNTBdPTkwMjQKcmVnWzB4MTA1NF09OTIxNgpyZWdbMHgxMDU4XT0yMDQ4CnJlZ1sweDEw
+NWNdPTEyOApyZWdbMHgxMDYwXT04MTkyCnJlZ1sweDEwNjRdPTE2Mzg0CnJlZ1sweDEwYTRdPTB4
+YTAwMGEwMDAvMHhmMDAwZjAwMApyZWdbMHgxMGE4XT0weDQwMjAwMC8weDQwMjAwMApiYXIydGhy
+b3R0bGVjb3VudD01MDAKc2dlX3RpbWVyX3ZhbHVlPTUsMTAsMjAsNTAsMTAwLDIwMApyZWdbMHgx
+MTI0XT0weDAwMDAwNDAwLzB4MDAwMDA0MDAKcmVnWzB4MTEzMF09MHgwMGQ1ZmZlYgpyZWdbMHgx
+MTNjXT0weDAwMDJmZmMwCnJlZ1sweDdkMDRdPTB4MDAwMTAwMDAvMHgwMDAxMDAwMApyZWdbMHg3
+ZDZjXT0weDAwMDAwMDAwLzB4MDAwMDcwMDAKcmVnWzB4N2RjMF09MHgwZTJmODg0OQpmaWx0ZXJN
+b2RlPWZjb2VtYXNrLHNydnJzcmFtLGZyYWdtZW50YXRpb24sbXBzaGl0dHlwZSxwcm90b2NvbCx2
+bGFuLHBvcnQsZmNvZQpmaWx0ZXJNYXNrPXByb3RvY29sLGZjb2UKdHBfcG1yeD0zMAp0cF9wbXJ4
+X3BhZ2VzaXplPTY0Swp0cF9ucnhjaD0wCnRwX3BtdHg9NTAKdHBfcG10eF9wYWdlc2l6ZT02NEsK
+dHBfbnR4Y2g9MAp0cF9tdHVzPTg4LDI1Niw1MTIsNTc2LDgwOCwxMDI0LDEyODAsMTQ4OCwxNTAw
+LDIwMDIsMjA0OCw0MDk2LDQzNTIsODE5Miw5MDAwLDk2MDAKcmVnWzB4N2QwOF09MHgwMDAwMDgw
+MC8weDAwMDAwODAwCnJlZ1sweDdkNDhdPTB4MDAwMDAwMDAvMHgwMDAwMDQwMApyZWdbMHg3ZDYw
+XT0weDA2MDAwMDAwLzB4MDcwMDAwMDAKcmVnWzB4MTkxNjhdPTB4MDQwMjAxMDAKcmVnWzB4MTlj
+MDRdPTB4MDA0MDAwMDAvMHgwMDQwMDAwMAptY19tb2RlX2JyY1swXT0xCm1jX21vZGVfYnJjWzFd
+PTEKW2Z1bmN0aW9uIjAiXQp3eF9jYXBzPWFsbApyX2NhcHM9YWxsCm52aT0yOApuaXFmbGludD0x
+NzAKbmV0aGN0cmw9OTYKbmVxPTI1MgpucXBjcT0yMDQ4Cm5leGFjdGY9NDAKY21hc2s9YWxsCnBt
+YXNrPWFsbApuZXRob2ZsZD0xMDI0Cm5yb3V0ZT0zMgpuY2xpcD0zMgpuZmlsdGVyPTQ4Cm5zZXJ2
+ZXI9MzIKbmhhc2g9MjA0OApwcm90b2NvbD1uaWNfdm0sb2ZsZCxyZGRwLHJkbWFjLGlzY3NpX2lu
+aXRpYXRvcl9wZHUsaXNjc2lfdGFyZ2V0X3BkdSxpc2NzaV90MTBkaWYKdHBfbDJ0PTQwOTIKdHBf
+ZGRwPTIKdHBfZGRwX2lzY3NpPTIKdHBfc3RhZz0yCnRwX3BibD01CnRwX3JxPTcKW2Z1bmN0aW9u
+IjEiXQp3eF9jYXBzPWFsbApyX2NhcHM9YWxsCm52aT00Cm5pcWZsaW50PTM0Cm5ldGhjdHJsPTMy
+Cm5lcT02NgpuZXhhY3RmPTMyCmNtYXNrPWFsbApwbWFzaz1hbGwKbmhhc2g9MjA0OApwcm90b2Nv
+bD1mY29lX2luaXRpYXRvcgp0cF9sMnQ9NAp0cF9kZHA9MgpmY29lX25mY2Y9MTYKZmNvZV9udm5w
+PTMyCmZjb2VfbnNzbj0xMDI0CltmdW5jdGlvbiIxMDIzIl0Kd3hfY2Fwcz1hbGwKcl9jYXBzPWFs
+bApudmk9NApjbWFzaz1hbGwKcG1hc2s9YWxsCm5leGFjdGY9OApuZmlsdGVyPTE2CltmdW5jdGlv
+biIwLyoiXQp3eF9jYXBzPTB4ODIKcl9jYXBzPTB4ODYKbnZpPTEKbmlxZmxpbnQ9NApuZXRoY3Ry
+bD0yCm5lcT00Cm5leGFjdGY9NApjbWFzaz1hbGwKcG1hc2s9MHgxCltmdW5jdGlvbiIxLyoiXQp3
+eF9jYXBzPTB4ODIKcl9jYXBzPTB4ODYKbnZpPTEKbmlxZmxpbnQ9NApuZXRoY3RybD0yCm5lcT00
+Cm5leGFjdGY9NApjbWFzaz1hbGwKcG1hc2s9MHgyCltwb3J0IjAiXQpkY2I9cHBwLGRjYngKYmdf
+bWVtPTI1CmxwYmtfbWVtPTI1Cmh3bT0zMApsd209MTUKZHdtPTMwCmRjYl9hcHBfdGx2WzBdPTB4
+ODkwNixldGhlcnR5cGUsMwpkY2JfYXBwX3RsdlsxXT0weDg5MTQsZXRoZXJ0eXBlLDMKZGNiX2Fw
+cF90bHZbMl09MzI2MCxzb2NrZXRudW0sNQpbcG9ydCIxIl0KZGNiPXBwcCxkY2J4CmJnX21lbT0y
+NQpscGJrX21lbT0yNQpod209MzAKbHdtPTE1CmR3bT0zMApkY2JfYXBwX3RsdlswXT0weDg5MDYs
+ZXRoZXJ0eXBlLDMKZGNiX2FwcF90bHZbMV09MHg4OTE0LGV0aGVydHlwZSwzCmRjYl9hcHBfdGx2
+WzJdPTMyNjAsc29ja2V0bnVtLDUKW3BvcnQiMiJdCmRjYj1wcHAsZGNieApiZ19tZW09MjUKbHBi
+a19tZW09MjUKaHdtPTMwCmx3bT0xNQpkd209MzAKZGNiX2FwcF90bHZbMF09MHg4OTA2LGV0aGVy
+dHlwZSwzCmRjYl9hcHBfdGx2WzFdPTB4ODkxNCxldGhlcnR5cGUsMwpkY2JfYXBwX3RsdlsyXT0z
+MjYwLHNvY2tldG51bSw1Cltwb3J0IjMiXQpkY2I9cHBwLGRjYngKYmdfbWVtPTI1CmxwYmtfbWVt
+PTI1Cmh3bT0zMApsd209MTUKZHdtPTMwCmRjYl9hcHBfdGx2WzBdPTB4ODkwNixldGhlcnR5cGUs
+MwpkY2JfYXBwX3RsdlsxXT0weDg5MTQsZXRoZXJ0eXBlLDMKZGNiX2FwcF90bHZbMl09MzI2MCxz
+b2NrZXRudW0sNQpbZmluaV0KdmVyc2lvbj0weDE0MjUwMDFkCmNoZWNrc3VtPTB4N2RjNGRjZAoA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
+====
Property changes on: user/ngie/bsnmp_cleanup/sys/dev/cxgbe/firmware/t5fw-1.15.37.0.bin.uu
___________________________________________________________________
Added: fbsd:nokeywords
## -0,0 +1 ##
+yes
\ No newline at end of property
Index: user/ngie/bsnmp_cleanup/sys/dev/isp/isp_target.c
===================================================================
--- user/ngie/bsnmp_cleanup/sys/dev/isp/isp_target.c (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/dev/isp/isp_target.c (revision 299697)
@@ -1,1436 +1,1436 @@
/*-
* Copyright (c) 1997-2009 by Matthew Jacob
* 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 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 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.
*
*/
/*
* Machine and OS Independent Target Mode Code for the Qlogic SCSI/FC adapters.
*/
/*
* Bug fixes gratefully acknowledged from:
* Oded Kedem <oded@kashya.com>
*/
/*
* Include header file appropriate for platform we're building on.
*/
#ifdef __NetBSD__
#include <dev/ic/isp_netbsd.h>
#endif
#ifdef __FreeBSD__
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
#include <dev/isp/isp_freebsd.h>
#endif
#ifdef __OpenBSD__
#include <dev/ic/isp_openbsd.h>
#endif
#ifdef __linux__
#include "isp_linux.h"
#endif
#ifdef ISP_TARGET_MODE
static const char atiocope[] = "ATIO returned for LUN %x because it was in the middle of Bus Device Reset on bus %d";
static const char atior[] = "ATIO returned for LUN %x from handle 0x%x because a Bus Reset occurred on bus %d";
static const char rqo[] = "%s: Request Queue Overflow";
static void isp_got_msg_fc(ispsoftc_t *, in_fcentry_t *);
static void isp_got_tmf_24xx(ispsoftc_t *, at7_entry_t *);
static void isp_handle_atio2(ispsoftc_t *, at2_entry_t *);
static void isp_handle_ctio2(ispsoftc_t *, ct2_entry_t *);
static void isp_handle_ctio7(ispsoftc_t *, ct7_entry_t *);
static void isp_handle_24xx_inotify(ispsoftc_t *, in_fcentry_24xx_t *);
/*
* The Qlogic driver gets an interrupt to look at response queue entries.
* Some of these are status completions for initiatior mode commands, but
* if target mode is enabled, we get a whole wad of response queue entries
* to be handled here.
*
* Basically the split into 3 main groups: Lun Enable/Modification responses,
* SCSI Command processing, and Immediate Notification events.
*
* You start by writing a request queue entry to enable target mode (and
* establish some resource limitations which you can modify later).
* The f/w responds with a LUN ENABLE or LUN MODIFY response with
* the status of this action. If the enable was successful, you can expect...
*
* Response queue entries with SCSI commands encapsulate show up in an ATIO
* (Accept Target IO) type- sometimes with enough info to stop the command at
* this level. Ultimately the driver has to feed back to the f/w's request
* queue a sequence of CTIOs (continue target I/O) that describe data to
* be moved and/or status to be sent) and finally finishing with sending
* to the f/w's response queue an ATIO which then completes the handshake
* with the f/w for that command. There's a lot of variations on this theme,
* including flags you can set in the CTIO for the Qlogic 2X00 fibre channel
* cards that 'auto-replenish' the f/w's ATIO count, but this is the basic
* gist of it.
*
* The third group that can show up in the response queue are Immediate
* Notification events. These include things like notifications of SCSI bus
* resets, or Bus Device Reset messages or other messages received. This
* a classic oddbins area. It can get a little weird because you then turn
* around and acknowledge the Immediate Notify by writing an entry onto the
* request queue and then the f/w turns around and gives you an acknowledgement
* to *your* acknowledgement on the response queue (the idea being to let
* the f/w tell you when the event is *really* over I guess).
*
*/
/*
* A new response queue entry has arrived. The interrupt service code
* has already swizzled it into the platform dependent from canonical form.
*
* Because of the way this driver is designed, unfortunately most of the
* actual synchronization work has to be done in the platform specific
* code- we have no synchroniation primitives in the common code.
*/
int
isp_target_notify(ispsoftc_t *isp, void *vptr, uint32_t *optrp)
{
uint16_t status;
uint32_t seqid;
union {
at2_entry_t *at2iop;
at2e_entry_t *at2eiop;
at7_entry_t *at7iop;
ct2_entry_t *ct2iop;
ct2e_entry_t *ct2eiop;
ct7_entry_t *ct7iop;
lun_entry_t *lunenp;
in_fcentry_t *inot_fcp;
in_fcentry_e_t *inote_fcp;
in_fcentry_24xx_t *inot_24xx;
na_fcentry_t *nack_fcp;
na_fcentry_e_t *nacke_fcp;
na_fcentry_24xx_t *nack_24xx;
isphdr_t *hp;
abts_t *abts;
abts_rsp_t *abts_rsp;
els_t *els;
void * *vp;
#define at2iop unp.at2iop
#define at2eiop unp.at2eiop
#define at7iop unp.at7iop
#define ct2iop unp.ct2iop
#define ct2eiop unp.ct2eiop
#define ct7iop unp.ct7iop
#define lunenp unp.lunenp
#define inot_fcp unp.inot_fcp
#define inote_fcp unp.inote_fcp
#define inot_24xx unp.inot_24xx
#define nack_fcp unp.nack_fcp
#define nacke_fcp unp.nacke_fcp
#define nack_24xx unp.nack_24xx
#define abts unp.abts
#define abts_rsp unp.abts_rsp
#define els unp.els
#define hdrp unp.hp
} unp;
uint8_t local[QENTRY_LEN];
uint16_t iid;
int bus, type, len, level, rval = 1;
isp_notify_t notify;
type = isp_get_response_type(isp, (isphdr_t *)vptr);
unp.vp = vptr;
ISP_TDQE(isp, "isp_target_notify", (int) *optrp, vptr);
switch (type) {
case RQSTYPE_ATIO:
isp_get_atio7(isp, at7iop, (at7_entry_t *) local);
at7iop = (at7_entry_t *) local;
/*
* Check for and do something with commands whose
* IULEN extends past a single queue entry.
*/
- len = at7iop->at_ta_len & 0xfffff;
+ len = at7iop->at_ta_len & 0x0fff;
if (len > (QENTRY_LEN - 8)) {
len -= (QENTRY_LEN - 8);
isp_prt(isp, ISP_LOGINFO, "long IU length (%d) ignored", len);
while (len > 0) {
*optrp = ISP_NXT_QENTRY(*optrp, RESULT_QUEUE_LEN(isp));
len -= QENTRY_LEN;
}
}
/*
* Check for a task management function
*/
if (at7iop->at_cmnd.fcp_cmnd_task_management) {
isp_got_tmf_24xx(isp, at7iop);
break;
}
/*
* Just go straight to outer layer for this one.
*/
isp_async(isp, ISPASYNC_TARGET_ACTION, local);
break;
case RQSTYPE_ATIO2:
if (ISP_CAP_2KLOGIN(isp)) {
isp_get_atio2e(isp, at2eiop, (at2e_entry_t *) local);
} else {
isp_get_atio2(isp, at2iop, (at2_entry_t *) local);
}
isp_handle_atio2(isp, (at2_entry_t *) local);
break;
case RQSTYPE_CTIO3:
case RQSTYPE_CTIO2:
if (ISP_CAP_2KLOGIN(isp)) {
isp_get_ctio2e(isp, ct2eiop, (ct2e_entry_t *) local);
} else {
isp_get_ctio2(isp, ct2iop, (ct2_entry_t *) local);
}
isp_handle_ctio2(isp, (ct2_entry_t *) local);
break;
case RQSTYPE_CTIO7:
isp_get_ctio7(isp, ct7iop, (ct7_entry_t *) local);
isp_handle_ctio7(isp, (ct7_entry_t *) local);
break;
case RQSTYPE_ENABLE_LUN:
case RQSTYPE_MODIFY_LUN:
isp_get_enable_lun(isp, lunenp, (lun_entry_t *) local);
isp_async(isp, ISPASYNC_TARGET_ACTION, local);
break;
case RQSTYPE_NOTIFY:
bus = 0;
if (IS_24XX(isp)) {
isp_get_notify_24xx(isp, inot_24xx, (in_fcentry_24xx_t *)local);
inot_24xx = (in_fcentry_24xx_t *) local;
isp_handle_24xx_inotify(isp, inot_24xx);
break;
} else {
if (ISP_CAP_2KLOGIN(isp)) {
in_fcentry_e_t *ecp = (in_fcentry_e_t *)local;
isp_get_notify_fc_e(isp, inote_fcp, ecp);
iid = ecp->in_iid;
status = ecp->in_status;
seqid = ecp->in_seqid;
} else {
in_fcentry_t *fcp = (in_fcentry_t *)local;
isp_get_notify_fc(isp, inot_fcp, fcp);
iid = fcp->in_iid;
status = fcp->in_status;
seqid = fcp->in_seqid;
}
}
isp_prt(isp, ISP_LOGTDEBUG0, "Immediate Notify On Bus %d, status=0x%x seqid=0x%x", bus, status, seqid);
switch (status) {
case IN_MSG_RECEIVED:
case IN_IDE_RECEIVED:
isp_got_msg_fc(isp, (in_fcentry_t *)local);
break;
case IN_RSRC_UNAVAIL:
isp_prt(isp, ISP_LOGINFO, "Firmware out of ATIOs");
isp_async(isp, ISPASYNC_TARGET_NOTIFY_ACK, local);
break;
case IN_RESET:
ISP_MEMZERO(&notify, sizeof (isp_notify_t));
notify.nt_hba = isp;
notify.nt_wwn = INI_ANY;
notify.nt_tgt = TGT_ANY;
notify.nt_nphdl = iid;
notify.nt_sid = PORT_ANY;
notify.nt_did = PORT_ANY;
notify.nt_lun = LUN_ANY;
notify.nt_tagval = TAG_ANY;
notify.nt_tagval |= (((uint64_t)(isp->isp_serno++)) << 32);
notify.nt_ncode = NT_BUS_RESET;
notify.nt_need_ack = 1;
notify.nt_lreserved = local;
isp_async(isp, ISPASYNC_TARGET_NOTIFY, &notify);
break;
case IN_PORT_LOGOUT:
ISP_MEMZERO(&notify, sizeof (isp_notify_t));
notify.nt_hba = isp;
notify.nt_wwn = INI_ANY;
notify.nt_nphdl = iid;
notify.nt_sid = PORT_ANY;
notify.nt_did = PORT_ANY;
notify.nt_ncode = NT_LOGOUT;
notify.nt_need_ack = 1;
notify.nt_lreserved = local;
isp_async(isp, ISPASYNC_TARGET_NOTIFY, &notify);
break;
case IN_ABORT_TASK:
ISP_MEMZERO(&notify, sizeof (isp_notify_t));
notify.nt_hba = isp;
notify.nt_wwn = INI_ANY;
notify.nt_nphdl = iid;
notify.nt_sid = PORT_ANY;
notify.nt_did = PORT_ANY;
notify.nt_ncode = NT_ABORT_TASK;
notify.nt_need_ack = 1;
notify.nt_lreserved = local;
isp_async(isp, ISPASYNC_TARGET_NOTIFY, &notify);
break;
case IN_GLOBAL_LOGO:
isp_prt(isp, ISP_LOGTINFO, "%s: all ports logged out", __func__);
ISP_MEMZERO(&notify, sizeof (isp_notify_t));
notify.nt_hba = isp;
notify.nt_wwn = INI_ANY;
notify.nt_nphdl = NIL_HANDLE;
notify.nt_sid = PORT_ANY;
notify.nt_did = PORT_ANY;
notify.nt_ncode = NT_GLOBAL_LOGOUT;
notify.nt_need_ack = 1;
notify.nt_lreserved = local;
isp_async(isp, ISPASYNC_TARGET_NOTIFY, &notify);
break;
case IN_PORT_CHANGED:
isp_prt(isp, ISP_LOGTINFO, "%s: port changed", __func__);
ISP_MEMZERO(&notify, sizeof (isp_notify_t));
notify.nt_hba = isp;
notify.nt_wwn = INI_ANY;
notify.nt_nphdl = NIL_HANDLE;
notify.nt_sid = PORT_ANY;
notify.nt_did = PORT_ANY;
notify.nt_ncode = NT_CHANGED;
notify.nt_need_ack = 1;
notify.nt_lreserved = local;
isp_async(isp, ISPASYNC_TARGET_NOTIFY, &notify);
break;
default:
ISP_SNPRINTF(local, sizeof local, "%s: unknown status to RQSTYPE_NOTIFY (0x%x)", __func__, status);
isp_print_bytes(isp, local, QENTRY_LEN, vptr);
isp_async(isp, ISPASYNC_TARGET_NOTIFY_ACK, local);
break;
}
break;
case RQSTYPE_NOTIFY_ACK:
/*
* The ISP is acknowledging our acknowledgement of an
* Immediate Notify entry for some asynchronous event.
*/
if (IS_24XX(isp)) {
isp_get_notify_ack_24xx(isp, nack_24xx, (na_fcentry_24xx_t *) local);
nack_24xx = (na_fcentry_24xx_t *) local;
if (nack_24xx->na_status != NA_OK) {
level = ISP_LOGINFO;
} else {
level = ISP_LOGTDEBUG1;
}
isp_prt(isp, level, "Notify Ack Status=0x%x; Subcode 0x%x seqid=0x%x", nack_24xx->na_status, nack_24xx->na_status_subcode, nack_24xx->na_rxid);
} else {
if (ISP_CAP_2KLOGIN(isp)) {
isp_get_notify_ack_fc_e(isp, nacke_fcp, (na_fcentry_e_t *)local);
} else {
isp_get_notify_ack_fc(isp, nack_fcp, (na_fcentry_t *)local);
}
nack_fcp = (na_fcentry_t *)local;
if (nack_fcp->na_status != NA_OK) {
level = ISP_LOGINFO;
} else {
level = ISP_LOGTDEBUG1;
}
isp_prt(isp, level, "Notify Ack Status=0x%x seqid 0x%x", nack_fcp->na_status, nack_fcp->na_seqid);
}
break;
case RQSTYPE_ABTS_RCVD:
isp_get_abts(isp, abts, (abts_t *)local);
isp_async(isp, ISPASYNC_TARGET_ACTION, &local);
break;
case RQSTYPE_ABTS_RSP:
isp_get_abts_rsp(isp, abts_rsp, (abts_rsp_t *)local);
abts_rsp = (abts_rsp_t *) local;
if (abts_rsp->abts_rsp_status) {
level = ISP_LOGINFO;
} else {
level = ISP_LOGTDEBUG0;
}
isp_prt(isp, level, "ABTS RSP response[0x%x]: status=0x%x sub=(0x%x 0x%x)", abts_rsp->abts_rsp_rxid_task, abts_rsp->abts_rsp_status,
abts_rsp->abts_rsp_payload.rsp.subcode1, abts_rsp->abts_rsp_payload.rsp.subcode2);
break;
default:
isp_prt(isp, ISP_LOGERR, "%s: unknown entry type 0x%x", __func__, type);
rval = 0;
break;
}
#undef atiop
#undef at2iop
#undef at2eiop
#undef at7iop
#undef ctiop
#undef ct2iop
#undef ct2eiop
#undef ct7iop
#undef lunenp
#undef inotp
#undef inot_fcp
#undef inote_fcp
#undef inot_24xx
#undef nackp
#undef nack_fcp
#undef nacke_fcp
#undef hack_24xx
#undef abts
#undef abts_rsp
#undef els
#undef hdrp
return (rval);
}
int
isp_target_put_entry(ispsoftc_t *isp, void *ap)
{
void *outp;
uint8_t etype = ((isphdr_t *) ap)->rqs_entry_type;
outp = isp_getrqentry(isp);
if (outp == NULL) {
isp_prt(isp, ISP_LOGWARN, rqo, __func__);
return (-1);
}
switch (etype) {
case RQSTYPE_ATIO2:
if (ISP_CAP_2KLOGIN(isp)) {
isp_put_atio2e(isp, (at2e_entry_t *) ap, (at2e_entry_t *) outp);
} else {
isp_put_atio2(isp, (at2_entry_t *) ap, (at2_entry_t *) outp);
}
break;
case RQSTYPE_CTIO2:
if (ISP_CAP_2KLOGIN(isp)) {
isp_put_ctio2e(isp, (ct2e_entry_t *) ap, (ct2e_entry_t *) outp);
} else {
isp_put_ctio2(isp, (ct2_entry_t *) ap, (ct2_entry_t *) outp);
}
break;
case RQSTYPE_CTIO7:
isp_put_ctio7(isp, (ct7_entry_t *) ap, (ct7_entry_t *) outp);
break;
default:
isp_prt(isp, ISP_LOGERR, "%s: Unknown type 0x%x", __func__, etype);
return (-1);
}
ISP_TDQE(isp, __func__, isp->isp_reqidx, ap);
ISP_SYNC_REQUEST(isp);
return (0);
}
int
isp_target_put_atio(ispsoftc_t *isp, void *arg)
{
at2_entry_t *aep = arg;
union {
at2_entry_t _atio2;
at2e_entry_t _atio2e;
} atun;
ISP_MEMZERO(&atun, sizeof atun);
atun._atio2.at_header.rqs_entry_type = RQSTYPE_ATIO2;
atun._atio2.at_header.rqs_entry_count = 1;
if (ISP_CAP_SCCFW(isp)) {
atun._atio2.at_scclun = aep->at_scclun;
} else {
atun._atio2.at_lun = (uint8_t) aep->at_lun;
}
if (ISP_CAP_2KLOGIN(isp)) {
atun._atio2e.at_iid = ((at2e_entry_t *)aep)->at_iid;
} else {
atun._atio2.at_iid = aep->at_iid;
}
atun._atio2.at_rxid = aep->at_rxid;
atun._atio2.at_status = CT_OK;
return (isp_target_put_entry(isp, &atun));
}
/*
* Command completion- both for handling cases of no resources or
* no blackhole driver, or other cases where we have to, inline,
* finish the command sanely, or for normal command completion.
*
* The 'completion' code value has the scsi status byte in the low 8 bits.
* If status is a CHECK CONDITION and bit 8 is nonzero, then bits 12..15 have
* the sense key and bits 16..23 have the ASCQ and bits 24..31 have the ASC
* values.
*
* NB: the key, asc, ascq, cannot be used for parallel SCSI as it doesn't
* NB: inline SCSI sense reporting. As such, we lose this information. XXX.
*
* For both parallel && fibre channel, we use the feature that does
* an automatic resource autoreplenish so we don't have then later do
* put of an atio to replenish the f/w's resource count.
*/
int
isp_endcmd(ispsoftc_t *isp, ...)
{
uint32_t code, hdl;
uint8_t sts;
union {
ct2_entry_t _ctio2;
ct2e_entry_t _ctio2e;
ct7_entry_t _ctio7;
} un;
va_list ap;
ISP_MEMZERO(&un, sizeof un);
if (IS_24XX(isp)) {
int vpidx, nphdl;
at7_entry_t *aep;
ct7_entry_t *cto = &un._ctio7;
va_start(ap, isp);
aep = va_arg(ap, at7_entry_t *);
nphdl = va_arg(ap, int);
/*
* Note that vpidx may equal 0xff (unknown) here
*/
vpidx = va_arg(ap, int);
code = va_arg(ap, uint32_t);
hdl = va_arg(ap, uint32_t);
va_end(ap);
isp_prt(isp, ISP_LOGTDEBUG0, "%s: [RX_ID 0x%x] chan %d code %x", __func__, aep->at_rxid, vpidx, code);
sts = code & 0xff;
cto->ct_header.rqs_entry_type = RQSTYPE_CTIO7;
cto->ct_header.rqs_entry_count = 1;
cto->ct_nphdl = nphdl;
cto->ct_rxid = aep->at_rxid;
cto->ct_iid_lo = (aep->at_hdr.s_id[1] << 8) | aep->at_hdr.s_id[2];
cto->ct_iid_hi = aep->at_hdr.s_id[0];
cto->ct_oxid = aep->at_hdr.ox_id;
cto->ct_scsi_status = sts;
cto->ct_vpidx = vpidx;
cto->ct_flags = CT7_NOACK;
if (code & ECMD_TERMINATE) {
cto->ct_flags |= CT7_TERMINATE;
} else if (code & ECMD_SVALID) {
cto->ct_flags |= CT7_FLAG_MODE1 | CT7_SENDSTATUS;
cto->ct_scsi_status |= (FCP_SNSLEN_VALID << 8);
cto->rsp.m1.ct_resplen = cto->ct_senselen = min(16, MAXRESPLEN_24XX);
ISP_MEMZERO(cto->rsp.m1.ct_resp, sizeof (cto->rsp.m1.ct_resp));
cto->rsp.m1.ct_resp[0] = 0xf0;
cto->rsp.m1.ct_resp[2] = (code >> 12) & 0xf;
cto->rsp.m1.ct_resp[7] = 8;
cto->rsp.m1.ct_resp[12] = (code >> 16) & 0xff;
cto->rsp.m1.ct_resp[13] = (code >> 24) & 0xff;
} else {
cto->ct_flags |= CT7_FLAG_MODE1 | CT7_SENDSTATUS;
}
if (aep->at_cmnd.cdb_dl.sf.fcp_cmnd_dl) {
cto->ct_resid = aep->at_cmnd.cdb_dl.sf.fcp_cmnd_dl;
if (cto->ct_resid < 0) {
cto->ct_scsi_status |= (FCP_RESID_OVERFLOW << 8);
} else if (cto->ct_resid > 0) {
cto->ct_scsi_status |= (FCP_RESID_UNDERFLOW << 8);
}
}
cto->ct_syshandle = hdl;
} else {
at2_entry_t *aep;
ct2_entry_t *cto = &un._ctio2;
va_start(ap, isp);
aep = va_arg(ap, at2_entry_t *);
code = va_arg(ap, uint32_t);
hdl = va_arg(ap, uint32_t);
va_end(ap);
isp_prt(isp, ISP_LOGTDEBUG0, "%s: [RX_ID 0x%x] code %x", __func__, aep->at_rxid, code);
sts = code & 0xff;
cto->ct_header.rqs_entry_type = RQSTYPE_CTIO2;
cto->ct_header.rqs_entry_count = 1;
if (ISP_CAP_SCCFW(isp) == 0) {
cto->ct_lun = aep->at_lun;
}
if (ISP_CAP_2KLOGIN(isp)) {
un._ctio2e.ct_iid = ((at2e_entry_t *)aep)->at_iid;
} else {
cto->ct_iid = aep->at_iid;
}
cto->ct_rxid = aep->at_rxid;
cto->rsp.m1.ct_scsi_status = sts;
cto->ct_flags = CT2_SENDSTATUS | CT2_NO_DATA | CT2_FLAG_MODE1;
if (hdl == 0) {
cto->ct_flags |= CT2_CCINCR;
}
if (aep->at_datalen) {
cto->ct_resid = aep->at_datalen;
cto->rsp.m1.ct_scsi_status |= CT2_DATA_UNDER;
}
if (sts == SCSI_CHECK && (code & ECMD_SVALID)) {
cto->rsp.m1.ct_resp[0] = 0xf0;
cto->rsp.m1.ct_resp[2] = (code >> 12) & 0xf;
cto->rsp.m1.ct_resp[7] = 8;
cto->rsp.m1.ct_resp[12] = (code >> 24) & 0xff;
cto->rsp.m1.ct_resp[13] = (code >> 16) & 0xff;
cto->rsp.m1.ct_senselen = 16;
cto->rsp.m1.ct_scsi_status |= CT2_SNSLEN_VALID;
}
cto->ct_syshandle = hdl;
}
return (isp_target_put_entry(isp, &un));
}
/*
* These are either broadcast events or specifically CTIO fast completion
*/
int
isp_target_async(ispsoftc_t *isp, int bus, int event)
{
isp_notify_t notify;
ISP_MEMZERO(&notify, sizeof (isp_notify_t));
notify.nt_hba = isp;
notify.nt_wwn = INI_ANY;
notify.nt_nphdl = NIL_HANDLE;
notify.nt_sid = PORT_ANY;
notify.nt_did = PORT_ANY;
notify.nt_tgt = TGT_ANY;
notify.nt_channel = bus;
notify.nt_lun = LUN_ANY;
notify.nt_tagval = TAG_ANY;
notify.nt_tagval |= (((uint64_t)(isp->isp_serno++)) << 32);
switch (event) {
case ASYNC_LOOP_UP:
case ASYNC_PTPMODE:
isp_prt(isp, ISP_LOGTDEBUG0, "%s: LOOP UP", __func__);
notify.nt_ncode = NT_LINK_UP;
isp_async(isp, ISPASYNC_TARGET_NOTIFY, &notify);
break;
case ASYNC_LOOP_DOWN:
isp_prt(isp, ISP_LOGTDEBUG0, "%s: LOOP DOWN", __func__);
notify.nt_ncode = NT_LINK_DOWN;
isp_async(isp, ISPASYNC_TARGET_NOTIFY, &notify);
break;
case ASYNC_LIP_ERROR:
case ASYNC_LIP_NOS_OLS_RECV:
case ASYNC_LIP_OCCURRED:
case ASYNC_LOOP_RESET:
isp_prt(isp, ISP_LOGTDEBUG0, "%s: LIP RESET", __func__);
notify.nt_ncode = NT_LIP_RESET;
isp_async(isp, ISPASYNC_TARGET_NOTIFY, &notify);
break;
case ASYNC_BUS_RESET:
case ASYNC_TIMEOUT_RESET: /* XXX: where does this come from ? */
isp_prt(isp, ISP_LOGTDEBUG0, "%s: BUS RESET", __func__);
notify.nt_ncode = NT_BUS_RESET;
isp_async(isp, ISPASYNC_TARGET_NOTIFY, &notify);
break;
case ASYNC_DEVICE_RESET:
isp_prt(isp, ISP_LOGTDEBUG0, "%s: DEVICE RESET", __func__);
notify.nt_ncode = NT_TARGET_RESET;
isp_async(isp, ISPASYNC_TARGET_NOTIFY, &notify);
break;
case ASYNC_CTIO_DONE:
{
uint8_t storage[QENTRY_LEN];
isp_prt(isp, ISP_LOGTDEBUG0, "%s: CTIO DONE", __func__);
memset(storage, 0, QENTRY_LEN);
if (IS_24XX(isp)) {
ct7_entry_t *ct = (ct7_entry_t *) storage;
ct->ct_header.rqs_entry_type = RQSTYPE_CTIO7;
ct->ct_nphdl = CT7_OK;
ct->ct_syshandle = bus;
ct->ct_flags = CT7_SENDSTATUS;
} else {
/* This should also suffice for 2K login code */
ct2_entry_t *ct = (ct2_entry_t *) storage;
ct->ct_header.rqs_entry_type = RQSTYPE_CTIO2;
ct->ct_status = CT_OK;
ct->ct_syshandle = bus;
ct->ct_flags = CT2_SENDSTATUS|CT2_FASTPOST;
}
isp_async(isp, ISPASYNC_TARGET_ACTION, storage);
break;
}
default:
isp_prt(isp, ISP_LOGERR, "%s: unknown event 0x%x", __func__, event);
if (isp->isp_state == ISP_RUNSTATE) {
isp_async(isp, ISPASYNC_TARGET_NOTIFY_ACK, NULL);
}
break;
}
return (0);
}
/*
* Synthesize a message from the task management flags in a FCP_CMND_IU.
*/
static void
isp_got_msg_fc(ispsoftc_t *isp, in_fcentry_t *inp)
{
isp_notify_t notify;
static const char f1[] = "%s from N-port handle 0x%x lun %x seq 0x%x";
static const char f2[] = "unknown %s 0x%x lun %x N-Port handle 0x%x task flags 0x%x seq 0x%x\n";
uint16_t seqid, nphdl;
ISP_MEMZERO(&notify, sizeof (isp_notify_t));
notify.nt_hba = isp;
notify.nt_wwn = INI_ANY;
if (ISP_CAP_2KLOGIN(isp)) {
notify.nt_nphdl = ((in_fcentry_e_t *)inp)->in_iid;
nphdl = ((in_fcentry_e_t *)inp)->in_iid;
seqid = ((in_fcentry_e_t *)inp)->in_seqid;
} else {
notify.nt_nphdl = inp->in_iid;
nphdl = inp->in_iid;
seqid = inp->in_seqid;
}
notify.nt_sid = PORT_ANY;
notify.nt_did = PORT_ANY;
/* nt_tgt set in outer layers */
if (ISP_CAP_SCCFW(isp)) {
notify.nt_lun = inp->in_scclun;
#if __FreeBSD_version < 1000700
notify.nt_lun &= 0x3fff;
#endif
} else {
notify.nt_lun = inp->in_lun;
}
notify.nt_tagval = seqid;
notify.nt_tagval |= (((uint64_t)(isp->isp_serno++)) << 32);
notify.nt_need_ack = 1;
notify.nt_lreserved = inp;
if (inp->in_status != IN_MSG_RECEIVED) {
isp_prt(isp, ISP_LOGINFO, f2, "immediate notify status", inp->in_status, notify.nt_lun, nphdl, inp->in_task_flags, inp->in_seqid);
isp_async(isp, ISPASYNC_TARGET_NOTIFY_ACK, inp);
return;
}
if (inp->in_task_flags & TASK_FLAGS_ABORT_TASK_SET) {
isp_prt(isp, ISP_LOGINFO, f1, "ABORT TASK SET", nphdl, notify.nt_lun, inp->in_seqid);
notify.nt_ncode = NT_ABORT_TASK_SET;
} else if (inp->in_task_flags & TASK_FLAGS_CLEAR_TASK_SET) {
isp_prt(isp, ISP_LOGINFO, f1, "CLEAR TASK SET", nphdl, notify.nt_lun, inp->in_seqid);
notify.nt_ncode = NT_CLEAR_TASK_SET;
} else if (inp->in_task_flags & TASK_FLAGS_LUN_RESET) {
isp_prt(isp, ISP_LOGINFO, f1, "LUN RESET", nphdl, notify.nt_lun, inp->in_seqid);
notify.nt_ncode = NT_LUN_RESET;
} else if (inp->in_task_flags & TASK_FLAGS_TARGET_RESET) {
isp_prt(isp, ISP_LOGINFO, f1, "TARGET RESET", nphdl, notify.nt_lun, inp->in_seqid);
notify.nt_ncode = NT_TARGET_RESET;
} else if (inp->in_task_flags & TASK_FLAGS_CLEAR_ACA) {
isp_prt(isp, ISP_LOGINFO, f1, "CLEAR ACA", nphdl, notify.nt_lun, inp->in_seqid);
notify.nt_ncode = NT_CLEAR_ACA;
} else {
isp_prt(isp, ISP_LOGWARN, f2, "task flag", inp->in_status, notify.nt_lun, nphdl, inp->in_task_flags, inp->in_seqid);
isp_async(isp, ISPASYNC_TARGET_NOTIFY_ACK, inp);
return;
}
isp_async(isp, ISPASYNC_TARGET_NOTIFY, &notify);
}
static void
isp_got_tmf_24xx(ispsoftc_t *isp, at7_entry_t *aep)
{
isp_notify_t notify;
static const char f1[] = "%s from PortID 0x%06x lun %x seq 0x%08x";
static const char f2[] = "unknown Task Flag 0x%x lun %x PortID 0x%x tag 0x%08x";
uint16_t chan;
uint32_t sid, did;
ISP_MEMZERO(&notify, sizeof (isp_notify_t));
notify.nt_hba = isp;
notify.nt_wwn = INI_ANY;
notify.nt_lun = (aep->at_cmnd.fcp_cmnd_lun[0] << 8) | (aep->at_cmnd.fcp_cmnd_lun[1]);
notify.nt_tagval = aep->at_rxid;
notify.nt_tagval |= (((uint64_t)(isp->isp_serno++)) << 32);
notify.nt_lreserved = aep;
sid = (aep->at_hdr.s_id[0] << 16) | (aep->at_hdr.s_id[1] << 8) | (aep->at_hdr.s_id[2]);
/* Channel has to derived from D_ID */
did = (aep->at_hdr.d_id[0] << 16) | (aep->at_hdr.d_id[1] << 8) | aep->at_hdr.d_id[2];
for (chan = 0; chan < isp->isp_nchan; chan++) {
if (FCPARAM(isp, chan)->isp_portid == did) {
break;
}
}
if (chan == isp->isp_nchan) {
isp_prt(isp, ISP_LOGWARN, "%s: D_ID 0x%x not found on any channel", __func__, did);
/* just drop on the floor */
return;
}
notify.nt_nphdl = NIL_HANDLE; /* unknown here */
notify.nt_sid = sid;
notify.nt_did = did;
notify.nt_channel = chan;
if (aep->at_cmnd.fcp_cmnd_task_management & FCP_CMND_TMF_QUERY_TASK_SET) {
isp_prt(isp, ISP_LOGINFO, f1, "QUERY TASK SET", sid, notify.nt_lun, aep->at_rxid);
notify.nt_ncode = NT_QUERY_TASK_SET;
} else if (aep->at_cmnd.fcp_cmnd_task_management & FCP_CMND_TMF_ABORT_TASK_SET) {
isp_prt(isp, ISP_LOGINFO, f1, "ABORT TASK SET", sid, notify.nt_lun, aep->at_rxid);
notify.nt_ncode = NT_ABORT_TASK_SET;
} else if (aep->at_cmnd.fcp_cmnd_task_management & FCP_CMND_TMF_CLEAR_TASK_SET) {
isp_prt(isp, ISP_LOGINFO, f1, "CLEAR TASK SET", sid, notify.nt_lun, aep->at_rxid);
notify.nt_ncode = NT_CLEAR_TASK_SET;
} else if (aep->at_cmnd.fcp_cmnd_task_management & FCP_CMND_TMF_QUERY_ASYNC_EVENT) {
isp_prt(isp, ISP_LOGINFO, f1, "QUERY ASYNC EVENT", sid, notify.nt_lun, aep->at_rxid);
notify.nt_ncode = NT_QUERY_ASYNC_EVENT;
} else if (aep->at_cmnd.fcp_cmnd_task_management & FCP_CMND_TMF_LUN_RESET) {
isp_prt(isp, ISP_LOGINFO, f1, "LUN RESET", sid, notify.nt_lun, aep->at_rxid);
notify.nt_ncode = NT_LUN_RESET;
} else if (aep->at_cmnd.fcp_cmnd_task_management & FCP_CMND_TMF_TGT_RESET) {
isp_prt(isp, ISP_LOGINFO, f1, "TARGET RESET", sid, notify.nt_lun, aep->at_rxid);
notify.nt_ncode = NT_TARGET_RESET;
} else if (aep->at_cmnd.fcp_cmnd_task_management & FCP_CMND_TMF_CLEAR_ACA) {
isp_prt(isp, ISP_LOGINFO, f1, "CLEAR ACA", sid, notify.nt_lun, aep->at_rxid);
notify.nt_ncode = NT_CLEAR_ACA;
} else {
isp_prt(isp, ISP_LOGWARN, f2, aep->at_cmnd.fcp_cmnd_task_management, notify.nt_lun, sid, aep->at_rxid);
notify.nt_ncode = NT_UNKNOWN;
return;
}
isp_async(isp, ISPASYNC_TARGET_NOTIFY, &notify);
}
int
isp_notify_ack(ispsoftc_t *isp, void *arg)
{
char storage[QENTRY_LEN];
void *outp;
/*
* This is in case a Task Management Function ends up here.
*/
if (IS_24XX(isp) && arg != NULL && (((isphdr_t *)arg)->rqs_entry_type == RQSTYPE_ATIO)) {
at7_entry_t *aep = arg;
return (isp_endcmd(isp, aep, NIL_HANDLE, 0, 0, 0));
}
outp = isp_getrqentry(isp);
if (outp == NULL) {
isp_prt(isp, ISP_LOGWARN, rqo, __func__);
return (1);
}
ISP_MEMZERO(storage, QENTRY_LEN);
if (IS_24XX(isp)) {
na_fcentry_24xx_t *na = (na_fcentry_24xx_t *) storage;
na->na_header.rqs_entry_type = RQSTYPE_NOTIFY_ACK;
na->na_header.rqs_entry_count = 1;
if (arg) {
in_fcentry_24xx_t *in = arg;
na->na_nphdl = in->in_nphdl;
na->na_flags = in->in_flags;
na->na_status = in->in_status;
na->na_status_subcode = in->in_status_subcode;
na->na_fwhandle = in->in_fwhandle;
na->na_rxid = in->in_rxid;
na->na_oxid = in->in_oxid;
na->na_vpidx = in->in_vpidx;
if (in->in_status == IN24XX_SRR_RCVD) {
na->na_srr_rxid = in->in_srr_rxid;
na->na_srr_reloff_hi = in->in_srr_reloff_hi;
na->na_srr_reloff_lo = in->in_srr_reloff_lo;
na->na_srr_iu = in->in_srr_iu;
/*
* Whether we're accepting the SRR or rejecting
* it is determined by looking at the in_reserved
* field in the original notify structure.
*/
if (in->in_reserved) {
na->na_srr_flags = 1;
na->na_srr_reject_vunique = 0;
na->na_srr_reject_code = 9; /* unable to perform this command at this time */
na->na_srr_reject_explanation = 0x2a; /* unable to supply the requested data */
}
}
}
isp_put_notify_24xx_ack(isp, na, (na_fcentry_24xx_t *)outp);
} else {
na_fcentry_t *na = (na_fcentry_t *) storage;
int iid = 0;
if (arg) {
in_fcentry_t *inp = arg;
ISP_MEMCPY(storage, arg, sizeof (isphdr_t));
if (ISP_CAP_2KLOGIN(isp)) {
((na_fcentry_e_t *)na)->na_iid = ((in_fcentry_e_t *)inp)->in_iid;
iid = ((na_fcentry_e_t *)na)->na_iid;
} else {
na->na_iid = inp->in_iid;
iid = na->na_iid;
}
na->na_task_flags = inp->in_task_flags & TASK_FLAGS_RESERVED_MASK;
na->na_seqid = inp->in_seqid;
na->na_status = inp->in_status;
na->na_flags = NAFC_RCOUNT;
if (inp->in_status == IN_RESET) {
na->na_flags = NAFC_RST_CLRD; /* We do not modify resource counts for LIP resets */
}
if (inp->in_status == IN_MSG_RECEIVED) {
na->na_flags |= NAFC_TVALID;
na->na_response = 0; /* XXX SUCCEEDED XXX */
}
} else {
na->na_flags = NAFC_RST_CLRD;
}
na->na_header.rqs_entry_type = RQSTYPE_NOTIFY_ACK;
na->na_header.rqs_entry_count = 1;
if (ISP_CAP_2KLOGIN(isp)) {
isp_put_notify_ack_fc_e(isp, (na_fcentry_e_t *) na, (na_fcentry_e_t *)outp);
} else {
isp_put_notify_ack_fc(isp, na, (na_fcentry_t *)outp);
}
isp_prt(isp, ISP_LOGTDEBUG0, "notify ack handle %x seqid %x flags %x tflags %x response %x", iid, na->na_seqid,
na->na_flags, na->na_task_flags, na->na_response);
}
ISP_TDQE(isp, "isp_notify_ack", isp->isp_reqidx, storage);
ISP_SYNC_REQUEST(isp);
return (0);
}
int
isp_acknak_abts(ispsoftc_t *isp, void *arg, int errno)
{
char storage[QENTRY_LEN];
uint16_t tmpw;
uint8_t tmpb;
abts_t *abts = arg;
abts_rsp_t *rsp = (abts_rsp_t *) storage;
void *outp;
if (!IS_24XX(isp)) {
isp_prt(isp, ISP_LOGERR, "%s: called for non-24XX card", __func__);
return (0);
}
if (abts->abts_header.rqs_entry_type != RQSTYPE_ABTS_RCVD) {
isp_prt(isp, ISP_LOGERR, "%s: called for non-ABTS entry (0x%x)", __func__, abts->abts_header.rqs_entry_type);
return (0);
}
outp = isp_getrqentry(isp);
if (outp == NULL) {
isp_prt(isp, ISP_LOGWARN, rqo, __func__);
return (1);
}
ISP_MEMCPY(rsp, abts, QENTRY_LEN);
rsp->abts_rsp_header.rqs_entry_type = RQSTYPE_ABTS_RSP;
/*
* Swap destination and source for response.
*/
rsp->abts_rsp_r_ctl = BA_ACC;
tmpw = rsp->abts_rsp_did_lo;
tmpb = rsp->abts_rsp_did_hi;
rsp->abts_rsp_did_lo = rsp->abts_rsp_sid_lo;
rsp->abts_rsp_did_hi = rsp->abts_rsp_sid_hi;
rsp->abts_rsp_sid_lo = tmpw;
rsp->abts_rsp_sid_hi = tmpb;
rsp->abts_rsp_f_ctl_hi ^= 0x80; /* invert Exchange Context */
rsp->abts_rsp_f_ctl_hi &= ~0x7f; /* clear Sequence Initiator and other bits */
rsp->abts_rsp_f_ctl_hi |= 0x10; /* abort the whole exchange */
rsp->abts_rsp_f_ctl_hi |= 0x8; /* last data frame of sequence */
rsp->abts_rsp_f_ctl_hi |= 0x1; /* transfer Sequence Initiative */
rsp->abts_rsp_f_ctl_lo = 0;
if (errno == 0) {
uint16_t rx_id, ox_id;
rx_id = rsp->abts_rsp_rx_id;
ox_id = rsp->abts_rsp_ox_id;
ISP_MEMZERO(&rsp->abts_rsp_payload.ba_acc, sizeof (rsp->abts_rsp_payload.ba_acc));
isp_prt(isp, ISP_LOGTINFO, "[0x%x] ABTS of 0x%x being BA_ACC'd", rsp->abts_rsp_rxid_abts, rsp->abts_rsp_rxid_task);
rsp->abts_rsp_payload.ba_acc.aborted_rx_id = rx_id;
rsp->abts_rsp_payload.ba_acc.aborted_ox_id = ox_id;
rsp->abts_rsp_payload.ba_acc.high_seq_cnt = 0xffff;
} else {
ISP_MEMZERO(&rsp->abts_rsp_payload.ba_rjt, sizeof (rsp->abts_rsp_payload.ba_acc));
switch (errno) {
case ENOMEM:
rsp->abts_rsp_payload.ba_rjt.reason = 5; /* Logical Unit Busy */
break;
default:
rsp->abts_rsp_payload.ba_rjt.reason = 9; /* Unable to perform command request */
break;
}
}
/*
* The caller will have set response values as appropriate
* in the ABTS structure just before calling us.
*/
isp_put_abts_rsp(isp, rsp, (abts_rsp_t *)outp);
ISP_TDQE(isp, "isp_acknak_abts", isp->isp_reqidx, storage);
ISP_SYNC_REQUEST(isp);
return (0);
}
static void
isp_handle_atio2(ispsoftc_t *isp, at2_entry_t *aep)
{
int lun, iid;
if (ISP_CAP_SCCFW(isp)) {
lun = aep->at_scclun;
#if __FreeBSD_version < 1000700
lun &= 0x3fff;
#endif
} else {
lun = aep->at_lun;
}
if (ISP_CAP_2KLOGIN(isp)) {
iid = ((at2e_entry_t *)aep)->at_iid;
} else {
iid = aep->at_iid;
}
/*
* The firmware status (except for the QLTM_SVALID bit) indicates
* why this ATIO was sent to us.
*
* If QLTM_SVALID is set, the firware has recommended Sense Data.
*
* If the DISCONNECTS DISABLED bit is set in the flags field,
* we're still connected on the SCSI bus - i.e. the initiator
* did not set DiscPriv in the identify message. We don't care
* about this so it's ignored.
*/
switch (aep->at_status & ~QLTM_SVALID) {
case AT_PATH_INVALID:
/*
* ATIO rejected by the firmware due to disabled lun.
*/
isp_prt(isp, ISP_LOGERR, "rejected ATIO2 for disabled lun %x", lun);
break;
case AT_NOCAP:
/*
* Requested Capability not available
* We sent an ATIO that overflowed the firmware's
* command resource count.
*/
isp_prt(isp, ISP_LOGERR, "rejected ATIO2 for lun %x- command count overflow", lun);
break;
case AT_BDR_MSG:
/*
* If we send an ATIO to the firmware to increment
* its command resource count, and the firmware is
* recovering from a Bus Device Reset, it returns
* the ATIO with this status. We set the command
* resource count in the Enable Lun entry and no
* not increment it. Therefore we should never get
* this status here.
*/
isp_prt(isp, ISP_LOGERR, atiocope, lun, 0);
break;
case AT_CDB: /* Got a CDB */
/*
* Punt to platform specific layer.
*/
isp_async(isp, ISPASYNC_TARGET_ACTION, aep);
break;
case AT_RESET:
/*
* A bus reset came along an blew away this command. Why
* they do this in addition the async event code stuff,
* I dunno.
*
* Ignore it because the async event will clear things
* up for us.
*/
isp_prt(isp, ISP_LOGERR, atior, lun, iid, 0);
break;
default:
isp_prt(isp, ISP_LOGERR, "Unknown ATIO2 status 0x%x from handle %d for lun %x", aep->at_status, iid, lun);
(void) isp_target_put_atio(isp, aep);
break;
}
}
static void
isp_handle_ctio2(ispsoftc_t *isp, ct2_entry_t *ct)
{
void *xs;
int pl = ISP_LOGTDEBUG2;
char *fmsg = NULL;
if (ct->ct_syshandle) {
xs = isp_find_xs(isp, ct->ct_syshandle);
if (xs == NULL) {
pl = ISP_LOGALL;
}
} else {
xs = NULL;
}
switch (ct->ct_status & ~QLTM_SVALID) {
case CT_BUS_ERROR:
isp_prt(isp, ISP_LOGERR, "PCI DMA Bus Error");
/* FALL Through */
case CT_DATA_OVER:
case CT_DATA_UNDER:
case CT_OK:
/*
* There are generally 2 possibilities as to why we'd get
* this condition:
* We sent or received data.
* We sent status & command complete.
*/
break;
case CT_BDR_MSG:
/*
* Target Reset function received.
*
* The firmware generates an async mailbox interrupt to
* notify us of this and returns outstanding CTIOs with this
* status. These CTIOs are handled in that same way as
* CT_ABORTED ones, so just fall through here.
*/
fmsg = "TARGET RESET";
/*FALLTHROUGH*/
case CT_RESET:
if (fmsg == NULL)
fmsg = "LIP Reset";
/*FALLTHROUGH*/
case CT_ABORTED:
/*
* When an Abort message is received the firmware goes to
* Bus Free and returns all outstanding CTIOs with the status
* set, then sends us an Immediate Notify entry.
*/
if (fmsg == NULL) {
fmsg = "ABORT";
}
isp_prt(isp, ISP_LOGTDEBUG0, "CTIO2 destroyed by %s: RX_ID=0x%x", fmsg, ct->ct_rxid);
break;
case CT_INVAL:
/*
* CTIO rejected by the firmware - invalid data direction.
*/
isp_prt(isp, ISP_LOGERR, "CTIO2 had wrong data direction");
break;
case CT_RSELTMO:
fmsg = "failure to reconnect to initiator";
/*FALLTHROUGH*/
case CT_TIMEOUT:
if (fmsg == NULL)
fmsg = "command";
isp_prt(isp, ISP_LOGWARN, "Firmware timed out on %s", fmsg);
break;
case CT_ERR:
fmsg = "Completed with Error";
/*FALLTHROUGH*/
case CT_LOGOUT:
if (fmsg == NULL)
fmsg = "Port Logout";
/*FALLTHROUGH*/
case CT_PORTUNAVAIL:
if (fmsg == NULL)
fmsg = "Port not available";
/*FALLTHROUGH*/
case CT_PORTCHANGED:
if (fmsg == NULL)
fmsg = "Port Changed";
/*FALLTHROUGH*/
case CT_NOACK:
if (fmsg == NULL)
fmsg = "unacknowledged Immediate Notify pending";
isp_prt(isp, ISP_LOGWARN, "CTIO returned by f/w- %s", fmsg);
break;
case CT_INVRXID:
/*
* CTIO rejected by the firmware because an invalid RX_ID.
* Just print a message.
*/
isp_prt(isp, ISP_LOGWARN, "CTIO2 completed with Invalid RX_ID 0x%x", ct->ct_rxid);
break;
default:
isp_prt(isp, ISP_LOGERR, "Unknown CTIO2 status 0x%x", ct->ct_status & ~QLTM_SVALID);
break;
}
if (xs == NULL) {
/*
* There may be more than one CTIO for a data transfer,
* or this may be a status CTIO we're not monitoring.
*
* The assumption is that they'll all be returned in the
* order we got them.
*/
if (ct->ct_syshandle == 0) {
if ((ct->ct_flags & CT2_SENDSTATUS) == 0) {
isp_prt(isp, pl, "intermediate CTIO completed ok");
} else {
isp_prt(isp, pl, "unmonitored CTIO completed ok");
}
} else {
isp_prt(isp, pl, "NO xs for CTIO (handle 0x%x) status 0x%x", ct->ct_syshandle, ct->ct_status & ~QLTM_SVALID);
}
} else {
if ((ct->ct_flags & CT2_DATAMASK) != CT2_NO_DATA) {
ISP_DMAFREE(isp, xs, ct->ct_syshandle);
}
if (ct->ct_flags & CT2_SENDSTATUS) {
/*
* Sent status and command complete.
*
* We're now really done with this command, so we
* punt to the platform dependent layers because
* only there can we do the appropriate command
* complete thread synchronization.
*/
isp_prt(isp, pl, "status CTIO complete");
} else {
/*
* Final CTIO completed. Release DMA resources and
* notify platform dependent layers.
*/
isp_prt(isp, pl, "data CTIO complete");
}
isp_async(isp, ISPASYNC_TARGET_ACTION, ct);
/*
* The platform layer will destroy the handle if appropriate.
*/
}
}
static void
isp_handle_ctio7(ispsoftc_t *isp, ct7_entry_t *ct)
{
void *xs;
int pl = ISP_LOGTDEBUG2;
char *fmsg = NULL;
if (ct->ct_syshandle) {
xs = isp_find_xs(isp, ct->ct_syshandle);
if (xs == NULL) {
pl = ISP_LOGALL;
}
} else {
xs = NULL;
}
switch (ct->ct_nphdl) {
case CT7_BUS_ERROR:
isp_prt(isp, ISP_LOGERR, "PCI DMA Bus Error");
/* FALL Through */
case CT7_DATA_OVER:
case CT7_DATA_UNDER:
case CT7_OK:
/*
* There are generally 2 possibilities as to why we'd get
* this condition:
* We sent or received data.
* We sent status & command complete.
*/
break;
case CT7_RESET:
if (fmsg == NULL) {
fmsg = "LIP Reset";
}
/*FALLTHROUGH*/
case CT7_ABORTED:
/*
* When an Abort message is received the firmware goes to
* Bus Free and returns all outstanding CTIOs with the status
* set, then sends us an Immediate Notify entry.
*/
if (fmsg == NULL) {
fmsg = "ABORT";
}
isp_prt(isp, ISP_LOGTDEBUG0, "CTIO7 destroyed by %s: RX_ID=0x%x", fmsg, ct->ct_rxid);
break;
case CT7_TIMEOUT:
if (fmsg == NULL) {
fmsg = "command";
}
isp_prt(isp, ISP_LOGWARN, "Firmware timed out on %s", fmsg);
break;
case CT7_ERR:
fmsg = "Completed with Error";
/*FALLTHROUGH*/
case CT7_LOGOUT:
if (fmsg == NULL) {
fmsg = "Port Logout";
}
/*FALLTHROUGH*/
case CT7_PORTUNAVAIL:
if (fmsg == NULL) {
fmsg = "Port not available";
}
/*FALLTHROUGH*/
case CT7_PORTCHANGED:
if (fmsg == NULL) {
fmsg = "Port Changed";
}
isp_prt(isp, ISP_LOGWARN, "CTIO returned by f/w- %s", fmsg);
break;
case CT7_INVRXID:
/*
* CTIO rejected by the firmware because an invalid RX_ID.
* Just print a message.
*/
isp_prt(isp, ISP_LOGWARN, "CTIO7 completed with Invalid RX_ID 0x%x", ct->ct_rxid);
break;
case CT7_REASSY_ERR:
isp_prt(isp, ISP_LOGWARN, "reassembly error");
break;
case CT7_SRR:
isp_prt(isp, ISP_LOGTDEBUG0, "SRR received");
break;
default:
isp_prt(isp, ISP_LOGERR, "Unknown CTIO7 status 0x%x", ct->ct_nphdl);
break;
}
if (xs == NULL) {
/*
* There may be more than one CTIO for a data transfer,
* or this may be a status CTIO we're not monitoring.
*
* The assumption is that they'll all be returned in the
* order we got them.
*/
if (ct->ct_syshandle == 0) {
if (ct->ct_flags & CT7_TERMINATE) {
isp_prt(isp, ISP_LOGINFO, "termination of [RX_ID 0x%x] complete", ct->ct_rxid);
} else if ((ct->ct_flags & CT7_SENDSTATUS) == 0) {
isp_prt(isp, pl, "intermediate CTIO completed ok");
} else {
isp_prt(isp, pl, "unmonitored CTIO completed ok");
}
} else {
isp_prt(isp, pl, "NO xs for CTIO (handle 0x%x) status 0x%x", ct->ct_syshandle, ct->ct_nphdl);
}
} else {
if ((ct->ct_flags & CT7_DATAMASK) != CT7_NO_DATA) {
ISP_DMAFREE(isp, xs, ct->ct_syshandle);
}
if (ct->ct_flags & CT7_SENDSTATUS) {
/*
* Sent status and command complete.
*
* We're now really done with this command, so we
* punt to the platform dependent layers because
* only there can we do the appropriate command
* complete thread synchronization.
*/
isp_prt(isp, pl, "status CTIO complete");
} else {
/*
* Final CTIO completed. Release DMA resources and
* notify platform dependent layers.
*/
isp_prt(isp, pl, "data CTIO complete");
}
isp_async(isp, ISPASYNC_TARGET_ACTION, ct);
/*
* The platform layer will destroy the handle if appropriate.
*/
}
}
static void
isp_handle_24xx_inotify(ispsoftc_t *isp, in_fcentry_24xx_t *inot_24xx)
{
uint8_t ochan, chan, lochan, hichan;
/*
* Check to see whether we got a wildcard channel.
* If so, we have to iterate over all channels.
*/
ochan = chan = ISP_GET_VPIDX(isp, inot_24xx->in_vpidx);
if (chan == 0xff) {
lochan = 0;
hichan = isp->isp_nchan;
} else {
if (chan >= isp->isp_nchan) {
char buf[64];
ISP_SNPRINTF(buf, sizeof buf, "%s: bad channel %d for status 0x%x", __func__, chan, inot_24xx->in_status);
isp_print_bytes(isp, buf, QENTRY_LEN, inot_24xx);
isp_async(isp, ISPASYNC_TARGET_NOTIFY_ACK, inot_24xx);
return;
}
lochan = chan;
hichan = chan + 1;
}
isp_prt(isp, ISP_LOGTDEBUG1, "%s: Immediate Notify Channels %d..%d status=0x%x seqid=0x%x", __func__, lochan, hichan-1, inot_24xx->in_status, inot_24xx->in_rxid);
for (chan = lochan; chan < hichan; chan++) {
if (FCPARAM(isp, chan)->role == ISP_ROLE_NONE)
continue;
switch (inot_24xx->in_status) {
case IN24XX_LIP_RESET:
case IN24XX_LINK_RESET:
case IN24XX_PORT_LOGOUT:
case IN24XX_PORT_CHANGED:
case IN24XX_LINK_FAILED:
case IN24XX_SRR_RCVD:
case IN24XX_ELS_RCVD:
inot_24xx->in_reserved = 0; /* clear this for later usage */
inot_24xx->in_vpidx = chan;
isp_async(isp, ISPASYNC_TARGET_ACTION, inot_24xx);
break;
default:
isp_prt(isp, ISP_LOGINFO, "%s: unhandled status (0x%x) for chan %d", __func__, inot_24xx->in_status, chan);
isp_async(isp, ISPASYNC_TARGET_NOTIFY_ACK, inot_24xx);
break;
}
}
inot_24xx->in_vpidx = ochan;
}
#endif
Index: user/ngie/bsnmp_cleanup/sys/dev/mmc/host/dwmmc.c
===================================================================
--- user/ngie/bsnmp_cleanup/sys/dev/mmc/host/dwmmc.c (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/dev/mmc/host/dwmmc.c (revision 299697)
@@ -1,1181 +1,1188 @@
/*-
* Copyright (c) 2014 Ruslan Bukin <br@bsdpad.com>
* 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.
*/
/*
* Synopsys DesignWare Mobile Storage Host Controller
* Chapter 14, Altera Cyclone V Device Handbook (CV-5V2 2014.07.22)
*/
#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/malloc.h>
#include <sys/rman.h>
#include <sys/timeet.h>
#include <sys/timetc.h>
#include <dev/mmc/bridge.h>
#include <dev/mmc/mmcreg.h>
#include <dev/mmc/mmcbrvar.h>
#include <dev/fdt/fdt_common.h>
#include <dev/ofw/openfirm.h>
#include <dev/ofw/ofw_bus.h>
#include <dev/ofw/ofw_bus_subr.h>
#include <machine/bus.h>
#include <machine/cpu.h>
#include <machine/intr.h>
#include <dev/mmc/host/dwmmc_reg.h>
#include <dev/mmc/host/dwmmc_var.h>
#include "mmcbr_if.h"
#define dprintf(x, arg...)
#define READ4(_sc, _reg) \
bus_read_4((_sc)->res[0], _reg)
#define WRITE4(_sc, _reg, _val) \
bus_write_4((_sc)->res[0], _reg, _val)
#define DIV_ROUND_UP(n, d) howmany(n, d)
#define DWMMC_LOCK(_sc) mtx_lock(&(_sc)->sc_mtx)
#define DWMMC_UNLOCK(_sc) mtx_unlock(&(_sc)->sc_mtx)
#define DWMMC_LOCK_INIT(_sc) \
mtx_init(&_sc->sc_mtx, device_get_nameunit(_sc->dev), \
"dwmmc", MTX_DEF)
#define DWMMC_LOCK_DESTROY(_sc) mtx_destroy(&_sc->sc_mtx);
#define DWMMC_ASSERT_LOCKED(_sc) mtx_assert(&_sc->sc_mtx, MA_OWNED);
#define DWMMC_ASSERT_UNLOCKED(_sc) mtx_assert(&_sc->sc_mtx, MA_NOTOWNED);
#define PENDING_CMD 0x01
#define PENDING_STOP 0x02
#define CARD_INIT_DONE 0x04
#define DWMMC_DATA_ERR_FLAGS (SDMMC_INTMASK_DRT | SDMMC_INTMASK_DCRC \
|SDMMC_INTMASK_HTO | SDMMC_INTMASK_SBE \
|SDMMC_INTMASK_EBE)
#define DWMMC_CMD_ERR_FLAGS (SDMMC_INTMASK_RTO | SDMMC_INTMASK_RCRC \
|SDMMC_INTMASK_RE)
#define DWMMC_ERR_FLAGS (DWMMC_DATA_ERR_FLAGS | DWMMC_CMD_ERR_FLAGS \
|SDMMC_INTMASK_HLE)
#define DES0_DIC (1 << 1)
#define DES0_LD (1 << 2)
#define DES0_FS (1 << 3)
#define DES0_CH (1 << 4)
#define DES0_ER (1 << 5)
#define DES0_CES (1 << 30)
#define DES0_OWN (1 << 31)
#define DES1_BS1_MASK 0xfff
#define DES1_BS1_SHIFT 0
struct idmac_desc {
uint32_t des0; /* control */
uint32_t des1; /* bufsize */
uint32_t des2; /* buf1 phys addr */
uint32_t des3; /* buf2 phys addr or next descr */
};
#define DESC_MAX 256
#define DESC_SIZE (sizeof(struct idmac_desc) * DESC_MAX)
#define DEF_MSIZE 0x2 /* Burst size of multiple transaction */
static void dwmmc_next_operation(struct dwmmc_softc *);
static int dwmmc_setup_bus(struct dwmmc_softc *, int);
static int dma_done(struct dwmmc_softc *, struct mmc_command *);
static int dma_stop(struct dwmmc_softc *);
static void pio_read(struct dwmmc_softc *, struct mmc_command *);
static void pio_write(struct dwmmc_softc *, struct mmc_command *);
static struct resource_spec dwmmc_spec[] = {
{ SYS_RES_MEMORY, 0, RF_ACTIVE },
{ SYS_RES_IRQ, 0, RF_ACTIVE },
{ -1, 0 }
};
#define HWTYPE_MASK (0x0000ffff)
#define HWFLAG_MASK (0xffff << 16)
static struct ofw_compat_data compat_data[] = {
{"altr,socfpga-dw-mshc", HWTYPE_ALTERA},
{"samsung,exynos5420-dw-mshc", HWTYPE_EXYNOS},
{"rockchip,rk2928-dw-mshc", HWTYPE_ROCKCHIP},
{NULL, HWTYPE_NONE},
};
static void
dwmmc_get1paddr(void *arg, bus_dma_segment_t *segs, int nsegs, int error)
{
if (error != 0)
return;
*(bus_addr_t *)arg = segs[0].ds_addr;
}
static void
dwmmc_ring_setup(void *arg, bus_dma_segment_t *segs, int nsegs, int error)
{
struct dwmmc_softc *sc;
int idx;
if (error != 0)
return;
sc = arg;
dprintf("nsegs %d seg0len %lu\n", nsegs, segs[0].ds_len);
for (idx = 0; idx < nsegs; idx++) {
sc->desc_ring[idx].des0 = (DES0_OWN | DES0_DIC | DES0_CH);
sc->desc_ring[idx].des1 = segs[idx].ds_len;
sc->desc_ring[idx].des2 = segs[idx].ds_addr;
if (idx == 0)
sc->desc_ring[idx].des0 |= DES0_FS;
if (idx == (nsegs - 1)) {
sc->desc_ring[idx].des0 &= ~(DES0_DIC | DES0_CH);
sc->desc_ring[idx].des0 |= DES0_LD;
}
}
}
static int
dwmmc_ctrl_reset(struct dwmmc_softc *sc, int reset_bits)
{
int reg;
int i;
reg = READ4(sc, SDMMC_CTRL);
reg |= (reset_bits);
WRITE4(sc, SDMMC_CTRL, reg);
/* Wait reset done */
for (i = 0; i < 100; i++) {
if (!(READ4(sc, SDMMC_CTRL) & reset_bits))
return (0);
DELAY(10);
}
device_printf(sc->dev, "Reset failed\n");
return (1);
}
static int
dma_setup(struct dwmmc_softc *sc)
{
int error;
int nidx;
int idx;
/*
* Set up TX descriptor ring, descriptors, and dma maps.
*/
error = bus_dma_tag_create(
bus_get_dma_tag(sc->dev), /* Parent tag. */
4096, 0, /* alignment, boundary */
BUS_SPACE_MAXADDR_32BIT, /* lowaddr */
BUS_SPACE_MAXADDR, /* highaddr */
NULL, NULL, /* filter, filterarg */
DESC_SIZE, 1, /* maxsize, nsegments */
DESC_SIZE, /* maxsegsize */
0, /* flags */
NULL, NULL, /* lockfunc, lockarg */
&sc->desc_tag);
if (error != 0) {
device_printf(sc->dev,
"could not create ring DMA tag.\n");
return (1);
}
error = bus_dmamem_alloc(sc->desc_tag, (void**)&sc->desc_ring,
BUS_DMA_COHERENT | BUS_DMA_WAITOK | BUS_DMA_ZERO,
&sc->desc_map);
if (error != 0) {
device_printf(sc->dev,
"could not allocate descriptor ring.\n");
return (1);
}
error = bus_dmamap_load(sc->desc_tag, sc->desc_map,
sc->desc_ring, DESC_SIZE, dwmmc_get1paddr,
&sc->desc_ring_paddr, 0);
if (error != 0) {
device_printf(sc->dev,
"could not load descriptor ring map.\n");
return (1);
}
for (idx = 0; idx < sc->desc_count; idx++) {
sc->desc_ring[idx].des0 = DES0_CH;
sc->desc_ring[idx].des1 = 0;
nidx = (idx + 1) % sc->desc_count;
sc->desc_ring[idx].des3 = sc->desc_ring_paddr + \
(nidx * sizeof(struct idmac_desc));
}
error = bus_dma_tag_create(
bus_get_dma_tag(sc->dev), /* Parent tag. */
4096, 0, /* alignment, boundary */
BUS_SPACE_MAXADDR_32BIT, /* lowaddr */
BUS_SPACE_MAXADDR, /* highaddr */
NULL, NULL, /* filter, filterarg */
sc->desc_count * MMC_SECTOR_SIZE, /* maxsize */
sc->desc_count, /* nsegments */
MMC_SECTOR_SIZE, /* maxsegsize */
0, /* flags */
NULL, NULL, /* lockfunc, lockarg */
&sc->buf_tag);
if (error != 0) {
device_printf(sc->dev,
"could not create ring DMA tag.\n");
return (1);
}
error = bus_dmamap_create(sc->buf_tag, 0,
&sc->buf_map);
if (error != 0) {
device_printf(sc->dev,
"could not create TX buffer DMA map.\n");
return (1);
}
return (0);
}
static void
dwmmc_cmd_done(struct dwmmc_softc *sc)
{
struct mmc_command *cmd;
cmd = sc->curcmd;
if (cmd == NULL)
return;
if (cmd->flags & MMC_RSP_PRESENT) {
if (cmd->flags & MMC_RSP_136) {
cmd->resp[3] = READ4(sc, SDMMC_RESP0);
cmd->resp[2] = READ4(sc, SDMMC_RESP1);
cmd->resp[1] = READ4(sc, SDMMC_RESP2);
cmd->resp[0] = READ4(sc, SDMMC_RESP3);
} else {
cmd->resp[3] = 0;
cmd->resp[2] = 0;
cmd->resp[1] = 0;
cmd->resp[0] = READ4(sc, SDMMC_RESP0);
}
}
}
static void
dwmmc_tasklet(struct dwmmc_softc *sc)
{
struct mmc_command *cmd;
cmd = sc->curcmd;
if (cmd == NULL)
return;
if (!sc->cmd_done)
return;
if (cmd->error != MMC_ERR_NONE || !cmd->data) {
dwmmc_next_operation(sc);
} else if (cmd->data && sc->dto_rcvd) {
if ((cmd->opcode == MMC_WRITE_MULTIPLE_BLOCK ||
cmd->opcode == MMC_READ_MULTIPLE_BLOCK) &&
sc->use_auto_stop) {
if (sc->acd_rcvd)
dwmmc_next_operation(sc);
} else {
dwmmc_next_operation(sc);
}
}
}
static void
dwmmc_intr(void *arg)
{
struct mmc_command *cmd;
struct dwmmc_softc *sc;
uint32_t reg;
sc = arg;
DWMMC_LOCK(sc);
cmd = sc->curcmd;
/* First handle SDMMC controller interrupts */
reg = READ4(sc, SDMMC_MINTSTS);
if (reg) {
dprintf("%s 0x%08x\n", __func__, reg);
if (reg & DWMMC_CMD_ERR_FLAGS) {
WRITE4(sc, SDMMC_RINTSTS, DWMMC_CMD_ERR_FLAGS);
dprintf("cmd err 0x%08x cmd 0x%08x\n",
reg, cmd->opcode);
cmd->error = MMC_ERR_TIMEOUT;
}
if (reg & DWMMC_DATA_ERR_FLAGS) {
WRITE4(sc, SDMMC_RINTSTS, DWMMC_DATA_ERR_FLAGS);
dprintf("data err 0x%08x cmd 0x%08x\n",
reg, cmd->opcode);
cmd->error = MMC_ERR_FAILED;
if (!sc->use_pio) {
dma_done(sc, cmd);
dma_stop(sc);
}
}
if (reg & SDMMC_INTMASK_CMD_DONE) {
dwmmc_cmd_done(sc);
sc->cmd_done = 1;
WRITE4(sc, SDMMC_RINTSTS, SDMMC_INTMASK_CMD_DONE);
}
if (reg & SDMMC_INTMASK_ACD) {
sc->acd_rcvd = 1;
WRITE4(sc, SDMMC_RINTSTS, SDMMC_INTMASK_ACD);
}
if (reg & SDMMC_INTMASK_DTO) {
sc->dto_rcvd = 1;
WRITE4(sc, SDMMC_RINTSTS, SDMMC_INTMASK_DTO);
}
if (reg & SDMMC_INTMASK_CD) {
/* XXX: Handle card detect */
WRITE4(sc, SDMMC_RINTSTS, SDMMC_INTMASK_CD);
}
}
if (sc->use_pio) {
if (reg & (SDMMC_INTMASK_RXDR|SDMMC_INTMASK_DTO)) {
pio_read(sc, cmd);
}
if (reg & (SDMMC_INTMASK_TXDR|SDMMC_INTMASK_DTO)) {
pio_write(sc, cmd);
}
} else {
/* Now handle DMA interrupts */
reg = READ4(sc, SDMMC_IDSTS);
if (reg) {
dprintf("dma intr 0x%08x\n", reg);
if (reg & (SDMMC_IDINTEN_TI | SDMMC_IDINTEN_RI)) {
WRITE4(sc, SDMMC_IDSTS, (SDMMC_IDINTEN_TI |
SDMMC_IDINTEN_RI));
WRITE4(sc, SDMMC_IDSTS, SDMMC_IDINTEN_NI);
dma_done(sc, cmd);
}
}
}
dwmmc_tasklet(sc);
DWMMC_UNLOCK(sc);
}
static int
parse_fdt(struct dwmmc_softc *sc)
{
pcell_t dts_value[3];
phandle_t node;
int len;
if ((node = ofw_bus_get_node(sc->dev)) == -1)
return (ENXIO);
/* fifo-depth */
if ((len = OF_getproplen(node, "fifo-depth")) > 0) {
OF_getencprop(node, "fifo-depth", dts_value, len);
sc->fifo_depth = dts_value[0];
}
/* num-slots */
sc->num_slots = 1;
if ((len = OF_getproplen(node, "num-slots")) > 0) {
OF_getencprop(node, "num-slots", dts_value, len);
sc->num_slots = dts_value[0];
}
/*
* We need some platform-specific code to know
* what the clock is supplied for our device.
* For now rely on the value specified in FDT.
*/
if (sc->bus_hz == 0) {
if ((len = OF_getproplen(node, "bus-frequency")) <= 0)
return (ENXIO);
OF_getencprop(node, "bus-frequency", dts_value, len);
sc->bus_hz = dts_value[0];
}
/*
* Platform-specific stuff
* XXX: Move to separate file
*/
if ((sc->hwtype & HWTYPE_MASK) != HWTYPE_EXYNOS)
return (0);
if ((len = OF_getproplen(node, "samsung,dw-mshc-ciu-div")) <= 0)
return (ENXIO);
OF_getencprop(node, "samsung,dw-mshc-ciu-div", dts_value, len);
sc->sdr_timing = (dts_value[0] << SDMMC_CLKSEL_DIVIDER_SHIFT);
sc->ddr_timing = (dts_value[0] << SDMMC_CLKSEL_DIVIDER_SHIFT);
if ((len = OF_getproplen(node, "samsung,dw-mshc-sdr-timing")) <= 0)
return (ENXIO);
OF_getencprop(node, "samsung,dw-mshc-sdr-timing", dts_value, len);
sc->sdr_timing |= ((dts_value[0] << SDMMC_CLKSEL_SAMPLE_SHIFT) |
(dts_value[1] << SDMMC_CLKSEL_DRIVE_SHIFT));
if ((len = OF_getproplen(node, "samsung,dw-mshc-ddr-timing")) <= 0)
return (ENXIO);
OF_getencprop(node, "samsung,dw-mshc-ddr-timing", dts_value, len);
sc->ddr_timing |= ((dts_value[0] << SDMMC_CLKSEL_SAMPLE_SHIFT) |
(dts_value[1] << SDMMC_CLKSEL_DRIVE_SHIFT));
return (0);
}
static int
dwmmc_probe(device_t dev)
{
uintptr_t hwtype;
if (!ofw_bus_status_okay(dev))
return (ENXIO);
hwtype = ofw_bus_search_compatible(dev, compat_data)->ocd_data;
if (hwtype == HWTYPE_NONE)
return (ENXIO);
device_set_desc(dev, "Synopsys DesignWare Mobile "
"Storage Host Controller");
return (BUS_PROBE_DEFAULT);
}
int
dwmmc_attach(device_t dev)
{
struct dwmmc_softc *sc;
int error;
int slot;
sc = device_get_softc(dev);
sc->dev = dev;
if (sc->hwtype == HWTYPE_NONE) {
sc->hwtype =
ofw_bus_search_compatible(dev, compat_data)->ocd_data;
}
/* Why not to use Auto Stop? It save a hundred of irq per second */
sc->use_auto_stop = 1;
error = parse_fdt(sc);
if (error != 0) {
device_printf(dev, "Can't get FDT property.\n");
return (ENXIO);
}
DWMMC_LOCK_INIT(sc);
if (bus_alloc_resources(dev, dwmmc_spec, sc->res)) {
device_printf(dev, "could not allocate resources\n");
return (ENXIO);
}
/* Setup interrupt handler. */
error = bus_setup_intr(dev, sc->res[1], INTR_TYPE_NET | INTR_MPSAFE,
NULL, dwmmc_intr, sc, &sc->intr_cookie);
if (error != 0) {
device_printf(dev, "could not setup interrupt handler.\n");
return (ENXIO);
}
device_printf(dev, "Hardware version ID is %04x\n",
READ4(sc, SDMMC_VERID) & 0xffff);
if (sc->desc_count == 0)
sc->desc_count = DESC_MAX;
if ((sc->hwtype & HWTYPE_MASK) == HWTYPE_ROCKCHIP) {
sc->use_pio = 1;
sc->pwren_inverted = 1;
} else if ((sc->hwtype & HWTYPE_MASK) == HWTYPE_EXYNOS) {
WRITE4(sc, EMMCP_MPSBEGIN0, 0);
WRITE4(sc, EMMCP_SEND0, 0);
WRITE4(sc, EMMCP_CTRL0, (MPSCTRL_SECURE_READ_BIT |
MPSCTRL_SECURE_WRITE_BIT |
MPSCTRL_NON_SECURE_READ_BIT |
MPSCTRL_NON_SECURE_WRITE_BIT |
MPSCTRL_VALID));
}
/* XXX: we support operation for slot index 0 only */
slot = 0;
if (sc->pwren_inverted) {
WRITE4(sc, SDMMC_PWREN, (0 << slot));
} else {
WRITE4(sc, SDMMC_PWREN, (1 << slot));
}
/* Reset all */
if (dwmmc_ctrl_reset(sc, (SDMMC_CTRL_RESET |
SDMMC_CTRL_FIFO_RESET |
SDMMC_CTRL_DMA_RESET)))
return (ENXIO);
dwmmc_setup_bus(sc, sc->host.f_min);
if (sc->fifo_depth == 0) {
sc->fifo_depth = 1 +
((READ4(sc, SDMMC_FIFOTH) >> SDMMC_FIFOTH_RXWMARK_S) & 0xfff);
device_printf(dev, "No fifo-depth, using FIFOTH %x\n",
sc->fifo_depth);
}
if (!sc->use_pio) {
if (dma_setup(sc))
return (ENXIO);
/* Install desc base */
WRITE4(sc, SDMMC_DBADDR, sc->desc_ring_paddr);
/* Enable DMA interrupts */
WRITE4(sc, SDMMC_IDSTS, SDMMC_IDINTEN_MASK);
WRITE4(sc, SDMMC_IDINTEN, (SDMMC_IDINTEN_NI |
SDMMC_IDINTEN_RI |
SDMMC_IDINTEN_TI));
}
/* Clear and disable interrups for a while */
WRITE4(sc, SDMMC_RINTSTS, 0xffffffff);
WRITE4(sc, SDMMC_INTMASK, 0);
/* Maximum timeout */
WRITE4(sc, SDMMC_TMOUT, 0xffffffff);
/* Enable interrupts */
WRITE4(sc, SDMMC_RINTSTS, 0xffffffff);
WRITE4(sc, SDMMC_INTMASK, (SDMMC_INTMASK_CMD_DONE |
SDMMC_INTMASK_DTO |
SDMMC_INTMASK_ACD |
SDMMC_INTMASK_TXDR |
SDMMC_INTMASK_RXDR |
DWMMC_ERR_FLAGS |
SDMMC_INTMASK_CD));
WRITE4(sc, SDMMC_CTRL, SDMMC_CTRL_INT_ENABLE);
sc->host.f_min = 400000;
sc->host.f_max = min(200000000, sc->bus_hz);
sc->host.host_ocr = MMC_OCR_320_330 | MMC_OCR_330_340;
sc->host.caps = MMC_CAP_4_BIT_DATA;
device_add_child(dev, "mmc", -1);
return (bus_generic_attach(dev));
}
static int
dwmmc_setup_bus(struct dwmmc_softc *sc, int freq)
{
int tout;
int div;
if (freq == 0) {
WRITE4(sc, SDMMC_CLKENA, 0);
WRITE4(sc, SDMMC_CMD, (SDMMC_CMD_WAIT_PRVDATA |
SDMMC_CMD_UPD_CLK_ONLY | SDMMC_CMD_START));
tout = 1000;
do {
if (tout-- < 0) {
device_printf(sc->dev, "Failed update clk\n");
return (1);
}
} while (READ4(sc, SDMMC_CMD) & SDMMC_CMD_START);
return (0);
}
WRITE4(sc, SDMMC_CLKENA, 0);
WRITE4(sc, SDMMC_CLKSRC, 0);
div = (sc->bus_hz != freq) ? DIV_ROUND_UP(sc->bus_hz, 2 * freq) : 0;
WRITE4(sc, SDMMC_CLKDIV, div);
WRITE4(sc, SDMMC_CMD, (SDMMC_CMD_WAIT_PRVDATA |
SDMMC_CMD_UPD_CLK_ONLY | SDMMC_CMD_START));
tout = 1000;
do {
if (tout-- < 0) {
device_printf(sc->dev, "Failed to update clk");
return (1);
}
} while (READ4(sc, SDMMC_CMD) & SDMMC_CMD_START);
WRITE4(sc, SDMMC_CLKENA, (SDMMC_CLKENA_CCLK_EN | SDMMC_CLKENA_LP));
WRITE4(sc, SDMMC_CMD, SDMMC_CMD_WAIT_PRVDATA |
SDMMC_CMD_UPD_CLK_ONLY | SDMMC_CMD_START);
tout = 1000;
do {
if (tout-- < 0) {
device_printf(sc->dev, "Failed to enable clk\n");
return (1);
}
} while (READ4(sc, SDMMC_CMD) & SDMMC_CMD_START);
return (0);
}
static int
dwmmc_update_ios(device_t brdev, device_t reqdev)
{
struct dwmmc_softc *sc;
struct mmc_ios *ios;
sc = device_get_softc(brdev);
ios = &sc->host.ios;
dprintf("Setting up clk %u bus_width %d\n",
ios->clock, ios->bus_width);
dwmmc_setup_bus(sc, ios->clock);
if (ios->bus_width == bus_width_8)
WRITE4(sc, SDMMC_CTYPE, SDMMC_CTYPE_8BIT);
else if (ios->bus_width == bus_width_4)
WRITE4(sc, SDMMC_CTYPE, SDMMC_CTYPE_4BIT);
else
WRITE4(sc, SDMMC_CTYPE, 0);
if ((sc->hwtype & HWTYPE_MASK) == HWTYPE_EXYNOS) {
/* XXX: take care about DDR or SDR use here */
WRITE4(sc, SDMMC_CLKSEL, sc->sdr_timing);
}
/*
* XXX: take care about DDR bit
*
* reg = READ4(sc, SDMMC_UHS_REG);
* reg |= (SDMMC_UHS_REG_DDR);
* WRITE4(sc, SDMMC_UHS_REG, reg);
*/
return (0);
}
static int
dma_done(struct dwmmc_softc *sc, struct mmc_command *cmd)
{
struct mmc_data *data;
data = cmd->data;
if (data->flags & MMC_DATA_WRITE)
bus_dmamap_sync(sc->buf_tag, sc->buf_map,
BUS_DMASYNC_POSTWRITE);
else
bus_dmamap_sync(sc->buf_tag, sc->buf_map,
BUS_DMASYNC_POSTREAD);
+ bus_dmamap_sync(sc->desc_tag, sc->desc_map,
+ BUS_DMASYNC_POSTWRITE);
+
bus_dmamap_unload(sc->buf_tag, sc->buf_map);
return (0);
}
static int
dma_stop(struct dwmmc_softc *sc)
{
int reg;
reg = READ4(sc, SDMMC_CTRL);
reg &= ~(SDMMC_CTRL_USE_IDMAC);
reg |= (SDMMC_CTRL_DMA_RESET);
WRITE4(sc, SDMMC_CTRL, reg);
reg = READ4(sc, SDMMC_BMOD);
reg &= ~(SDMMC_BMOD_DE | SDMMC_BMOD_FB);
reg |= (SDMMC_BMOD_SWR);
WRITE4(sc, SDMMC_BMOD, reg);
return (0);
}
static int
dma_prepare(struct dwmmc_softc *sc, struct mmc_command *cmd)
{
struct mmc_data *data;
int len;
int err;
int reg;
data = cmd->data;
len = data->len;
reg = READ4(sc, SDMMC_INTMASK);
reg &= ~(SDMMC_INTMASK_TXDR | SDMMC_INTMASK_RXDR);
WRITE4(sc, SDMMC_INTMASK, reg);
err = bus_dmamap_load(sc->buf_tag, sc->buf_map,
data->data, data->len, dwmmc_ring_setup,
sc, BUS_DMA_NOWAIT);
if (err != 0)
panic("dmamap_load failed\n");
+
+ /* Ensure the device can see the desc */
+ bus_dmamap_sync(sc->desc_tag, sc->desc_map,
+ BUS_DMASYNC_PREWRITE);
if (data->flags & MMC_DATA_WRITE)
bus_dmamap_sync(sc->buf_tag, sc->buf_map,
BUS_DMASYNC_PREWRITE);
else
bus_dmamap_sync(sc->buf_tag, sc->buf_map,
BUS_DMASYNC_PREREAD);
reg = (DEF_MSIZE << SDMMC_FIFOTH_MSIZE_S);
reg |= ((sc->fifo_depth / 2) - 1) << SDMMC_FIFOTH_RXWMARK_S;
reg |= (sc->fifo_depth / 2) << SDMMC_FIFOTH_TXWMARK_S;
WRITE4(sc, SDMMC_FIFOTH, reg);
wmb();
reg = READ4(sc, SDMMC_CTRL);
reg |= (SDMMC_CTRL_USE_IDMAC | SDMMC_CTRL_DMA_ENABLE);
WRITE4(sc, SDMMC_CTRL, reg);
wmb();
reg = READ4(sc, SDMMC_BMOD);
reg |= (SDMMC_BMOD_DE | SDMMC_BMOD_FB);
WRITE4(sc, SDMMC_BMOD, reg);
/* Start */
WRITE4(sc, SDMMC_PLDMND, 1);
return (0);
}
static int
pio_prepare(struct dwmmc_softc *sc, struct mmc_command *cmd)
{
struct mmc_data *data;
int reg;
data = cmd->data;
data->xfer_len = 0;
reg = (DEF_MSIZE << SDMMC_FIFOTH_MSIZE_S);
reg |= ((sc->fifo_depth / 2) - 1) << SDMMC_FIFOTH_RXWMARK_S;
reg |= (sc->fifo_depth / 2) << SDMMC_FIFOTH_TXWMARK_S;
WRITE4(sc, SDMMC_FIFOTH, reg);
wmb();
return (0);
}
static void
pio_read(struct dwmmc_softc *sc, struct mmc_command *cmd)
{
struct mmc_data *data;
uint32_t *p, status;
if (cmd == NULL || cmd->data == NULL)
return;
data = cmd->data;
if ((data->flags & MMC_DATA_READ) == 0)
return;
KASSERT((data->xfer_len & 3) == 0, ("xfer_len not aligned"));
p = (uint32_t *)data->data + (data->xfer_len >> 2);
while (data->xfer_len < data->len) {
status = READ4(sc, SDMMC_STATUS);
if (status & SDMMC_STATUS_FIFO_EMPTY)
break;
*p++ = READ4(sc, SDMMC_DATA);
data->xfer_len += 4;
}
WRITE4(sc, SDMMC_RINTSTS, SDMMC_INTMASK_RXDR);
}
static void
pio_write(struct dwmmc_softc *sc, struct mmc_command *cmd)
{
struct mmc_data *data;
uint32_t *p, status;
if (cmd == NULL || cmd->data == NULL)
return;
data = cmd->data;
if ((data->flags & MMC_DATA_WRITE) == 0)
return;
KASSERT((data->xfer_len & 3) == 0, ("xfer_len not aligned"));
p = (uint32_t *)data->data + (data->xfer_len >> 2);
while (data->xfer_len < data->len) {
status = READ4(sc, SDMMC_STATUS);
if (status & SDMMC_STATUS_FIFO_FULL)
break;
WRITE4(sc, SDMMC_DATA, *p++);
data->xfer_len += 4;
}
WRITE4(sc, SDMMC_RINTSTS, SDMMC_INTMASK_TXDR);
}
static void
dwmmc_start_cmd(struct dwmmc_softc *sc, struct mmc_command *cmd)
{
struct mmc_data *data;
uint32_t blksz;
uint32_t cmdr;
sc->curcmd = cmd;
data = cmd->data;
if ((sc->hwtype & HWTYPE_MASK) == HWTYPE_ROCKCHIP)
dwmmc_setup_bus(sc, sc->host.ios.clock);
/* XXX Upper layers don't always set this */
cmd->mrq = sc->req;
/* Begin setting up command register. */
cmdr = cmd->opcode;
dprintf("cmd->opcode 0x%08x\n", cmd->opcode);
if (cmd->opcode == MMC_STOP_TRANSMISSION ||
cmd->opcode == MMC_GO_IDLE_STATE ||
cmd->opcode == MMC_GO_INACTIVE_STATE)
cmdr |= SDMMC_CMD_STOP_ABORT;
else if (cmd->opcode != MMC_SEND_STATUS && data)
cmdr |= SDMMC_CMD_WAIT_PRVDATA;
/* Set up response handling. */
if (MMC_RSP(cmd->flags) != MMC_RSP_NONE) {
cmdr |= SDMMC_CMD_RESP_EXP;
if (cmd->flags & MMC_RSP_136)
cmdr |= SDMMC_CMD_RESP_LONG;
}
if (cmd->flags & MMC_RSP_CRC)
cmdr |= SDMMC_CMD_RESP_CRC;
/*
* XXX: Not all platforms want this.
*/
cmdr |= SDMMC_CMD_USE_HOLD_REG;
if ((sc->flags & CARD_INIT_DONE) == 0) {
sc->flags |= (CARD_INIT_DONE);
cmdr |= SDMMC_CMD_SEND_INIT;
}
if (data) {
if ((cmd->opcode == MMC_WRITE_MULTIPLE_BLOCK ||
cmd->opcode == MMC_READ_MULTIPLE_BLOCK) &&
sc->use_auto_stop)
cmdr |= SDMMC_CMD_SEND_ASTOP;
cmdr |= SDMMC_CMD_DATA_EXP;
if (data->flags & MMC_DATA_STREAM)
cmdr |= SDMMC_CMD_MODE_STREAM;
if (data->flags & MMC_DATA_WRITE)
cmdr |= SDMMC_CMD_DATA_WRITE;
WRITE4(sc, SDMMC_TMOUT, 0xffffffff);
WRITE4(sc, SDMMC_BYTCNT, data->len);
blksz = (data->len < MMC_SECTOR_SIZE) ? \
data->len : MMC_SECTOR_SIZE;
WRITE4(sc, SDMMC_BLKSIZ, blksz);
if (sc->use_pio) {
pio_prepare(sc, cmd);
} else {
dma_prepare(sc, cmd);
}
wmb();
}
dprintf("cmdr 0x%08x\n", cmdr);
WRITE4(sc, SDMMC_CMDARG, cmd->arg);
wmb();
WRITE4(sc, SDMMC_CMD, cmdr | SDMMC_CMD_START);
};
static void
dwmmc_next_operation(struct dwmmc_softc *sc)
{
struct mmc_request *req;
req = sc->req;
if (req == NULL)
return;
sc->acd_rcvd = 0;
sc->dto_rcvd = 0;
sc->cmd_done = 0;
/*
* XXX: Wait until card is still busy.
* We do need this to prevent data timeouts,
* mostly caused by multi-block write command
* followed by single-read.
*/
while(READ4(sc, SDMMC_STATUS) & (SDMMC_STATUS_DATA_BUSY))
continue;
if (sc->flags & PENDING_CMD) {
sc->flags &= ~PENDING_CMD;
dwmmc_start_cmd(sc, req->cmd);
return;
} else if (sc->flags & PENDING_STOP && !sc->use_auto_stop) {
sc->flags &= ~PENDING_STOP;
dwmmc_start_cmd(sc, req->stop);
return;
}
sc->req = NULL;
sc->curcmd = NULL;
req->done(req);
}
static int
dwmmc_request(device_t brdev, device_t reqdev, struct mmc_request *req)
{
struct dwmmc_softc *sc;
sc = device_get_softc(brdev);
dprintf("%s\n", __func__);
DWMMC_LOCK(sc);
if (sc->req != NULL) {
DWMMC_UNLOCK(sc);
return (EBUSY);
}
sc->req = req;
sc->flags |= PENDING_CMD;
if (sc->req->stop)
sc->flags |= PENDING_STOP;
dwmmc_next_operation(sc);
DWMMC_UNLOCK(sc);
return (0);
}
static int
dwmmc_get_ro(device_t brdev, device_t reqdev)
{
dprintf("%s\n", __func__);
return (0);
}
static int
dwmmc_acquire_host(device_t brdev, device_t reqdev)
{
struct dwmmc_softc *sc;
sc = device_get_softc(brdev);
DWMMC_LOCK(sc);
while (sc->bus_busy)
msleep(sc, &sc->sc_mtx, PZERO, "dwmmcah", hz / 5);
sc->bus_busy++;
DWMMC_UNLOCK(sc);
return (0);
}
static int
dwmmc_release_host(device_t brdev, device_t reqdev)
{
struct dwmmc_softc *sc;
sc = device_get_softc(brdev);
DWMMC_LOCK(sc);
sc->bus_busy--;
wakeup(sc);
DWMMC_UNLOCK(sc);
return (0);
}
static int
dwmmc_read_ivar(device_t bus, device_t child, int which, uintptr_t *result)
{
struct dwmmc_softc *sc;
sc = device_get_softc(bus);
switch (which) {
default:
return (EINVAL);
case MMCBR_IVAR_BUS_MODE:
*(int *)result = sc->host.ios.bus_mode;
break;
case MMCBR_IVAR_BUS_WIDTH:
*(int *)result = sc->host.ios.bus_width;
break;
case MMCBR_IVAR_CHIP_SELECT:
*(int *)result = sc->host.ios.chip_select;
break;
case MMCBR_IVAR_CLOCK:
*(int *)result = sc->host.ios.clock;
break;
case MMCBR_IVAR_F_MIN:
*(int *)result = sc->host.f_min;
break;
case MMCBR_IVAR_F_MAX:
*(int *)result = sc->host.f_max;
break;
case MMCBR_IVAR_HOST_OCR:
*(int *)result = sc->host.host_ocr;
break;
case MMCBR_IVAR_MODE:
*(int *)result = sc->host.mode;
break;
case MMCBR_IVAR_OCR:
*(int *)result = sc->host.ocr;
break;
case MMCBR_IVAR_POWER_MODE:
*(int *)result = sc->host.ios.power_mode;
break;
case MMCBR_IVAR_VDD:
*(int *)result = sc->host.ios.vdd;
break;
case MMCBR_IVAR_CAPS:
sc->host.caps |= MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA;
*(int *)result = sc->host.caps;
break;
case MMCBR_IVAR_MAX_DATA:
*(int *)result = sc->desc_count;
}
return (0);
}
static int
dwmmc_write_ivar(device_t bus, device_t child, int which, uintptr_t value)
{
struct dwmmc_softc *sc;
sc = device_get_softc(bus);
switch (which) {
default:
return (EINVAL);
case MMCBR_IVAR_BUS_MODE:
sc->host.ios.bus_mode = value;
break;
case MMCBR_IVAR_BUS_WIDTH:
sc->host.ios.bus_width = value;
break;
case MMCBR_IVAR_CHIP_SELECT:
sc->host.ios.chip_select = value;
break;
case MMCBR_IVAR_CLOCK:
sc->host.ios.clock = value;
break;
case MMCBR_IVAR_MODE:
sc->host.mode = value;
break;
case MMCBR_IVAR_OCR:
sc->host.ocr = value;
break;
case MMCBR_IVAR_POWER_MODE:
sc->host.ios.power_mode = value;
break;
case MMCBR_IVAR_VDD:
sc->host.ios.vdd = value;
break;
/* These are read-only */
case MMCBR_IVAR_CAPS:
case MMCBR_IVAR_HOST_OCR:
case MMCBR_IVAR_F_MIN:
case MMCBR_IVAR_F_MAX:
case MMCBR_IVAR_MAX_DATA:
return (EINVAL);
}
return (0);
}
static device_method_t dwmmc_methods[] = {
DEVMETHOD(device_probe, dwmmc_probe),
DEVMETHOD(device_attach, dwmmc_attach),
/* Bus interface */
DEVMETHOD(bus_read_ivar, dwmmc_read_ivar),
DEVMETHOD(bus_write_ivar, dwmmc_write_ivar),
/* mmcbr_if */
DEVMETHOD(mmcbr_update_ios, dwmmc_update_ios),
DEVMETHOD(mmcbr_request, dwmmc_request),
DEVMETHOD(mmcbr_get_ro, dwmmc_get_ro),
DEVMETHOD(mmcbr_acquire_host, dwmmc_acquire_host),
DEVMETHOD(mmcbr_release_host, dwmmc_release_host),
DEVMETHOD_END
};
driver_t dwmmc_driver = {
"dwmmc",
dwmmc_methods,
sizeof(struct dwmmc_softc),
};
static devclass_t dwmmc_devclass;
DRIVER_MODULE(dwmmc, simplebus, dwmmc_driver, dwmmc_devclass, 0, 0);
DRIVER_MODULE(dwmmc, ofwbus, dwmmc_driver, dwmmc_devclass, 0, 0);
DRIVER_MODULE(mmc, dwmmc, mmc_driver, mmc_devclass, NULL, NULL);
MODULE_DEPEND(dwmmc, mmc, 1, 1, 1);
Index: user/ngie/bsnmp_cleanup/sys/dev/mrsas/mrsas.c
===================================================================
--- user/ngie/bsnmp_cleanup/sys/dev/mrsas/mrsas.c (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/dev/mrsas/mrsas.c (revision 299697)
@@ -1,4149 +1,4493 @@
/*
* Copyright (c) 2015, AVAGO Tech. All rights reserved. Author: Marian Choy
* Copyright (c) 2014, LSI Corp. All rights reserved. Author: Marian Choy
* Support: freebsdraid@avagotech.com
*
* 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. 3. Neither the name of the
* <ORGANIZATION> nor the names of its contributors may be used to endorse or
* promote products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are
* those of the authors and should not be interpreted as representing
* official policies,either expressed or implied, of the FreeBSD Project.
*
* Send feedback to: <megaraidfbsd@avagotech.com> Mail to: AVAGO TECHNOLOGIES 1621
* Barber Lane, Milpitas, CA 95035 ATTN: MegaRaid FreeBSD
*
*/
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
#include <dev/mrsas/mrsas.h>
#include <dev/mrsas/mrsas_ioctl.h>
#include <cam/cam.h>
#include <cam/cam_ccb.h>
#include <sys/sysctl.h>
#include <sys/types.h>
+#include <sys/sysent.h>
#include <sys/kthread.h>
#include <sys/taskqueue.h>
#include <sys/smp.h>
/*
* Function prototypes
*/
static d_open_t mrsas_open;
static d_close_t mrsas_close;
static d_read_t mrsas_read;
static d_write_t mrsas_write;
static d_ioctl_t mrsas_ioctl;
static d_poll_t mrsas_poll;
+static void mrsas_ich_startup(void *arg);
static struct mrsas_mgmt_info mrsas_mgmt_info;
static struct mrsas_ident *mrsas_find_ident(device_t);
static int mrsas_setup_msix(struct mrsas_softc *sc);
static int mrsas_allocate_msix(struct mrsas_softc *sc);
static void mrsas_shutdown_ctlr(struct mrsas_softc *sc, u_int32_t opcode);
static void mrsas_flush_cache(struct mrsas_softc *sc);
static void mrsas_reset_reply_desc(struct mrsas_softc *sc);
static void mrsas_ocr_thread(void *arg);
static int mrsas_get_map_info(struct mrsas_softc *sc);
static int mrsas_get_ld_map_info(struct mrsas_softc *sc);
static int mrsas_sync_map_info(struct mrsas_softc *sc);
static int mrsas_get_pd_list(struct mrsas_softc *sc);
static int mrsas_get_ld_list(struct mrsas_softc *sc);
static int mrsas_setup_irq(struct mrsas_softc *sc);
static int mrsas_alloc_mem(struct mrsas_softc *sc);
static int mrsas_init_fw(struct mrsas_softc *sc);
static int mrsas_setup_raidmap(struct mrsas_softc *sc);
-static int mrsas_complete_cmd(struct mrsas_softc *sc, u_int32_t MSIxIndex);
+static void megasas_setup_jbod_map(struct mrsas_softc *sc);
+static int megasas_sync_pd_seq_num(struct mrsas_softc *sc, boolean_t pend);
static int mrsas_clear_intr(struct mrsas_softc *sc);
static int mrsas_get_ctrl_info(struct mrsas_softc *sc);
static void mrsas_update_ext_vd_details(struct mrsas_softc *sc);
static int
mrsas_issue_blocked_abort_cmd(struct mrsas_softc *sc,
struct mrsas_mfi_cmd *cmd_to_abort);
static struct mrsas_softc *
mrsas_get_softc_instance(struct cdev *dev,
u_long cmd, caddr_t arg);
u_int32_t mrsas_read_reg(struct mrsas_softc *sc, int offset);
u_int8_t
mrsas_build_mptmfi_passthru(struct mrsas_softc *sc,
struct mrsas_mfi_cmd *mfi_cmd);
void mrsas_complete_outstanding_ioctls(struct mrsas_softc *sc);
int mrsas_transition_to_ready(struct mrsas_softc *sc, int ocr);
int mrsas_init_adapter(struct mrsas_softc *sc);
int mrsas_alloc_mpt_cmds(struct mrsas_softc *sc);
int mrsas_alloc_ioc_cmd(struct mrsas_softc *sc);
int mrsas_alloc_ctlr_info_cmd(struct mrsas_softc *sc);
int mrsas_ioc_init(struct mrsas_softc *sc);
int mrsas_bus_scan(struct mrsas_softc *sc);
int mrsas_issue_dcmd(struct mrsas_softc *sc, struct mrsas_mfi_cmd *cmd);
int mrsas_issue_polled(struct mrsas_softc *sc, struct mrsas_mfi_cmd *cmd);
-int mrsas_reset_ctrl(struct mrsas_softc *sc);
-int mrsas_wait_for_outstanding(struct mrsas_softc *sc);
+int mrsas_reset_ctrl(struct mrsas_softc *sc, u_int8_t reset_reason);
+int mrsas_wait_for_outstanding(struct mrsas_softc *sc, u_int8_t check_reason);
+int mrsas_complete_cmd(struct mrsas_softc *sc, u_int32_t MSIxIndex);
int
mrsas_issue_blocked_cmd(struct mrsas_softc *sc,
struct mrsas_mfi_cmd *cmd);
int
mrsas_alloc_tmp_dcmd(struct mrsas_softc *sc, struct mrsas_tmp_dcmd *tcmd,
int size);
void mrsas_release_mfi_cmd(struct mrsas_mfi_cmd *cmd);
void mrsas_wakeup(struct mrsas_softc *sc, struct mrsas_mfi_cmd *cmd);
void mrsas_complete_aen(struct mrsas_softc *sc, struct mrsas_mfi_cmd *cmd);
void mrsas_complete_abort(struct mrsas_softc *sc, struct mrsas_mfi_cmd *cmd);
void mrsas_disable_intr(struct mrsas_softc *sc);
void mrsas_enable_intr(struct mrsas_softc *sc);
void mrsas_free_ioc_cmd(struct mrsas_softc *sc);
void mrsas_free_mem(struct mrsas_softc *sc);
void mrsas_free_tmp_dcmd(struct mrsas_tmp_dcmd *tmp);
void mrsas_isr(void *arg);
void mrsas_teardown_intr(struct mrsas_softc *sc);
void mrsas_addr_cb(void *arg, bus_dma_segment_t *segs, int nsegs, int error);
void mrsas_kill_hba(struct mrsas_softc *sc);
void mrsas_aen_handler(struct mrsas_softc *sc);
void
mrsas_write_reg(struct mrsas_softc *sc, int offset,
u_int32_t value);
void
mrsas_fire_cmd(struct mrsas_softc *sc, u_int32_t req_desc_lo,
u_int32_t req_desc_hi);
void mrsas_free_ctlr_info_cmd(struct mrsas_softc *sc);
void
mrsas_complete_mptmfi_passthru(struct mrsas_softc *sc,
struct mrsas_mfi_cmd *cmd, u_int8_t status);
void
mrsas_map_mpt_cmd_status(struct mrsas_mpt_cmd *cmd, u_int8_t status,
u_int8_t extStatus);
struct mrsas_mfi_cmd *mrsas_get_mfi_cmd(struct mrsas_softc *sc);
MRSAS_REQUEST_DESCRIPTOR_UNION *mrsas_build_mpt_cmd
(struct mrsas_softc *sc, struct mrsas_mfi_cmd *cmd);
extern int mrsas_cam_attach(struct mrsas_softc *sc);
extern void mrsas_cam_detach(struct mrsas_softc *sc);
extern void mrsas_cmd_done(struct mrsas_softc *sc, struct mrsas_mpt_cmd *cmd);
extern void mrsas_free_frame(struct mrsas_softc *sc, struct mrsas_mfi_cmd *cmd);
extern int mrsas_alloc_mfi_cmds(struct mrsas_softc *sc);
extern void mrsas_release_mpt_cmd(struct mrsas_mpt_cmd *cmd);
extern struct mrsas_mpt_cmd *mrsas_get_mpt_cmd(struct mrsas_softc *sc);
extern int mrsas_passthru(struct mrsas_softc *sc, void *arg, u_long ioctlCmd);
extern uint8_t MR_ValidateMapInfo(struct mrsas_softc *sc);
extern u_int16_t MR_GetLDTgtId(u_int32_t ld, MR_DRV_RAID_MAP_ALL * map);
extern MR_LD_RAID *MR_LdRaidGet(u_int32_t ld, MR_DRV_RAID_MAP_ALL * map);
extern void mrsas_xpt_freeze(struct mrsas_softc *sc);
extern void mrsas_xpt_release(struct mrsas_softc *sc);
extern MRSAS_REQUEST_DESCRIPTOR_UNION *
mrsas_get_request_desc(struct mrsas_softc *sc,
u_int16_t index);
extern int mrsas_bus_scan_sim(struct mrsas_softc *sc, struct cam_sim *sim);
static int mrsas_alloc_evt_log_info_cmd(struct mrsas_softc *sc);
static void mrsas_free_evt_log_info_cmd(struct mrsas_softc *sc);
SYSCTL_NODE(_hw, OID_AUTO, mrsas, CTLFLAG_RD, 0, "MRSAS Driver Parameters");
/*
* PCI device struct and table
*
*/
typedef struct mrsas_ident {
uint16_t vendor;
uint16_t device;
uint16_t subvendor;
uint16_t subdevice;
const char *desc;
} MRSAS_CTLR_ID;
MRSAS_CTLR_ID device_table[] = {
{0x1000, MRSAS_TBOLT, 0xffff, 0xffff, "AVAGO Thunderbolt SAS Controller"},
{0x1000, MRSAS_INVADER, 0xffff, 0xffff, "AVAGO Invader SAS Controller"},
{0x1000, MRSAS_FURY, 0xffff, 0xffff, "AVAGO Fury SAS Controller"},
+ {0x1000, MRSAS_INTRUDER, 0xffff, 0xffff, "AVAGO Intruder SAS Controller"},
+ {0x1000, MRSAS_INTRUDER_24, 0xffff, 0xffff, "AVAGO Intruder_24 SAS Controller"},
{0, 0, 0, 0, NULL}
};
/*
* Character device entry points
*
*/
static struct cdevsw mrsas_cdevsw = {
.d_version = D_VERSION,
.d_open = mrsas_open,
.d_close = mrsas_close,
.d_read = mrsas_read,
.d_write = mrsas_write,
.d_ioctl = mrsas_ioctl,
.d_poll = mrsas_poll,
.d_name = "mrsas",
};
MALLOC_DEFINE(M_MRSAS, "mrsasbuf", "Buffers for the MRSAS driver");
/*
* In the cdevsw routines, we find our softc by using the si_drv1 member of
* struct cdev. We set this variable to point to our softc in our attach
* routine when we create the /dev entry.
*/
int
mrsas_open(struct cdev *dev, int oflags, int devtype, struct thread *td)
{
struct mrsas_softc *sc;
sc = dev->si_drv1;
return (0);
}
int
mrsas_close(struct cdev *dev, int fflag, int devtype, struct thread *td)
{
struct mrsas_softc *sc;
sc = dev->si_drv1;
return (0);
}
int
mrsas_read(struct cdev *dev, struct uio *uio, int ioflag)
{
struct mrsas_softc *sc;
sc = dev->si_drv1;
return (0);
}
int
mrsas_write(struct cdev *dev, struct uio *uio, int ioflag)
{
struct mrsas_softc *sc;
sc = dev->si_drv1;
return (0);
}
/*
* Register Read/Write Functions
*
*/
void
mrsas_write_reg(struct mrsas_softc *sc, int offset,
u_int32_t value)
{
bus_space_tag_t bus_tag = sc->bus_tag;
bus_space_handle_t bus_handle = sc->bus_handle;
bus_space_write_4(bus_tag, bus_handle, offset, value);
}
u_int32_t
mrsas_read_reg(struct mrsas_softc *sc, int offset)
{
bus_space_tag_t bus_tag = sc->bus_tag;
bus_space_handle_t bus_handle = sc->bus_handle;
return ((u_int32_t)bus_space_read_4(bus_tag, bus_handle, offset));
}
/*
* Interrupt Disable/Enable/Clear Functions
*
*/
void
mrsas_disable_intr(struct mrsas_softc *sc)
{
u_int32_t mask = 0xFFFFFFFF;
u_int32_t status;
sc->mask_interrupts = 1;
mrsas_write_reg(sc, offsetof(mrsas_reg_set, outbound_intr_mask), mask);
/* Dummy read to force pci flush */
status = mrsas_read_reg(sc, offsetof(mrsas_reg_set, outbound_intr_mask));
}
void
mrsas_enable_intr(struct mrsas_softc *sc)
{
u_int32_t mask = MFI_FUSION_ENABLE_INTERRUPT_MASK;
u_int32_t status;
sc->mask_interrupts = 0;
mrsas_write_reg(sc, offsetof(mrsas_reg_set, outbound_intr_status), ~0);
status = mrsas_read_reg(sc, offsetof(mrsas_reg_set, outbound_intr_status));
mrsas_write_reg(sc, offsetof(mrsas_reg_set, outbound_intr_mask), ~mask);
status = mrsas_read_reg(sc, offsetof(mrsas_reg_set, outbound_intr_mask));
}
static int
mrsas_clear_intr(struct mrsas_softc *sc)
{
u_int32_t status, fw_status, fw_state;
/* Read received interrupt */
status = mrsas_read_reg(sc, offsetof(mrsas_reg_set, outbound_intr_status));
/*
* If FW state change interrupt is received, write to it again to
* clear
*/
if (status & MRSAS_FW_STATE_CHNG_INTERRUPT) {
fw_status = mrsas_read_reg(sc, offsetof(mrsas_reg_set,
outbound_scratch_pad));
fw_state = fw_status & MFI_STATE_MASK;
if (fw_state == MFI_STATE_FAULT) {
device_printf(sc->mrsas_dev, "FW is in FAULT state!\n");
if (sc->ocr_thread_active)
wakeup(&sc->ocr_chan);
}
mrsas_write_reg(sc, offsetof(mrsas_reg_set, outbound_intr_status), status);
mrsas_read_reg(sc, offsetof(mrsas_reg_set, outbound_intr_status));
return (1);
}
/* Not our interrupt, so just return */
if (!(status & MFI_FUSION_ENABLE_INTERRUPT_MASK))
return (0);
/* We got a reply interrupt */
return (1);
}
/*
* PCI Support Functions
*
*/
static struct mrsas_ident *
mrsas_find_ident(device_t dev)
{
struct mrsas_ident *pci_device;
for (pci_device = device_table; pci_device->vendor != 0; pci_device++) {
if ((pci_device->vendor == pci_get_vendor(dev)) &&
(pci_device->device == pci_get_device(dev)) &&
((pci_device->subvendor == pci_get_subvendor(dev)) ||
(pci_device->subvendor == 0xffff)) &&
((pci_device->subdevice == pci_get_subdevice(dev)) ||
(pci_device->subdevice == 0xffff)))
return (pci_device);
}
return (NULL);
}
static int
mrsas_probe(device_t dev)
{
static u_int8_t first_ctrl = 1;
struct mrsas_ident *id;
if ((id = mrsas_find_ident(dev)) != NULL) {
if (first_ctrl) {
printf("AVAGO MegaRAID SAS FreeBSD mrsas driver version: %s\n",
MRSAS_VERSION);
first_ctrl = 0;
}
device_set_desc(dev, id->desc);
/* between BUS_PROBE_DEFAULT and BUS_PROBE_LOW_PRIORITY */
return (-30);
}
return (ENXIO);
}
/*
* mrsas_setup_sysctl: setup sysctl values for mrsas
* input: Adapter instance soft state
*
* Setup sysctl entries for mrsas driver.
*/
static void
mrsas_setup_sysctl(struct mrsas_softc *sc)
{
struct sysctl_ctx_list *sysctl_ctx = NULL;
struct sysctl_oid *sysctl_tree = NULL;
char tmpstr[80], tmpstr2[80];
/*
* Setup the sysctl variable so the user can change the debug level
* on the fly.
*/
snprintf(tmpstr, sizeof(tmpstr), "MRSAS controller %d",
device_get_unit(sc->mrsas_dev));
snprintf(tmpstr2, sizeof(tmpstr2), "%d", device_get_unit(sc->mrsas_dev));
sysctl_ctx = device_get_sysctl_ctx(sc->mrsas_dev);
if (sysctl_ctx != NULL)
sysctl_tree = device_get_sysctl_tree(sc->mrsas_dev);
if (sysctl_tree == NULL) {
sysctl_ctx_init(&sc->sysctl_ctx);
sc->sysctl_tree = SYSCTL_ADD_NODE(&sc->sysctl_ctx,
SYSCTL_STATIC_CHILDREN(_hw_mrsas), OID_AUTO, tmpstr2,
CTLFLAG_RD, 0, tmpstr);
if (sc->sysctl_tree == NULL)
return;
sysctl_ctx = &sc->sysctl_ctx;
sysctl_tree = sc->sysctl_tree;
}
SYSCTL_ADD_UINT(sysctl_ctx, SYSCTL_CHILDREN(sysctl_tree),
OID_AUTO, "disable_ocr", CTLFLAG_RW, &sc->disableOnlineCtrlReset, 0,
"Disable the use of OCR");
SYSCTL_ADD_STRING(sysctl_ctx, SYSCTL_CHILDREN(sysctl_tree),
OID_AUTO, "driver_version", CTLFLAG_RD, MRSAS_VERSION,
strlen(MRSAS_VERSION), "driver version");
SYSCTL_ADD_INT(sysctl_ctx, SYSCTL_CHILDREN(sysctl_tree),
OID_AUTO, "reset_count", CTLFLAG_RD,
&sc->reset_count, 0, "number of ocr from start of the day");
SYSCTL_ADD_INT(sysctl_ctx, SYSCTL_CHILDREN(sysctl_tree),
OID_AUTO, "fw_outstanding", CTLFLAG_RD,
&sc->fw_outstanding.val_rdonly, 0, "FW outstanding commands");
SYSCTL_ADD_INT(sysctl_ctx, SYSCTL_CHILDREN(sysctl_tree),
OID_AUTO, "io_cmds_highwater", CTLFLAG_RD,
&sc->io_cmds_highwater, 0, "Max FW outstanding commands");
SYSCTL_ADD_UINT(sysctl_ctx, SYSCTL_CHILDREN(sysctl_tree),
OID_AUTO, "mrsas_debug", CTLFLAG_RW, &sc->mrsas_debug, 0,
"Driver debug level");
SYSCTL_ADD_UINT(sysctl_ctx, SYSCTL_CHILDREN(sysctl_tree),
OID_AUTO, "mrsas_io_timeout", CTLFLAG_RW, &sc->mrsas_io_timeout,
0, "Driver IO timeout value in mili-second.");
SYSCTL_ADD_UINT(sysctl_ctx, SYSCTL_CHILDREN(sysctl_tree),
OID_AUTO, "mrsas_fw_fault_check_delay", CTLFLAG_RW,
&sc->mrsas_fw_fault_check_delay,
0, "FW fault check thread delay in seconds. <default is 1 sec>");
SYSCTL_ADD_INT(sysctl_ctx, SYSCTL_CHILDREN(sysctl_tree),
OID_AUTO, "reset_in_progress", CTLFLAG_RD,
&sc->reset_in_progress, 0, "ocr in progress status");
}
/*
* mrsas_get_tunables: get tunable parameters.
* input: Adapter instance soft state
*
* Get tunable parameters. This will help to debug driver at boot time.
*/
static void
mrsas_get_tunables(struct mrsas_softc *sc)
{
char tmpstr[80];
/* XXX default to some debugging for now */
sc->mrsas_debug = MRSAS_FAULT;
sc->mrsas_io_timeout = MRSAS_IO_TIMEOUT;
sc->mrsas_fw_fault_check_delay = 1;
sc->reset_count = 0;
sc->reset_in_progress = 0;
/*
* Grab the global variables.
*/
TUNABLE_INT_FETCH("hw.mrsas.debug_level", &sc->mrsas_debug);
/*
* Grab the global variables.
*/
TUNABLE_INT_FETCH("hw.mrsas.lb_pending_cmds", &sc->lb_pending_cmds);
/* Grab the unit-instance variables */
snprintf(tmpstr, sizeof(tmpstr), "dev.mrsas.%d.debug_level",
device_get_unit(sc->mrsas_dev));
TUNABLE_INT_FETCH(tmpstr, &sc->mrsas_debug);
}
/*
* mrsas_alloc_evt_log_info cmd: Allocates memory to get event log information.
* Used to get sequence number at driver load time.
* input: Adapter soft state
*
* Allocates DMAable memory for the event log info internal command.
*/
int
mrsas_alloc_evt_log_info_cmd(struct mrsas_softc *sc)
{
int el_info_size;
/* Allocate get event log info command */
el_info_size = sizeof(struct mrsas_evt_log_info);
if (bus_dma_tag_create(sc->mrsas_parent_tag,
1, 0,
BUS_SPACE_MAXADDR_32BIT,
BUS_SPACE_MAXADDR,
NULL, NULL,
el_info_size,
1,
el_info_size,
BUS_DMA_ALLOCNOW,
NULL, NULL,
&sc->el_info_tag)) {
device_printf(sc->mrsas_dev, "Cannot allocate event log info tag\n");
return (ENOMEM);
}
if (bus_dmamem_alloc(sc->el_info_tag, (void **)&sc->el_info_mem,
BUS_DMA_NOWAIT, &sc->el_info_dmamap)) {
device_printf(sc->mrsas_dev, "Cannot allocate event log info cmd mem\n");
return (ENOMEM);
}
if (bus_dmamap_load(sc->el_info_tag, sc->el_info_dmamap,
sc->el_info_mem, el_info_size, mrsas_addr_cb,
&sc->el_info_phys_addr, BUS_DMA_NOWAIT)) {
device_printf(sc->mrsas_dev, "Cannot load event log info cmd mem\n");
return (ENOMEM);
}
memset(sc->el_info_mem, 0, el_info_size);
return (0);
}
/*
* mrsas_free_evt_info_cmd: Free memory for Event log info command
* input: Adapter soft state
*
* Deallocates memory for the event log info internal command.
*/
void
mrsas_free_evt_log_info_cmd(struct mrsas_softc *sc)
{
if (sc->el_info_phys_addr)
bus_dmamap_unload(sc->el_info_tag, sc->el_info_dmamap);
if (sc->el_info_mem != NULL)
bus_dmamem_free(sc->el_info_tag, sc->el_info_mem, sc->el_info_dmamap);
if (sc->el_info_tag != NULL)
bus_dma_tag_destroy(sc->el_info_tag);
}
/*
* mrsas_get_seq_num: Get latest event sequence number
* @sc: Adapter soft state
* @eli: Firmware event log sequence number information.
*
* Firmware maintains a log of all events in a non-volatile area.
* Driver get the sequence number using DCMD
* "MR_DCMD_CTRL_EVENT_GET_INFO" at driver load time.
*/
static int
mrsas_get_seq_num(struct mrsas_softc *sc,
struct mrsas_evt_log_info *eli)
{
struct mrsas_mfi_cmd *cmd;
struct mrsas_dcmd_frame *dcmd;
+ u_int8_t do_ocr = 1, retcode = 0;
cmd = mrsas_get_mfi_cmd(sc);
if (!cmd) {
device_printf(sc->mrsas_dev, "Failed to get a free cmd\n");
return -ENOMEM;
}
dcmd = &cmd->frame->dcmd;
if (mrsas_alloc_evt_log_info_cmd(sc) != SUCCESS) {
device_printf(sc->mrsas_dev, "Cannot allocate evt log info cmd\n");
mrsas_release_mfi_cmd(cmd);
return -ENOMEM;
}
memset(dcmd->mbox.b, 0, MFI_MBOX_SIZE);
dcmd->cmd = MFI_CMD_DCMD;
dcmd->cmd_status = 0x0;
dcmd->sge_count = 1;
dcmd->flags = MFI_FRAME_DIR_READ;
dcmd->timeout = 0;
dcmd->pad_0 = 0;
dcmd->data_xfer_len = sizeof(struct mrsas_evt_log_info);
dcmd->opcode = MR_DCMD_CTRL_EVENT_GET_INFO;
dcmd->sgl.sge32[0].phys_addr = sc->el_info_phys_addr;
dcmd->sgl.sge32[0].length = sizeof(struct mrsas_evt_log_info);
- mrsas_issue_blocked_cmd(sc, cmd);
+ retcode = mrsas_issue_blocked_cmd(sc, cmd);
+ if (retcode == ETIMEDOUT)
+ goto dcmd_timeout;
+ do_ocr = 0;
/*
* Copy the data back into callers buffer
*/
memcpy(eli, sc->el_info_mem, sizeof(struct mrsas_evt_log_info));
mrsas_free_evt_log_info_cmd(sc);
- mrsas_release_mfi_cmd(cmd);
- return 0;
+dcmd_timeout:
+ if (do_ocr)
+ sc->do_timedout_reset = MFI_DCMD_TIMEOUT_OCR;
+ else
+ mrsas_release_mfi_cmd(cmd);
+
+ return retcode;
}
/*
* mrsas_register_aen: Register for asynchronous event notification
* @sc: Adapter soft state
* @seq_num: Starting sequence number
* @class_locale: Class of the event
*
* This function subscribes for events beyond the @seq_num
* and type @class_locale.
*
*/
static int
mrsas_register_aen(struct mrsas_softc *sc, u_int32_t seq_num,
u_int32_t class_locale_word)
{
int ret_val;
struct mrsas_mfi_cmd *cmd;
struct mrsas_dcmd_frame *dcmd;
union mrsas_evt_class_locale curr_aen;
union mrsas_evt_class_locale prev_aen;
/*
* If there an AEN pending already (aen_cmd), check if the
* class_locale of that pending AEN is inclusive of the new AEN
* request we currently have. If it is, then we don't have to do
* anything. In other words, whichever events the current AEN request
* is subscribing to, have already been subscribed to. If the old_cmd
* is _not_ inclusive, then we have to abort that command, form a
* class_locale that is superset of both old and current and re-issue
* to the FW
*/
curr_aen.word = class_locale_word;
if (sc->aen_cmd) {
prev_aen.word = sc->aen_cmd->frame->dcmd.mbox.w[1];
/*
* A class whose enum value is smaller is inclusive of all
* higher values. If a PROGRESS (= -1) was previously
* registered, then a new registration requests for higher
* classes need not be sent to FW. They are automatically
* included. Locale numbers don't have such hierarchy. They
* are bitmap values
*/
if ((prev_aen.members.class <= curr_aen.members.class) &&
!((prev_aen.members.locale & curr_aen.members.locale) ^
curr_aen.members.locale)) {
/*
* Previously issued event registration includes
* current request. Nothing to do.
*/
return 0;
} else {
curr_aen.members.locale |= prev_aen.members.locale;
if (prev_aen.members.class < curr_aen.members.class)
curr_aen.members.class = prev_aen.members.class;
sc->aen_cmd->abort_aen = 1;
ret_val = mrsas_issue_blocked_abort_cmd(sc,
sc->aen_cmd);
if (ret_val) {
printf("mrsas: Failed to abort "
"previous AEN command\n");
return ret_val;
}
}
}
cmd = mrsas_get_mfi_cmd(sc);
if (!cmd)
return -ENOMEM;
dcmd = &cmd->frame->dcmd;
memset(sc->evt_detail_mem, 0, sizeof(struct mrsas_evt_detail));
/*
* Prepare DCMD for aen registration
*/
memset(dcmd->mbox.b, 0, MFI_MBOX_SIZE);
dcmd->cmd = MFI_CMD_DCMD;
dcmd->cmd_status = 0x0;
dcmd->sge_count = 1;
dcmd->flags = MFI_FRAME_DIR_READ;
dcmd->timeout = 0;
dcmd->pad_0 = 0;
dcmd->data_xfer_len = sizeof(struct mrsas_evt_detail);
dcmd->opcode = MR_DCMD_CTRL_EVENT_WAIT;
dcmd->mbox.w[0] = seq_num;
sc->last_seq_num = seq_num;
dcmd->mbox.w[1] = curr_aen.word;
dcmd->sgl.sge32[0].phys_addr = (u_int32_t)sc->evt_detail_phys_addr;
dcmd->sgl.sge32[0].length = sizeof(struct mrsas_evt_detail);
if (sc->aen_cmd != NULL) {
mrsas_release_mfi_cmd(cmd);
return 0;
}
/*
* Store reference to the cmd used to register for AEN. When an
* application wants us to register for AEN, we have to abort this
* cmd and re-register with a new EVENT LOCALE supplied by that app
*/
sc->aen_cmd = cmd;
/*
* Issue the aen registration frame
*/
if (mrsas_issue_dcmd(sc, cmd)) {
device_printf(sc->mrsas_dev, "Cannot issue AEN DCMD command.\n");
return (1);
}
return 0;
}
/*
* mrsas_start_aen: Subscribes to AEN during driver load time
* @instance: Adapter soft state
*/
static int
mrsas_start_aen(struct mrsas_softc *sc)
{
struct mrsas_evt_log_info eli;
union mrsas_evt_class_locale class_locale;
/* Get the latest sequence number from FW */
memset(&eli, 0, sizeof(eli));
if (mrsas_get_seq_num(sc, &eli))
return -1;
/* Register AEN with FW for latest sequence number plus 1 */
class_locale.members.reserved = 0;
class_locale.members.locale = MR_EVT_LOCALE_ALL;
class_locale.members.class = MR_EVT_CLASS_DEBUG;
return mrsas_register_aen(sc, eli.newest_seq_num + 1,
class_locale.word);
}
/*
* mrsas_setup_msix: Allocate MSI-x vectors
* @sc: adapter soft state
*/
static int
mrsas_setup_msix(struct mrsas_softc *sc)
{
int i;
for (i = 0; i < sc->msix_vectors; i++) {
sc->irq_context[i].sc = sc;
sc->irq_context[i].MSIxIndex = i;
sc->irq_id[i] = i + 1;
sc->mrsas_irq[i] = bus_alloc_resource_any
(sc->mrsas_dev, SYS_RES_IRQ, &sc->irq_id[i]
,RF_ACTIVE);
if (sc->mrsas_irq[i] == NULL) {
device_printf(sc->mrsas_dev, "Can't allocate MSI-x\n");
goto irq_alloc_failed;
}
if (bus_setup_intr(sc->mrsas_dev,
sc->mrsas_irq[i],
INTR_MPSAFE | INTR_TYPE_CAM,
NULL, mrsas_isr, &sc->irq_context[i],
&sc->intr_handle[i])) {
device_printf(sc->mrsas_dev,
"Cannot set up MSI-x interrupt handler\n");
goto irq_alloc_failed;
}
}
return SUCCESS;
irq_alloc_failed:
mrsas_teardown_intr(sc);
return (FAIL);
}
/*
* mrsas_allocate_msix: Setup MSI-x vectors
* @sc: adapter soft state
*/
static int
mrsas_allocate_msix(struct mrsas_softc *sc)
{
if (pci_alloc_msix(sc->mrsas_dev, &sc->msix_vectors) == 0) {
device_printf(sc->mrsas_dev, "Using MSI-X with %d number"
" of vectors\n", sc->msix_vectors);
} else {
device_printf(sc->mrsas_dev, "MSI-x setup failed\n");
goto irq_alloc_failed;
}
return SUCCESS;
irq_alloc_failed:
mrsas_teardown_intr(sc);
return (FAIL);
}
/*
* mrsas_attach: PCI entry point
* input: pointer to device struct
*
* Performs setup of PCI and registers, initializes mutexes and linked lists,
* registers interrupts and CAM, and initializes the adapter/controller to
* its proper state.
*/
static int
mrsas_attach(device_t dev)
{
struct mrsas_softc *sc = device_get_softc(dev);
uint32_t cmd, bar, error;
- struct cdev *linux_dev;
+ memset(sc, 0, sizeof(struct mrsas_softc));
+
/* Look up our softc and initialize its fields. */
sc->mrsas_dev = dev;
sc->device_id = pci_get_device(dev);
mrsas_get_tunables(sc);
/*
* Set up PCI and registers
*/
cmd = pci_read_config(dev, PCIR_COMMAND, 2);
if ((cmd & PCIM_CMD_PORTEN) == 0) {
return (ENXIO);
}
/* Force the busmaster enable bit on. */
cmd |= PCIM_CMD_BUSMASTEREN;
pci_write_config(dev, PCIR_COMMAND, cmd, 2);
bar = pci_read_config(dev, MRSAS_PCI_BAR1, 4);
sc->reg_res_id = MRSAS_PCI_BAR1;/* BAR1 offset */
if ((sc->reg_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY,
&(sc->reg_res_id), RF_ACTIVE))
== NULL) {
device_printf(dev, "Cannot allocate PCI registers\n");
goto attach_fail;
}
sc->bus_tag = rman_get_bustag(sc->reg_res);
sc->bus_handle = rman_get_bushandle(sc->reg_res);
/* Intialize mutexes */
mtx_init(&sc->sim_lock, "mrsas_sim_lock", NULL, MTX_DEF);
mtx_init(&sc->pci_lock, "mrsas_pci_lock", NULL, MTX_DEF);
mtx_init(&sc->io_lock, "mrsas_io_lock", NULL, MTX_DEF);
mtx_init(&sc->aen_lock, "mrsas_aen_lock", NULL, MTX_DEF);
mtx_init(&sc->ioctl_lock, "mrsas_ioctl_lock", NULL, MTX_SPIN);
mtx_init(&sc->mpt_cmd_pool_lock, "mrsas_mpt_cmd_pool_lock", NULL, MTX_DEF);
mtx_init(&sc->mfi_cmd_pool_lock, "mrsas_mfi_cmd_pool_lock", NULL, MTX_DEF);
mtx_init(&sc->raidmap_lock, "mrsas_raidmap_lock", NULL, MTX_DEF);
- /*
- * Intialize a counting Semaphore to take care no. of concurrent
- * IOCTLs
- */
- sema_init(&sc->ioctl_count_sema, MRSAS_MAX_MFI_CMDS - 5, IOCTL_SEMA_DESCRIPTION);
-
/* Intialize linked list */
TAILQ_INIT(&sc->mrsas_mpt_cmd_list_head);
TAILQ_INIT(&sc->mrsas_mfi_cmd_list_head);
mrsas_atomic_set(&sc->fw_outstanding, 0);
sc->io_cmds_highwater = 0;
- /* Create a /dev entry for this device. */
- sc->mrsas_cdev = make_dev(&mrsas_cdevsw, device_get_unit(dev), UID_ROOT,
- GID_OPERATOR, (S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP), "mrsas%u",
- device_get_unit(dev));
- if (device_get_unit(dev) == 0)
- make_dev_alias_p(MAKEDEV_CHECKNAME, &linux_dev, sc->mrsas_cdev,
- "megaraid_sas_ioctl_node");
- if (sc->mrsas_cdev)
- sc->mrsas_cdev->si_drv1 = sc;
-
sc->adprecovery = MRSAS_HBA_OPERATIONAL;
sc->UnevenSpanSupport = 0;
sc->msix_enable = 0;
/* Initialize Firmware */
if (mrsas_init_fw(sc) != SUCCESS) {
goto attach_fail_fw;
}
- /* Register SCSI mid-layer */
+ /* Register mrsas to CAM layer */
if ((mrsas_cam_attach(sc) != SUCCESS)) {
goto attach_fail_cam;
}
/* Register IRQs */
if (mrsas_setup_irq(sc) != SUCCESS) {
goto attach_fail_irq;
}
- /* Enable Interrupts */
- mrsas_enable_intr(sc);
-
error = mrsas_kproc_create(mrsas_ocr_thread, sc,
&sc->ocr_thread, 0, 0, "mrsas_ocr%d",
device_get_unit(sc->mrsas_dev));
if (error) {
- printf("Error %d starting rescan thread\n", error);
- goto attach_fail_irq;
+ device_printf(sc->mrsas_dev, "Error %d starting OCR thread\n", error);
+ goto attach_fail_ocr_thread;
}
- mrsas_setup_sysctl(sc);
-
- /* Initiate AEN (Asynchronous Event Notification) */
-
- if (mrsas_start_aen(sc)) {
- printf("Error: start aen failed\n");
- goto fail_start_aen;
- }
/*
- * Add this controller to mrsas_mgmt_info structure so that it can be
- * exported to management applications
+ * After FW initialization and OCR thread creation
+ * we will defer the cdev creation, AEN setup on ICH callback
*/
- if (device_get_unit(dev) == 0)
- memset(&mrsas_mgmt_info, 0, sizeof(mrsas_mgmt_info));
+ sc->mrsas_ich.ich_func = mrsas_ich_startup;
+ sc->mrsas_ich.ich_arg = sc;
+ if (config_intrhook_establish(&sc->mrsas_ich) != 0) {
+ device_printf(sc->mrsas_dev, "Config hook is already established\n");
+ }
+ mrsas_setup_sysctl(sc);
+ return SUCCESS;
- mrsas_mgmt_info.count++;
- mrsas_mgmt_info.sc_ptr[mrsas_mgmt_info.max_index] = sc;
- mrsas_mgmt_info.max_index++;
-
- return (0);
-
-fail_start_aen:
+attach_fail_ocr_thread:
+ if (sc->ocr_thread_active)
+ wakeup(&sc->ocr_chan);
attach_fail_irq:
mrsas_teardown_intr(sc);
attach_fail_cam:
mrsas_cam_detach(sc);
attach_fail_fw:
/* if MSIX vector is allocated and FW Init FAILED then release MSIX */
if (sc->msix_enable == 1)
pci_release_msi(sc->mrsas_dev);
mrsas_free_mem(sc);
mtx_destroy(&sc->sim_lock);
mtx_destroy(&sc->aen_lock);
mtx_destroy(&sc->pci_lock);
mtx_destroy(&sc->io_lock);
mtx_destroy(&sc->ioctl_lock);
mtx_destroy(&sc->mpt_cmd_pool_lock);
mtx_destroy(&sc->mfi_cmd_pool_lock);
mtx_destroy(&sc->raidmap_lock);
- /* Destroy the counting semaphore created for Ioctl */
- sema_destroy(&sc->ioctl_count_sema);
attach_fail:
- destroy_dev(sc->mrsas_cdev);
if (sc->reg_res) {
bus_release_resource(sc->mrsas_dev, SYS_RES_MEMORY,
sc->reg_res_id, sc->reg_res);
}
return (ENXIO);
}
/*
+ * Interrupt config hook
+ */
+static void
+mrsas_ich_startup(void *arg)
+{
+ struct mrsas_softc *sc = (struct mrsas_softc *)arg;
+
+ /*
+ * Intialize a counting Semaphore to take care no. of concurrent IOCTLs
+ */
+ sema_init(&sc->ioctl_count_sema,
+ MRSAS_MAX_MFI_CMDS - 5,
+ IOCTL_SEMA_DESCRIPTION);
+
+ /* Create a /dev entry for mrsas controller. */
+ sc->mrsas_cdev = make_dev(&mrsas_cdevsw, device_get_unit(sc->mrsas_dev), UID_ROOT,
+ GID_OPERATOR, (S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP), "mrsas%u",
+ device_get_unit(sc->mrsas_dev));
+
+ if (device_get_unit(sc->mrsas_dev) == 0) {
+ make_dev_alias_p(MAKEDEV_CHECKNAME,
+ &sc->mrsas_linux_emulator_cdev, sc->mrsas_cdev,
+ "megaraid_sas_ioctl_node");
+ }
+ if (sc->mrsas_cdev)
+ sc->mrsas_cdev->si_drv1 = sc;
+
+ /*
+ * Add this controller to mrsas_mgmt_info structure so that it can be
+ * exported to management applications
+ */
+ if (device_get_unit(sc->mrsas_dev) == 0)
+ memset(&mrsas_mgmt_info, 0, sizeof(mrsas_mgmt_info));
+
+ mrsas_mgmt_info.count++;
+ mrsas_mgmt_info.sc_ptr[mrsas_mgmt_info.max_index] = sc;
+ mrsas_mgmt_info.max_index++;
+
+ /* Enable Interrupts */
+ mrsas_enable_intr(sc);
+
+ /* Initiate AEN (Asynchronous Event Notification) */
+ if (mrsas_start_aen(sc)) {
+ device_printf(sc->mrsas_dev, "Error: AEN registration FAILED !!! "
+ "Further events from the controller will not be communicated.\n"
+ "Either there is some problem in the controller"
+ "or the controller does not support AEN.\n"
+ "Please contact to the SUPPORT TEAM if the problem persists\n");
+ }
+ if (sc->mrsas_ich.ich_arg != NULL) {
+ device_printf(sc->mrsas_dev, "Disestablish mrsas intr hook\n");
+ config_intrhook_disestablish(&sc->mrsas_ich);
+ sc->mrsas_ich.ich_arg = NULL;
+ }
+}
+
+/*
* mrsas_detach: De-allocates and teardown resources
* input: pointer to device struct
*
* This function is the entry point for device disconnect and detach.
* It performs memory de-allocations, shutdown of the controller and various
* teardown and destroy resource functions.
*/
static int
mrsas_detach(device_t dev)
{
struct mrsas_softc *sc;
int i = 0;
sc = device_get_softc(dev);
sc->remove_in_progress = 1;
/* Destroy the character device so no other IOCTL will be handled */
+ if ((device_get_unit(dev) == 0) && sc->mrsas_linux_emulator_cdev)
+ destroy_dev(sc->mrsas_linux_emulator_cdev);
destroy_dev(sc->mrsas_cdev);
/*
* Take the instance off the instance array. Note that we will not
* decrement the max_index. We let this array be sparse array
*/
for (i = 0; i < mrsas_mgmt_info.max_index; i++) {
if (mrsas_mgmt_info.sc_ptr[i] == sc) {
mrsas_mgmt_info.count--;
mrsas_mgmt_info.sc_ptr[i] = NULL;
break;
}
}
if (sc->ocr_thread_active)
wakeup(&sc->ocr_chan);
while (sc->reset_in_progress) {
i++;
if (!(i % MRSAS_RESET_NOTICE_INTERVAL)) {
mrsas_dprint(sc, MRSAS_INFO,
- "[%2d]waiting for ocr to be finished\n", i);
+ "[%2d]waiting for OCR to be finished from %s\n", i, __func__);
}
pause("mr_shutdown", hz);
}
i = 0;
while (sc->ocr_thread_active) {
i++;
if (!(i % MRSAS_RESET_NOTICE_INTERVAL)) {
mrsas_dprint(sc, MRSAS_INFO,
"[%2d]waiting for "
"mrsas_ocr thread to quit ocr %d\n", i,
sc->ocr_thread_active);
}
pause("mr_shutdown", hz);
}
mrsas_flush_cache(sc);
mrsas_shutdown_ctlr(sc, MR_DCMD_CTRL_SHUTDOWN);
mrsas_disable_intr(sc);
mrsas_cam_detach(sc);
mrsas_teardown_intr(sc);
mrsas_free_mem(sc);
mtx_destroy(&sc->sim_lock);
mtx_destroy(&sc->aen_lock);
mtx_destroy(&sc->pci_lock);
mtx_destroy(&sc->io_lock);
mtx_destroy(&sc->ioctl_lock);
mtx_destroy(&sc->mpt_cmd_pool_lock);
mtx_destroy(&sc->mfi_cmd_pool_lock);
mtx_destroy(&sc->raidmap_lock);
/* Wait for all the semaphores to be released */
while (sema_value(&sc->ioctl_count_sema) != (MRSAS_MAX_MFI_CMDS - 5))
pause("mr_shutdown", hz);
/* Destroy the counting semaphore created for Ioctl */
sema_destroy(&sc->ioctl_count_sema);
if (sc->reg_res) {
bus_release_resource(sc->mrsas_dev,
SYS_RES_MEMORY, sc->reg_res_id, sc->reg_res);
}
if (sc->sysctl_tree != NULL)
sysctl_ctx_free(&sc->sysctl_ctx);
return (0);
}
/*
* mrsas_free_mem: Frees allocated memory
* input: Adapter instance soft state
*
* This function is called from mrsas_detach() to free previously allocated
* memory.
*/
void
mrsas_free_mem(struct mrsas_softc *sc)
{
int i;
u_int32_t max_cmd;
struct mrsas_mfi_cmd *mfi_cmd;
struct mrsas_mpt_cmd *mpt_cmd;
/*
* Free RAID map memory
*/
for (i = 0; i < 2; i++) {
if (sc->raidmap_phys_addr[i])
bus_dmamap_unload(sc->raidmap_tag[i], sc->raidmap_dmamap[i]);
if (sc->raidmap_mem[i] != NULL)
bus_dmamem_free(sc->raidmap_tag[i], sc->raidmap_mem[i], sc->raidmap_dmamap[i]);
if (sc->raidmap_tag[i] != NULL)
bus_dma_tag_destroy(sc->raidmap_tag[i]);
if (sc->ld_drv_map[i] != NULL)
free(sc->ld_drv_map[i], M_MRSAS);
}
-
+ for (i = 0; i < 2; i++) {
+ if (sc->jbodmap_phys_addr[i])
+ bus_dmamap_unload(sc->jbodmap_tag[i], sc->jbodmap_dmamap[i]);
+ if (sc->jbodmap_mem[i] != NULL)
+ bus_dmamem_free(sc->jbodmap_tag[i], sc->jbodmap_mem[i], sc->jbodmap_dmamap[i]);
+ if (sc->jbodmap_tag[i] != NULL)
+ bus_dma_tag_destroy(sc->jbodmap_tag[i]);
+ }
/*
* Free version buffer memory
*/
if (sc->verbuf_phys_addr)
bus_dmamap_unload(sc->verbuf_tag, sc->verbuf_dmamap);
if (sc->verbuf_mem != NULL)
bus_dmamem_free(sc->verbuf_tag, sc->verbuf_mem, sc->verbuf_dmamap);
if (sc->verbuf_tag != NULL)
bus_dma_tag_destroy(sc->verbuf_tag);
/*
* Free sense buffer memory
*/
if (sc->sense_phys_addr)
bus_dmamap_unload(sc->sense_tag, sc->sense_dmamap);
if (sc->sense_mem != NULL)
bus_dmamem_free(sc->sense_tag, sc->sense_mem, sc->sense_dmamap);
if (sc->sense_tag != NULL)
bus_dma_tag_destroy(sc->sense_tag);
/*
* Free chain frame memory
*/
if (sc->chain_frame_phys_addr)
bus_dmamap_unload(sc->chain_frame_tag, sc->chain_frame_dmamap);
if (sc->chain_frame_mem != NULL)
bus_dmamem_free(sc->chain_frame_tag, sc->chain_frame_mem, sc->chain_frame_dmamap);
if (sc->chain_frame_tag != NULL)
bus_dma_tag_destroy(sc->chain_frame_tag);
/*
* Free IO Request memory
*/
if (sc->io_request_phys_addr)
bus_dmamap_unload(sc->io_request_tag, sc->io_request_dmamap);
if (sc->io_request_mem != NULL)
bus_dmamem_free(sc->io_request_tag, sc->io_request_mem, sc->io_request_dmamap);
if (sc->io_request_tag != NULL)
bus_dma_tag_destroy(sc->io_request_tag);
/*
* Free Reply Descriptor memory
*/
if (sc->reply_desc_phys_addr)
bus_dmamap_unload(sc->reply_desc_tag, sc->reply_desc_dmamap);
if (sc->reply_desc_mem != NULL)
bus_dmamem_free(sc->reply_desc_tag, sc->reply_desc_mem, sc->reply_desc_dmamap);
if (sc->reply_desc_tag != NULL)
bus_dma_tag_destroy(sc->reply_desc_tag);
/*
* Free event detail memory
*/
if (sc->evt_detail_phys_addr)
bus_dmamap_unload(sc->evt_detail_tag, sc->evt_detail_dmamap);
if (sc->evt_detail_mem != NULL)
bus_dmamem_free(sc->evt_detail_tag, sc->evt_detail_mem, sc->evt_detail_dmamap);
if (sc->evt_detail_tag != NULL)
bus_dma_tag_destroy(sc->evt_detail_tag);
/*
* Free MFI frames
*/
if (sc->mfi_cmd_list) {
for (i = 0; i < MRSAS_MAX_MFI_CMDS; i++) {
mfi_cmd = sc->mfi_cmd_list[i];
mrsas_free_frame(sc, mfi_cmd);
}
}
if (sc->mficmd_frame_tag != NULL)
bus_dma_tag_destroy(sc->mficmd_frame_tag);
/*
* Free MPT internal command list
*/
max_cmd = sc->max_fw_cmds;
if (sc->mpt_cmd_list) {
for (i = 0; i < max_cmd; i++) {
mpt_cmd = sc->mpt_cmd_list[i];
bus_dmamap_destroy(sc->data_tag, mpt_cmd->data_dmamap);
free(sc->mpt_cmd_list[i], M_MRSAS);
}
free(sc->mpt_cmd_list, M_MRSAS);
sc->mpt_cmd_list = NULL;
}
/*
* Free MFI internal command list
*/
if (sc->mfi_cmd_list) {
for (i = 0; i < MRSAS_MAX_MFI_CMDS; i++) {
free(sc->mfi_cmd_list[i], M_MRSAS);
}
free(sc->mfi_cmd_list, M_MRSAS);
sc->mfi_cmd_list = NULL;
}
/*
* Free request descriptor memory
*/
free(sc->req_desc, M_MRSAS);
sc->req_desc = NULL;
/*
* Destroy parent tag
*/
if (sc->mrsas_parent_tag != NULL)
bus_dma_tag_destroy(sc->mrsas_parent_tag);
/*
* Free ctrl_info memory
*/
if (sc->ctrl_info != NULL)
free(sc->ctrl_info, M_MRSAS);
}
/*
* mrsas_teardown_intr: Teardown interrupt
* input: Adapter instance soft state
*
* This function is called from mrsas_detach() to teardown and release bus
* interrupt resourse.
*/
void
mrsas_teardown_intr(struct mrsas_softc *sc)
{
int i;
if (!sc->msix_enable) {
if (sc->intr_handle[0])
bus_teardown_intr(sc->mrsas_dev, sc->mrsas_irq[0], sc->intr_handle[0]);
if (sc->mrsas_irq[0] != NULL)
bus_release_resource(sc->mrsas_dev, SYS_RES_IRQ,
sc->irq_id[0], sc->mrsas_irq[0]);
sc->intr_handle[0] = NULL;
} else {
for (i = 0; i < sc->msix_vectors; i++) {
if (sc->intr_handle[i])
bus_teardown_intr(sc->mrsas_dev, sc->mrsas_irq[i],
sc->intr_handle[i]);
if (sc->mrsas_irq[i] != NULL)
bus_release_resource(sc->mrsas_dev, SYS_RES_IRQ,
sc->irq_id[i], sc->mrsas_irq[i]);
sc->intr_handle[i] = NULL;
}
pci_release_msi(sc->mrsas_dev);
}
}
/*
* mrsas_suspend: Suspend entry point
* input: Device struct pointer
*
* This function is the entry point for system suspend from the OS.
*/
static int
mrsas_suspend(device_t dev)
{
- struct mrsas_softc *sc;
-
- sc = device_get_softc(dev);
+ /* This will be filled when the driver will have hibernation support */
return (0);
}
/*
* mrsas_resume: Resume entry point
* input: Device struct pointer
*
* This function is the entry point for system resume from the OS.
*/
static int
mrsas_resume(device_t dev)
{
- struct mrsas_softc *sc;
-
- sc = device_get_softc(dev);
+ /* This will be filled when the driver will have hibernation support */
return (0);
}
/**
* mrsas_get_softc_instance: Find softc instance based on cmd type
*
* This function will return softc instance based on cmd type.
* In some case, application fire ioctl on required management instance and
* do not provide host_no. Use cdev->si_drv1 to get softc instance for those
* case, else get the softc instance from host_no provided by application in
* user data.
*/
static struct mrsas_softc *
mrsas_get_softc_instance(struct cdev *dev, u_long cmd, caddr_t arg)
{
struct mrsas_softc *sc = NULL;
struct mrsas_iocpacket *user_ioc = (struct mrsas_iocpacket *)arg;
if (cmd == MRSAS_IOC_GET_PCI_INFO) {
sc = dev->si_drv1;
} else {
/*
* get the Host number & the softc from data sent by the
* Application
*/
sc = mrsas_mgmt_info.sc_ptr[user_ioc->host_no];
if (sc == NULL)
printf("There is no Controller number %d\n",
user_ioc->host_no);
else if (user_ioc->host_no >= mrsas_mgmt_info.max_index)
mrsas_dprint(sc, MRSAS_FAULT,
"Invalid Controller number %d\n", user_ioc->host_no);
}
return sc;
}
/*
* mrsas_ioctl: IOCtl commands entry point.
*
* This function is the entry point for IOCtls from the OS. It calls the
* appropriate function for processing depending on the command received.
*/
static int
mrsas_ioctl(struct cdev *dev, u_long cmd, caddr_t arg, int flag,
struct thread *td)
{
struct mrsas_softc *sc;
int ret = 0, i = 0;
MRSAS_DRV_PCI_INFORMATION *pciDrvInfo;
sc = mrsas_get_softc_instance(dev, cmd, arg);
if (!sc)
return ENOENT;
if (sc->remove_in_progress) {
mrsas_dprint(sc, MRSAS_INFO,
"Driver remove or shutdown called.\n");
return ENOENT;
}
mtx_lock_spin(&sc->ioctl_lock);
if (!sc->reset_in_progress) {
mtx_unlock_spin(&sc->ioctl_lock);
goto do_ioctl;
}
mtx_unlock_spin(&sc->ioctl_lock);
while (sc->reset_in_progress) {
i++;
if (!(i % MRSAS_RESET_NOTICE_INTERVAL)) {
mrsas_dprint(sc, MRSAS_INFO,
- "[%2d]waiting for "
- "OCR to be finished %d\n", i,
- sc->ocr_thread_active);
+ "[%2d]waiting for OCR to be finished from %s\n", i, __func__);
}
pause("mr_ioctl", hz);
}
do_ioctl:
switch (cmd) {
case MRSAS_IOC_FIRMWARE_PASS_THROUGH64:
#ifdef COMPAT_FREEBSD32
case MRSAS_IOC_FIRMWARE_PASS_THROUGH32:
#endif
/*
* Decrement the Ioctl counting Semaphore before getting an
* mfi command
*/
sema_wait(&sc->ioctl_count_sema);
ret = mrsas_passthru(sc, (void *)arg, cmd);
/* Increment the Ioctl counting semaphore value */
sema_post(&sc->ioctl_count_sema);
break;
case MRSAS_IOC_SCAN_BUS:
ret = mrsas_bus_scan(sc);
break;
case MRSAS_IOC_GET_PCI_INFO:
pciDrvInfo = (MRSAS_DRV_PCI_INFORMATION *) arg;
memset(pciDrvInfo, 0, sizeof(MRSAS_DRV_PCI_INFORMATION));
pciDrvInfo->busNumber = pci_get_bus(sc->mrsas_dev);
pciDrvInfo->deviceNumber = pci_get_slot(sc->mrsas_dev);
pciDrvInfo->functionNumber = pci_get_function(sc->mrsas_dev);
pciDrvInfo->domainID = pci_get_domain(sc->mrsas_dev);
mrsas_dprint(sc, MRSAS_INFO, "pci bus no: %d,"
"pci device no: %d, pci function no: %d,"
"pci domain ID: %d\n",
pciDrvInfo->busNumber, pciDrvInfo->deviceNumber,
pciDrvInfo->functionNumber, pciDrvInfo->domainID);
ret = 0;
break;
default:
mrsas_dprint(sc, MRSAS_TRACE, "IOCTL command 0x%lx is not handled\n", cmd);
ret = ENOENT;
}
return (ret);
}
/*
* mrsas_poll: poll entry point for mrsas driver fd
*
* This function is the entry point for poll from the OS. It waits for some AEN
* events to be triggered from the controller and notifies back.
*/
static int
mrsas_poll(struct cdev *dev, int poll_events, struct thread *td)
{
struct mrsas_softc *sc;
int revents = 0;
sc = dev->si_drv1;
if (poll_events & (POLLIN | POLLRDNORM)) {
if (sc->mrsas_aen_triggered) {
revents |= poll_events & (POLLIN | POLLRDNORM);
}
}
if (revents == 0) {
if (poll_events & (POLLIN | POLLRDNORM)) {
mtx_lock(&sc->aen_lock);
sc->mrsas_poll_waiting = 1;
selrecord(td, &sc->mrsas_select);
mtx_unlock(&sc->aen_lock);
}
}
return revents;
}
/*
* mrsas_setup_irq: Set up interrupt
* input: Adapter instance soft state
*
* This function sets up interrupts as a bus resource, with flags indicating
* resource permitting contemporaneous sharing and for resource to activate
* atomically.
*/
static int
mrsas_setup_irq(struct mrsas_softc *sc)
{
if (sc->msix_enable && (mrsas_setup_msix(sc) == SUCCESS))
device_printf(sc->mrsas_dev, "MSI-x interrupts setup success\n");
else {
device_printf(sc->mrsas_dev, "Fall back to legacy interrupt\n");
sc->irq_context[0].sc = sc;
sc->irq_context[0].MSIxIndex = 0;
sc->irq_id[0] = 0;
sc->mrsas_irq[0] = bus_alloc_resource_any(sc->mrsas_dev,
SYS_RES_IRQ, &sc->irq_id[0], RF_SHAREABLE | RF_ACTIVE);
if (sc->mrsas_irq[0] == NULL) {
device_printf(sc->mrsas_dev, "Cannot allocate legcay"
"interrupt\n");
return (FAIL);
}
if (bus_setup_intr(sc->mrsas_dev, sc->mrsas_irq[0],
INTR_MPSAFE | INTR_TYPE_CAM, NULL, mrsas_isr,
&sc->irq_context[0], &sc->intr_handle[0])) {
device_printf(sc->mrsas_dev, "Cannot set up legacy"
"interrupt\n");
return (FAIL);
}
}
return (0);
}
/*
* mrsas_isr: ISR entry point
* input: argument pointer
*
* This function is the interrupt service routine entry point. There are two
* types of interrupts, state change interrupt and response interrupt. If an
* interrupt is not ours, we just return.
*/
void
mrsas_isr(void *arg)
{
struct mrsas_irq_context *irq_context = (struct mrsas_irq_context *)arg;
struct mrsas_softc *sc = irq_context->sc;
int status = 0;
if (sc->mask_interrupts)
return;
if (!sc->msix_vectors) {
status = mrsas_clear_intr(sc);
if (!status)
return;
}
/* If we are resetting, bail */
if (mrsas_test_bit(MRSAS_FUSION_IN_RESET, &sc->reset_flags)) {
printf(" Entered into ISR when OCR is going active. \n");
mrsas_clear_intr(sc);
return;
}
/* Process for reply request and clear response interrupt */
if (mrsas_complete_cmd(sc, irq_context->MSIxIndex) != SUCCESS)
mrsas_clear_intr(sc);
return;
}
/*
* mrsas_complete_cmd: Process reply request
* input: Adapter instance soft state
*
* This function is called from mrsas_isr() to process reply request and clear
* response interrupt. Processing of the reply request entails walking
* through the reply descriptor array for the command request pended from
* Firmware. We look at the Function field to determine the command type and
* perform the appropriate action. Before we return, we clear the response
* interrupt.
*/
-static int
+int
mrsas_complete_cmd(struct mrsas_softc *sc, u_int32_t MSIxIndex)
{
Mpi2ReplyDescriptorsUnion_t *desc;
MPI2_SCSI_IO_SUCCESS_REPLY_DESCRIPTOR *reply_desc;
MRSAS_RAID_SCSI_IO_REQUEST *scsi_io_req;
struct mrsas_mpt_cmd *cmd_mpt;
struct mrsas_mfi_cmd *cmd_mfi;
u_int8_t reply_descript_type;
u_int16_t smid, num_completed;
u_int8_t status, extStatus;
union desc_value desc_val;
PLD_LOAD_BALANCE_INFO lbinfo;
u_int32_t device_id;
int threshold_reply_count = 0;
/* If we have a hardware error, not need to continue */
if (sc->adprecovery == MRSAS_HW_CRITICAL_ERROR)
return (DONE);
desc = sc->reply_desc_mem;
desc += ((MSIxIndex * sc->reply_alloc_sz) / sizeof(MPI2_REPLY_DESCRIPTORS_UNION))
+ sc->last_reply_idx[MSIxIndex];
reply_desc = (MPI2_SCSI_IO_SUCCESS_REPLY_DESCRIPTOR *) desc;
desc_val.word = desc->Words;
num_completed = 0;
reply_descript_type = reply_desc->ReplyFlags & MPI2_RPY_DESCRIPT_FLAGS_TYPE_MASK;
/* Find our reply descriptor for the command and process */
while ((desc_val.u.low != 0xFFFFFFFF) && (desc_val.u.high != 0xFFFFFFFF)) {
smid = reply_desc->SMID;
cmd_mpt = sc->mpt_cmd_list[smid - 1];
scsi_io_req = (MRSAS_RAID_SCSI_IO_REQUEST *) cmd_mpt->io_request;
status = scsi_io_req->RaidContext.status;
extStatus = scsi_io_req->RaidContext.exStatus;
switch (scsi_io_req->Function) {
case MPI2_FUNCTION_SCSI_IO_REQUEST: /* Fast Path IO. */
device_id = cmd_mpt->ccb_ptr->ccb_h.target_id;
lbinfo = &sc->load_balance_info[device_id];
if (cmd_mpt->load_balance == MRSAS_LOAD_BALANCE_FLAG) {
mrsas_atomic_dec(&lbinfo->scsi_pending_cmds[cmd_mpt->pd_r1_lb]);
cmd_mpt->load_balance &= ~MRSAS_LOAD_BALANCE_FLAG;
}
/* Fall thru and complete IO */
case MRSAS_MPI2_FUNCTION_LD_IO_REQUEST:
mrsas_map_mpt_cmd_status(cmd_mpt, status, extStatus);
mrsas_cmd_done(sc, cmd_mpt);
scsi_io_req->RaidContext.status = 0;
scsi_io_req->RaidContext.exStatus = 0;
mrsas_atomic_dec(&sc->fw_outstanding);
break;
case MRSAS_MPI2_FUNCTION_PASSTHRU_IO_REQUEST: /* MFI command */
cmd_mfi = sc->mfi_cmd_list[cmd_mpt->sync_cmd_idx];
mrsas_complete_mptmfi_passthru(sc, cmd_mfi, status);
cmd_mpt->flags = 0;
mrsas_release_mpt_cmd(cmd_mpt);
break;
}
sc->last_reply_idx[MSIxIndex]++;
if (sc->last_reply_idx[MSIxIndex] >= sc->reply_q_depth)
sc->last_reply_idx[MSIxIndex] = 0;
desc->Words = ~((uint64_t)0x00); /* set it back to all
* 0xFFFFFFFFs */
num_completed++;
threshold_reply_count++;
/* Get the next reply descriptor */
if (!sc->last_reply_idx[MSIxIndex]) {
desc = sc->reply_desc_mem;
desc += ((MSIxIndex * sc->reply_alloc_sz) / sizeof(MPI2_REPLY_DESCRIPTORS_UNION));
} else
desc++;
reply_desc = (MPI2_SCSI_IO_SUCCESS_REPLY_DESCRIPTOR *) desc;
desc_val.word = desc->Words;
reply_descript_type = reply_desc->ReplyFlags & MPI2_RPY_DESCRIPT_FLAGS_TYPE_MASK;
if (reply_descript_type == MPI2_RPY_DESCRIPT_FLAGS_UNUSED)
break;
/*
* Write to reply post index after completing threshold reply
* count and still there are more replies in reply queue
* pending to be completed.
*/
if (threshold_reply_count >= THRESHOLD_REPLY_COUNT) {
if (sc->msix_enable) {
if ((sc->device_id == MRSAS_INVADER) ||
- (sc->device_id == MRSAS_FURY))
+ (sc->device_id == MRSAS_FURY) ||
+ (sc->device_id == MRSAS_INTRUDER) ||
+ (sc->device_id == MRSAS_INTRUDER_24))
mrsas_write_reg(sc, sc->msix_reg_offset[MSIxIndex / 8],
((MSIxIndex & 0x7) << 24) |
sc->last_reply_idx[MSIxIndex]);
else
mrsas_write_reg(sc, sc->msix_reg_offset[0], (MSIxIndex << 24) |
sc->last_reply_idx[MSIxIndex]);
} else
mrsas_write_reg(sc, offsetof(mrsas_reg_set,
reply_post_host_index), sc->last_reply_idx[0]);
threshold_reply_count = 0;
}
}
/* No match, just return */
if (num_completed == 0)
return (DONE);
/* Clear response interrupt */
if (sc->msix_enable) {
if ((sc->device_id == MRSAS_INVADER) ||
- (sc->device_id == MRSAS_FURY)) {
+ (sc->device_id == MRSAS_FURY) ||
+ (sc->device_id == MRSAS_INTRUDER) ||
+ (sc->device_id == MRSAS_INTRUDER_24)) {
mrsas_write_reg(sc, sc->msix_reg_offset[MSIxIndex / 8],
((MSIxIndex & 0x7) << 24) |
sc->last_reply_idx[MSIxIndex]);
} else
mrsas_write_reg(sc, sc->msix_reg_offset[0], (MSIxIndex << 24) |
sc->last_reply_idx[MSIxIndex]);
} else
mrsas_write_reg(sc, offsetof(mrsas_reg_set,
reply_post_host_index), sc->last_reply_idx[0]);
return (0);
}
/*
* mrsas_map_mpt_cmd_status: Allocate DMAable memory.
* input: Adapter instance soft state
*
* This function is called from mrsas_complete_cmd(), for LD IO and FastPath IO.
* It checks the command status and maps the appropriate CAM status for the
* CCB.
*/
void
mrsas_map_mpt_cmd_status(struct mrsas_mpt_cmd *cmd, u_int8_t status, u_int8_t extStatus)
{
struct mrsas_softc *sc = cmd->sc;
u_int8_t *sense_data;
switch (status) {
case MFI_STAT_OK:
cmd->ccb_ptr->ccb_h.status = CAM_REQ_CMP;
break;
case MFI_STAT_SCSI_IO_FAILED:
case MFI_STAT_SCSI_DONE_WITH_ERROR:
cmd->ccb_ptr->ccb_h.status = CAM_SCSI_STATUS_ERROR;
sense_data = (u_int8_t *)&cmd->ccb_ptr->csio.sense_data;
if (sense_data) {
/* For now just copy 18 bytes back */
memcpy(sense_data, cmd->sense, 18);
cmd->ccb_ptr->csio.sense_len = 18;
cmd->ccb_ptr->ccb_h.status |= CAM_AUTOSNS_VALID;
}
break;
case MFI_STAT_LD_OFFLINE:
case MFI_STAT_DEVICE_NOT_FOUND:
if (cmd->ccb_ptr->ccb_h.target_lun)
cmd->ccb_ptr->ccb_h.status |= CAM_LUN_INVALID;
else
cmd->ccb_ptr->ccb_h.status |= CAM_DEV_NOT_THERE;
break;
case MFI_STAT_CONFIG_SEQ_MISMATCH:
cmd->ccb_ptr->ccb_h.status |= CAM_REQUEUE_REQ;
break;
default:
device_printf(sc->mrsas_dev, "FW cmd complete status %x\n", status);
cmd->ccb_ptr->ccb_h.status = CAM_REQ_CMP_ERR;
cmd->ccb_ptr->csio.scsi_status = status;
}
return;
}
/*
* mrsas_alloc_mem: Allocate DMAable memory
* input: Adapter instance soft state
*
* This function creates the parent DMA tag and allocates DMAable memory. DMA
* tag describes constraints of DMA mapping. Memory allocated is mapped into
* Kernel virtual address. Callback argument is physical memory address.
*/
static int
mrsas_alloc_mem(struct mrsas_softc *sc)
{
u_int32_t verbuf_size, io_req_size, reply_desc_size, sense_size,
chain_frame_size, evt_detail_size, count;
/*
* Allocate parent DMA tag
*/
if (bus_dma_tag_create(NULL, /* parent */
1, /* alignment */
0, /* boundary */
BUS_SPACE_MAXADDR, /* lowaddr */
BUS_SPACE_MAXADDR, /* highaddr */
NULL, NULL, /* filter, filterarg */
- MRSAS_MAX_IO_SIZE, /* maxsize */
- MRSAS_MAX_SGL, /* nsegments */
- MRSAS_MAX_IO_SIZE, /* maxsegsize */
+ MAXPHYS, /* maxsize */
+ sc->max_num_sge, /* nsegments */
+ MAXPHYS, /* maxsegsize */
0, /* flags */
NULL, NULL, /* lockfunc, lockarg */
&sc->mrsas_parent_tag /* tag */
)) {
device_printf(sc->mrsas_dev, "Cannot allocate parent DMA tag\n");
return (ENOMEM);
}
/*
* Allocate for version buffer
*/
verbuf_size = MRSAS_MAX_NAME_LENGTH * (sizeof(bus_addr_t));
if (bus_dma_tag_create(sc->mrsas_parent_tag,
1, 0,
BUS_SPACE_MAXADDR_32BIT,
BUS_SPACE_MAXADDR,
NULL, NULL,
verbuf_size,
1,
verbuf_size,
BUS_DMA_ALLOCNOW,
NULL, NULL,
&sc->verbuf_tag)) {
device_printf(sc->mrsas_dev, "Cannot allocate verbuf DMA tag\n");
return (ENOMEM);
}
if (bus_dmamem_alloc(sc->verbuf_tag, (void **)&sc->verbuf_mem,
BUS_DMA_NOWAIT, &sc->verbuf_dmamap)) {
device_printf(sc->mrsas_dev, "Cannot allocate verbuf memory\n");
return (ENOMEM);
}
bzero(sc->verbuf_mem, verbuf_size);
if (bus_dmamap_load(sc->verbuf_tag, sc->verbuf_dmamap, sc->verbuf_mem,
verbuf_size, mrsas_addr_cb, &sc->verbuf_phys_addr,
BUS_DMA_NOWAIT)) {
device_printf(sc->mrsas_dev, "Cannot load verbuf DMA map\n");
return (ENOMEM);
}
/*
* Allocate IO Request Frames
*/
io_req_size = sc->io_frames_alloc_sz;
if (bus_dma_tag_create(sc->mrsas_parent_tag,
16, 0,
BUS_SPACE_MAXADDR_32BIT,
BUS_SPACE_MAXADDR,
NULL, NULL,
io_req_size,
1,
io_req_size,
BUS_DMA_ALLOCNOW,
NULL, NULL,
&sc->io_request_tag)) {
device_printf(sc->mrsas_dev, "Cannot create IO request tag\n");
return (ENOMEM);
}
if (bus_dmamem_alloc(sc->io_request_tag, (void **)&sc->io_request_mem,
BUS_DMA_NOWAIT, &sc->io_request_dmamap)) {
device_printf(sc->mrsas_dev, "Cannot alloc IO request memory\n");
return (ENOMEM);
}
bzero(sc->io_request_mem, io_req_size);
if (bus_dmamap_load(sc->io_request_tag, sc->io_request_dmamap,
sc->io_request_mem, io_req_size, mrsas_addr_cb,
&sc->io_request_phys_addr, BUS_DMA_NOWAIT)) {
device_printf(sc->mrsas_dev, "Cannot load IO request memory\n");
return (ENOMEM);
}
/*
* Allocate Chain Frames
*/
chain_frame_size = sc->chain_frames_alloc_sz;
if (bus_dma_tag_create(sc->mrsas_parent_tag,
4, 0,
BUS_SPACE_MAXADDR_32BIT,
BUS_SPACE_MAXADDR,
NULL, NULL,
chain_frame_size,
1,
chain_frame_size,
BUS_DMA_ALLOCNOW,
NULL, NULL,
&sc->chain_frame_tag)) {
device_printf(sc->mrsas_dev, "Cannot create chain frame tag\n");
return (ENOMEM);
}
if (bus_dmamem_alloc(sc->chain_frame_tag, (void **)&sc->chain_frame_mem,
BUS_DMA_NOWAIT, &sc->chain_frame_dmamap)) {
device_printf(sc->mrsas_dev, "Cannot alloc chain frame memory\n");
return (ENOMEM);
}
bzero(sc->chain_frame_mem, chain_frame_size);
if (bus_dmamap_load(sc->chain_frame_tag, sc->chain_frame_dmamap,
sc->chain_frame_mem, chain_frame_size, mrsas_addr_cb,
&sc->chain_frame_phys_addr, BUS_DMA_NOWAIT)) {
device_printf(sc->mrsas_dev, "Cannot load chain frame memory\n");
return (ENOMEM);
}
count = sc->msix_vectors > 0 ? sc->msix_vectors : 1;
/*
* Allocate Reply Descriptor Array
*/
reply_desc_size = sc->reply_alloc_sz * count;
if (bus_dma_tag_create(sc->mrsas_parent_tag,
16, 0,
BUS_SPACE_MAXADDR_32BIT,
BUS_SPACE_MAXADDR,
NULL, NULL,
reply_desc_size,
1,
reply_desc_size,
BUS_DMA_ALLOCNOW,
NULL, NULL,
&sc->reply_desc_tag)) {
device_printf(sc->mrsas_dev, "Cannot create reply descriptor tag\n");
return (ENOMEM);
}
if (bus_dmamem_alloc(sc->reply_desc_tag, (void **)&sc->reply_desc_mem,
BUS_DMA_NOWAIT, &sc->reply_desc_dmamap)) {
device_printf(sc->mrsas_dev, "Cannot alloc reply descriptor memory\n");
return (ENOMEM);
}
if (bus_dmamap_load(sc->reply_desc_tag, sc->reply_desc_dmamap,
sc->reply_desc_mem, reply_desc_size, mrsas_addr_cb,
&sc->reply_desc_phys_addr, BUS_DMA_NOWAIT)) {
device_printf(sc->mrsas_dev, "Cannot load reply descriptor memory\n");
return (ENOMEM);
}
/*
* Allocate Sense Buffer Array. Keep in lower 4GB
*/
sense_size = sc->max_fw_cmds * MRSAS_SENSE_LEN;
if (bus_dma_tag_create(sc->mrsas_parent_tag,
64, 0,
BUS_SPACE_MAXADDR_32BIT,
BUS_SPACE_MAXADDR,
NULL, NULL,
sense_size,
1,
sense_size,
BUS_DMA_ALLOCNOW,
NULL, NULL,
&sc->sense_tag)) {
device_printf(sc->mrsas_dev, "Cannot allocate sense buf tag\n");
return (ENOMEM);
}
if (bus_dmamem_alloc(sc->sense_tag, (void **)&sc->sense_mem,
BUS_DMA_NOWAIT, &sc->sense_dmamap)) {
device_printf(sc->mrsas_dev, "Cannot allocate sense buf memory\n");
return (ENOMEM);
}
if (bus_dmamap_load(sc->sense_tag, sc->sense_dmamap,
sc->sense_mem, sense_size, mrsas_addr_cb, &sc->sense_phys_addr,
BUS_DMA_NOWAIT)) {
device_printf(sc->mrsas_dev, "Cannot load sense buf memory\n");
return (ENOMEM);
}
/*
* Allocate for Event detail structure
*/
evt_detail_size = sizeof(struct mrsas_evt_detail);
if (bus_dma_tag_create(sc->mrsas_parent_tag,
1, 0,
BUS_SPACE_MAXADDR_32BIT,
BUS_SPACE_MAXADDR,
NULL, NULL,
evt_detail_size,
1,
evt_detail_size,
BUS_DMA_ALLOCNOW,
NULL, NULL,
&sc->evt_detail_tag)) {
device_printf(sc->mrsas_dev, "Cannot create Event detail tag\n");
return (ENOMEM);
}
if (bus_dmamem_alloc(sc->evt_detail_tag, (void **)&sc->evt_detail_mem,
BUS_DMA_NOWAIT, &sc->evt_detail_dmamap)) {
device_printf(sc->mrsas_dev, "Cannot alloc Event detail buffer memory\n");
return (ENOMEM);
}
bzero(sc->evt_detail_mem, evt_detail_size);
if (bus_dmamap_load(sc->evt_detail_tag, sc->evt_detail_dmamap,
sc->evt_detail_mem, evt_detail_size, mrsas_addr_cb,
&sc->evt_detail_phys_addr, BUS_DMA_NOWAIT)) {
device_printf(sc->mrsas_dev, "Cannot load Event detail buffer memory\n");
return (ENOMEM);
}
/*
* Create a dma tag for data buffers; size will be the maximum
* possible I/O size (280kB).
*/
if (bus_dma_tag_create(sc->mrsas_parent_tag,
1,
0,
BUS_SPACE_MAXADDR,
BUS_SPACE_MAXADDR,
NULL, NULL,
- MRSAS_MAX_IO_SIZE,
- MRSAS_MAX_SGL,
- MRSAS_MAX_IO_SIZE,
+ MAXPHYS,
+ sc->max_num_sge, /* nsegments */
+ MAXPHYS,
BUS_DMA_ALLOCNOW,
busdma_lock_mutex,
&sc->io_lock,
&sc->data_tag)) {
device_printf(sc->mrsas_dev, "Cannot create data dma tag\n");
return (ENOMEM);
}
return (0);
}
/*
* mrsas_addr_cb: Callback function of bus_dmamap_load()
* input: callback argument, machine dependent type
* that describes DMA segments, number of segments, error code
*
* This function is for the driver to receive mapping information resultant of
* the bus_dmamap_load(). The information is actually not being used, but the
* address is saved anyway.
*/
void
mrsas_addr_cb(void *arg, bus_dma_segment_t *segs, int nsegs, int error)
{
bus_addr_t *addr;
addr = arg;
*addr = segs[0].ds_addr;
}
/*
* mrsas_setup_raidmap: Set up RAID map.
* input: Adapter instance soft state
*
* Allocate DMA memory for the RAID maps and perform setup.
*/
static int
mrsas_setup_raidmap(struct mrsas_softc *sc)
{
int i;
for (i = 0; i < 2; i++) {
sc->ld_drv_map[i] =
(void *)malloc(sc->drv_map_sz, M_MRSAS, M_NOWAIT);
/* Do Error handling */
if (!sc->ld_drv_map[i]) {
device_printf(sc->mrsas_dev, "Could not allocate memory for local map");
if (i == 1)
free(sc->ld_drv_map[0], M_MRSAS);
/* ABORT driver initialization */
goto ABORT;
}
}
for (int i = 0; i < 2; i++) {
if (bus_dma_tag_create(sc->mrsas_parent_tag,
4, 0,
BUS_SPACE_MAXADDR_32BIT,
BUS_SPACE_MAXADDR,
NULL, NULL,
sc->max_map_sz,
1,
sc->max_map_sz,
BUS_DMA_ALLOCNOW,
NULL, NULL,
&sc->raidmap_tag[i])) {
device_printf(sc->mrsas_dev,
"Cannot allocate raid map tag.\n");
return (ENOMEM);
}
if (bus_dmamem_alloc(sc->raidmap_tag[i],
(void **)&sc->raidmap_mem[i],
BUS_DMA_NOWAIT, &sc->raidmap_dmamap[i])) {
device_printf(sc->mrsas_dev,
"Cannot allocate raidmap memory.\n");
return (ENOMEM);
}
bzero(sc->raidmap_mem[i], sc->max_map_sz);
if (bus_dmamap_load(sc->raidmap_tag[i], sc->raidmap_dmamap[i],
sc->raidmap_mem[i], sc->max_map_sz,
mrsas_addr_cb, &sc->raidmap_phys_addr[i],
BUS_DMA_NOWAIT)) {
device_printf(sc->mrsas_dev, "Cannot load raidmap memory.\n");
return (ENOMEM);
}
if (!sc->raidmap_mem[i]) {
device_printf(sc->mrsas_dev,
"Cannot allocate memory for raid map.\n");
return (ENOMEM);
}
}
if (!mrsas_get_map_info(sc))
mrsas_sync_map_info(sc);
return (0);
ABORT:
return (1);
}
+/**
+ * megasas_setup_jbod_map - setup jbod map for FP seq_number.
+ * @sc: Adapter soft state
+ *
+ * Return 0 on success.
+ */
+void
+megasas_setup_jbod_map(struct mrsas_softc *sc)
+{
+ int i;
+ uint32_t pd_seq_map_sz;
+
+ pd_seq_map_sz = sizeof(struct MR_PD_CFG_SEQ_NUM_SYNC) +
+ (sizeof(struct MR_PD_CFG_SEQ) * (MAX_PHYSICAL_DEVICES - 1));
+
+ if (!sc->ctrl_info->adapterOperations3.useSeqNumJbodFP) {
+ sc->use_seqnum_jbod_fp = 0;
+ return;
+ }
+ if (sc->jbodmap_mem[0])
+ goto skip_alloc;
+
+ for (i = 0; i < 2; i++) {
+ if (bus_dma_tag_create(sc->mrsas_parent_tag,
+ 4, 0,
+ BUS_SPACE_MAXADDR_32BIT,
+ BUS_SPACE_MAXADDR,
+ NULL, NULL,
+ pd_seq_map_sz,
+ 1,
+ pd_seq_map_sz,
+ BUS_DMA_ALLOCNOW,
+ NULL, NULL,
+ &sc->jbodmap_tag[i])) {
+ device_printf(sc->mrsas_dev,
+ "Cannot allocate jbod map tag.\n");
+ return;
+ }
+ if (bus_dmamem_alloc(sc->jbodmap_tag[i],
+ (void **)&sc->jbodmap_mem[i],
+ BUS_DMA_NOWAIT, &sc->jbodmap_dmamap[i])) {
+ device_printf(sc->mrsas_dev,
+ "Cannot allocate jbod map memory.\n");
+ return;
+ }
+ bzero(sc->jbodmap_mem[i], pd_seq_map_sz);
+
+ if (bus_dmamap_load(sc->jbodmap_tag[i], sc->jbodmap_dmamap[i],
+ sc->jbodmap_mem[i], pd_seq_map_sz,
+ mrsas_addr_cb, &sc->jbodmap_phys_addr[i],
+ BUS_DMA_NOWAIT)) {
+ device_printf(sc->mrsas_dev, "Cannot load jbod map memory.\n");
+ return;
+ }
+ if (!sc->jbodmap_mem[i]) {
+ device_printf(sc->mrsas_dev,
+ "Cannot allocate memory for jbod map.\n");
+ sc->use_seqnum_jbod_fp = 0;
+ return;
+ }
+ }
+
+skip_alloc:
+ if (!megasas_sync_pd_seq_num(sc, false) &&
+ !megasas_sync_pd_seq_num(sc, true))
+ sc->use_seqnum_jbod_fp = 1;
+ else
+ sc->use_seqnum_jbod_fp = 0;
+
+ device_printf(sc->mrsas_dev, "Jbod map is supported\n");
+}
+
/*
* mrsas_init_fw: Initialize Firmware
* input: Adapter soft state
*
* Calls transition_to_ready() to make sure Firmware is in operational state and
* calls mrsas_init_adapter() to send IOC_INIT command to Firmware. It
* issues internal commands to get the controller info after the IOC_INIT
* command response is received by Firmware. Note: code relating to
* get_pdlist, get_ld_list and max_sectors are currently not being used, it
* is left here as placeholder.
*/
static int
mrsas_init_fw(struct mrsas_softc *sc)
{
int ret, loop, ocr = 0;
u_int32_t max_sectors_1;
u_int32_t max_sectors_2;
u_int32_t tmp_sectors;
u_int32_t scratch_pad_2;
int msix_enable = 0;
int fw_msix_count = 0;
/* Make sure Firmware is ready */
ret = mrsas_transition_to_ready(sc, ocr);
if (ret != SUCCESS) {
return (ret);
}
/* MSI-x index 0- reply post host index register */
sc->msix_reg_offset[0] = MPI2_REPLY_POST_HOST_INDEX_OFFSET;
/* Check if MSI-X is supported while in ready state */
msix_enable = (mrsas_read_reg(sc, offsetof(mrsas_reg_set, outbound_scratch_pad)) & 0x4000000) >> 0x1a;
if (msix_enable) {
scratch_pad_2 = mrsas_read_reg(sc, offsetof(mrsas_reg_set,
outbound_scratch_pad_2));
/* Check max MSI-X vectors */
if (sc->device_id == MRSAS_TBOLT) {
sc->msix_vectors = (scratch_pad_2
& MR_MAX_REPLY_QUEUES_OFFSET) + 1;
fw_msix_count = sc->msix_vectors;
} else {
/* Invader/Fury supports 96 MSI-X vectors */
sc->msix_vectors = ((scratch_pad_2
& MR_MAX_REPLY_QUEUES_EXT_OFFSET)
>> MR_MAX_REPLY_QUEUES_EXT_OFFSET_SHIFT) + 1;
fw_msix_count = sc->msix_vectors;
for (loop = 1; loop < MR_MAX_MSIX_REG_ARRAY;
loop++) {
sc->msix_reg_offset[loop] =
MPI2_SUP_REPLY_POST_HOST_INDEX_OFFSET +
(loop * 0x10);
}
}
/* Don't bother allocating more MSI-X vectors than cpus */
sc->msix_vectors = min(sc->msix_vectors,
mp_ncpus);
/* Allocate MSI-x vectors */
if (mrsas_allocate_msix(sc) == SUCCESS)
sc->msix_enable = 1;
else
sc->msix_enable = 0;
device_printf(sc->mrsas_dev, "FW supports <%d> MSIX vector,"
"Online CPU %d Current MSIX <%d>\n",
fw_msix_count, mp_ncpus, sc->msix_vectors);
}
if (mrsas_init_adapter(sc) != SUCCESS) {
device_printf(sc->mrsas_dev, "Adapter initialize Fail.\n");
return (1);
}
/* Allocate internal commands for pass-thru */
if (mrsas_alloc_mfi_cmds(sc) != SUCCESS) {
device_printf(sc->mrsas_dev, "Allocate MFI cmd failed.\n");
return (1);
}
sc->ctrl_info = malloc(sizeof(struct mrsas_ctrl_info), M_MRSAS, M_NOWAIT);
if (!sc->ctrl_info) {
device_printf(sc->mrsas_dev, "Malloc for ctrl_info failed.\n");
return (1);
}
/*
* Get the controller info from FW, so that the MAX VD support
* availability can be decided.
*/
if (mrsas_get_ctrl_info(sc)) {
device_printf(sc->mrsas_dev, "Unable to get FW ctrl_info.\n");
return (1);
}
sc->secure_jbod_support =
(u_int8_t)sc->ctrl_info->adapterOperations3.supportSecurityonJBOD;
if (sc->secure_jbod_support)
device_printf(sc->mrsas_dev, "FW supports SED \n");
+ if (sc->use_seqnum_jbod_fp)
+ device_printf(sc->mrsas_dev, "FW supports JBOD Map \n");
+
if (mrsas_setup_raidmap(sc) != SUCCESS) {
- device_printf(sc->mrsas_dev, "Set up RAID map failed.\n");
- return (1);
+ device_printf(sc->mrsas_dev, "Error: RAID map setup FAILED !!! "
+ "There seems to be some problem in the controller\n"
+ "Please contact to the SUPPORT TEAM if the problem persists\n");
}
+ megasas_setup_jbod_map(sc);
+
/* For pass-thru, get PD/LD list and controller info */
memset(sc->pd_list, 0,
MRSAS_MAX_PD * sizeof(struct mrsas_pd_list));
- mrsas_get_pd_list(sc);
-
+ if (mrsas_get_pd_list(sc) != SUCCESS) {
+ device_printf(sc->mrsas_dev, "Get PD list failed.\n");
+ return (1);
+ }
memset(sc->ld_ids, 0xff, MRSAS_MAX_LD_IDS);
- mrsas_get_ld_list(sc);
-
+ if (mrsas_get_ld_list(sc) != SUCCESS) {
+ device_printf(sc->mrsas_dev, "Get LD lsit failed.\n");
+ return (1);
+ }
/*
* Compute the max allowed sectors per IO: The controller info has
* two limits on max sectors. Driver should use the minimum of these
* two.
*
* 1 << stripe_sz_ops.min = max sectors per strip
*
* Note that older firmwares ( < FW ver 30) didn't report information to
* calculate max_sectors_1. So the number ended up as zero always.
*/
tmp_sectors = 0;
max_sectors_1 = (1 << sc->ctrl_info->stripe_sz_ops.min) *
sc->ctrl_info->max_strips_per_io;
max_sectors_2 = sc->ctrl_info->max_request_size;
tmp_sectors = min(max_sectors_1, max_sectors_2);
sc->max_sectors_per_req = sc->max_num_sge * MRSAS_PAGE_SIZE / 512;
if (tmp_sectors && (sc->max_sectors_per_req > tmp_sectors))
sc->max_sectors_per_req = tmp_sectors;
sc->disableOnlineCtrlReset =
sc->ctrl_info->properties.OnOffProperties.disableOnlineCtrlReset;
sc->UnevenSpanSupport =
sc->ctrl_info->adapterOperations2.supportUnevenSpans;
if (sc->UnevenSpanSupport) {
device_printf(sc->mrsas_dev, "FW supports: UnevenSpanSupport=%x\n\n",
sc->UnevenSpanSupport);
if (MR_ValidateMapInfo(sc))
sc->fast_path_io = 1;
else
sc->fast_path_io = 0;
}
return (0);
}
/*
* mrsas_init_adapter: Initializes the adapter/controller
* input: Adapter soft state
*
* Prepares for the issuing of the IOC Init cmd to FW for initializing the
* ROC/controller. The FW register is read to determined the number of
* commands that is supported. All memory allocations for IO is based on
* max_cmd. Appropriate calculations are performed in this function.
*/
int
mrsas_init_adapter(struct mrsas_softc *sc)
{
uint32_t status;
- u_int32_t max_cmd;
+ u_int32_t max_cmd, scratch_pad_2;
int ret;
int i = 0;
/* Read FW status register */
status = mrsas_read_reg(sc, offsetof(mrsas_reg_set, outbound_scratch_pad));
/* Get operational params from status register */
sc->max_fw_cmds = status & MRSAS_FWSTATE_MAXCMD_MASK;
/* Decrement the max supported by 1, to correlate with FW */
sc->max_fw_cmds = sc->max_fw_cmds - 1;
max_cmd = sc->max_fw_cmds;
/* Determine allocation size of command frames */
sc->reply_q_depth = ((max_cmd + 1 + 15) / 16 * 16) * 2;
sc->request_alloc_sz = sizeof(MRSAS_REQUEST_DESCRIPTOR_UNION) * max_cmd;
sc->reply_alloc_sz = sizeof(MPI2_REPLY_DESCRIPTORS_UNION) * (sc->reply_q_depth);
sc->io_frames_alloc_sz = MRSAS_MPI2_RAID_DEFAULT_IO_FRAME_SIZE + (MRSAS_MPI2_RAID_DEFAULT_IO_FRAME_SIZE * (max_cmd + 1));
- sc->chain_frames_alloc_sz = 1024 * max_cmd;
+ scratch_pad_2 = mrsas_read_reg(sc, offsetof(mrsas_reg_set,
+ outbound_scratch_pad_2));
+ /*
+ * If scratch_pad_2 & MEGASAS_MAX_CHAIN_SIZE_UNITS_MASK is set,
+ * Firmware support extended IO chain frame which is 4 time more
+ * than legacy Firmware. Legacy Firmware - Frame size is (8 * 128) =
+ * 1K 1M IO Firmware - Frame size is (8 * 128 * 4) = 4K
+ */
+ if (scratch_pad_2 & MEGASAS_MAX_CHAIN_SIZE_UNITS_MASK)
+ sc->max_chain_frame_sz =
+ ((scratch_pad_2 & MEGASAS_MAX_CHAIN_SIZE_MASK) >> 5)
+ * MEGASAS_1MB_IO;
+ else
+ sc->max_chain_frame_sz =
+ ((scratch_pad_2 & MEGASAS_MAX_CHAIN_SIZE_MASK) >> 5)
+ * MEGASAS_256K_IO;
+
+ sc->chain_frames_alloc_sz = sc->max_chain_frame_sz * max_cmd;
sc->max_sge_in_main_msg = (MRSAS_MPI2_RAID_DEFAULT_IO_FRAME_SIZE -
offsetof(MRSAS_RAID_SCSI_IO_REQUEST, SGL)) / 16;
- sc->max_sge_in_chain = MRSAS_MAX_SZ_CHAIN_FRAME / sizeof(MPI2_SGE_IO_UNION);
+ sc->max_sge_in_chain = sc->max_chain_frame_sz / sizeof(MPI2_SGE_IO_UNION);
sc->max_num_sge = sc->max_sge_in_main_msg + sc->max_sge_in_chain - 2;
+ mrsas_dprint(sc, MRSAS_INFO, "Avago Debug: MAX sge 0x%X MAX chain frame size 0x%X \n",
+ sc->max_num_sge, sc->max_chain_frame_sz);
+
/* Used for pass thru MFI frame (DCMD) */
sc->chain_offset_mfi_pthru = offsetof(MRSAS_RAID_SCSI_IO_REQUEST, SGL) / 16;
sc->chain_offset_io_request = (MRSAS_MPI2_RAID_DEFAULT_IO_FRAME_SIZE -
sizeof(MPI2_SGE_IO_UNION)) / 16;
int count = sc->msix_vectors > 0 ? sc->msix_vectors : 1;
for (i = 0; i < count; i++)
sc->last_reply_idx[i] = 0;
ret = mrsas_alloc_mem(sc);
if (ret != SUCCESS)
return (ret);
ret = mrsas_alloc_mpt_cmds(sc);
if (ret != SUCCESS)
return (ret);
ret = mrsas_ioc_init(sc);
if (ret != SUCCESS)
return (ret);
return (0);
}
/*
* mrsas_alloc_ioc_cmd: Allocates memory for IOC Init command
* input: Adapter soft state
*
* Allocates for the IOC Init cmd to FW to initialize the ROC/controller.
*/
int
mrsas_alloc_ioc_cmd(struct mrsas_softc *sc)
{
int ioc_init_size;
/* Allocate IOC INIT command */
ioc_init_size = 1024 + sizeof(MPI2_IOC_INIT_REQUEST);
if (bus_dma_tag_create(sc->mrsas_parent_tag,
1, 0,
BUS_SPACE_MAXADDR_32BIT,
BUS_SPACE_MAXADDR,
NULL, NULL,
ioc_init_size,
1,
ioc_init_size,
BUS_DMA_ALLOCNOW,
NULL, NULL,
&sc->ioc_init_tag)) {
device_printf(sc->mrsas_dev, "Cannot allocate ioc init tag\n");
return (ENOMEM);
}
if (bus_dmamem_alloc(sc->ioc_init_tag, (void **)&sc->ioc_init_mem,
BUS_DMA_NOWAIT, &sc->ioc_init_dmamap)) {
device_printf(sc->mrsas_dev, "Cannot allocate ioc init cmd mem\n");
return (ENOMEM);
}
bzero(sc->ioc_init_mem, ioc_init_size);
if (bus_dmamap_load(sc->ioc_init_tag, sc->ioc_init_dmamap,
sc->ioc_init_mem, ioc_init_size, mrsas_addr_cb,
&sc->ioc_init_phys_mem, BUS_DMA_NOWAIT)) {
device_printf(sc->mrsas_dev, "Cannot load ioc init cmd mem\n");
return (ENOMEM);
}
return (0);
}
/*
* mrsas_free_ioc_cmd: Allocates memory for IOC Init command
* input: Adapter soft state
*
* Deallocates memory of the IOC Init cmd.
*/
void
mrsas_free_ioc_cmd(struct mrsas_softc *sc)
{
if (sc->ioc_init_phys_mem)
bus_dmamap_unload(sc->ioc_init_tag, sc->ioc_init_dmamap);
if (sc->ioc_init_mem != NULL)
bus_dmamem_free(sc->ioc_init_tag, sc->ioc_init_mem, sc->ioc_init_dmamap);
if (sc->ioc_init_tag != NULL)
bus_dma_tag_destroy(sc->ioc_init_tag);
}
/*
* mrsas_ioc_init: Sends IOC Init command to FW
* input: Adapter soft state
*
* Issues the IOC Init cmd to FW to initialize the ROC/controller.
*/
int
mrsas_ioc_init(struct mrsas_softc *sc)
{
struct mrsas_init_frame *init_frame;
pMpi2IOCInitRequest_t IOCInitMsg;
MRSAS_REQUEST_DESCRIPTOR_UNION req_desc;
u_int8_t max_wait = MRSAS_IOC_INIT_WAIT_TIME;
bus_addr_t phys_addr;
int i, retcode = 0;
/* Allocate memory for the IOC INIT command */
if (mrsas_alloc_ioc_cmd(sc)) {
device_printf(sc->mrsas_dev, "Cannot allocate IOC command.\n");
return (1);
}
IOCInitMsg = (pMpi2IOCInitRequest_t)(((char *)sc->ioc_init_mem) + 1024);
IOCInitMsg->Function = MPI2_FUNCTION_IOC_INIT;
IOCInitMsg->WhoInit = MPI2_WHOINIT_HOST_DRIVER;
IOCInitMsg->MsgVersion = MPI2_VERSION;
IOCInitMsg->HeaderVersion = MPI2_HEADER_VERSION;
IOCInitMsg->SystemRequestFrameSize = MRSAS_MPI2_RAID_DEFAULT_IO_FRAME_SIZE / 4;
IOCInitMsg->ReplyDescriptorPostQueueDepth = sc->reply_q_depth;
IOCInitMsg->ReplyDescriptorPostQueueAddress = sc->reply_desc_phys_addr;
IOCInitMsg->SystemRequestFrameBaseAddress = sc->io_request_phys_addr;
IOCInitMsg->HostMSIxVectors = (sc->msix_vectors > 0 ? sc->msix_vectors : 0);
init_frame = (struct mrsas_init_frame *)sc->ioc_init_mem;
init_frame->cmd = MFI_CMD_INIT;
init_frame->cmd_status = 0xFF;
init_frame->flags |= MFI_FRAME_DONT_POST_IN_REPLY_QUEUE;
/* driver support Extended MSIX */
if ((sc->device_id == MRSAS_INVADER) ||
- (sc->device_id == MRSAS_FURY)) {
+ (sc->device_id == MRSAS_FURY) ||
+ (sc->device_id == MRSAS_INTRUDER) ||
+ (sc->device_id == MRSAS_INTRUDER_24)) {
init_frame->driver_operations.
mfi_capabilities.support_additional_msix = 1;
}
if (sc->verbuf_mem) {
snprintf((char *)sc->verbuf_mem, strlen(MRSAS_VERSION) + 2, "%s\n",
MRSAS_VERSION);
init_frame->driver_ver_lo = (bus_addr_t)sc->verbuf_phys_addr;
init_frame->driver_ver_hi = 0;
}
init_frame->driver_operations.mfi_capabilities.support_ndrive_r1_lb = 1;
init_frame->driver_operations.mfi_capabilities.support_max_255lds = 1;
init_frame->driver_operations.mfi_capabilities.security_protocol_cmds_fw = 1;
+ if (sc->max_chain_frame_sz > MEGASAS_CHAIN_FRAME_SZ_MIN)
+ init_frame->driver_operations.mfi_capabilities.support_ext_io_size = 1;
phys_addr = (bus_addr_t)sc->ioc_init_phys_mem + 1024;
init_frame->queue_info_new_phys_addr_lo = phys_addr;
init_frame->data_xfer_len = sizeof(Mpi2IOCInitRequest_t);
req_desc.addr.Words = (bus_addr_t)sc->ioc_init_phys_mem;
req_desc.MFAIo.RequestFlags =
(MRSAS_REQ_DESCRIPT_FLAGS_MFA << MRSAS_REQ_DESCRIPT_FLAGS_TYPE_SHIFT);
mrsas_disable_intr(sc);
mrsas_dprint(sc, MRSAS_OCR, "Issuing IOC INIT command to FW.\n");
mrsas_fire_cmd(sc, req_desc.addr.u.low, req_desc.addr.u.high);
/*
* Poll response timer to wait for Firmware response. While this
* timer with the DELAY call could block CPU, the time interval for
* this is only 1 millisecond.
*/
if (init_frame->cmd_status == 0xFF) {
for (i = 0; i < (max_wait * 1000); i++) {
if (init_frame->cmd_status == 0xFF)
DELAY(1000);
else
break;
}
}
if (init_frame->cmd_status == 0)
mrsas_dprint(sc, MRSAS_OCR,
"IOC INIT response received from FW.\n");
else {
if (init_frame->cmd_status == 0xFF)
device_printf(sc->mrsas_dev, "IOC Init timed out after %d seconds.\n", max_wait);
else
device_printf(sc->mrsas_dev, "IOC Init failed, status = 0x%x\n", init_frame->cmd_status);
retcode = 1;
}
mrsas_free_ioc_cmd(sc);
return (retcode);
}
/*
* mrsas_alloc_mpt_cmds: Allocates the command packets
* input: Adapter instance soft state
*
* This function allocates the internal commands for IOs. Each command that is
* issued to FW is wrapped in a local data structure called mrsas_mpt_cmd. An
* array is allocated with mrsas_mpt_cmd context. The free commands are
* maintained in a linked list (cmd pool). SMID value range is from 1 to
* max_fw_cmds.
*/
int
mrsas_alloc_mpt_cmds(struct mrsas_softc *sc)
{
int i, j;
u_int32_t max_cmd, count;
struct mrsas_mpt_cmd *cmd;
pMpi2ReplyDescriptorsUnion_t reply_desc;
u_int32_t offset, chain_offset, sense_offset;
bus_addr_t io_req_base_phys, chain_frame_base_phys, sense_base_phys;
u_int8_t *io_req_base, *chain_frame_base, *sense_base;
max_cmd = sc->max_fw_cmds;
sc->req_desc = malloc(sc->request_alloc_sz, M_MRSAS, M_NOWAIT);
if (!sc->req_desc) {
device_printf(sc->mrsas_dev, "Out of memory, cannot alloc req desc\n");
return (ENOMEM);
}
memset(sc->req_desc, 0, sc->request_alloc_sz);
/*
* sc->mpt_cmd_list is an array of struct mrsas_mpt_cmd pointers.
* Allocate the dynamic array first and then allocate individual
* commands.
*/
sc->mpt_cmd_list = malloc(sizeof(struct mrsas_mpt_cmd *) * max_cmd, M_MRSAS, M_NOWAIT);
if (!sc->mpt_cmd_list) {
device_printf(sc->mrsas_dev, "Cannot alloc memory for mpt_cmd_list.\n");
return (ENOMEM);
}
memset(sc->mpt_cmd_list, 0, sizeof(struct mrsas_mpt_cmd *) * max_cmd);
for (i = 0; i < max_cmd; i++) {
sc->mpt_cmd_list[i] = malloc(sizeof(struct mrsas_mpt_cmd),
M_MRSAS, M_NOWAIT);
if (!sc->mpt_cmd_list[i]) {
for (j = 0; j < i; j++)
free(sc->mpt_cmd_list[j], M_MRSAS);
free(sc->mpt_cmd_list, M_MRSAS);
sc->mpt_cmd_list = NULL;
return (ENOMEM);
}
}
io_req_base = (u_int8_t *)sc->io_request_mem + MRSAS_MPI2_RAID_DEFAULT_IO_FRAME_SIZE;
io_req_base_phys = (bus_addr_t)sc->io_request_phys_addr + MRSAS_MPI2_RAID_DEFAULT_IO_FRAME_SIZE;
chain_frame_base = (u_int8_t *)sc->chain_frame_mem;
chain_frame_base_phys = (bus_addr_t)sc->chain_frame_phys_addr;
sense_base = (u_int8_t *)sc->sense_mem;
sense_base_phys = (bus_addr_t)sc->sense_phys_addr;
for (i = 0; i < max_cmd; i++) {
cmd = sc->mpt_cmd_list[i];
offset = MRSAS_MPI2_RAID_DEFAULT_IO_FRAME_SIZE * i;
- chain_offset = 1024 * i;
+ chain_offset = sc->max_chain_frame_sz * i;
sense_offset = MRSAS_SENSE_LEN * i;
memset(cmd, 0, sizeof(struct mrsas_mpt_cmd));
cmd->index = i + 1;
cmd->ccb_ptr = NULL;
callout_init(&cmd->cm_callout, 0);
cmd->sync_cmd_idx = (u_int32_t)MRSAS_ULONG_MAX;
cmd->sc = sc;
cmd->io_request = (MRSAS_RAID_SCSI_IO_REQUEST *) (io_req_base + offset);
memset(cmd->io_request, 0, sizeof(MRSAS_RAID_SCSI_IO_REQUEST));
cmd->io_request_phys_addr = io_req_base_phys + offset;
cmd->chain_frame = (MPI2_SGE_IO_UNION *) (chain_frame_base + chain_offset);
cmd->chain_frame_phys_addr = chain_frame_base_phys + chain_offset;
cmd->sense = sense_base + sense_offset;
cmd->sense_phys_addr = sense_base_phys + sense_offset;
if (bus_dmamap_create(sc->data_tag, 0, &cmd->data_dmamap)) {
return (FAIL);
}
TAILQ_INSERT_TAIL(&(sc->mrsas_mpt_cmd_list_head), cmd, next);
}
/* Initialize reply descriptor array to 0xFFFFFFFF */
reply_desc = sc->reply_desc_mem;
count = sc->msix_vectors > 0 ? sc->msix_vectors : 1;
for (i = 0; i < sc->reply_q_depth * count; i++, reply_desc++) {
reply_desc->Words = MRSAS_ULONG_MAX;
}
return (0);
}
/*
* mrsas_fire_cmd: Sends command to FW
* input: Adapter softstate
* request descriptor address low
* request descriptor address high
*
* This functions fires the command to Firmware by writing to the
* inbound_low_queue_port and inbound_high_queue_port.
*/
void
mrsas_fire_cmd(struct mrsas_softc *sc, u_int32_t req_desc_lo,
u_int32_t req_desc_hi)
{
mtx_lock(&sc->pci_lock);
mrsas_write_reg(sc, offsetof(mrsas_reg_set, inbound_low_queue_port),
req_desc_lo);
mrsas_write_reg(sc, offsetof(mrsas_reg_set, inbound_high_queue_port),
req_desc_hi);
mtx_unlock(&sc->pci_lock);
}
/*
* mrsas_transition_to_ready: Move FW to Ready state input:
* Adapter instance soft state
*
* During the initialization, FW passes can potentially be in any one of several
* possible states. If the FW in operational, waiting-for-handshake states,
* driver must take steps to bring it to ready state. Otherwise, it has to
* wait for the ready state.
*/
int
mrsas_transition_to_ready(struct mrsas_softc *sc, int ocr)
{
int i;
u_int8_t max_wait;
u_int32_t val, fw_state;
u_int32_t cur_state;
u_int32_t abs_state, curr_abs_state;
val = mrsas_read_reg(sc, offsetof(mrsas_reg_set, outbound_scratch_pad));
fw_state = val & MFI_STATE_MASK;
max_wait = MRSAS_RESET_WAIT_TIME;
if (fw_state != MFI_STATE_READY)
device_printf(sc->mrsas_dev, "Waiting for FW to come to ready state\n");
while (fw_state != MFI_STATE_READY) {
abs_state = mrsas_read_reg(sc, offsetof(mrsas_reg_set, outbound_scratch_pad));
switch (fw_state) {
case MFI_STATE_FAULT:
device_printf(sc->mrsas_dev, "FW is in FAULT state!!\n");
if (ocr) {
cur_state = MFI_STATE_FAULT;
break;
} else
return -ENODEV;
case MFI_STATE_WAIT_HANDSHAKE:
/* Set the CLR bit in inbound doorbell */
mrsas_write_reg(sc, offsetof(mrsas_reg_set, doorbell),
MFI_INIT_CLEAR_HANDSHAKE | MFI_INIT_HOTPLUG);
cur_state = MFI_STATE_WAIT_HANDSHAKE;
break;
case MFI_STATE_BOOT_MESSAGE_PENDING:
mrsas_write_reg(sc, offsetof(mrsas_reg_set, doorbell),
MFI_INIT_HOTPLUG);
cur_state = MFI_STATE_BOOT_MESSAGE_PENDING;
break;
case MFI_STATE_OPERATIONAL:
/*
* Bring it to READY state; assuming max wait 10
* secs
*/
mrsas_disable_intr(sc);
mrsas_write_reg(sc, offsetof(mrsas_reg_set, doorbell), MFI_RESET_FLAGS);
for (i = 0; i < max_wait * 1000; i++) {
if (mrsas_read_reg(sc, offsetof(mrsas_reg_set, doorbell)) & 1)
DELAY(1000);
else
break;
}
cur_state = MFI_STATE_OPERATIONAL;
break;
case MFI_STATE_UNDEFINED:
/*
* This state should not last for more than 2
* seconds
*/
cur_state = MFI_STATE_UNDEFINED;
break;
case MFI_STATE_BB_INIT:
cur_state = MFI_STATE_BB_INIT;
break;
case MFI_STATE_FW_INIT:
cur_state = MFI_STATE_FW_INIT;
break;
case MFI_STATE_FW_INIT_2:
cur_state = MFI_STATE_FW_INIT_2;
break;
case MFI_STATE_DEVICE_SCAN:
cur_state = MFI_STATE_DEVICE_SCAN;
break;
case MFI_STATE_FLUSH_CACHE:
cur_state = MFI_STATE_FLUSH_CACHE;
break;
default:
device_printf(sc->mrsas_dev, "Unknown state 0x%x\n", fw_state);
return -ENODEV;
}
/*
* The cur_state should not last for more than max_wait secs
*/
for (i = 0; i < (max_wait * 1000); i++) {
fw_state = (mrsas_read_reg(sc, offsetof(mrsas_reg_set,
outbound_scratch_pad)) & MFI_STATE_MASK);
curr_abs_state = mrsas_read_reg(sc, offsetof(mrsas_reg_set,
outbound_scratch_pad));
if (abs_state == curr_abs_state)
DELAY(1000);
else
break;
}
/*
* Return error if fw_state hasn't changed after max_wait
*/
if (curr_abs_state == abs_state) {
device_printf(sc->mrsas_dev, "FW state [%d] hasn't changed "
"in %d secs\n", fw_state, max_wait);
return -ENODEV;
}
}
mrsas_dprint(sc, MRSAS_OCR, "FW now in Ready state\n");
return 0;
}
/*
* mrsas_get_mfi_cmd: Get a cmd from free command pool
* input: Adapter soft state
*
* This function removes an MFI command from the command list.
*/
struct mrsas_mfi_cmd *
mrsas_get_mfi_cmd(struct mrsas_softc *sc)
{
struct mrsas_mfi_cmd *cmd = NULL;
mtx_lock(&sc->mfi_cmd_pool_lock);
if (!TAILQ_EMPTY(&sc->mrsas_mfi_cmd_list_head)) {
cmd = TAILQ_FIRST(&sc->mrsas_mfi_cmd_list_head);
TAILQ_REMOVE(&sc->mrsas_mfi_cmd_list_head, cmd, next);
}
mtx_unlock(&sc->mfi_cmd_pool_lock);
return cmd;
}
/*
* mrsas_ocr_thread: Thread to handle OCR/Kill Adapter.
* input: Adapter Context.
*
* This function will check FW status register and flag do_timeout_reset flag.
* It will do OCR/Kill adapter if FW is in fault state or IO timed out has
* trigger reset.
*/
static void
mrsas_ocr_thread(void *arg)
{
struct mrsas_softc *sc;
u_int32_t fw_status, fw_state;
sc = (struct mrsas_softc *)arg;
mrsas_dprint(sc, MRSAS_TRACE, "%s\n", __func__);
sc->ocr_thread_active = 1;
mtx_lock(&sc->sim_lock);
for (;;) {
/* Sleep for 1 second and check the queue status */
msleep(&sc->ocr_chan, &sc->sim_lock, PRIBIO,
"mrsas_ocr", sc->mrsas_fw_fault_check_delay * hz);
- if (sc->remove_in_progress) {
+ if (sc->remove_in_progress ||
+ sc->adprecovery == MRSAS_HW_CRITICAL_ERROR) {
mrsas_dprint(sc, MRSAS_OCR,
- "Exit due to shutdown from %s\n", __func__);
+ "Exit due to %s from %s\n",
+ sc->remove_in_progress ? "Shutdown" :
+ "Hardware critical error", __func__);
break;
}
fw_status = mrsas_read_reg(sc,
offsetof(mrsas_reg_set, outbound_scratch_pad));
fw_state = fw_status & MFI_STATE_MASK;
if (fw_state == MFI_STATE_FAULT || sc->do_timedout_reset) {
- device_printf(sc->mrsas_dev, "OCR started due to %s!\n",
+ device_printf(sc->mrsas_dev, "%s started due to %s!\n",
+ sc->disableOnlineCtrlReset ? "Kill Adapter" : "OCR",
sc->do_timedout_reset ? "IO Timeout" :
"FW fault detected");
mtx_lock_spin(&sc->ioctl_lock);
sc->reset_in_progress = 1;
sc->reset_count++;
mtx_unlock_spin(&sc->ioctl_lock);
mrsas_xpt_freeze(sc);
- mrsas_reset_ctrl(sc);
+ mrsas_reset_ctrl(sc, sc->do_timedout_reset);
mrsas_xpt_release(sc);
sc->reset_in_progress = 0;
sc->do_timedout_reset = 0;
}
}
mtx_unlock(&sc->sim_lock);
sc->ocr_thread_active = 0;
mrsas_kproc_exit(0);
}
/*
* mrsas_reset_reply_desc: Reset Reply descriptor as part of OCR.
* input: Adapter Context.
*
* This function will clear reply descriptor so that post OCR driver and FW will
* lost old history.
*/
void
mrsas_reset_reply_desc(struct mrsas_softc *sc)
{
int i, count;
pMpi2ReplyDescriptorsUnion_t reply_desc;
count = sc->msix_vectors > 0 ? sc->msix_vectors : 1;
for (i = 0; i < count; i++)
sc->last_reply_idx[i] = 0;
reply_desc = sc->reply_desc_mem;
for (i = 0; i < sc->reply_q_depth; i++, reply_desc++) {
reply_desc->Words = MRSAS_ULONG_MAX;
}
}
/*
* mrsas_reset_ctrl: Core function to OCR/Kill adapter.
* input: Adapter Context.
*
* This function will run from thread context so that it can sleep. 1. Do not
* handle OCR if FW is in HW critical error. 2. Wait for outstanding command
* to complete for 180 seconds. 3. If #2 does not find any outstanding
* command Controller is in working state, so skip OCR. Otherwise, do
* OCR/kill Adapter based on flag disableOnlineCtrlReset. 4. Start of the
* OCR, return all SCSI command back to CAM layer which has ccb_ptr. 5. Post
* OCR, Re-fire Management command and move Controller to Operation state.
*/
int
-mrsas_reset_ctrl(struct mrsas_softc *sc)
+mrsas_reset_ctrl(struct mrsas_softc *sc, u_int8_t reset_reason)
{
int retval = SUCCESS, i, j, retry = 0;
u_int32_t host_diag, abs_state, status_reg, reset_adapter;
union ccb *ccb;
struct mrsas_mfi_cmd *mfi_cmd;
struct mrsas_mpt_cmd *mpt_cmd;
- MRSAS_REQUEST_DESCRIPTOR_UNION *req_desc;
+ union mrsas_evt_class_locale class_locale;
if (sc->adprecovery == MRSAS_HW_CRITICAL_ERROR) {
device_printf(sc->mrsas_dev,
"mrsas: Hardware critical error, returning FAIL.\n");
return FAIL;
}
mrsas_set_bit(MRSAS_FUSION_IN_RESET, &sc->reset_flags);
sc->adprecovery = MRSAS_ADPRESET_SM_INFAULT;
mrsas_disable_intr(sc);
- DELAY(1000 * 1000);
+ msleep(&sc->ocr_chan, &sc->sim_lock, PRIBIO, "mrsas_ocr",
+ sc->mrsas_fw_fault_check_delay * hz);
/* First try waiting for commands to complete */
- if (mrsas_wait_for_outstanding(sc)) {
+ if (mrsas_wait_for_outstanding(sc, reset_reason)) {
mrsas_dprint(sc, MRSAS_OCR,
"resetting adapter from %s.\n",
__func__);
/* Now return commands back to the CAM layer */
mtx_unlock(&sc->sim_lock);
for (i = 0; i < sc->max_fw_cmds; i++) {
mpt_cmd = sc->mpt_cmd_list[i];
if (mpt_cmd->ccb_ptr) {
ccb = (union ccb *)(mpt_cmd->ccb_ptr);
ccb->ccb_h.status = CAM_SCSI_BUS_RESET;
mrsas_cmd_done(sc, mpt_cmd);
mrsas_atomic_dec(&sc->fw_outstanding);
}
}
mtx_lock(&sc->sim_lock);
status_reg = mrsas_read_reg(sc, offsetof(mrsas_reg_set,
outbound_scratch_pad));
abs_state = status_reg & MFI_STATE_MASK;
reset_adapter = status_reg & MFI_RESET_ADAPTER;
if (sc->disableOnlineCtrlReset ||
(abs_state == MFI_STATE_FAULT && !reset_adapter)) {
/* Reset not supported, kill adapter */
mrsas_dprint(sc, MRSAS_OCR, "Reset not supported, killing adapter.\n");
mrsas_kill_hba(sc);
retval = FAIL;
goto out;
}
/* Now try to reset the chip */
for (i = 0; i < MRSAS_FUSION_MAX_RESET_TRIES; i++) {
mrsas_write_reg(sc, offsetof(mrsas_reg_set, fusion_seq_offset),
MPI2_WRSEQ_FLUSH_KEY_VALUE);
mrsas_write_reg(sc, offsetof(mrsas_reg_set, fusion_seq_offset),
MPI2_WRSEQ_1ST_KEY_VALUE);
mrsas_write_reg(sc, offsetof(mrsas_reg_set, fusion_seq_offset),
MPI2_WRSEQ_2ND_KEY_VALUE);
mrsas_write_reg(sc, offsetof(mrsas_reg_set, fusion_seq_offset),
MPI2_WRSEQ_3RD_KEY_VALUE);
mrsas_write_reg(sc, offsetof(mrsas_reg_set, fusion_seq_offset),
MPI2_WRSEQ_4TH_KEY_VALUE);
mrsas_write_reg(sc, offsetof(mrsas_reg_set, fusion_seq_offset),
MPI2_WRSEQ_5TH_KEY_VALUE);
mrsas_write_reg(sc, offsetof(mrsas_reg_set, fusion_seq_offset),
MPI2_WRSEQ_6TH_KEY_VALUE);
/* Check that the diag write enable (DRWE) bit is on */
host_diag = mrsas_read_reg(sc, offsetof(mrsas_reg_set,
fusion_host_diag));
retry = 0;
while (!(host_diag & HOST_DIAG_WRITE_ENABLE)) {
DELAY(100 * 1000);
host_diag = mrsas_read_reg(sc, offsetof(mrsas_reg_set,
fusion_host_diag));
if (retry++ == 100) {
mrsas_dprint(sc, MRSAS_OCR,
"Host diag unlock failed!\n");
break;
}
}
if (!(host_diag & HOST_DIAG_WRITE_ENABLE))
continue;
/* Send chip reset command */
mrsas_write_reg(sc, offsetof(mrsas_reg_set, fusion_host_diag),
host_diag | HOST_DIAG_RESET_ADAPTER);
DELAY(3000 * 1000);
/* Make sure reset adapter bit is cleared */
host_diag = mrsas_read_reg(sc, offsetof(mrsas_reg_set,
fusion_host_diag));
retry = 0;
while (host_diag & HOST_DIAG_RESET_ADAPTER) {
DELAY(100 * 1000);
host_diag = mrsas_read_reg(sc, offsetof(mrsas_reg_set,
fusion_host_diag));
if (retry++ == 1000) {
mrsas_dprint(sc, MRSAS_OCR,
"Diag reset adapter never cleared!\n");
break;
}
}
if (host_diag & HOST_DIAG_RESET_ADAPTER)
continue;
abs_state = mrsas_read_reg(sc, offsetof(mrsas_reg_set,
outbound_scratch_pad)) & MFI_STATE_MASK;
retry = 0;
while ((abs_state <= MFI_STATE_FW_INIT) && (retry++ < 1000)) {
DELAY(100 * 1000);
abs_state = mrsas_read_reg(sc, offsetof(mrsas_reg_set,
outbound_scratch_pad)) & MFI_STATE_MASK;
}
if (abs_state <= MFI_STATE_FW_INIT) {
mrsas_dprint(sc, MRSAS_OCR, "firmware state < MFI_STATE_FW_INIT,"
" state = 0x%x\n", abs_state);
continue;
}
/* Wait for FW to become ready */
if (mrsas_transition_to_ready(sc, 1)) {
mrsas_dprint(sc, MRSAS_OCR,
"mrsas: Failed to transition controller to ready.\n");
continue;
}
mrsas_reset_reply_desc(sc);
if (mrsas_ioc_init(sc)) {
mrsas_dprint(sc, MRSAS_OCR, "mrsas_ioc_init() failed!\n");
continue;
}
- /* Re-fire management commands */
for (j = 0; j < sc->max_fw_cmds; j++) {
mpt_cmd = sc->mpt_cmd_list[j];
if (mpt_cmd->sync_cmd_idx != (u_int32_t)MRSAS_ULONG_MAX) {
mfi_cmd = sc->mfi_cmd_list[mpt_cmd->sync_cmd_idx];
- if (mfi_cmd->frame->dcmd.opcode ==
- MR_DCMD_LD_MAP_GET_INFO) {
- mrsas_release_mfi_cmd(mfi_cmd);
- mrsas_release_mpt_cmd(mpt_cmd);
- } else {
- req_desc = mrsas_get_request_desc(sc,
- mfi_cmd->cmd_id.context.smid - 1);
- mrsas_dprint(sc, MRSAS_OCR,
- "Re-fire command DCMD opcode 0x%x index %d\n ",
- mfi_cmd->frame->dcmd.opcode, j);
- if (!req_desc)
- device_printf(sc->mrsas_dev,
- "Cannot build MPT cmd.\n");
- else
- mrsas_fire_cmd(sc, req_desc->addr.u.low,
- req_desc->addr.u.high);
- }
+ mrsas_release_mfi_cmd(mfi_cmd);
+ mrsas_release_mpt_cmd(mpt_cmd);
}
}
+ sc->aen_cmd = NULL;
+
/* Reset load balance info */
memset(sc->load_balance_info, 0,
sizeof(LD_LOAD_BALANCE_INFO) * MAX_LOGICAL_DRIVES_EXT);
if (mrsas_get_ctrl_info(sc)) {
mrsas_kill_hba(sc);
retval = FAIL;
goto out;
}
if (!mrsas_get_map_info(sc))
mrsas_sync_map_info(sc);
+ megasas_setup_jbod_map(sc);
+
+ memset(sc->pd_list, 0,
+ MRSAS_MAX_PD * sizeof(struct mrsas_pd_list));
+ if (mrsas_get_pd_list(sc) != SUCCESS) {
+ device_printf(sc->mrsas_dev, "Get PD list failed from OCR.\n"
+ "Will get the latest PD LIST after OCR on event.\n");
+ }
+ memset(sc->ld_ids, 0xff, MRSAS_MAX_LD_IDS);
+ if (mrsas_get_ld_list(sc) != SUCCESS) {
+ device_printf(sc->mrsas_dev, "Get LD lsit failed from OCR.\n"
+ "Will get the latest LD LIST after OCR on event.\n");
+ }
mrsas_clear_bit(MRSAS_FUSION_IN_RESET, &sc->reset_flags);
mrsas_enable_intr(sc);
sc->adprecovery = MRSAS_HBA_OPERATIONAL;
+ /* Register AEN with FW for last sequence number */
+ class_locale.members.reserved = 0;
+ class_locale.members.locale = MR_EVT_LOCALE_ALL;
+ class_locale.members.class = MR_EVT_CLASS_DEBUG;
+
+ if (mrsas_register_aen(sc, sc->last_seq_num,
+ class_locale.word)) {
+ device_printf(sc->mrsas_dev,
+ "ERROR: AEN registration FAILED from OCR !!! "
+ "Further events from the controller cannot be notified."
+ "Either there is some problem in the controller"
+ "or the controller does not support AEN.\n"
+ "Please contact to the SUPPORT TEAM if the problem persists\n");
+ }
/* Adapter reset completed successfully */
device_printf(sc->mrsas_dev, "Reset successful\n");
retval = SUCCESS;
goto out;
}
/* Reset failed, kill the adapter */
device_printf(sc->mrsas_dev, "Reset failed, killing adapter.\n");
mrsas_kill_hba(sc);
retval = FAIL;
} else {
mrsas_clear_bit(MRSAS_FUSION_IN_RESET, &sc->reset_flags);
mrsas_enable_intr(sc);
sc->adprecovery = MRSAS_HBA_OPERATIONAL;
}
out:
mrsas_clear_bit(MRSAS_FUSION_IN_RESET, &sc->reset_flags);
mrsas_dprint(sc, MRSAS_OCR,
"Reset Exit with %d.\n", retval);
return retval;
}
/*
* mrsas_kill_hba: Kill HBA when OCR is not supported
* input: Adapter Context.
*
* This function will kill HBA when OCR is not supported.
*/
void
mrsas_kill_hba(struct mrsas_softc *sc)
{
sc->adprecovery = MRSAS_HW_CRITICAL_ERROR;
- pause("mrsas_kill_hba", 1000);
+ DELAY(1000 * 1000);
mrsas_dprint(sc, MRSAS_OCR, "%s\n", __func__);
mrsas_write_reg(sc, offsetof(mrsas_reg_set, doorbell),
MFI_STOP_ADP);
/* Flush */
mrsas_read_reg(sc, offsetof(mrsas_reg_set, doorbell));
mrsas_complete_outstanding_ioctls(sc);
}
/**
* mrsas_complete_outstanding_ioctls Complete pending IOCTLS after kill_hba
* input: Controller softc
*
* Returns void
*/
void
mrsas_complete_outstanding_ioctls(struct mrsas_softc *sc)
{
int i;
struct mrsas_mpt_cmd *cmd_mpt;
struct mrsas_mfi_cmd *cmd_mfi;
u_int32_t count, MSIxIndex;
count = sc->msix_vectors > 0 ? sc->msix_vectors : 1;
for (i = 0; i < sc->max_fw_cmds; i++) {
cmd_mpt = sc->mpt_cmd_list[i];
if (cmd_mpt->sync_cmd_idx != (u_int32_t)MRSAS_ULONG_MAX) {
cmd_mfi = sc->mfi_cmd_list[cmd_mpt->sync_cmd_idx];
if (cmd_mfi->sync_cmd && cmd_mfi->frame->hdr.cmd != MFI_CMD_ABORT) {
for (MSIxIndex = 0; MSIxIndex < count; MSIxIndex++)
mrsas_complete_mptmfi_passthru(sc, cmd_mfi,
cmd_mpt->io_request->RaidContext.status);
}
}
}
}
/*
* mrsas_wait_for_outstanding: Wait for outstanding commands
* input: Adapter Context.
*
* This function will wait for 180 seconds for outstanding commands to be
* completed.
*/
int
-mrsas_wait_for_outstanding(struct mrsas_softc *sc)
+mrsas_wait_for_outstanding(struct mrsas_softc *sc, u_int8_t check_reason)
{
int i, outstanding, retval = 0;
u_int32_t fw_state, count, MSIxIndex;
for (i = 0; i < MRSAS_RESET_WAIT_TIME; i++) {
if (sc->remove_in_progress) {
mrsas_dprint(sc, MRSAS_OCR,
"Driver remove or shutdown called.\n");
retval = 1;
goto out;
}
/* Check if firmware is in fault state */
fw_state = mrsas_read_reg(sc, offsetof(mrsas_reg_set,
outbound_scratch_pad)) & MFI_STATE_MASK;
if (fw_state == MFI_STATE_FAULT) {
mrsas_dprint(sc, MRSAS_OCR,
"Found FW in FAULT state, will reset adapter.\n");
retval = 1;
goto out;
}
+ if (check_reason == MFI_DCMD_TIMEOUT_OCR) {
+ mrsas_dprint(sc, MRSAS_OCR,
+ "DCMD IO TIMEOUT detected, will reset adapter.\n");
+ retval = 1;
+ goto out;
+ }
outstanding = mrsas_atomic_read(&sc->fw_outstanding);
if (!outstanding)
goto out;
if (!(i % MRSAS_RESET_NOTICE_INTERVAL)) {
mrsas_dprint(sc, MRSAS_OCR, "[%2d]waiting for %d "
"commands to complete\n", i, outstanding);
count = sc->msix_vectors > 0 ? sc->msix_vectors : 1;
for (MSIxIndex = 0; MSIxIndex < count; MSIxIndex++)
mrsas_complete_cmd(sc, MSIxIndex);
}
DELAY(1000 * 1000);
}
if (mrsas_atomic_read(&sc->fw_outstanding)) {
mrsas_dprint(sc, MRSAS_OCR,
" pending commands remain after waiting,"
" will reset adapter.\n");
retval = 1;
}
out:
return retval;
}
/*
* mrsas_release_mfi_cmd: Return a cmd to free command pool
* input: Command packet for return to free cmd pool
*
* This function returns the MFI command to the command list.
*/
void
mrsas_release_mfi_cmd(struct mrsas_mfi_cmd *cmd)
{
struct mrsas_softc *sc = cmd->sc;
mtx_lock(&sc->mfi_cmd_pool_lock);
cmd->ccb_ptr = NULL;
cmd->cmd_id.frame_count = 0;
TAILQ_INSERT_TAIL(&(sc->mrsas_mfi_cmd_list_head), cmd, next);
mtx_unlock(&sc->mfi_cmd_pool_lock);
return;
}
/*
* mrsas_get_controller_info: Returns FW's controller structure
* input: Adapter soft state
* Controller information structure
*
* Issues an internal command (DCMD) to get the FW's controller structure. This
* information is mainly used to find out the maximum IO transfer per command
* supported by the FW.
*/
static int
mrsas_get_ctrl_info(struct mrsas_softc *sc)
{
int retcode = 0;
+ u_int8_t do_ocr = 1;
struct mrsas_mfi_cmd *cmd;
struct mrsas_dcmd_frame *dcmd;
cmd = mrsas_get_mfi_cmd(sc);
if (!cmd) {
device_printf(sc->mrsas_dev, "Failed to get a free cmd\n");
return -ENOMEM;
}
dcmd = &cmd->frame->dcmd;
if (mrsas_alloc_ctlr_info_cmd(sc) != SUCCESS) {
device_printf(sc->mrsas_dev, "Cannot allocate get ctlr info cmd\n");
mrsas_release_mfi_cmd(cmd);
return -ENOMEM;
}
memset(dcmd->mbox.b, 0, MFI_MBOX_SIZE);
dcmd->cmd = MFI_CMD_DCMD;
dcmd->cmd_status = 0xFF;
dcmd->sge_count = 1;
dcmd->flags = MFI_FRAME_DIR_READ;
dcmd->timeout = 0;
dcmd->pad_0 = 0;
dcmd->data_xfer_len = sizeof(struct mrsas_ctrl_info);
dcmd->opcode = MR_DCMD_CTRL_GET_INFO;
dcmd->sgl.sge32[0].phys_addr = sc->ctlr_info_phys_addr;
dcmd->sgl.sge32[0].length = sizeof(struct mrsas_ctrl_info);
- if (!mrsas_issue_polled(sc, cmd))
- memcpy(sc->ctrl_info, sc->ctlr_info_mem, sizeof(struct mrsas_ctrl_info));
+ retcode = mrsas_issue_polled(sc, cmd);
+ if (retcode == ETIMEDOUT)
+ goto dcmd_timeout;
else
- retcode = 1;
+ memcpy(sc->ctrl_info, sc->ctlr_info_mem, sizeof(struct mrsas_ctrl_info));
+ do_ocr = 0;
mrsas_update_ext_vd_details(sc);
+ sc->use_seqnum_jbod_fp =
+ sc->ctrl_info->adapterOperations3.useSeqNumJbodFP;
+
+dcmd_timeout:
mrsas_free_ctlr_info_cmd(sc);
- mrsas_release_mfi_cmd(cmd);
+
+ if (do_ocr)
+ sc->do_timedout_reset = MFI_DCMD_TIMEOUT_OCR;
+ else
+ mrsas_release_mfi_cmd(cmd);
+
return (retcode);
}
/*
* mrsas_update_ext_vd_details : Update details w.r.t Extended VD
* input:
* sc - Controller's softc
*/
static void
mrsas_update_ext_vd_details(struct mrsas_softc *sc)
{
sc->max256vdSupport =
sc->ctrl_info->adapterOperations3.supportMaxExtLDs;
/* Below is additional check to address future FW enhancement */
if (sc->ctrl_info->max_lds > 64)
sc->max256vdSupport = 1;
sc->drv_supported_vd_count = MRSAS_MAX_LD_CHANNELS
* MRSAS_MAX_DEV_PER_CHANNEL;
sc->drv_supported_pd_count = MRSAS_MAX_PD_CHANNELS
* MRSAS_MAX_DEV_PER_CHANNEL;
if (sc->max256vdSupport) {
sc->fw_supported_vd_count = MAX_LOGICAL_DRIVES_EXT;
sc->fw_supported_pd_count = MAX_PHYSICAL_DEVICES;
} else {
sc->fw_supported_vd_count = MAX_LOGICAL_DRIVES;
sc->fw_supported_pd_count = MAX_PHYSICAL_DEVICES;
}
sc->old_map_sz = sizeof(MR_FW_RAID_MAP) +
(sizeof(MR_LD_SPAN_MAP) *
(sc->fw_supported_vd_count - 1));
sc->new_map_sz = sizeof(MR_FW_RAID_MAP_EXT);
sc->drv_map_sz = sizeof(MR_DRV_RAID_MAP) +
(sizeof(MR_LD_SPAN_MAP) *
(sc->drv_supported_vd_count - 1));
sc->max_map_sz = max(sc->old_map_sz, sc->new_map_sz);
if (sc->max256vdSupport)
sc->current_map_sz = sc->new_map_sz;
else
sc->current_map_sz = sc->old_map_sz;
}
/*
* mrsas_alloc_ctlr_info_cmd: Allocates memory for controller info command
* input: Adapter soft state
*
* Allocates DMAable memory for the controller info internal command.
*/
int
mrsas_alloc_ctlr_info_cmd(struct mrsas_softc *sc)
{
int ctlr_info_size;
/* Allocate get controller info command */
ctlr_info_size = sizeof(struct mrsas_ctrl_info);
if (bus_dma_tag_create(sc->mrsas_parent_tag,
1, 0,
BUS_SPACE_MAXADDR_32BIT,
BUS_SPACE_MAXADDR,
NULL, NULL,
ctlr_info_size,
1,
ctlr_info_size,
BUS_DMA_ALLOCNOW,
NULL, NULL,
&sc->ctlr_info_tag)) {
device_printf(sc->mrsas_dev, "Cannot allocate ctlr info tag\n");
return (ENOMEM);
}
if (bus_dmamem_alloc(sc->ctlr_info_tag, (void **)&sc->ctlr_info_mem,
BUS_DMA_NOWAIT, &sc->ctlr_info_dmamap)) {
device_printf(sc->mrsas_dev, "Cannot allocate ctlr info cmd mem\n");
return (ENOMEM);
}
if (bus_dmamap_load(sc->ctlr_info_tag, sc->ctlr_info_dmamap,
sc->ctlr_info_mem, ctlr_info_size, mrsas_addr_cb,
&sc->ctlr_info_phys_addr, BUS_DMA_NOWAIT)) {
device_printf(sc->mrsas_dev, "Cannot load ctlr info cmd mem\n");
return (ENOMEM);
}
memset(sc->ctlr_info_mem, 0, ctlr_info_size);
return (0);
}
/*
* mrsas_free_ctlr_info_cmd: Free memory for controller info command
* input: Adapter soft state
*
* Deallocates memory of the get controller info cmd.
*/
void
mrsas_free_ctlr_info_cmd(struct mrsas_softc *sc)
{
if (sc->ctlr_info_phys_addr)
bus_dmamap_unload(sc->ctlr_info_tag, sc->ctlr_info_dmamap);
if (sc->ctlr_info_mem != NULL)
bus_dmamem_free(sc->ctlr_info_tag, sc->ctlr_info_mem, sc->ctlr_info_dmamap);
if (sc->ctlr_info_tag != NULL)
bus_dma_tag_destroy(sc->ctlr_info_tag);
}
/*
* mrsas_issue_polled: Issues a polling command
* inputs: Adapter soft state
* Command packet to be issued
*
* This function is for posting of internal commands to Firmware. MFI requires
* the cmd_status to be set to 0xFF before posting. The maximun wait time of
* the poll response timer is 180 seconds.
*/
int
mrsas_issue_polled(struct mrsas_softc *sc, struct mrsas_mfi_cmd *cmd)
{
struct mrsas_header *frame_hdr = &cmd->frame->hdr;
u_int8_t max_wait = MRSAS_INTERNAL_CMD_WAIT_TIME;
- int i, retcode = 0;
+ int i, retcode = SUCCESS;
frame_hdr->cmd_status = 0xFF;
frame_hdr->flags |= MFI_FRAME_DONT_POST_IN_REPLY_QUEUE;
/* Issue the frame using inbound queue port */
if (mrsas_issue_dcmd(sc, cmd)) {
device_printf(sc->mrsas_dev, "Cannot issue DCMD internal command.\n");
return (1);
}
/*
* Poll response timer to wait for Firmware response. While this
* timer with the DELAY call could block CPU, the time interval for
* this is only 1 millisecond.
*/
if (frame_hdr->cmd_status == 0xFF) {
for (i = 0; i < (max_wait * 1000); i++) {
if (frame_hdr->cmd_status == 0xFF)
DELAY(1000);
else
break;
}
}
- if (frame_hdr->cmd_status != 0) {
- if (frame_hdr->cmd_status == 0xFF)
- device_printf(sc->mrsas_dev, "DCMD timed out after %d seconds.\n", max_wait);
- else
- device_printf(sc->mrsas_dev, "DCMD failed, status = 0x%x\n", frame_hdr->cmd_status);
- retcode = 1;
+ if (frame_hdr->cmd_status == 0xFF) {
+ device_printf(sc->mrsas_dev, "DCMD timed out after %d "
+ "seconds from %s\n", max_wait, __func__);
+ device_printf(sc->mrsas_dev, "DCMD opcode 0x%X\n",
+ cmd->frame->dcmd.opcode);
+ retcode = ETIMEDOUT;
}
return (retcode);
}
/*
* mrsas_issue_dcmd: Issues a MFI Pass thru cmd
* input: Adapter soft state mfi cmd pointer
*
* This function is called by mrsas_issued_blocked_cmd() and
* mrsas_issued_polled(), to build the MPT command and then fire the command
* to Firmware.
*/
int
mrsas_issue_dcmd(struct mrsas_softc *sc, struct mrsas_mfi_cmd *cmd)
{
MRSAS_REQUEST_DESCRIPTOR_UNION *req_desc;
req_desc = mrsas_build_mpt_cmd(sc, cmd);
if (!req_desc) {
device_printf(sc->mrsas_dev, "Cannot build MPT cmd.\n");
return (1);
}
mrsas_fire_cmd(sc, req_desc->addr.u.low, req_desc->addr.u.high);
return (0);
}
/*
* mrsas_build_mpt_cmd: Calls helper function to build Passthru cmd
* input: Adapter soft state mfi cmd to build
*
* This function is called by mrsas_issue_cmd() to build the MPT-MFI passthru
* command and prepares the MPT command to send to Firmware.
*/
MRSAS_REQUEST_DESCRIPTOR_UNION *
mrsas_build_mpt_cmd(struct mrsas_softc *sc, struct mrsas_mfi_cmd *cmd)
{
MRSAS_REQUEST_DESCRIPTOR_UNION *req_desc;
u_int16_t index;
if (mrsas_build_mptmfi_passthru(sc, cmd)) {
device_printf(sc->mrsas_dev, "Cannot build MPT-MFI passthru cmd.\n");
return NULL;
}
index = cmd->cmd_id.context.smid;
req_desc = mrsas_get_request_desc(sc, index - 1);
if (!req_desc)
return NULL;
req_desc->addr.Words = 0;
req_desc->SCSIIO.RequestFlags = (MPI2_REQ_DESCRIPT_FLAGS_SCSI_IO << MRSAS_REQ_DESCRIPT_FLAGS_TYPE_SHIFT);
req_desc->SCSIIO.SMID = index;
return (req_desc);
}
/*
* mrsas_build_mptmfi_passthru: Builds a MPT MFI Passthru command
* input: Adapter soft state mfi cmd pointer
*
* The MPT command and the io_request are setup as a passthru command. The SGE
* chain address is set to frame_phys_addr of the MFI command.
*/
u_int8_t
mrsas_build_mptmfi_passthru(struct mrsas_softc *sc, struct mrsas_mfi_cmd *mfi_cmd)
{
MPI25_IEEE_SGE_CHAIN64 *mpi25_ieee_chain;
PTR_MRSAS_RAID_SCSI_IO_REQUEST io_req;
struct mrsas_mpt_cmd *mpt_cmd;
struct mrsas_header *frame_hdr = &mfi_cmd->frame->hdr;
mpt_cmd = mrsas_get_mpt_cmd(sc);
if (!mpt_cmd)
return (1);
/* Save the smid. To be used for returning the cmd */
mfi_cmd->cmd_id.context.smid = mpt_cmd->index;
mpt_cmd->sync_cmd_idx = mfi_cmd->index;
/*
* For cmds where the flag is set, store the flag and check on
* completion. For cmds with this flag, don't call
* mrsas_complete_cmd.
*/
if (frame_hdr->flags & MFI_FRAME_DONT_POST_IN_REPLY_QUEUE)
mpt_cmd->flags = MFI_FRAME_DONT_POST_IN_REPLY_QUEUE;
io_req = mpt_cmd->io_request;
- if ((sc->device_id == MRSAS_INVADER) || (sc->device_id == MRSAS_FURY)) {
+ if ((sc->device_id == MRSAS_INVADER) ||
+ (sc->device_id == MRSAS_FURY) ||
+ (sc->device_id == MRSAS_INTRUDER) ||
+ (sc->device_id == MRSAS_INTRUDER_24)) {
pMpi25IeeeSgeChain64_t sgl_ptr_end = (pMpi25IeeeSgeChain64_t)&io_req->SGL;
sgl_ptr_end += sc->max_sge_in_main_msg - 1;
sgl_ptr_end->Flags = 0;
}
mpi25_ieee_chain = (MPI25_IEEE_SGE_CHAIN64 *) & io_req->SGL.IeeeChain;
io_req->Function = MRSAS_MPI2_FUNCTION_PASSTHRU_IO_REQUEST;
io_req->SGLOffset0 = offsetof(MRSAS_RAID_SCSI_IO_REQUEST, SGL) / 4;
io_req->ChainOffset = sc->chain_offset_mfi_pthru;
mpi25_ieee_chain->Address = mfi_cmd->frame_phys_addr;
mpi25_ieee_chain->Flags = IEEE_SGE_FLAGS_CHAIN_ELEMENT |
MPI2_IEEE_SGE_FLAGS_IOCPLBNTA_ADDR;
- mpi25_ieee_chain->Length = MRSAS_MAX_SZ_CHAIN_FRAME;
+ mpi25_ieee_chain->Length = sc->max_chain_frame_sz;
return (0);
}
/*
* mrsas_issue_blocked_cmd: Synchronous wrapper around regular FW cmds
* input: Adapter soft state Command to be issued
*
* This function waits on an event for the command to be returned from the ISR.
* Max wait time is MRSAS_INTERNAL_CMD_WAIT_TIME secs. Used for issuing
* internal and ioctl commands.
*/
int
mrsas_issue_blocked_cmd(struct mrsas_softc *sc, struct mrsas_mfi_cmd *cmd)
{
u_int8_t max_wait = MRSAS_INTERNAL_CMD_WAIT_TIME;
unsigned long total_time = 0;
- int retcode = 0;
+ int retcode = SUCCESS;
/* Initialize cmd_status */
- cmd->cmd_status = ECONNREFUSED;
+ cmd->cmd_status = 0xFF;
/* Build MPT-MFI command for issue to FW */
if (mrsas_issue_dcmd(sc, cmd)) {
device_printf(sc->mrsas_dev, "Cannot issue DCMD internal command.\n");
return (1);
}
sc->chan = (void *)&cmd;
while (1) {
- if (cmd->cmd_status == ECONNREFUSED) {
+ if (cmd->cmd_status == 0xFF) {
tsleep((void *)&sc->chan, 0, "mrsas_sleep", hz);
} else
break;
- total_time++;
- if (total_time >= max_wait) {
- device_printf(sc->mrsas_dev,
- "Internal command timed out after %d seconds.\n", max_wait);
- retcode = 1;
- break;
+
+ if (!cmd->sync_cmd) { /* cmd->sync will be set for an IOCTL
+ * command */
+ total_time++;
+ if (total_time >= max_wait) {
+ device_printf(sc->mrsas_dev,
+ "Internal command timed out after %d seconds.\n", max_wait);
+ retcode = 1;
+ break;
+ }
}
}
+
+ if (cmd->cmd_status == 0xFF) {
+ device_printf(sc->mrsas_dev, "DCMD timed out after %d "
+ "seconds from %s\n", max_wait, __func__);
+ device_printf(sc->mrsas_dev, "DCMD opcode 0x%X\n",
+ cmd->frame->dcmd.opcode);
+ retcode = ETIMEDOUT;
+ }
return (retcode);
}
/*
* mrsas_complete_mptmfi_passthru: Completes a command
* input: @sc: Adapter soft state
* @cmd: Command to be completed
* @status: cmd completion status
*
* This function is called from mrsas_complete_cmd() after an interrupt is
* received from Firmware, and io_request->Function is
* MRSAS_MPI2_FUNCTION_PASSTHRU_IO_REQUEST.
*/
void
mrsas_complete_mptmfi_passthru(struct mrsas_softc *sc, struct mrsas_mfi_cmd *cmd,
u_int8_t status)
{
struct mrsas_header *hdr = &cmd->frame->hdr;
u_int8_t cmd_status = cmd->frame->hdr.cmd_status;
/* Reset the retry counter for future re-tries */
cmd->retry_for_fw_reset = 0;
if (cmd->ccb_ptr)
cmd->ccb_ptr = NULL;
switch (hdr->cmd) {
case MFI_CMD_INVALID:
device_printf(sc->mrsas_dev, "MFI_CMD_INVALID command.\n");
break;
case MFI_CMD_PD_SCSI_IO:
case MFI_CMD_LD_SCSI_IO:
/*
* MFI_CMD_PD_SCSI_IO and MFI_CMD_LD_SCSI_IO could have been
* issued either through an IO path or an IOCTL path. If it
* was via IOCTL, we will send it to internal completion.
*/
if (cmd->sync_cmd) {
cmd->sync_cmd = 0;
mrsas_wakeup(sc, cmd);
break;
}
case MFI_CMD_SMP:
case MFI_CMD_STP:
case MFI_CMD_DCMD:
/* Check for LD map update */
if ((cmd->frame->dcmd.opcode == MR_DCMD_LD_MAP_GET_INFO) &&
(cmd->frame->dcmd.mbox.b[1] == 1)) {
sc->fast_path_io = 0;
mtx_lock(&sc->raidmap_lock);
+ sc->map_update_cmd = NULL;
if (cmd_status != 0) {
if (cmd_status != MFI_STAT_NOT_FOUND)
device_printf(sc->mrsas_dev, "map sync failed, status=%x\n", cmd_status);
else {
mrsas_release_mfi_cmd(cmd);
mtx_unlock(&sc->raidmap_lock);
break;
}
} else
sc->map_id++;
mrsas_release_mfi_cmd(cmd);
if (MR_ValidateMapInfo(sc))
sc->fast_path_io = 0;
else
sc->fast_path_io = 1;
mrsas_sync_map_info(sc);
mtx_unlock(&sc->raidmap_lock);
break;
}
if (cmd->frame->dcmd.opcode == MR_DCMD_CTRL_EVENT_GET_INFO ||
cmd->frame->dcmd.opcode == MR_DCMD_CTRL_EVENT_GET) {
sc->mrsas_aen_triggered = 0;
}
+ /* FW has an updated PD sequence */
+ if ((cmd->frame->dcmd.opcode ==
+ MR_DCMD_SYSTEM_PD_MAP_GET_INFO) &&
+ (cmd->frame->dcmd.mbox.b[0] == 1)) {
+
+ mtx_lock(&sc->raidmap_lock);
+ sc->jbod_seq_cmd = NULL;
+ mrsas_release_mfi_cmd(cmd);
+
+ if (cmd_status == MFI_STAT_OK) {
+ sc->pd_seq_map_id++;
+ /* Re-register a pd sync seq num cmd */
+ if (megasas_sync_pd_seq_num(sc, true))
+ sc->use_seqnum_jbod_fp = 0;
+ } else {
+ sc->use_seqnum_jbod_fp = 0;
+ device_printf(sc->mrsas_dev,
+ "Jbod map sync failed, status=%x\n", cmd_status);
+ }
+ mtx_unlock(&sc->raidmap_lock);
+ break;
+ }
/* See if got an event notification */
if (cmd->frame->dcmd.opcode == MR_DCMD_CTRL_EVENT_WAIT)
mrsas_complete_aen(sc, cmd);
else
mrsas_wakeup(sc, cmd);
break;
case MFI_CMD_ABORT:
/* Command issued to abort another cmd return */
mrsas_complete_abort(sc, cmd);
break;
default:
device_printf(sc->mrsas_dev, "Unknown command completed! [0x%X]\n", hdr->cmd);
break;
}
}
/*
* mrsas_wakeup: Completes an internal command
* input: Adapter soft state
* Command to be completed
*
* In mrsas_issue_blocked_cmd(), after a command is issued to Firmware, a wait
* timer is started. This function is called from
* mrsas_complete_mptmfi_passthru() as it completes the command, to wake up
* from the command wait.
*/
void
mrsas_wakeup(struct mrsas_softc *sc, struct mrsas_mfi_cmd *cmd)
{
cmd->cmd_status = cmd->frame->io.cmd_status;
- if (cmd->cmd_status == ECONNREFUSED)
+ if (cmd->cmd_status == 0xFF)
cmd->cmd_status = 0;
sc->chan = (void *)&cmd;
wakeup_one((void *)&sc->chan);
return;
}
/*
* mrsas_shutdown_ctlr: Instructs FW to shutdown the controller input:
* Adapter soft state Shutdown/Hibernate
*
* This function issues a DCMD internal command to Firmware to initiate shutdown
* of the controller.
*/
static void
mrsas_shutdown_ctlr(struct mrsas_softc *sc, u_int32_t opcode)
{
struct mrsas_mfi_cmd *cmd;
struct mrsas_dcmd_frame *dcmd;
if (sc->adprecovery == MRSAS_HW_CRITICAL_ERROR)
return;
cmd = mrsas_get_mfi_cmd(sc);
if (!cmd) {
device_printf(sc->mrsas_dev, "Cannot allocate for shutdown cmd.\n");
return;
}
if (sc->aen_cmd)
mrsas_issue_blocked_abort_cmd(sc, sc->aen_cmd);
-
if (sc->map_update_cmd)
mrsas_issue_blocked_abort_cmd(sc, sc->map_update_cmd);
+ if (sc->jbod_seq_cmd)
+ mrsas_issue_blocked_abort_cmd(sc, sc->jbod_seq_cmd);
dcmd = &cmd->frame->dcmd;
memset(dcmd->mbox.b, 0, MFI_MBOX_SIZE);
dcmd->cmd = MFI_CMD_DCMD;
dcmd->cmd_status = 0x0;
dcmd->sge_count = 0;
dcmd->flags = MFI_FRAME_DIR_NONE;
dcmd->timeout = 0;
dcmd->pad_0 = 0;
dcmd->data_xfer_len = 0;
dcmd->opcode = opcode;
device_printf(sc->mrsas_dev, "Preparing to shut down controller.\n");
mrsas_issue_blocked_cmd(sc, cmd);
mrsas_release_mfi_cmd(cmd);
return;
}
/*
* mrsas_flush_cache: Requests FW to flush all its caches input:
* Adapter soft state
*
* This function is issues a DCMD internal command to Firmware to initiate
* flushing of all caches.
*/
static void
mrsas_flush_cache(struct mrsas_softc *sc)
{
struct mrsas_mfi_cmd *cmd;
struct mrsas_dcmd_frame *dcmd;
if (sc->adprecovery == MRSAS_HW_CRITICAL_ERROR)
return;
cmd = mrsas_get_mfi_cmd(sc);
if (!cmd) {
device_printf(sc->mrsas_dev, "Cannot allocate for flush cache cmd.\n");
return;
}
dcmd = &cmd->frame->dcmd;
memset(dcmd->mbox.b, 0, MFI_MBOX_SIZE);
dcmd->cmd = MFI_CMD_DCMD;
dcmd->cmd_status = 0x0;
dcmd->sge_count = 0;
dcmd->flags = MFI_FRAME_DIR_NONE;
dcmd->timeout = 0;
dcmd->pad_0 = 0;
dcmd->data_xfer_len = 0;
dcmd->opcode = MR_DCMD_CTRL_CACHE_FLUSH;
dcmd->mbox.b[0] = MR_FLUSH_CTRL_CACHE | MR_FLUSH_DISK_CACHE;
mrsas_issue_blocked_cmd(sc, cmd);
mrsas_release_mfi_cmd(cmd);
return;
}
+int
+megasas_sync_pd_seq_num(struct mrsas_softc *sc, boolean_t pend)
+{
+ int retcode = 0;
+ u_int8_t do_ocr = 1;
+ struct mrsas_mfi_cmd *cmd;
+ struct mrsas_dcmd_frame *dcmd;
+ uint32_t pd_seq_map_sz;
+ struct MR_PD_CFG_SEQ_NUM_SYNC *pd_sync;
+ bus_addr_t pd_seq_h;
+
+ pd_seq_map_sz = sizeof(struct MR_PD_CFG_SEQ_NUM_SYNC) +
+ (sizeof(struct MR_PD_CFG_SEQ) *
+ (MAX_PHYSICAL_DEVICES - 1));
+
+ cmd = mrsas_get_mfi_cmd(sc);
+ if (!cmd) {
+ device_printf(sc->mrsas_dev,
+ "Cannot alloc for ld map info cmd.\n");
+ return 1;
+ }
+ dcmd = &cmd->frame->dcmd;
+
+ pd_sync = (void *)sc->jbodmap_mem[(sc->pd_seq_map_id & 1)];
+ pd_seq_h = sc->jbodmap_phys_addr[(sc->pd_seq_map_id & 1)];
+ if (!pd_sync) {
+ device_printf(sc->mrsas_dev,
+ "Failed to alloc mem for jbod map info.\n");
+ mrsas_release_mfi_cmd(cmd);
+ return (ENOMEM);
+ }
+ memset(pd_sync, 0, pd_seq_map_sz);
+ memset(dcmd->mbox.b, 0, MFI_MBOX_SIZE);
+ dcmd->cmd = MFI_CMD_DCMD;
+ dcmd->cmd_status = 0xFF;
+ dcmd->sge_count = 1;
+ dcmd->timeout = 0;
+ dcmd->pad_0 = 0;
+ dcmd->data_xfer_len = (pd_seq_map_sz);
+ dcmd->opcode = (MR_DCMD_SYSTEM_PD_MAP_GET_INFO);
+ dcmd->sgl.sge32[0].phys_addr = (pd_seq_h);
+ dcmd->sgl.sge32[0].length = (pd_seq_map_sz);
+
+ if (pend) {
+ dcmd->mbox.b[0] = MRSAS_DCMD_MBOX_PEND_FLAG;
+ dcmd->flags = (MFI_FRAME_DIR_WRITE);
+ sc->jbod_seq_cmd = cmd;
+ if (mrsas_issue_dcmd(sc, cmd)) {
+ device_printf(sc->mrsas_dev,
+ "Fail to send sync map info command.\n");
+ return 1;
+ } else
+ return 0;
+ } else
+ dcmd->flags = MFI_FRAME_DIR_READ;
+
+ retcode = mrsas_issue_polled(sc, cmd);
+ if (retcode == ETIMEDOUT)
+ goto dcmd_timeout;
+
+ if (pd_sync->count > MAX_PHYSICAL_DEVICES) {
+ device_printf(sc->mrsas_dev,
+ "driver supports max %d JBOD, but FW reports %d\n",
+ MAX_PHYSICAL_DEVICES, pd_sync->count);
+ retcode = -EINVAL;
+ }
+ if (!retcode)
+ sc->pd_seq_map_id++;
+ do_ocr = 0;
+
+dcmd_timeout:
+ if (do_ocr)
+ sc->do_timedout_reset = MFI_DCMD_TIMEOUT_OCR;
+ else
+ mrsas_release_mfi_cmd(cmd);
+
+ return (retcode);
+}
+
/*
* mrsas_get_map_info: Load and validate RAID map input:
* Adapter instance soft state
*
* This function calls mrsas_get_ld_map_info() and MR_ValidateMapInfo() to load
* and validate RAID map. It returns 0 if successful, 1 other- wise.
*/
static int
mrsas_get_map_info(struct mrsas_softc *sc)
{
uint8_t retcode = 0;
sc->fast_path_io = 0;
if (!mrsas_get_ld_map_info(sc)) {
retcode = MR_ValidateMapInfo(sc);
if (retcode == 0) {
sc->fast_path_io = 1;
return 0;
}
}
return 1;
}
/*
* mrsas_get_ld_map_info: Get FW's ld_map structure input:
* Adapter instance soft state
*
* Issues an internal command (DCMD) to get the FW's controller PD list
* structure.
*/
static int
mrsas_get_ld_map_info(struct mrsas_softc *sc)
{
int retcode = 0;
struct mrsas_mfi_cmd *cmd;
struct mrsas_dcmd_frame *dcmd;
void *map;
bus_addr_t map_phys_addr = 0;
cmd = mrsas_get_mfi_cmd(sc);
if (!cmd) {
device_printf(sc->mrsas_dev,
"Cannot alloc for ld map info cmd.\n");
return 1;
}
dcmd = &cmd->frame->dcmd;
map = (void *)sc->raidmap_mem[(sc->map_id & 1)];
map_phys_addr = sc->raidmap_phys_addr[(sc->map_id & 1)];
if (!map) {
device_printf(sc->mrsas_dev,
"Failed to alloc mem for ld map info.\n");
mrsas_release_mfi_cmd(cmd);
return (ENOMEM);
}
memset(map, 0, sizeof(sc->max_map_sz));
memset(dcmd->mbox.b, 0, MFI_MBOX_SIZE);
dcmd->cmd = MFI_CMD_DCMD;
dcmd->cmd_status = 0xFF;
dcmd->sge_count = 1;
dcmd->flags = MFI_FRAME_DIR_READ;
dcmd->timeout = 0;
dcmd->pad_0 = 0;
dcmd->data_xfer_len = sc->current_map_sz;
dcmd->opcode = MR_DCMD_LD_MAP_GET_INFO;
dcmd->sgl.sge32[0].phys_addr = map_phys_addr;
dcmd->sgl.sge32[0].length = sc->current_map_sz;
- if (!mrsas_issue_polled(sc, cmd))
- retcode = 0;
- else {
- device_printf(sc->mrsas_dev,
- "Fail to send get LD map info cmd.\n");
- retcode = 1;
- }
- mrsas_release_mfi_cmd(cmd);
+ retcode = mrsas_issue_polled(sc, cmd);
+ if (retcode == ETIMEDOUT)
+ sc->do_timedout_reset = MFI_DCMD_TIMEOUT_OCR;
+ else
+ mrsas_release_mfi_cmd(cmd);
return (retcode);
}
/*
* mrsas_sync_map_info: Get FW's ld_map structure input:
* Adapter instance soft state
*
* Issues an internal command (DCMD) to get the FW's controller PD list
* structure.
*/
static int
mrsas_sync_map_info(struct mrsas_softc *sc)
{
int retcode = 0, i;
struct mrsas_mfi_cmd *cmd;
struct mrsas_dcmd_frame *dcmd;
uint32_t size_sync_info, num_lds;
MR_LD_TARGET_SYNC *target_map = NULL;
MR_DRV_RAID_MAP_ALL *map;
MR_LD_RAID *raid;
MR_LD_TARGET_SYNC *ld_sync;
bus_addr_t map_phys_addr = 0;
cmd = mrsas_get_mfi_cmd(sc);
if (!cmd) {
device_printf(sc->mrsas_dev,
"Cannot alloc for sync map info cmd\n");
return 1;
}
map = sc->ld_drv_map[sc->map_id & 1];
num_lds = map->raidMap.ldCount;
dcmd = &cmd->frame->dcmd;
size_sync_info = sizeof(MR_LD_TARGET_SYNC) * num_lds;
memset(dcmd->mbox.b, 0, MFI_MBOX_SIZE);
target_map = (MR_LD_TARGET_SYNC *) sc->raidmap_mem[(sc->map_id - 1) & 1];
memset(target_map, 0, sc->max_map_sz);
map_phys_addr = sc->raidmap_phys_addr[(sc->map_id - 1) & 1];
ld_sync = (MR_LD_TARGET_SYNC *) target_map;
for (i = 0; i < num_lds; i++, ld_sync++) {
raid = MR_LdRaidGet(i, map);
ld_sync->targetId = MR_GetLDTgtId(i, map);
ld_sync->seqNum = raid->seqNum;
}
dcmd->cmd = MFI_CMD_DCMD;
dcmd->cmd_status = 0xFF;
dcmd->sge_count = 1;
dcmd->flags = MFI_FRAME_DIR_WRITE;
dcmd->timeout = 0;
dcmd->pad_0 = 0;
dcmd->data_xfer_len = sc->current_map_sz;
dcmd->mbox.b[0] = num_lds;
dcmd->mbox.b[1] = MRSAS_DCMD_MBOX_PEND_FLAG;
dcmd->opcode = MR_DCMD_LD_MAP_GET_INFO;
dcmd->sgl.sge32[0].phys_addr = map_phys_addr;
dcmd->sgl.sge32[0].length = sc->current_map_sz;
sc->map_update_cmd = cmd;
if (mrsas_issue_dcmd(sc, cmd)) {
device_printf(sc->mrsas_dev,
"Fail to send sync map info command.\n");
return (1);
}
return (retcode);
}
/*
* mrsas_get_pd_list: Returns FW's PD list structure input:
* Adapter soft state
*
* Issues an internal command (DCMD) to get the FW's controller PD list
* structure. This information is mainly used to find out about system
* supported by Firmware.
*/
static int
mrsas_get_pd_list(struct mrsas_softc *sc)
{
int retcode = 0, pd_index = 0, pd_count = 0, pd_list_size;
+ u_int8_t do_ocr = 1;
struct mrsas_mfi_cmd *cmd;
struct mrsas_dcmd_frame *dcmd;
struct MR_PD_LIST *pd_list_mem;
struct MR_PD_ADDRESS *pd_addr;
bus_addr_t pd_list_phys_addr = 0;
struct mrsas_tmp_dcmd *tcmd;
cmd = mrsas_get_mfi_cmd(sc);
if (!cmd) {
device_printf(sc->mrsas_dev,
"Cannot alloc for get PD list cmd\n");
return 1;
}
dcmd = &cmd->frame->dcmd;
tcmd = malloc(sizeof(struct mrsas_tmp_dcmd), M_MRSAS, M_NOWAIT);
pd_list_size = MRSAS_MAX_PD * sizeof(struct MR_PD_LIST);
if (mrsas_alloc_tmp_dcmd(sc, tcmd, pd_list_size) != SUCCESS) {
device_printf(sc->mrsas_dev,
"Cannot alloc dmamap for get PD list cmd\n");
mrsas_release_mfi_cmd(cmd);
+ mrsas_free_tmp_dcmd(tcmd);
+ free(tcmd, M_MRSAS);
return (ENOMEM);
} else {
pd_list_mem = tcmd->tmp_dcmd_mem;
pd_list_phys_addr = tcmd->tmp_dcmd_phys_addr;
}
memset(dcmd->mbox.b, 0, MFI_MBOX_SIZE);
dcmd->mbox.b[0] = MR_PD_QUERY_TYPE_EXPOSED_TO_HOST;
dcmd->mbox.b[1] = 0;
dcmd->cmd = MFI_CMD_DCMD;
dcmd->cmd_status = 0xFF;
dcmd->sge_count = 1;
dcmd->flags = MFI_FRAME_DIR_READ;
dcmd->timeout = 0;
dcmd->pad_0 = 0;
dcmd->data_xfer_len = MRSAS_MAX_PD * sizeof(struct MR_PD_LIST);
dcmd->opcode = MR_DCMD_PD_LIST_QUERY;
dcmd->sgl.sge32[0].phys_addr = pd_list_phys_addr;
dcmd->sgl.sge32[0].length = MRSAS_MAX_PD * sizeof(struct MR_PD_LIST);
- if (!mrsas_issue_polled(sc, cmd))
- retcode = 0;
- else
- retcode = 1;
+ retcode = mrsas_issue_polled(sc, cmd);
+ if (retcode == ETIMEDOUT)
+ goto dcmd_timeout;
/* Get the instance PD list */
pd_count = MRSAS_MAX_PD;
pd_addr = pd_list_mem->addr;
- if (retcode == 0 && pd_list_mem->count < pd_count) {
+ if (pd_list_mem->count < pd_count) {
memset(sc->local_pd_list, 0,
MRSAS_MAX_PD * sizeof(struct mrsas_pd_list));
for (pd_index = 0; pd_index < pd_list_mem->count; pd_index++) {
sc->local_pd_list[pd_addr->deviceId].tid = pd_addr->deviceId;
sc->local_pd_list[pd_addr->deviceId].driveType =
pd_addr->scsiDevType;
sc->local_pd_list[pd_addr->deviceId].driveState =
MR_PD_STATE_SYSTEM;
pd_addr++;
}
+ /*
+ * Use mutext/spinlock if pd_list component size increase more than
+ * 32 bit.
+ */
+ memcpy(sc->pd_list, sc->local_pd_list, sizeof(sc->local_pd_list));
+ do_ocr = 0;
}
- /*
- * Use mutext/spinlock if pd_list component size increase more than
- * 32 bit.
- */
- memcpy(sc->pd_list, sc->local_pd_list, sizeof(sc->local_pd_list));
+dcmd_timeout:
mrsas_free_tmp_dcmd(tcmd);
- mrsas_release_mfi_cmd(cmd);
free(tcmd, M_MRSAS);
+
+ if (do_ocr)
+ sc->do_timedout_reset = MFI_DCMD_TIMEOUT_OCR;
+ else
+ mrsas_release_mfi_cmd(cmd);
+
return (retcode);
}
/*
* mrsas_get_ld_list: Returns FW's LD list structure input:
* Adapter soft state
*
* Issues an internal command (DCMD) to get the FW's controller PD list
* structure. This information is mainly used to find out about supported by
* the FW.
*/
static int
mrsas_get_ld_list(struct mrsas_softc *sc)
{
int ld_list_size, retcode = 0, ld_index = 0, ids = 0;
+ u_int8_t do_ocr = 1;
struct mrsas_mfi_cmd *cmd;
struct mrsas_dcmd_frame *dcmd;
struct MR_LD_LIST *ld_list_mem;
bus_addr_t ld_list_phys_addr = 0;
struct mrsas_tmp_dcmd *tcmd;
cmd = mrsas_get_mfi_cmd(sc);
if (!cmd) {
device_printf(sc->mrsas_dev,
"Cannot alloc for get LD list cmd\n");
return 1;
}
dcmd = &cmd->frame->dcmd;
tcmd = malloc(sizeof(struct mrsas_tmp_dcmd), M_MRSAS, M_NOWAIT);
ld_list_size = sizeof(struct MR_LD_LIST);
if (mrsas_alloc_tmp_dcmd(sc, tcmd, ld_list_size) != SUCCESS) {
device_printf(sc->mrsas_dev,
"Cannot alloc dmamap for get LD list cmd\n");
mrsas_release_mfi_cmd(cmd);
+ mrsas_free_tmp_dcmd(tcmd);
+ free(tcmd, M_MRSAS);
return (ENOMEM);
} else {
ld_list_mem = tcmd->tmp_dcmd_mem;
ld_list_phys_addr = tcmd->tmp_dcmd_phys_addr;
}
memset(dcmd->mbox.b, 0, MFI_MBOX_SIZE);
if (sc->max256vdSupport)
dcmd->mbox.b[0] = 1;
dcmd->cmd = MFI_CMD_DCMD;
dcmd->cmd_status = 0xFF;
dcmd->sge_count = 1;
dcmd->flags = MFI_FRAME_DIR_READ;
dcmd->timeout = 0;
dcmd->data_xfer_len = sizeof(struct MR_LD_LIST);
dcmd->opcode = MR_DCMD_LD_GET_LIST;
dcmd->sgl.sge32[0].phys_addr = ld_list_phys_addr;
dcmd->sgl.sge32[0].length = sizeof(struct MR_LD_LIST);
dcmd->pad_0 = 0;
- if (!mrsas_issue_polled(sc, cmd))
- retcode = 0;
- else
- retcode = 1;
+ retcode = mrsas_issue_polled(sc, cmd);
+ if (retcode == ETIMEDOUT)
+ goto dcmd_timeout;
#if VD_EXT_DEBUG
printf("Number of LDs %d\n", ld_list_mem->ldCount);
#endif
/* Get the instance LD list */
- if ((retcode == 0) &&
- (ld_list_mem->ldCount <= sc->fw_supported_vd_count)) {
+ if (ld_list_mem->ldCount <= sc->fw_supported_vd_count) {
sc->CurLdCount = ld_list_mem->ldCount;
memset(sc->ld_ids, 0xff, MAX_LOGICAL_DRIVES_EXT);
for (ld_index = 0; ld_index < ld_list_mem->ldCount; ld_index++) {
if (ld_list_mem->ldList[ld_index].state != 0) {
ids = ld_list_mem->ldList[ld_index].ref.ld_context.targetId;
sc->ld_ids[ids] = ld_list_mem->ldList[ld_index].ref.ld_context.targetId;
}
}
+ do_ocr = 0;
}
+dcmd_timeout:
mrsas_free_tmp_dcmd(tcmd);
- mrsas_release_mfi_cmd(cmd);
free(tcmd, M_MRSAS);
+
+ if (do_ocr)
+ sc->do_timedout_reset = MFI_DCMD_TIMEOUT_OCR;
+ else
+ mrsas_release_mfi_cmd(cmd);
+
return (retcode);
}
/*
* mrsas_alloc_tmp_dcmd: Allocates memory for temporary command input:
* Adapter soft state Temp command Size of alloction
*
* Allocates DMAable memory for a temporary internal command. The allocated
* memory is initialized to all zeros upon successful loading of the dma
* mapped memory.
*/
int
mrsas_alloc_tmp_dcmd(struct mrsas_softc *sc,
struct mrsas_tmp_dcmd *tcmd, int size)
{
if (bus_dma_tag_create(sc->mrsas_parent_tag,
1, 0,
BUS_SPACE_MAXADDR_32BIT,
BUS_SPACE_MAXADDR,
NULL, NULL,
size,
1,
size,
BUS_DMA_ALLOCNOW,
NULL, NULL,
&tcmd->tmp_dcmd_tag)) {
device_printf(sc->mrsas_dev, "Cannot allocate tmp dcmd tag\n");
return (ENOMEM);
}
if (bus_dmamem_alloc(tcmd->tmp_dcmd_tag, (void **)&tcmd->tmp_dcmd_mem,
BUS_DMA_NOWAIT, &tcmd->tmp_dcmd_dmamap)) {
device_printf(sc->mrsas_dev, "Cannot allocate tmp dcmd mem\n");
return (ENOMEM);
}
if (bus_dmamap_load(tcmd->tmp_dcmd_tag, tcmd->tmp_dcmd_dmamap,
tcmd->tmp_dcmd_mem, size, mrsas_addr_cb,
&tcmd->tmp_dcmd_phys_addr, BUS_DMA_NOWAIT)) {
device_printf(sc->mrsas_dev, "Cannot load tmp dcmd mem\n");
return (ENOMEM);
}
memset(tcmd->tmp_dcmd_mem, 0, size);
return (0);
}
/*
* mrsas_free_tmp_dcmd: Free memory for temporary command input:
* temporary dcmd pointer
*
* Deallocates memory of the temporary command for use in the construction of
* the internal DCMD.
*/
void
mrsas_free_tmp_dcmd(struct mrsas_tmp_dcmd *tmp)
{
if (tmp->tmp_dcmd_phys_addr)
bus_dmamap_unload(tmp->tmp_dcmd_tag, tmp->tmp_dcmd_dmamap);
if (tmp->tmp_dcmd_mem != NULL)
bus_dmamem_free(tmp->tmp_dcmd_tag, tmp->tmp_dcmd_mem, tmp->tmp_dcmd_dmamap);
if (tmp->tmp_dcmd_tag != NULL)
bus_dma_tag_destroy(tmp->tmp_dcmd_tag);
}
/*
* mrsas_issue_blocked_abort_cmd: Aborts previously issued cmd input:
* Adapter soft state Previously issued cmd to be aborted
*
* This function is used to abort previously issued commands, such as AEN and
* RAID map sync map commands. The abort command is sent as a DCMD internal
* command and subsequently the driver will wait for a return status. The
* max wait time is MRSAS_INTERNAL_CMD_WAIT_TIME seconds.
*/
static int
mrsas_issue_blocked_abort_cmd(struct mrsas_softc *sc,
struct mrsas_mfi_cmd *cmd_to_abort)
{
struct mrsas_mfi_cmd *cmd;
struct mrsas_abort_frame *abort_fr;
u_int8_t retcode = 0;
unsigned long total_time = 0;
u_int8_t max_wait = MRSAS_INTERNAL_CMD_WAIT_TIME;
cmd = mrsas_get_mfi_cmd(sc);
if (!cmd) {
device_printf(sc->mrsas_dev, "Cannot alloc for abort cmd\n");
return (1);
}
abort_fr = &cmd->frame->abort;
/* Prepare and issue the abort frame */
abort_fr->cmd = MFI_CMD_ABORT;
abort_fr->cmd_status = 0xFF;
abort_fr->flags = 0;
abort_fr->abort_context = cmd_to_abort->index;
abort_fr->abort_mfi_phys_addr_lo = cmd_to_abort->frame_phys_addr;
abort_fr->abort_mfi_phys_addr_hi = 0;
cmd->sync_cmd = 1;
cmd->cmd_status = 0xFF;
if (mrsas_issue_dcmd(sc, cmd)) {
device_printf(sc->mrsas_dev, "Fail to send abort command.\n");
return (1);
}
/* Wait for this cmd to complete */
sc->chan = (void *)&cmd;
while (1) {
if (cmd->cmd_status == 0xFF) {
tsleep((void *)&sc->chan, 0, "mrsas_sleep", hz);
} else
break;
total_time++;
if (total_time >= max_wait) {
device_printf(sc->mrsas_dev, "Abort cmd timed out after %d sec.\n", max_wait);
retcode = 1;
break;
}
}
cmd->sync_cmd = 0;
mrsas_release_mfi_cmd(cmd);
return (retcode);
}
/*
* mrsas_complete_abort: Completes aborting a command input:
* Adapter soft state Cmd that was issued to abort another cmd
*
* The mrsas_issue_blocked_abort_cmd() function waits for the command status to
* change after sending the command. This function is called from
* mrsas_complete_mptmfi_passthru() to wake up the sleep thread associated.
*/
void
mrsas_complete_abort(struct mrsas_softc *sc, struct mrsas_mfi_cmd *cmd)
{
if (cmd->sync_cmd) {
cmd->sync_cmd = 0;
cmd->cmd_status = 0;
sc->chan = (void *)&cmd;
wakeup_one((void *)&sc->chan);
}
return;
}
/*
* mrsas_aen_handler: AEN processing callback function from thread context
* input: Adapter soft state
*
* Asynchronous event handler
*/
void
mrsas_aen_handler(struct mrsas_softc *sc)
{
union mrsas_evt_class_locale class_locale;
int doscan = 0;
u_int32_t seq_num;
- int error;
+ int error, fail_aen = 0;
if (sc == NULL) {
printf("invalid instance!\n");
return;
}
if (sc->evt_detail_mem) {
switch (sc->evt_detail_mem->code) {
case MR_EVT_PD_INSERTED:
- mrsas_get_pd_list(sc);
- mrsas_bus_scan_sim(sc, sc->sim_1);
+ fail_aen = mrsas_get_pd_list(sc);
+ if (!fail_aen)
+ mrsas_bus_scan_sim(sc, sc->sim_1);
+ else
+ goto skip_register_aen;
doscan = 0;
break;
case MR_EVT_PD_REMOVED:
- mrsas_get_pd_list(sc);
- mrsas_bus_scan_sim(sc, sc->sim_1);
+ fail_aen = mrsas_get_pd_list(sc);
+ if (!fail_aen)
+ mrsas_bus_scan_sim(sc, sc->sim_1);
+ else
+ goto skip_register_aen;
doscan = 0;
break;
case MR_EVT_LD_OFFLINE:
case MR_EVT_CFG_CLEARED:
case MR_EVT_LD_DELETED:
mrsas_bus_scan_sim(sc, sc->sim_0);
doscan = 0;
break;
case MR_EVT_LD_CREATED:
- mrsas_get_ld_list(sc);
- mrsas_bus_scan_sim(sc, sc->sim_0);
+ fail_aen = mrsas_get_ld_list(sc);
+ if (!fail_aen)
+ mrsas_bus_scan_sim(sc, sc->sim_0);
+ else
+ goto skip_register_aen;
doscan = 0;
break;
case MR_EVT_CTRL_HOST_BUS_SCAN_REQUESTED:
case MR_EVT_FOREIGN_CFG_IMPORTED:
case MR_EVT_LD_STATE_CHANGE:
doscan = 1;
break;
default:
doscan = 0;
break;
}
} else {
device_printf(sc->mrsas_dev, "invalid evt_detail\n");
return;
}
if (doscan) {
- mrsas_get_pd_list(sc);
- mrsas_dprint(sc, MRSAS_AEN, "scanning ...sim 1\n");
- mrsas_bus_scan_sim(sc, sc->sim_1);
- mrsas_get_ld_list(sc);
- mrsas_dprint(sc, MRSAS_AEN, "scanning ...sim 0\n");
- mrsas_bus_scan_sim(sc, sc->sim_0);
+ fail_aen = mrsas_get_pd_list(sc);
+ if (!fail_aen) {
+ mrsas_dprint(sc, MRSAS_AEN, "scanning ...sim 1\n");
+ mrsas_bus_scan_sim(sc, sc->sim_1);
+ } else
+ goto skip_register_aen;
+
+ fail_aen = mrsas_get_ld_list(sc);
+ if (!fail_aen) {
+ mrsas_dprint(sc, MRSAS_AEN, "scanning ...sim 0\n");
+ mrsas_bus_scan_sim(sc, sc->sim_0);
+ } else
+ goto skip_register_aen;
}
seq_num = sc->evt_detail_mem->seq_num + 1;
/* Register AEN with FW for latest sequence number plus 1 */
class_locale.members.reserved = 0;
class_locale.members.locale = MR_EVT_LOCALE_ALL;
class_locale.members.class = MR_EVT_CLASS_DEBUG;
if (sc->aen_cmd != NULL)
return;
mtx_lock(&sc->aen_lock);
error = mrsas_register_aen(sc, seq_num,
class_locale.word);
mtx_unlock(&sc->aen_lock);
if (error)
device_printf(sc->mrsas_dev, "register aen failed error %x\n", error);
+
+skip_register_aen:
+ return;
}
/*
* mrsas_complete_aen: Completes AEN command
* input: Adapter soft state
* Cmd that was issued to abort another cmd
*
* This function will be called from ISR and will continue event processing from
* thread context by enqueuing task in ev_tq (callback function
* "mrsas_aen_handler").
*/
void
mrsas_complete_aen(struct mrsas_softc *sc, struct mrsas_mfi_cmd *cmd)
{
/*
* Don't signal app if it is just an aborted previously registered
* aen
*/
if ((!cmd->abort_aen) && (sc->remove_in_progress == 0)) {
sc->mrsas_aen_triggered = 1;
mtx_lock(&sc->aen_lock);
if (sc->mrsas_poll_waiting) {
sc->mrsas_poll_waiting = 0;
selwakeup(&sc->mrsas_select);
}
mtx_unlock(&sc->aen_lock);
} else
cmd->abort_aen = 0;
sc->aen_cmd = NULL;
mrsas_release_mfi_cmd(cmd);
if (!sc->remove_in_progress)
taskqueue_enqueue(sc->ev_tq, &sc->ev_task);
return;
}
static device_method_t mrsas_methods[] = {
DEVMETHOD(device_probe, mrsas_probe),
DEVMETHOD(device_attach, mrsas_attach),
DEVMETHOD(device_detach, mrsas_detach),
DEVMETHOD(device_suspend, mrsas_suspend),
DEVMETHOD(device_resume, mrsas_resume),
DEVMETHOD(bus_print_child, bus_generic_print_child),
DEVMETHOD(bus_driver_added, bus_generic_driver_added),
{0, 0}
};
static driver_t mrsas_driver = {
"mrsas",
mrsas_methods,
sizeof(struct mrsas_softc)
};
static devclass_t mrsas_devclass;
DRIVER_MODULE(mrsas, pci, mrsas_driver, mrsas_devclass, 0, 0);
MODULE_DEPEND(mrsas, cam, 1, 1, 1);
Index: user/ngie/bsnmp_cleanup/sys/dev/mrsas/mrsas.h
===================================================================
--- user/ngie/bsnmp_cleanup/sys/dev/mrsas/mrsas.h (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/dev/mrsas/mrsas.h (revision 299697)
@@ -1,2794 +1,2843 @@
/*
* Copyright (c) 2015, AVAGO Tech. All rights reserved. Authors: Marian Choy
* Copyright (c) 2014, LSI Corp. All rights reserved. Authors: Marian Choy
* Support: freebsdraid@avagotech.com
*
* 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. 3. Neither the name of the
* <ORGANIZATION> nor the names of its contributors may be used to endorse or
* promote products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are
* those of the authors and should not be interpreted as representing
* official policies,either expressed or implied, of the FreeBSD Project.
*
* Send feedback to: <megaraidfbsd@avagotech.com> Mail to: AVAGO TECHNOLOGIES, 1621
* Barber Lane, Milpitas, CA 95035 ATTN: MegaRaid FreeBSD
*
*/
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
#ifndef MRSAS_H
#define MRSAS_H
#include <sys/param.h> /* defines used in kernel.h */
#include <sys/module.h>
#include <sys/systm.h>
#include <sys/proc.h>
#include <sys/errno.h>
#include <sys/kernel.h> /* types used in module initialization */
#include <sys/conf.h> /* cdevsw struct */
#include <sys/uio.h> /* uio struct */
#include <sys/malloc.h>
#include <sys/bus.h> /* structs, prototypes for pci bus
* stuff */
#include <sys/rman.h>
#include <sys/types.h>
#include <sys/lock.h>
#include <sys/sema.h>
#include <sys/sysctl.h>
#include <sys/stat.h>
#include <sys/taskqueue.h>
#include <sys/poll.h>
#include <sys/selinfo.h>
#include <machine/bus.h>
#include <machine/resource.h>
#include <machine/atomic.h>
#include <dev/pci/pcivar.h> /* For pci_get macros! */
#include <dev/pci/pcireg.h>
#define IOCTL_SEMA_DESCRIPTION "mrsas semaphore for MFI pool"
/*
* Device IDs and PCI
*/
#define MRSAS_TBOLT 0x005b
#define MRSAS_INVADER 0x005d
#define MRSAS_FURY 0x005f
+#define MRSAS_INTRUDER 0x00ce
+#define MRSAS_INTRUDER_24 0x00cf
#define MRSAS_PCI_BAR0 0x10
#define MRSAS_PCI_BAR1 0x14
#define MRSAS_PCI_BAR2 0x1C
/*
* Firmware State Defines
*/
#define MRSAS_FWSTATE_MAXCMD_MASK 0x0000FFFF
#define MRSAS_FWSTATE_SGE_MASK 0x00FF0000
#define MRSAS_FW_STATE_CHNG_INTERRUPT 1
/*
* Message Frame Defines
*/
#define MRSAS_SENSE_LEN 96
#define MRSAS_FUSION_MAX_RESET_TRIES 3
/*
* Miscellaneous Defines
*/
#define BYTE_ALIGNMENT 1
#define MRSAS_MAX_NAME_LENGTH 32
-#define MRSAS_VERSION "06.707.05.00-fbsd"
+#define MRSAS_VERSION "06.709.07.00-fbsd"
#define MRSAS_ULONG_MAX 0xFFFFFFFFFFFFFFFF
#define MRSAS_DEFAULT_TIMEOUT 0x14 /* Temporarily set */
#define DONE 0
#define MRSAS_PAGE_SIZE 4096
#define MRSAS_RESET_NOTICE_INTERVAL 5
#define MRSAS_IO_TIMEOUT 180000 /* 180 second timeout */
#define MRSAS_LDIO_QUEUE_DEPTH 70 /* 70 percent as default */
#define THRESHOLD_REPLY_COUNT 50
#define MAX_MSIX_COUNT 128
/*
* Boolean types
*/
#if (__FreeBSD_version < 901000)
typedef enum _boolean {
false, true
} boolean;
#endif
enum err {
SUCCESS, FAIL
};
MALLOC_DECLARE(M_MRSAS);
SYSCTL_DECL(_hw_mrsas);
#define MRSAS_INFO (1 << 0)
#define MRSAS_TRACE (1 << 1)
#define MRSAS_FAULT (1 << 2)
#define MRSAS_OCR (1 << 3)
#define MRSAS_TOUT MRSAS_OCR
#define MRSAS_AEN (1 << 4)
#define MRSAS_PRL11 (1 << 5)
#define mrsas_dprint(sc, level, msg, args...) \
do { \
if (sc->mrsas_debug & level) \
device_printf(sc->mrsas_dev, msg, ##args); \
} while (0)
/****************************************************************************
* Raid Context structure which describes MegaRAID specific IO Paramenters
* This resides at offset 0x60 where the SGL normally starts in MPT IO Frames
****************************************************************************/
typedef struct _RAID_CONTEXT {
u_int8_t Type:4;
u_int8_t nseg:4;
u_int8_t resvd0;
u_int16_t timeoutValue;
u_int8_t regLockFlags;
u_int8_t resvd1;
u_int16_t VirtualDiskTgtId;
u_int64_t regLockRowLBA;
u_int32_t regLockLength;
u_int16_t nextLMId;
u_int8_t exStatus;
u_int8_t status;
u_int8_t RAIDFlags;
u_int8_t numSGE;
u_int16_t configSeqNum;
u_int8_t spanArm;
- u_int8_t resvd2[3];
+ u_int8_t priority; /* 0x1D MR_PRIORITY_RANGE */
+ u_int8_t numSGEExt; /* 0x1E 1M IO support */
+ u_int8_t resvd2; /* 0x1F */
} RAID_CONTEXT;
/*************************************************************************
* MPI2 Defines
************************************************************************/
#define MPI2_FUNCTION_IOC_INIT (0x02) /* IOC Init */
#define MPI2_WHOINIT_HOST_DRIVER (0x04)
#define MPI2_VERSION_MAJOR (0x02)
#define MPI2_VERSION_MINOR (0x00)
#define MPI2_VERSION_MAJOR_MASK (0xFF00)
#define MPI2_VERSION_MAJOR_SHIFT (8)
#define MPI2_VERSION_MINOR_MASK (0x00FF)
#define MPI2_VERSION_MINOR_SHIFT (0)
#define MPI2_VERSION ((MPI2_VERSION_MAJOR << MPI2_VERSION_MAJOR_SHIFT) | \
MPI2_VERSION_MINOR)
#define MPI2_HEADER_VERSION_UNIT (0x10)
#define MPI2_HEADER_VERSION_DEV (0x00)
#define MPI2_HEADER_VERSION_UNIT_MASK (0xFF00)
#define MPI2_HEADER_VERSION_UNIT_SHIFT (8)
#define MPI2_HEADER_VERSION_DEV_MASK (0x00FF)
#define MPI2_HEADER_VERSION_DEV_SHIFT (0)
#define MPI2_HEADER_VERSION ((MPI2_HEADER_VERSION_UNIT << 8) | MPI2_HEADER_VERSION_DEV)
#define MPI2_IEEE_SGE_FLAGS_IOCPLBNTA_ADDR (0x03)
#define MPI2_SCSIIO_EEDPFLAGS_INC_PRI_REFTAG (0x8000)
#define MPI2_SCSIIO_EEDPFLAGS_CHECK_REFTAG (0x0400)
#define MPI2_SCSIIO_EEDPFLAGS_CHECK_REMOVE_OP (0x0003)
#define MPI2_SCSIIO_EEDPFLAGS_CHECK_APPTAG (0x0200)
#define MPI2_SCSIIO_EEDPFLAGS_CHECK_GUARD (0x0100)
#define MPI2_SCSIIO_EEDPFLAGS_INSERT_OP (0x0004)
#define MPI2_FUNCTION_SCSI_IO_REQUEST (0x00) /* SCSI IO */
#define MPI2_REQ_DESCRIPT_FLAGS_HIGH_PRIORITY (0x06)
#define MPI2_REQ_DESCRIPT_FLAGS_SCSI_IO (0x00)
#define MPI2_SGE_FLAGS_64_BIT_ADDRESSING (0x02)
#define MPI2_SCSIIO_CONTROL_WRITE (0x01000000)
#define MPI2_SCSIIO_CONTROL_READ (0x02000000)
#define MPI2_REQ_DESCRIPT_FLAGS_TYPE_MASK (0x0E)
#define MPI2_RPY_DESCRIPT_FLAGS_UNUSED (0x0F)
#define MPI2_RPY_DESCRIPT_FLAGS_SCSI_IO_SUCCESS (0x00)
#define MPI2_RPY_DESCRIPT_FLAGS_TYPE_MASK (0x0F)
#define MPI2_WRSEQ_FLUSH_KEY_VALUE (0x0)
#define MPI2_WRITE_SEQUENCE_OFFSET (0x00000004)
#define MPI2_WRSEQ_1ST_KEY_VALUE (0xF)
#define MPI2_WRSEQ_2ND_KEY_VALUE (0x4)
#define MPI2_WRSEQ_3RD_KEY_VALUE (0xB)
#define MPI2_WRSEQ_4TH_KEY_VALUE (0x2)
#define MPI2_WRSEQ_5TH_KEY_VALUE (0x7)
#define MPI2_WRSEQ_6TH_KEY_VALUE (0xD)
#ifndef MPI2_POINTER
#define MPI2_POINTER *
#endif
/***************************************
* MPI2 Structures
***************************************/
typedef struct _MPI25_IEEE_SGE_CHAIN64 {
u_int64_t Address;
u_int32_t Length;
u_int16_t Reserved1;
u_int8_t NextChainOffset;
u_int8_t Flags;
} MPI25_IEEE_SGE_CHAIN64, MPI2_POINTER PTR_MPI25_IEEE_SGE_CHAIN64,
Mpi25IeeeSgeChain64_t, MPI2_POINTER pMpi25IeeeSgeChain64_t;
typedef struct _MPI2_SGE_SIMPLE_UNION {
u_int32_t FlagsLength;
union {
u_int32_t Address32;
u_int64_t Address64;
} u;
} MPI2_SGE_SIMPLE_UNION, MPI2_POINTER PTR_MPI2_SGE_SIMPLE_UNION,
Mpi2SGESimpleUnion_t, MPI2_POINTER pMpi2SGESimpleUnion_t;
typedef struct {
u_int8_t CDB[20]; /* 0x00 */
u_int32_t PrimaryReferenceTag; /* 0x14 */
u_int16_t PrimaryApplicationTag;/* 0x18 */
u_int16_t PrimaryApplicationTagMask; /* 0x1A */
u_int32_t TransferLength; /* 0x1C */
} MPI2_SCSI_IO_CDB_EEDP32, MPI2_POINTER PTR_MPI2_SCSI_IO_CDB_EEDP32,
Mpi2ScsiIoCdbEedp32_t, MPI2_POINTER pMpi2ScsiIoCdbEedp32_t;
typedef struct _MPI2_SGE_CHAIN_UNION {
u_int16_t Length;
u_int8_t NextChainOffset;
u_int8_t Flags;
union {
u_int32_t Address32;
u_int64_t Address64;
} u;
} MPI2_SGE_CHAIN_UNION, MPI2_POINTER PTR_MPI2_SGE_CHAIN_UNION,
Mpi2SGEChainUnion_t, MPI2_POINTER pMpi2SGEChainUnion_t;
typedef struct _MPI2_IEEE_SGE_SIMPLE32 {
u_int32_t Address;
u_int32_t FlagsLength;
} MPI2_IEEE_SGE_SIMPLE32, MPI2_POINTER PTR_MPI2_IEEE_SGE_SIMPLE32,
Mpi2IeeeSgeSimple32_t, MPI2_POINTER pMpi2IeeeSgeSimple32_t;
typedef struct _MPI2_IEEE_SGE_SIMPLE64 {
u_int64_t Address;
u_int32_t Length;
u_int16_t Reserved1;
u_int8_t Reserved2;
u_int8_t Flags;
} MPI2_IEEE_SGE_SIMPLE64, MPI2_POINTER PTR_MPI2_IEEE_SGE_SIMPLE64,
Mpi2IeeeSgeSimple64_t, MPI2_POINTER pMpi2IeeeSgeSimple64_t;
typedef union _MPI2_IEEE_SGE_SIMPLE_UNION {
MPI2_IEEE_SGE_SIMPLE32 Simple32;
MPI2_IEEE_SGE_SIMPLE64 Simple64;
} MPI2_IEEE_SGE_SIMPLE_UNION, MPI2_POINTER PTR_MPI2_IEEE_SGE_SIMPLE_UNION,
Mpi2IeeeSgeSimpleUnion_t, MPI2_POINTER pMpi2IeeeSgeSimpleUnion_t;
typedef MPI2_IEEE_SGE_SIMPLE32 MPI2_IEEE_SGE_CHAIN32;
typedef MPI2_IEEE_SGE_SIMPLE64 MPI2_IEEE_SGE_CHAIN64;
typedef union _MPI2_IEEE_SGE_CHAIN_UNION {
MPI2_IEEE_SGE_CHAIN32 Chain32;
MPI2_IEEE_SGE_CHAIN64 Chain64;
} MPI2_IEEE_SGE_CHAIN_UNION, MPI2_POINTER PTR_MPI2_IEEE_SGE_CHAIN_UNION,
Mpi2IeeeSgeChainUnion_t, MPI2_POINTER pMpi2IeeeSgeChainUnion_t;
typedef union _MPI2_SGE_IO_UNION {
MPI2_SGE_SIMPLE_UNION MpiSimple;
MPI2_SGE_CHAIN_UNION MpiChain;
MPI2_IEEE_SGE_SIMPLE_UNION IeeeSimple;
MPI2_IEEE_SGE_CHAIN_UNION IeeeChain;
} MPI2_SGE_IO_UNION, MPI2_POINTER PTR_MPI2_SGE_IO_UNION,
Mpi2SGEIOUnion_t, MPI2_POINTER pMpi2SGEIOUnion_t;
typedef union {
u_int8_t CDB32[32];
MPI2_SCSI_IO_CDB_EEDP32 EEDP32;
MPI2_SGE_SIMPLE_UNION SGE;
} MPI2_SCSI_IO_CDB_UNION, MPI2_POINTER PTR_MPI2_SCSI_IO_CDB_UNION,
Mpi2ScsiIoCdb_t, MPI2_POINTER pMpi2ScsiIoCdb_t;
/*
* RAID SCSI IO Request Message Total SGE count will be one less than
* _MPI2_SCSI_IO_REQUEST
*/
typedef struct _MPI2_RAID_SCSI_IO_REQUEST {
u_int16_t DevHandle; /* 0x00 */
u_int8_t ChainOffset; /* 0x02 */
u_int8_t Function; /* 0x03 */
u_int16_t Reserved1; /* 0x04 */
u_int8_t Reserved2; /* 0x06 */
u_int8_t MsgFlags; /* 0x07 */
u_int8_t VP_ID; /* 0x08 */
u_int8_t VF_ID; /* 0x09 */
u_int16_t Reserved3; /* 0x0A */
u_int32_t SenseBufferLowAddress;/* 0x0C */
u_int16_t SGLFlags; /* 0x10 */
u_int8_t SenseBufferLength; /* 0x12 */
u_int8_t Reserved4; /* 0x13 */
u_int8_t SGLOffset0; /* 0x14 */
u_int8_t SGLOffset1; /* 0x15 */
u_int8_t SGLOffset2; /* 0x16 */
u_int8_t SGLOffset3; /* 0x17 */
u_int32_t SkipCount; /* 0x18 */
u_int32_t DataLength; /* 0x1C */
u_int32_t BidirectionalDataLength; /* 0x20 */
u_int16_t IoFlags; /* 0x24 */
u_int16_t EEDPFlags; /* 0x26 */
u_int32_t EEDPBlockSize; /* 0x28 */
u_int32_t SecondaryReferenceTag;/* 0x2C */
u_int16_t SecondaryApplicationTag; /* 0x30 */
u_int16_t ApplicationTagTranslationMask; /* 0x32 */
u_int8_t LUN[8]; /* 0x34 */
u_int32_t Control; /* 0x3C */
MPI2_SCSI_IO_CDB_UNION CDB; /* 0x40 */
RAID_CONTEXT RaidContext; /* 0x60 */
MPI2_SGE_IO_UNION SGL; /* 0x80 */
} MRSAS_RAID_SCSI_IO_REQUEST, MPI2_POINTER PTR_MRSAS_RAID_SCSI_IO_REQUEST,
MRSASRaidSCSIIORequest_t, MPI2_POINTER pMRSASRaidSCSIIORequest_t;
/*
* MPT RAID MFA IO Descriptor.
*/
typedef struct _MRSAS_RAID_MFA_IO_DESCRIPTOR {
u_int32_t RequestFlags:8;
u_int32_t MessageAddress1:24; /* bits 31:8 */
u_int32_t MessageAddress2; /* bits 61:32 */
} MRSAS_RAID_MFA_IO_REQUEST_DESCRIPTOR, *PMRSAS_RAID_MFA_IO_REQUEST_DESCRIPTOR;
/* Default Request Descriptor */
typedef struct _MPI2_DEFAULT_REQUEST_DESCRIPTOR {
u_int8_t RequestFlags; /* 0x00 */
u_int8_t MSIxIndex; /* 0x01 */
u_int16_t SMID; /* 0x02 */
u_int16_t LMID; /* 0x04 */
u_int16_t DescriptorTypeDependent; /* 0x06 */
} MPI2_DEFAULT_REQUEST_DESCRIPTOR,
MPI2_POINTER PTR_MPI2_DEFAULT_REQUEST_DESCRIPTOR,
Mpi2DefaultRequestDescriptor_t, MPI2_POINTER pMpi2DefaultRequestDescriptor_t;
/* High Priority Request Descriptor */
typedef struct _MPI2_HIGH_PRIORITY_REQUEST_DESCRIPTOR {
u_int8_t RequestFlags; /* 0x00 */
u_int8_t MSIxIndex; /* 0x01 */
u_int16_t SMID; /* 0x02 */
u_int16_t LMID; /* 0x04 */
u_int16_t Reserved1; /* 0x06 */
} MPI2_HIGH_PRIORITY_REQUEST_DESCRIPTOR,
MPI2_POINTER PTR_MPI2_HIGH_PRIORITY_REQUEST_DESCRIPTOR,
Mpi2HighPriorityRequestDescriptor_t, MPI2_POINTER pMpi2HighPriorityRequestDescriptor_t;
/* SCSI IO Request Descriptor */
typedef struct _MPI2_SCSI_IO_REQUEST_DESCRIPTOR {
u_int8_t RequestFlags; /* 0x00 */
u_int8_t MSIxIndex; /* 0x01 */
u_int16_t SMID; /* 0x02 */
u_int16_t LMID; /* 0x04 */
u_int16_t DevHandle; /* 0x06 */
} MPI2_SCSI_IO_REQUEST_DESCRIPTOR,
MPI2_POINTER PTR_MPI2_SCSI_IO_REQUEST_DESCRIPTOR,
Mpi2SCSIIORequestDescriptor_t, MPI2_POINTER pMpi2SCSIIORequestDescriptor_t;
/* SCSI Target Request Descriptor */
typedef struct _MPI2_SCSI_TARGET_REQUEST_DESCRIPTOR {
u_int8_t RequestFlags; /* 0x00 */
u_int8_t MSIxIndex; /* 0x01 */
u_int16_t SMID; /* 0x02 */
u_int16_t LMID; /* 0x04 */
u_int16_t IoIndex; /* 0x06 */
} MPI2_SCSI_TARGET_REQUEST_DESCRIPTOR,
MPI2_POINTER PTR_MPI2_SCSI_TARGET_REQUEST_DESCRIPTOR,
Mpi2SCSITargetRequestDescriptor_t, MPI2_POINTER pMpi2SCSITargetRequestDescriptor_t;
/* RAID Accelerator Request Descriptor */
typedef struct _MPI2_RAID_ACCEL_REQUEST_DESCRIPTOR {
u_int8_t RequestFlags; /* 0x00 */
u_int8_t MSIxIndex; /* 0x01 */
u_int16_t SMID; /* 0x02 */
u_int16_t LMID; /* 0x04 */
u_int16_t Reserved; /* 0x06 */
} MPI2_RAID_ACCEL_REQUEST_DESCRIPTOR,
MPI2_POINTER PTR_MPI2_RAID_ACCEL_REQUEST_DESCRIPTOR,
Mpi2RAIDAcceleratorRequestDescriptor_t, MPI2_POINTER pMpi2RAIDAcceleratorRequestDescriptor_t;
/* union of Request Descriptors */
typedef union _MRSAS_REQUEST_DESCRIPTOR_UNION {
MPI2_DEFAULT_REQUEST_DESCRIPTOR Default;
MPI2_HIGH_PRIORITY_REQUEST_DESCRIPTOR HighPriority;
MPI2_SCSI_IO_REQUEST_DESCRIPTOR SCSIIO;
MPI2_SCSI_TARGET_REQUEST_DESCRIPTOR SCSITarget;
MPI2_RAID_ACCEL_REQUEST_DESCRIPTOR RAIDAccelerator;
MRSAS_RAID_MFA_IO_REQUEST_DESCRIPTOR MFAIo;
union {
struct {
u_int32_t low;
u_int32_t high;
} u;
u_int64_t Words;
} addr;
} MRSAS_REQUEST_DESCRIPTOR_UNION;
/* Default Reply Descriptor */
typedef struct _MPI2_DEFAULT_REPLY_DESCRIPTOR {
u_int8_t ReplyFlags; /* 0x00 */
u_int8_t MSIxIndex; /* 0x01 */
u_int16_t DescriptorTypeDependent1; /* 0x02 */
u_int32_t DescriptorTypeDependent2; /* 0x04 */
} MPI2_DEFAULT_REPLY_DESCRIPTOR, MPI2_POINTER PTR_MPI2_DEFAULT_REPLY_DESCRIPTOR,
Mpi2DefaultReplyDescriptor_t, MPI2_POINTER pMpi2DefaultReplyDescriptor_t;
/* Address Reply Descriptor */
typedef struct _MPI2_ADDRESS_REPLY_DESCRIPTOR {
u_int8_t ReplyFlags; /* 0x00 */
u_int8_t MSIxIndex; /* 0x01 */
u_int16_t SMID; /* 0x02 */
u_int32_t ReplyFrameAddress; /* 0x04 */
} MPI2_ADDRESS_REPLY_DESCRIPTOR, MPI2_POINTER PTR_MPI2_ADDRESS_REPLY_DESCRIPTOR,
Mpi2AddressReplyDescriptor_t, MPI2_POINTER pMpi2AddressReplyDescriptor_t;
/* SCSI IO Success Reply Descriptor */
typedef struct _MPI2_SCSI_IO_SUCCESS_REPLY_DESCRIPTOR {
u_int8_t ReplyFlags; /* 0x00 */
u_int8_t MSIxIndex; /* 0x01 */
u_int16_t SMID; /* 0x02 */
u_int16_t TaskTag; /* 0x04 */
u_int16_t Reserved1; /* 0x06 */
} MPI2_SCSI_IO_SUCCESS_REPLY_DESCRIPTOR,
MPI2_POINTER PTR_MPI2_SCSI_IO_SUCCESS_REPLY_DESCRIPTOR,
Mpi2SCSIIOSuccessReplyDescriptor_t, MPI2_POINTER pMpi2SCSIIOSuccessReplyDescriptor_t;
/* TargetAssist Success Reply Descriptor */
typedef struct _MPI2_TARGETASSIST_SUCCESS_REPLY_DESCRIPTOR {
u_int8_t ReplyFlags; /* 0x00 */
u_int8_t MSIxIndex; /* 0x01 */
u_int16_t SMID; /* 0x02 */
u_int8_t SequenceNumber; /* 0x04 */
u_int8_t Reserved1; /* 0x05 */
u_int16_t IoIndex; /* 0x06 */
} MPI2_TARGETASSIST_SUCCESS_REPLY_DESCRIPTOR,
MPI2_POINTER PTR_MPI2_TARGETASSIST_SUCCESS_REPLY_DESCRIPTOR,
Mpi2TargetAssistSuccessReplyDescriptor_t, MPI2_POINTER pMpi2TargetAssistSuccessReplyDescriptor_t;
/* Target Command Buffer Reply Descriptor */
typedef struct _MPI2_TARGET_COMMAND_BUFFER_REPLY_DESCRIPTOR {
u_int8_t ReplyFlags; /* 0x00 */
u_int8_t MSIxIndex; /* 0x01 */
u_int8_t VP_ID; /* 0x02 */
u_int8_t Flags; /* 0x03 */
u_int16_t InitiatorDevHandle; /* 0x04 */
u_int16_t IoIndex; /* 0x06 */
} MPI2_TARGET_COMMAND_BUFFER_REPLY_DESCRIPTOR,
MPI2_POINTER PTR_MPI2_TARGET_COMMAND_BUFFER_REPLY_DESCRIPTOR,
Mpi2TargetCommandBufferReplyDescriptor_t, MPI2_POINTER pMpi2TargetCommandBufferReplyDescriptor_t;
/* RAID Accelerator Success Reply Descriptor */
typedef struct _MPI2_RAID_ACCELERATOR_SUCCESS_REPLY_DESCRIPTOR {
u_int8_t ReplyFlags; /* 0x00 */
u_int8_t MSIxIndex; /* 0x01 */
u_int16_t SMID; /* 0x02 */
u_int32_t Reserved; /* 0x04 */
} MPI2_RAID_ACCELERATOR_SUCCESS_REPLY_DESCRIPTOR,
MPI2_POINTER PTR_MPI2_RAID_ACCELERATOR_SUCCESS_REPLY_DESCRIPTOR,
Mpi2RAIDAcceleratorSuccessReplyDescriptor_t, MPI2_POINTER pMpi2RAIDAcceleratorSuccessReplyDescriptor_t;
/* union of Reply Descriptors */
typedef union _MPI2_REPLY_DESCRIPTORS_UNION {
MPI2_DEFAULT_REPLY_DESCRIPTOR Default;
MPI2_ADDRESS_REPLY_DESCRIPTOR AddressReply;
MPI2_SCSI_IO_SUCCESS_REPLY_DESCRIPTOR SCSIIOSuccess;
MPI2_TARGETASSIST_SUCCESS_REPLY_DESCRIPTOR TargetAssistSuccess;
MPI2_TARGET_COMMAND_BUFFER_REPLY_DESCRIPTOR TargetCommandBuffer;
MPI2_RAID_ACCELERATOR_SUCCESS_REPLY_DESCRIPTOR RAIDAcceleratorSuccess;
u_int64_t Words;
} MPI2_REPLY_DESCRIPTORS_UNION, MPI2_POINTER PTR_MPI2_REPLY_DESCRIPTORS_UNION,
Mpi2ReplyDescriptorsUnion_t, MPI2_POINTER pMpi2ReplyDescriptorsUnion_t;
typedef union {
volatile unsigned int val;
unsigned int val_rdonly;
} mrsas_atomic_t;
#define mrsas_atomic_read(v) atomic_load_acq_int(&(v)->val)
#define mrsas_atomic_set(v,i) atomic_store_rel_int(&(v)->val, i)
#define mrsas_atomic_dec(v) atomic_fetchadd_int(&(v)->val, -1)
#define mrsas_atomic_inc(v) atomic_fetchadd_int(&(v)->val, 1)
/* IOCInit Request message */
typedef struct _MPI2_IOC_INIT_REQUEST {
u_int8_t WhoInit; /* 0x00 */
u_int8_t Reserved1; /* 0x01 */
u_int8_t ChainOffset; /* 0x02 */
u_int8_t Function; /* 0x03 */
u_int16_t Reserved2; /* 0x04 */
u_int8_t Reserved3; /* 0x06 */
u_int8_t MsgFlags; /* 0x07 */
u_int8_t VP_ID; /* 0x08 */
u_int8_t VF_ID; /* 0x09 */
u_int16_t Reserved4; /* 0x0A */
u_int16_t MsgVersion; /* 0x0C */
u_int16_t HeaderVersion; /* 0x0E */
u_int32_t Reserved5; /* 0x10 */
u_int16_t Reserved6; /* 0x14 */
u_int8_t Reserved7; /* 0x16 */
u_int8_t HostMSIxVectors; /* 0x17 */
u_int16_t Reserved8; /* 0x18 */
u_int16_t SystemRequestFrameSize; /* 0x1A */
u_int16_t ReplyDescriptorPostQueueDepth; /* 0x1C */
u_int16_t ReplyFreeQueueDepth; /* 0x1E */
u_int32_t SenseBufferAddressHigh; /* 0x20 */
u_int32_t SystemReplyAddressHigh; /* 0x24 */
u_int64_t SystemRequestFrameBaseAddress; /* 0x28 */
u_int64_t ReplyDescriptorPostQueueAddress; /* 0x30 */
u_int64_t ReplyFreeQueueAddress;/* 0x38 */
u_int64_t TimeStamp; /* 0x40 */
} MPI2_IOC_INIT_REQUEST, MPI2_POINTER PTR_MPI2_IOC_INIT_REQUEST,
Mpi2IOCInitRequest_t, MPI2_POINTER pMpi2IOCInitRequest_t;
/*
* MR private defines
*/
#define MR_PD_INVALID 0xFFFF
#define MAX_SPAN_DEPTH 8
#define MAX_QUAD_DEPTH MAX_SPAN_DEPTH
#define MAX_RAIDMAP_SPAN_DEPTH (MAX_SPAN_DEPTH)
#define MAX_ROW_SIZE 32
#define MAX_RAIDMAP_ROW_SIZE (MAX_ROW_SIZE)
#define MAX_LOGICAL_DRIVES 64
#define MAX_LOGICAL_DRIVES_EXT 256
#define MAX_RAIDMAP_LOGICAL_DRIVES (MAX_LOGICAL_DRIVES)
#define MAX_RAIDMAP_VIEWS (MAX_LOGICAL_DRIVES)
#define MAX_ARRAYS 128
#define MAX_RAIDMAP_ARRAYS (MAX_ARRAYS)
#define MAX_ARRAYS_EXT 256
#define MAX_API_ARRAYS_EXT MAX_ARRAYS_EXT
#define MAX_PHYSICAL_DEVICES 256
#define MAX_RAIDMAP_PHYSICAL_DEVICES (MAX_PHYSICAL_DEVICES)
#define MR_DCMD_LD_MAP_GET_INFO 0x0300e101
+#define MR_DCMD_SYSTEM_PD_MAP_GET_INFO 0x0200e102
#define MRSAS_MAX_PD_CHANNELS 1
#define MRSAS_MAX_LD_CHANNELS 1
#define MRSAS_MAX_DEV_PER_CHANNEL 256
#define MRSAS_DEFAULT_INIT_ID -1
#define MRSAS_MAX_LUN 8
#define MRSAS_DEFAULT_CMD_PER_LUN 256
#define MRSAS_MAX_PD (MRSAS_MAX_PD_CHANNELS * \
MRSAS_MAX_DEV_PER_CHANNEL)
#define MRSAS_MAX_LD_IDS (MRSAS_MAX_LD_CHANNELS * \
MRSAS_MAX_DEV_PER_CHANNEL)
#define VD_EXT_DEBUG 0
/*******************************************************************
* RAID map related structures
********************************************************************/
#pragma pack(1)
typedef struct _MR_DEV_HANDLE_INFO {
u_int16_t curDevHdl;
u_int8_t validHandles;
u_int8_t reserved;
u_int16_t devHandle[2];
} MR_DEV_HANDLE_INFO;
#pragma pack()
typedef struct _MR_ARRAY_INFO {
u_int16_t pd[MAX_RAIDMAP_ROW_SIZE];
} MR_ARRAY_INFO;
typedef struct _MR_QUAD_ELEMENT {
u_int64_t logStart;
u_int64_t logEnd;
u_int64_t offsetInSpan;
u_int32_t diff;
u_int32_t reserved1;
} MR_QUAD_ELEMENT;
typedef struct _MR_SPAN_INFO {
u_int32_t noElements;
u_int32_t reserved1;
MR_QUAD_ELEMENT quad[MAX_RAIDMAP_SPAN_DEPTH];
} MR_SPAN_INFO;
typedef struct _MR_LD_SPAN_ {
u_int64_t startBlk;
u_int64_t numBlks;
u_int16_t arrayRef;
u_int8_t spanRowSize;
u_int8_t spanRowDataSize;
u_int8_t reserved[4];
} MR_LD_SPAN;
typedef struct _MR_SPAN_BLOCK_INFO {
u_int64_t num_rows;
MR_LD_SPAN span;
MR_SPAN_INFO block_span_info;
} MR_SPAN_BLOCK_INFO;
typedef struct _MR_LD_RAID {
struct {
u_int32_t fpCapable:1;
u_int32_t reserved5:3;
u_int32_t ldPiMode:4;
u_int32_t pdPiMode:4;
u_int32_t encryptionType:8;
u_int32_t fpWriteCapable:1;
u_int32_t fpReadCapable:1;
u_int32_t fpWriteAcrossStripe:1;
u_int32_t fpReadAcrossStripe:1;
u_int32_t fpNonRWCapable:1;
u_int32_t reserved4:7;
} capability;
u_int32_t reserved6;
u_int64_t size;
u_int8_t spanDepth;
u_int8_t level;
u_int8_t stripeShift;
u_int8_t rowSize;
u_int8_t rowDataSize;
u_int8_t writeMode;
u_int8_t PRL;
u_int8_t SRL;
u_int16_t targetId;
u_int8_t ldState;
u_int8_t regTypeReqOnWrite;
u_int8_t modFactor;
u_int8_t regTypeReqOnRead;
u_int16_t seqNum;
struct {
u_int32_t ldSyncRequired:1;
u_int32_t regTypeReqOnReadLsValid:1;
u_int32_t reserved:30;
} flags;
u_int8_t LUN[8];
u_int8_t fpIoTimeoutForLd;
u_int8_t reserved2[3];
u_int32_t logicalBlockLength;
struct {
u_int32_t LdPiExp:4;
u_int32_t LdLogicalBlockExp:4;
u_int32_t reserved1:24;
} exponent;
u_int8_t reserved3[0x80 - 0x38];
} MR_LD_RAID;
typedef struct _MR_LD_SPAN_MAP {
MR_LD_RAID ldRaid;
u_int8_t dataArmMap[MAX_RAIDMAP_ROW_SIZE];
MR_SPAN_BLOCK_INFO spanBlock[MAX_RAIDMAP_SPAN_DEPTH];
} MR_LD_SPAN_MAP;
typedef struct _MR_FW_RAID_MAP {
u_int32_t totalSize;
union {
struct {
u_int32_t maxLd;
u_int32_t maxSpanDepth;
u_int32_t maxRowSize;
u_int32_t maxPdCount;
u_int32_t maxArrays;
} validationInfo;
u_int32_t version[5];
u_int32_t reserved1[5];
} raid_desc;
u_int32_t ldCount;
u_int32_t Reserved1;
/*
* This doesn't correspond to FW Ld Tgt Id to LD, but will purge. For
* example: if tgt Id is 4 and FW LD is 2, and there is only one LD,
* FW will populate the array like this. [0xFF, 0xFF, 0xFF, 0xFF,
* 0x0,.....]. This is to help reduce the entire strcture size if
* there are few LDs or driver is looking info for 1 LD only.
*/
u_int8_t ldTgtIdToLd[MAX_RAIDMAP_LOGICAL_DRIVES + MAX_RAIDMAP_VIEWS];
u_int8_t fpPdIoTimeoutSec;
u_int8_t reserved2[7];
MR_ARRAY_INFO arMapInfo[MAX_RAIDMAP_ARRAYS];
MR_DEV_HANDLE_INFO devHndlInfo[MAX_RAIDMAP_PHYSICAL_DEVICES];
MR_LD_SPAN_MAP ldSpanMap[1];
} MR_FW_RAID_MAP;
typedef struct _MR_FW_RAID_MAP_EXT {
/* Not used in new map */
u_int32_t reserved;
union {
struct {
u_int32_t maxLd;
u_int32_t maxSpanDepth;
u_int32_t maxRowSize;
u_int32_t maxPdCount;
u_int32_t maxArrays;
} validationInfo;
u_int32_t version[5];
u_int32_t reserved1[5];
} fw_raid_desc;
u_int8_t fpPdIoTimeoutSec;
u_int8_t reserved2[7];
u_int16_t ldCount;
u_int16_t arCount;
u_int16_t spanCount;
u_int16_t reserve3;
MR_DEV_HANDLE_INFO devHndlInfo[MAX_RAIDMAP_PHYSICAL_DEVICES];
u_int8_t ldTgtIdToLd[MAX_LOGICAL_DRIVES_EXT];
MR_ARRAY_INFO arMapInfo[MAX_API_ARRAYS_EXT];
MR_LD_SPAN_MAP ldSpanMap[MAX_LOGICAL_DRIVES_EXT];
} MR_FW_RAID_MAP_EXT;
typedef struct _MR_DRV_RAID_MAP {
/*
* Total size of this structure, including this field. This feild
* will be manupulated by driver for ext raid map, else pick the
* value from firmware raid map.
*/
u_int32_t totalSize;
union {
struct {
u_int32_t maxLd;
u_int32_t maxSpanDepth;
u_int32_t maxRowSize;
u_int32_t maxPdCount;
u_int32_t maxArrays;
} validationInfo;
u_int32_t version[5];
u_int32_t reserved1[5];
} drv_raid_desc;
/* timeout value used by driver in FP IOs */
u_int8_t fpPdIoTimeoutSec;
u_int8_t reserved2[7];
u_int16_t ldCount;
u_int16_t arCount;
u_int16_t spanCount;
u_int16_t reserve3;
MR_DEV_HANDLE_INFO devHndlInfo[MAX_RAIDMAP_PHYSICAL_DEVICES];
u_int8_t ldTgtIdToLd[MAX_LOGICAL_DRIVES_EXT];
MR_ARRAY_INFO arMapInfo[MAX_API_ARRAYS_EXT];
MR_LD_SPAN_MAP ldSpanMap[1];
} MR_DRV_RAID_MAP;
/*
* Driver raid map size is same as raid map ext MR_DRV_RAID_MAP_ALL is
* created to sync with old raid. And it is mainly for code re-use purpose.
*/
#pragma pack(1)
typedef struct _MR_DRV_RAID_MAP_ALL {
MR_DRV_RAID_MAP raidMap;
MR_LD_SPAN_MAP ldSpanMap[MAX_LOGICAL_DRIVES_EXT - 1];
} MR_DRV_RAID_MAP_ALL;
#pragma pack()
typedef struct _LD_LOAD_BALANCE_INFO {
u_int8_t loadBalanceFlag;
u_int8_t reserved1;
mrsas_atomic_t scsi_pending_cmds[MAX_PHYSICAL_DEVICES];
u_int64_t last_accessed_block[MAX_PHYSICAL_DEVICES];
} LD_LOAD_BALANCE_INFO, *PLD_LOAD_BALANCE_INFO;
/* SPAN_SET is info caclulated from span info from Raid map per ld */
typedef struct _LD_SPAN_SET {
u_int64_t log_start_lba;
u_int64_t log_end_lba;
u_int64_t span_row_start;
u_int64_t span_row_end;
u_int64_t data_strip_start;
u_int64_t data_strip_end;
u_int64_t data_row_start;
u_int64_t data_row_end;
u_int8_t strip_offset[MAX_SPAN_DEPTH];
u_int32_t span_row_data_width;
u_int32_t diff;
u_int32_t reserved[2];
} LD_SPAN_SET, *PLD_SPAN_SET;
typedef struct LOG_BLOCK_SPAN_INFO {
LD_SPAN_SET span_set[MAX_SPAN_DEPTH];
} LD_SPAN_INFO, *PLD_SPAN_INFO;
#pragma pack(1)
typedef struct _MR_FW_RAID_MAP_ALL {
MR_FW_RAID_MAP raidMap;
MR_LD_SPAN_MAP ldSpanMap[MAX_LOGICAL_DRIVES - 1];
} MR_FW_RAID_MAP_ALL;
#pragma pack()
struct IO_REQUEST_INFO {
u_int64_t ldStartBlock;
u_int32_t numBlocks;
u_int16_t ldTgtId;
u_int8_t isRead;
u_int16_t devHandle;
u_int64_t pdBlock;
u_int8_t fpOkForIo;
u_int8_t IoforUnevenSpan;
u_int8_t start_span;
u_int8_t reserved;
u_int64_t start_row;
/* span[7:5], arm[4:0] */
u_int8_t span_arm;
u_int8_t pd_after_lb;
};
+/*
+ * define MR_PD_CFG_SEQ structure for system PDs
+ */
+struct MR_PD_CFG_SEQ {
+ u_int16_t seqNum;
+ u_int16_t devHandle;
+ u_int8_t reserved[4];
+} __packed;
+
+struct MR_PD_CFG_SEQ_NUM_SYNC {
+ u_int32_t size;
+ u_int32_t count;
+ struct MR_PD_CFG_SEQ seq[1];
+} __packed;
+
+
typedef struct _MR_LD_TARGET_SYNC {
u_int8_t targetId;
u_int8_t reserved;
u_int16_t seqNum;
} MR_LD_TARGET_SYNC;
#define IEEE_SGE_FLAGS_ADDR_MASK (0x03)
#define IEEE_SGE_FLAGS_SYSTEM_ADDR (0x00)
#define IEEE_SGE_FLAGS_IOCDDR_ADDR (0x01)
#define IEEE_SGE_FLAGS_IOCPLB_ADDR (0x02)
#define IEEE_SGE_FLAGS_IOCPLBNTA_ADDR (0x03)
#define IEEE_SGE_FLAGS_CHAIN_ELEMENT (0x80)
#define IEEE_SGE_FLAGS_END_OF_LIST (0x40)
union desc_value {
u_int64_t word;
struct {
u_int32_t low;
u_int32_t high;
} u;
};
/*******************************************************************
* Temporary command
********************************************************************/
struct mrsas_tmp_dcmd {
bus_dma_tag_t tmp_dcmd_tag;
bus_dmamap_t tmp_dcmd_dmamap;
void *tmp_dcmd_mem;
bus_addr_t tmp_dcmd_phys_addr;
};
/*******************************************************************
* Register set, included legacy controllers 1068 and 1078,
* structure extended for 1078 registers
*******************************************************************/
#pragma pack(1)
typedef struct _mrsas_register_set {
u_int32_t doorbell; /* 0000h */
u_int32_t fusion_seq_offset; /* 0004h */
u_int32_t fusion_host_diag; /* 0008h */
u_int32_t reserved_01; /* 000Ch */
u_int32_t inbound_msg_0; /* 0010h */
u_int32_t inbound_msg_1; /* 0014h */
u_int32_t outbound_msg_0; /* 0018h */
u_int32_t outbound_msg_1; /* 001Ch */
u_int32_t inbound_doorbell; /* 0020h */
u_int32_t inbound_intr_status; /* 0024h */
u_int32_t inbound_intr_mask; /* 0028h */
u_int32_t outbound_doorbell; /* 002Ch */
u_int32_t outbound_intr_status; /* 0030h */
u_int32_t outbound_intr_mask; /* 0034h */
u_int32_t reserved_1[2]; /* 0038h */
u_int32_t inbound_queue_port; /* 0040h */
u_int32_t outbound_queue_port; /* 0044h */
u_int32_t reserved_2[9]; /* 0048h */
u_int32_t reply_post_host_index;/* 006Ch */
u_int32_t reserved_2_2[12]; /* 0070h */
u_int32_t outbound_doorbell_clear; /* 00A0h */
u_int32_t reserved_3[3]; /* 00A4h */
u_int32_t outbound_scratch_pad; /* 00B0h */
u_int32_t outbound_scratch_pad_2; /* 00B4h */
u_int32_t reserved_4[2]; /* 00B8h */
u_int32_t inbound_low_queue_port; /* 00C0h */
u_int32_t inbound_high_queue_port; /* 00C4h */
u_int32_t reserved_5; /* 00C8h */
u_int32_t res_6[11]; /* CCh */
u_int32_t host_diag;
u_int32_t seq_offset;
u_int32_t index_registers[807]; /* 00CCh */
} mrsas_reg_set;
#pragma pack()
/*******************************************************************
* Firmware Interface Defines
*******************************************************************
* MFI stands for MegaRAID SAS FW Interface. This is just a moniker
* for protocol between the software and firmware. Commands are
* issued using "message frames".
******************************************************************/
/*
* FW posts its state in upper 4 bits of outbound_msg_0 register
*/
#define MFI_STATE_MASK 0xF0000000
#define MFI_STATE_UNDEFINED 0x00000000
#define MFI_STATE_BB_INIT 0x10000000
#define MFI_STATE_FW_INIT 0x40000000
#define MFI_STATE_WAIT_HANDSHAKE 0x60000000
#define MFI_STATE_FW_INIT_2 0x70000000
#define MFI_STATE_DEVICE_SCAN 0x80000000
#define MFI_STATE_BOOT_MESSAGE_PENDING 0x90000000
#define MFI_STATE_FLUSH_CACHE 0xA0000000
#define MFI_STATE_READY 0xB0000000
#define MFI_STATE_OPERATIONAL 0xC0000000
#define MFI_STATE_FAULT 0xF0000000
#define MFI_RESET_REQUIRED 0x00000001
#define MFI_RESET_ADAPTER 0x00000002
#define MEGAMFI_FRAME_SIZE 64
#define MRSAS_MFI_FRAME_SIZE 1024
#define MRSAS_MFI_SENSE_SIZE 128
/*
* During FW init, clear pending cmds & reset state using inbound_msg_0
*
* ABORT : Abort all pending cmds READY : Move from OPERATIONAL to
* READY state; discard queue info MFIMODE : Discard (possible) low MFA
* posted in 64-bit mode (??) CLR_HANDSHAKE: FW is waiting for HANDSHAKE from
* BIOS or Driver HOTPLUG : Resume from Hotplug MFI_STOP_ADP : Send
* signal to FW to stop processing
*/
#define WRITE_SEQUENCE_OFFSET (0x0000000FC)
#define HOST_DIAGNOSTIC_OFFSET (0x000000F8)
#define DIAG_WRITE_ENABLE (0x00000080)
#define DIAG_RESET_ADAPTER (0x00000004)
#define MFI_ADP_RESET 0x00000040
#define MFI_INIT_ABORT 0x00000001
#define MFI_INIT_READY 0x00000002
#define MFI_INIT_MFIMODE 0x00000004
#define MFI_INIT_CLEAR_HANDSHAKE 0x00000008
#define MFI_INIT_HOTPLUG 0x00000010
#define MFI_STOP_ADP 0x00000020
#define MFI_RESET_FLAGS MFI_INIT_READY| \
MFI_INIT_MFIMODE| \
MFI_INIT_ABORT
/*
* MFI frame flags
*/
#define MFI_FRAME_POST_IN_REPLY_QUEUE 0x0000
#define MFI_FRAME_DONT_POST_IN_REPLY_QUEUE 0x0001
#define MFI_FRAME_SGL32 0x0000
#define MFI_FRAME_SGL64 0x0002
#define MFI_FRAME_SENSE32 0x0000
#define MFI_FRAME_SENSE64 0x0004
#define MFI_FRAME_DIR_NONE 0x0000
#define MFI_FRAME_DIR_WRITE 0x0008
#define MFI_FRAME_DIR_READ 0x0010
#define MFI_FRAME_DIR_BOTH 0x0018
#define MFI_FRAME_IEEE 0x0020
/*
* Definition for cmd_status
*/
#define MFI_CMD_STATUS_POLL_MODE 0xFF
/*
* MFI command opcodes
*/
#define MFI_CMD_INIT 0x00
#define MFI_CMD_LD_READ 0x01
#define MFI_CMD_LD_WRITE 0x02
#define MFI_CMD_LD_SCSI_IO 0x03
#define MFI_CMD_PD_SCSI_IO 0x04
#define MFI_CMD_DCMD 0x05
#define MFI_CMD_ABORT 0x06
#define MFI_CMD_SMP 0x07
#define MFI_CMD_STP 0x08
#define MFI_CMD_INVALID 0xff
#define MR_DCMD_CTRL_GET_INFO 0x01010000
#define MR_DCMD_LD_GET_LIST 0x03010000
#define MR_DCMD_CTRL_CACHE_FLUSH 0x01101000
#define MR_FLUSH_CTRL_CACHE 0x01
#define MR_FLUSH_DISK_CACHE 0x02
#define MR_DCMD_CTRL_SHUTDOWN 0x01050000
#define MR_DCMD_HIBERNATE_SHUTDOWN 0x01060000
#define MR_ENABLE_DRIVE_SPINDOWN 0x01
#define MR_DCMD_CTRL_EVENT_GET_INFO 0x01040100
#define MR_DCMD_CTRL_EVENT_GET 0x01040300
#define MR_DCMD_CTRL_EVENT_WAIT 0x01040500
#define MR_DCMD_LD_GET_PROPERTIES 0x03030000
#define MR_DCMD_CLUSTER 0x08000000
#define MR_DCMD_CLUSTER_RESET_ALL 0x08010100
#define MR_DCMD_CLUSTER_RESET_LD 0x08010200
#define MR_DCMD_PD_LIST_QUERY 0x02010100
#define MR_DCMD_CTRL_MISC_CPX 0x0100e200
#define MR_DCMD_CTRL_MISC_CPX_INIT_DATA_GET 0x0100e201
#define MR_DCMD_CTRL_MISC_CPX_QUEUE_DATA 0x0100e202
#define MR_DCMD_CTRL_MISC_CPX_UNREGISTER 0x0100e203
#define MAX_MR_ROW_SIZE 32
#define MR_CPX_DIR_WRITE 1
#define MR_CPX_DIR_READ 0
#define MR_CPX_VERSION 1
#define MR_DCMD_CTRL_IO_METRICS_GET 0x01170200
#define MR_EVT_CFG_CLEARED 0x0004
#define MR_EVT_LD_STATE_CHANGE 0x0051
#define MR_EVT_PD_INSERTED 0x005b
#define MR_EVT_PD_REMOVED 0x0070
#define MR_EVT_LD_CREATED 0x008a
#define MR_EVT_LD_DELETED 0x008b
#define MR_EVT_FOREIGN_CFG_IMPORTED 0x00db
#define MR_EVT_LD_OFFLINE 0x00fc
#define MR_EVT_CTRL_HOST_BUS_SCAN_REQUESTED 0x0152
#define MR_EVT_CTRL_PERF_COLLECTION 0x017e
/*
* MFI command completion codes
*/
enum MFI_STAT {
MFI_STAT_OK = 0x00,
MFI_STAT_INVALID_CMD = 0x01,
MFI_STAT_INVALID_DCMD = 0x02,
MFI_STAT_INVALID_PARAMETER = 0x03,
MFI_STAT_INVALID_SEQUENCE_NUMBER = 0x04,
MFI_STAT_ABORT_NOT_POSSIBLE = 0x05,
MFI_STAT_APP_HOST_CODE_NOT_FOUND = 0x06,
MFI_STAT_APP_IN_USE = 0x07,
MFI_STAT_APP_NOT_INITIALIZED = 0x08,
MFI_STAT_ARRAY_INDEX_INVALID = 0x09,
MFI_STAT_ARRAY_ROW_NOT_EMPTY = 0x0a,
MFI_STAT_CONFIG_RESOURCE_CONFLICT = 0x0b,
MFI_STAT_DEVICE_NOT_FOUND = 0x0c,
MFI_STAT_DRIVE_TOO_SMALL = 0x0d,
MFI_STAT_FLASH_ALLOC_FAIL = 0x0e,
MFI_STAT_FLASH_BUSY = 0x0f,
MFI_STAT_FLASH_ERROR = 0x10,
MFI_STAT_FLASH_IMAGE_BAD = 0x11,
MFI_STAT_FLASH_IMAGE_INCOMPLETE = 0x12,
MFI_STAT_FLASH_NOT_OPEN = 0x13,
MFI_STAT_FLASH_NOT_STARTED = 0x14,
MFI_STAT_FLUSH_FAILED = 0x15,
MFI_STAT_HOST_CODE_NOT_FOUNT = 0x16,
MFI_STAT_LD_CC_IN_PROGRESS = 0x17,
MFI_STAT_LD_INIT_IN_PROGRESS = 0x18,
MFI_STAT_LD_LBA_OUT_OF_RANGE = 0x19,
MFI_STAT_LD_MAX_CONFIGURED = 0x1a,
MFI_STAT_LD_NOT_OPTIMAL = 0x1b,
MFI_STAT_LD_RBLD_IN_PROGRESS = 0x1c,
MFI_STAT_LD_RECON_IN_PROGRESS = 0x1d,
MFI_STAT_LD_WRONG_RAID_LEVEL = 0x1e,
MFI_STAT_MAX_SPARES_EXCEEDED = 0x1f,
MFI_STAT_MEMORY_NOT_AVAILABLE = 0x20,
MFI_STAT_MFC_HW_ERROR = 0x21,
MFI_STAT_NO_HW_PRESENT = 0x22,
MFI_STAT_NOT_FOUND = 0x23,
MFI_STAT_NOT_IN_ENCL = 0x24,
MFI_STAT_PD_CLEAR_IN_PROGRESS = 0x25,
MFI_STAT_PD_TYPE_WRONG = 0x26,
MFI_STAT_PR_DISABLED = 0x27,
MFI_STAT_ROW_INDEX_INVALID = 0x28,
MFI_STAT_SAS_CONFIG_INVALID_ACTION = 0x29,
MFI_STAT_SAS_CONFIG_INVALID_DATA = 0x2a,
MFI_STAT_SAS_CONFIG_INVALID_PAGE = 0x2b,
MFI_STAT_SAS_CONFIG_INVALID_TYPE = 0x2c,
MFI_STAT_SCSI_DONE_WITH_ERROR = 0x2d,
MFI_STAT_SCSI_IO_FAILED = 0x2e,
MFI_STAT_SCSI_RESERVATION_CONFLICT = 0x2f,
MFI_STAT_SHUTDOWN_FAILED = 0x30,
MFI_STAT_TIME_NOT_SET = 0x31,
MFI_STAT_WRONG_STATE = 0x32,
MFI_STAT_LD_OFFLINE = 0x33,
MFI_STAT_PEER_NOTIFICATION_REJECTED = 0x34,
MFI_STAT_PEER_NOTIFICATION_FAILED = 0x35,
MFI_STAT_RESERVATION_IN_PROGRESS = 0x36,
MFI_STAT_I2C_ERRORS_DETECTED = 0x37,
MFI_STAT_PCI_ERRORS_DETECTED = 0x38,
MFI_STAT_CONFIG_SEQ_MISMATCH = 0x67,
MFI_STAT_INVALID_STATUS = 0xFF
};
/*
* Number of mailbox bytes in DCMD message frame
*/
#define MFI_MBOX_SIZE 12
enum MR_EVT_CLASS {
MR_EVT_CLASS_DEBUG = -2,
MR_EVT_CLASS_PROGRESS = -1,
MR_EVT_CLASS_INFO = 0,
MR_EVT_CLASS_WARNING = 1,
MR_EVT_CLASS_CRITICAL = 2,
MR_EVT_CLASS_FATAL = 3,
MR_EVT_CLASS_DEAD = 4,
};
enum MR_EVT_LOCALE {
MR_EVT_LOCALE_LD = 0x0001,
MR_EVT_LOCALE_PD = 0x0002,
MR_EVT_LOCALE_ENCL = 0x0004,
MR_EVT_LOCALE_BBU = 0x0008,
MR_EVT_LOCALE_SAS = 0x0010,
MR_EVT_LOCALE_CTRL = 0x0020,
MR_EVT_LOCALE_CONFIG = 0x0040,
MR_EVT_LOCALE_CLUSTER = 0x0080,
MR_EVT_LOCALE_ALL = 0xffff,
};
enum MR_EVT_ARGS {
MR_EVT_ARGS_NONE,
MR_EVT_ARGS_CDB_SENSE,
MR_EVT_ARGS_LD,
MR_EVT_ARGS_LD_COUNT,
MR_EVT_ARGS_LD_LBA,
MR_EVT_ARGS_LD_OWNER,
MR_EVT_ARGS_LD_LBA_PD_LBA,
MR_EVT_ARGS_LD_PROG,
MR_EVT_ARGS_LD_STATE,
MR_EVT_ARGS_LD_STRIP,
MR_EVT_ARGS_PD,
MR_EVT_ARGS_PD_ERR,
MR_EVT_ARGS_PD_LBA,
MR_EVT_ARGS_PD_LBA_LD,
MR_EVT_ARGS_PD_PROG,
MR_EVT_ARGS_PD_STATE,
MR_EVT_ARGS_PCI,
MR_EVT_ARGS_RATE,
MR_EVT_ARGS_STR,
MR_EVT_ARGS_TIME,
MR_EVT_ARGS_ECC,
MR_EVT_ARGS_LD_PROP,
MR_EVT_ARGS_PD_SPARE,
MR_EVT_ARGS_PD_INDEX,
MR_EVT_ARGS_DIAG_PASS,
MR_EVT_ARGS_DIAG_FAIL,
MR_EVT_ARGS_PD_LBA_LBA,
MR_EVT_ARGS_PORT_PHY,
MR_EVT_ARGS_PD_MISSING,
MR_EVT_ARGS_PD_ADDRESS,
MR_EVT_ARGS_BITMAP,
MR_EVT_ARGS_CONNECTOR,
MR_EVT_ARGS_PD_PD,
MR_EVT_ARGS_PD_FRU,
MR_EVT_ARGS_PD_PATHINFO,
MR_EVT_ARGS_PD_POWER_STATE,
MR_EVT_ARGS_GENERIC,
};
/*
* Thunderbolt (and later) Defines
*/
-#define MRSAS_MAX_SZ_CHAIN_FRAME 1024
+#define MEGASAS_CHAIN_FRAME_SZ_MIN 1024
#define MFI_FUSION_ENABLE_INTERRUPT_MASK (0x00000009)
#define MRSAS_MPI2_RAID_DEFAULT_IO_FRAME_SIZE 256
#define MRSAS_MPI2_FUNCTION_PASSTHRU_IO_REQUEST 0xF0
#define MRSAS_MPI2_FUNCTION_LD_IO_REQUEST 0xF1
#define MRSAS_LOAD_BALANCE_FLAG 0x1
#define MRSAS_DCMD_MBOX_PEND_FLAG 0x1
#define HOST_DIAG_WRITE_ENABLE 0x80
#define HOST_DIAG_RESET_ADAPTER 0x4
#define MRSAS_TBOLT_MAX_RESET_TRIES 3
#define MRSAS_MAX_MFI_CMDS 32
/*
* Invader Defines
*/
#define MPI2_TYPE_CUDA 0x2
#define MPI25_SAS_DEVICE0_FLAGS_ENABLED_FAST_PATH 0x4000
#define MR_RL_FLAGS_GRANT_DESTINATION_CPU0 0x00
#define MR_RL_FLAGS_GRANT_DESTINATION_CPU1 0x10
#define MR_RL_FLAGS_GRANT_DESTINATION_CUDA 0x80
#define MR_RL_FLAGS_SEQ_NUM_ENABLE 0x8
/*
* T10 PI defines
*/
#define MR_PROT_INFO_TYPE_CONTROLLER 0x8
#define MRSAS_SCSI_VARIABLE_LENGTH_CMD 0x7f
#define MRSAS_SCSI_SERVICE_ACTION_READ32 0x9
#define MRSAS_SCSI_SERVICE_ACTION_WRITE32 0xB
#define MRSAS_SCSI_ADDL_CDB_LEN 0x18
#define MRSAS_RD_WR_PROTECT_CHECK_ALL 0x20
#define MRSAS_RD_WR_PROTECT_CHECK_NONE 0x60
#define MRSAS_SCSIBLOCKSIZE 512
/*
* Raid context flags
*/
#define MR_RAID_CTX_RAID_FLAGS_IO_SUB_TYPE_SHIFT 0x4
#define MR_RAID_CTX_RAID_FLAGS_IO_SUB_TYPE_MASK 0x30
typedef enum MR_RAID_FLAGS_IO_SUB_TYPE {
MR_RAID_FLAGS_IO_SUB_TYPE_NONE = 0,
MR_RAID_FLAGS_IO_SUB_TYPE_SYSTEM_PD = 1,
} MR_RAID_FLAGS_IO_SUB_TYPE;
/*
* Request descriptor types
*/
#define MRSAS_REQ_DESCRIPT_FLAGS_LD_IO 0x7
#define MRSAS_REQ_DESCRIPT_FLAGS_MFA 0x1
#define MRSAS_REQ_DESCRIPT_FLAGS_NO_LOCK 0x2
#define MRSAS_REQ_DESCRIPT_FLAGS_TYPE_SHIFT 1
#define MRSAS_FP_CMD_LEN 16
#define MRSAS_FUSION_IN_RESET 0
#define RAID_CTX_SPANARM_ARM_SHIFT (0)
#define RAID_CTX_SPANARM_ARM_MASK (0x1f)
#define RAID_CTX_SPANARM_SPAN_SHIFT (5)
#define RAID_CTX_SPANARM_SPAN_MASK (0xE0)
/*
* Define region lock types
*/
typedef enum _REGION_TYPE {
REGION_TYPE_UNUSED = 0,
REGION_TYPE_SHARED_READ = 1,
REGION_TYPE_SHARED_WRITE = 2,
REGION_TYPE_EXCLUSIVE = 3,
} REGION_TYPE;
/*
* SCSI-CAM Related Defines
*/
#define MRSAS_SCSI_MAX_LUNS 0
#define MRSAS_SCSI_INITIATOR_ID 255
#define MRSAS_SCSI_MAX_CMDS 8
#define MRSAS_SCSI_MAX_CDB_LEN 16
#define MRSAS_SCSI_SENSE_BUFFERSIZE 96
-#define MRSAS_MAX_SGL 70
-#define MRSAS_MAX_IO_SIZE (256 * 1024)
#define MRSAS_INTERNAL_CMDS 32
+#define MEGASAS_MAX_CHAIN_SIZE_UNITS_MASK 0x400000
+#define MEGASAS_MAX_CHAIN_SIZE_MASK 0x3E0
+#define MEGASAS_256K_IO 128
+#define MEGASAS_1MB_IO (MEGASAS_256K_IO * 4)
+
/* Request types */
#define MRSAS_REQ_TYPE_INTERNAL_CMD 0x0
#define MRSAS_REQ_TYPE_AEN_FETCH 0x1
#define MRSAS_REQ_TYPE_PASSTHRU 0x2
#define MRSAS_REQ_TYPE_GETSET_PARAM 0x3
#define MRSAS_REQ_TYPE_SCSI_IO 0x4
/* Request states */
#define MRSAS_REQ_STATE_FREE 0
#define MRSAS_REQ_STATE_BUSY 1
#define MRSAS_REQ_STATE_TRAN 2
#define MRSAS_REQ_STATE_COMPLETE 3
typedef enum _MR_SCSI_CMD_TYPE {
READ_WRITE_LDIO = 0,
NON_READ_WRITE_LDIO = 1,
READ_WRITE_SYSPDIO = 2,
NON_READ_WRITE_SYSPDIO = 3,
} MR_SCSI_CMD_TYPE;
enum mrsas_req_flags {
MRSAS_DIR_UNKNOWN = 0x1,
MRSAS_DIR_IN = 0x2,
MRSAS_DIR_OUT = 0x4,
MRSAS_DIR_NONE = 0x8,
};
/*
* Adapter Reset States
*/
enum {
MRSAS_HBA_OPERATIONAL = 0,
MRSAS_ADPRESET_SM_INFAULT = 1,
MRSAS_ADPRESET_SM_FW_RESET_SUCCESS = 2,
MRSAS_ADPRESET_SM_OPERATIONAL = 3,
MRSAS_HW_CRITICAL_ERROR = 4,
MRSAS_ADPRESET_INPROG_SIGN = 0xDEADDEAD,
};
/*
* MPT Command Structure
*/
struct mrsas_mpt_cmd {
MRSAS_RAID_SCSI_IO_REQUEST *io_request;
bus_addr_t io_request_phys_addr;
MPI2_SGE_IO_UNION *chain_frame;
bus_addr_t chain_frame_phys_addr;
u_int32_t sge_count;
u_int8_t *sense;
bus_addr_t sense_phys_addr;
u_int8_t retry_for_fw_reset;
MRSAS_REQUEST_DESCRIPTOR_UNION *request_desc;
u_int32_t sync_cmd_idx;
u_int32_t index;
u_int8_t flags;
u_int8_t pd_r1_lb;
u_int8_t load_balance;
bus_size_t length;
u_int32_t error_code;
bus_dmamap_t data_dmamap;
void *data;
union ccb *ccb_ptr;
struct callout cm_callout;
struct mrsas_softc *sc;
TAILQ_ENTRY(mrsas_mpt_cmd) next;
};
/*
* MFI Command Structure
*/
struct mrsas_mfi_cmd {
union mrsas_frame *frame;
bus_dmamap_t frame_dmamap;
void *frame_mem;
bus_addr_t frame_phys_addr;
u_int8_t *sense;
bus_dmamap_t sense_dmamap;
void *sense_mem;
bus_addr_t sense_phys_addr;
u_int32_t index;
u_int8_t sync_cmd;
u_int8_t cmd_status;
u_int8_t abort_aen;
u_int8_t retry_for_fw_reset;
struct mrsas_softc *sc;
union ccb *ccb_ptr;
union {
struct {
u_int16_t smid;
u_int16_t resvd;
} context;
u_int32_t frame_count;
} cmd_id;
TAILQ_ENTRY(mrsas_mfi_cmd) next;
};
/*
* define constants for device list query options
*/
enum MR_PD_QUERY_TYPE {
MR_PD_QUERY_TYPE_ALL = 0,
MR_PD_QUERY_TYPE_STATE = 1,
MR_PD_QUERY_TYPE_POWER_STATE = 2,
MR_PD_QUERY_TYPE_MEDIA_TYPE = 3,
MR_PD_QUERY_TYPE_SPEED = 4,
MR_PD_QUERY_TYPE_EXPOSED_TO_HOST = 5,
};
#define MR_EVT_CFG_CLEARED 0x0004
#define MR_EVT_LD_STATE_CHANGE 0x0051
#define MR_EVT_PD_INSERTED 0x005b
#define MR_EVT_PD_REMOVED 0x0070
#define MR_EVT_LD_CREATED 0x008a
#define MR_EVT_LD_DELETED 0x008b
#define MR_EVT_FOREIGN_CFG_IMPORTED 0x00db
#define MR_EVT_LD_OFFLINE 0x00fc
#define MR_EVT_CTRL_HOST_BUS_SCAN_REQUESTED 0x0152
enum MR_PD_STATE {
MR_PD_STATE_UNCONFIGURED_GOOD = 0x00,
MR_PD_STATE_UNCONFIGURED_BAD = 0x01,
MR_PD_STATE_HOT_SPARE = 0x02,
MR_PD_STATE_OFFLINE = 0x10,
MR_PD_STATE_FAILED = 0x11,
MR_PD_STATE_REBUILD = 0x14,
MR_PD_STATE_ONLINE = 0x18,
MR_PD_STATE_COPYBACK = 0x20,
MR_PD_STATE_SYSTEM = 0x40,
};
/*
* defines the physical drive address structure
*/
#pragma pack(1)
struct MR_PD_ADDRESS {
u_int16_t deviceId;
u_int16_t enclDeviceId;
union {
struct {
u_int8_t enclIndex;
u_int8_t slotNumber;
} mrPdAddress;
struct {
u_int8_t enclPosition;
u_int8_t enclConnectorIndex;
} mrEnclAddress;
} u1;
u_int8_t scsiDevType;
union {
u_int8_t connectedPortBitmap;
u_int8_t connectedPortNumbers;
} u2;
u_int64_t sasAddr[2];
};
#pragma pack()
/*
* defines the physical drive list structure
*/
#pragma pack(1)
struct MR_PD_LIST {
u_int32_t size;
u_int32_t count;
struct MR_PD_ADDRESS addr[1];
};
#pragma pack()
#pragma pack(1)
struct mrsas_pd_list {
u_int16_t tid;
u_int8_t driveType;
u_int8_t driveState;
};
#pragma pack()
/*
* defines the logical drive reference structure
*/
typedef union _MR_LD_REF {
struct {
u_int8_t targetId;
u_int8_t reserved;
u_int16_t seqNum;
} ld_context;
u_int32_t ref;
} MR_LD_REF;
/*
* defines the logical drive list structure
*/
#pragma pack(1)
struct MR_LD_LIST {
u_int32_t ldCount;
u_int32_t reserved;
struct {
MR_LD_REF ref;
u_int8_t state;
u_int8_t reserved[3];
u_int64_t size;
} ldList[MAX_LOGICAL_DRIVES_EXT];
};
#pragma pack()
/*
* SAS controller properties
*/
#pragma pack(1)
struct mrsas_ctrl_prop {
u_int16_t seq_num;
u_int16_t pred_fail_poll_interval;
u_int16_t intr_throttle_count;
u_int16_t intr_throttle_timeouts;
u_int8_t rebuild_rate;
u_int8_t patrol_read_rate;
u_int8_t bgi_rate;
u_int8_t cc_rate;
u_int8_t recon_rate;
u_int8_t cache_flush_interval;
u_int8_t spinup_drv_count;
u_int8_t spinup_delay;
u_int8_t cluster_enable;
u_int8_t coercion_mode;
u_int8_t alarm_enable;
u_int8_t disable_auto_rebuild;
u_int8_t disable_battery_warn;
u_int8_t ecc_bucket_size;
u_int16_t ecc_bucket_leak_rate;
u_int8_t restore_hotspare_on_insertion;
u_int8_t expose_encl_devices;
u_int8_t maintainPdFailHistory;
u_int8_t disallowHostRequestReordering;
u_int8_t abortCCOnError;
u_int8_t loadBalanceMode;
u_int8_t disableAutoDetectBackplane;
u_int8_t snapVDSpace;
/*
* Add properties that can be controlled by a bit in the following
* structure.
*/
struct {
u_int32_t copyBackDisabled:1;
u_int32_t SMARTerEnabled:1;
u_int32_t prCorrectUnconfiguredAreas:1;
u_int32_t useFdeOnly:1;
u_int32_t disableNCQ:1;
u_int32_t SSDSMARTerEnabled:1;
u_int32_t SSDPatrolReadEnabled:1;
u_int32_t enableSpinDownUnconfigured:1;
u_int32_t autoEnhancedImport:1;
u_int32_t enableSecretKeyControl:1;
u_int32_t disableOnlineCtrlReset:1;
u_int32_t allowBootWithPinnedCache:1;
u_int32_t disableSpinDownHS:1;
u_int32_t enableJBOD:1;
u_int32_t disableCacheBypass:1;
u_int32_t useDiskActivityForLocate:1;
u_int32_t enablePI:1;
u_int32_t preventPIImport:1;
u_int32_t useGlobalSparesForEmergency:1;
u_int32_t useUnconfGoodForEmergency:1;
u_int32_t useEmergencySparesforSMARTer:1;
u_int32_t forceSGPIOForQuadOnly:1;
u_int32_t enableConfigAutoBalance:1;
u_int32_t enableVirtualCache:1;
u_int32_t enableAutoLockRecovery:1;
u_int32_t disableImmediateIO:1;
u_int32_t disableT10RebuildAssist:1;
u_int32_t ignore64ldRestriction:1;
u_int32_t enableSwZone:1;
u_int32_t limitMaxRateSATA3G:1;
u_int32_t reserved:2;
} OnOffProperties;
u_int8_t autoSnapVDSpace;
u_int8_t viewSpace;
u_int16_t spinDownTime;
u_int8_t reserved[24];
};
#pragma pack()
/*
* SAS controller information
*/
struct mrsas_ctrl_info {
/*
* PCI device information
*/
struct {
u_int16_t vendor_id;
u_int16_t device_id;
u_int16_t sub_vendor_id;
u_int16_t sub_device_id;
u_int8_t reserved[24];
} __packed pci;
/*
* Host interface information
*/
struct {
u_int8_t PCIX:1;
u_int8_t PCIE:1;
u_int8_t iSCSI:1;
u_int8_t SAS_3G:1;
u_int8_t reserved_0:4;
u_int8_t reserved_1[6];
u_int8_t port_count;
u_int64_t port_addr[8];
} __packed host_interface;
/*
* Device (backend) interface information
*/
struct {
u_int8_t SPI:1;
u_int8_t SAS_3G:1;
u_int8_t SATA_1_5G:1;
u_int8_t SATA_3G:1;
u_int8_t reserved_0:4;
u_int8_t reserved_1[6];
u_int8_t port_count;
u_int64_t port_addr[8];
} __packed device_interface;
u_int32_t image_check_word;
u_int32_t image_component_count;
struct {
char name[8];
char version[32];
char build_date[16];
char built_time[16];
} __packed image_component[8];
u_int32_t pending_image_component_count;
struct {
char name[8];
char version[32];
char build_date[16];
char build_time[16];
} __packed pending_image_component[8];
u_int8_t max_arms;
u_int8_t max_spans;
u_int8_t max_arrays;
u_int8_t max_lds;
char product_name[80];
char serial_no[32];
/*
* Other physical/controller/operation information. Indicates the
* presence of the hardware
*/
struct {
u_int32_t bbu:1;
u_int32_t alarm:1;
u_int32_t nvram:1;
u_int32_t uart:1;
u_int32_t reserved:28;
} __packed hw_present;
u_int32_t current_fw_time;
/*
* Maximum data transfer sizes
*/
u_int16_t max_concurrent_cmds;
u_int16_t max_sge_count;
u_int32_t max_request_size;
/*
* Logical and physical device counts
*/
u_int16_t ld_present_count;
u_int16_t ld_degraded_count;
u_int16_t ld_offline_count;
u_int16_t pd_present_count;
u_int16_t pd_disk_present_count;
u_int16_t pd_disk_pred_failure_count;
u_int16_t pd_disk_failed_count;
/*
* Memory size information
*/
u_int16_t nvram_size;
u_int16_t memory_size;
u_int16_t flash_size;
/*
* Error counters
*/
u_int16_t mem_correctable_error_count;
u_int16_t mem_uncorrectable_error_count;
/*
* Cluster information
*/
u_int8_t cluster_permitted;
u_int8_t cluster_active;
/*
* Additional max data transfer sizes
*/
u_int16_t max_strips_per_io;
/*
* Controller capabilities structures
*/
struct {
u_int32_t raid_level_0:1;
u_int32_t raid_level_1:1;
u_int32_t raid_level_5:1;
u_int32_t raid_level_1E:1;
u_int32_t raid_level_6:1;
u_int32_t reserved:27;
} __packed raid_levels;
struct {
u_int32_t rbld_rate:1;
u_int32_t cc_rate:1;
u_int32_t bgi_rate:1;
u_int32_t recon_rate:1;
u_int32_t patrol_rate:1;
u_int32_t alarm_control:1;
u_int32_t cluster_supported:1;
u_int32_t bbu:1;
u_int32_t spanning_allowed:1;
u_int32_t dedicated_hotspares:1;
u_int32_t revertible_hotspares:1;
u_int32_t foreign_config_import:1;
u_int32_t self_diagnostic:1;
u_int32_t mixed_redundancy_arr:1;
u_int32_t global_hot_spares:1;
u_int32_t reserved:17;
} __packed adapter_operations;
struct {
u_int32_t read_policy:1;
u_int32_t write_policy:1;
u_int32_t io_policy:1;
u_int32_t access_policy:1;
u_int32_t disk_cache_policy:1;
u_int32_t reserved:27;
} __packed ld_operations;
struct {
u_int8_t min;
u_int8_t max;
u_int8_t reserved[2];
} __packed stripe_sz_ops;
struct {
u_int32_t force_online:1;
u_int32_t force_offline:1;
u_int32_t force_rebuild:1;
u_int32_t reserved:29;
} __packed pd_operations;
struct {
u_int32_t ctrl_supports_sas:1;
u_int32_t ctrl_supports_sata:1;
u_int32_t allow_mix_in_encl:1;
u_int32_t allow_mix_in_ld:1;
u_int32_t allow_sata_in_cluster:1;
u_int32_t reserved:27;
} __packed pd_mix_support;
/*
* Define ECC single-bit-error bucket information
*/
u_int8_t ecc_bucket_count;
u_int8_t reserved_2[11];
/*
* Include the controller properties (changeable items)
*/
struct mrsas_ctrl_prop properties;
/*
* Define FW pkg version (set in envt v'bles on OEM basis)
*/
char package_version[0x60];
u_int64_t deviceInterfacePortAddr2[8];
u_int8_t reserved3[128];
struct {
u_int16_t minPdRaidLevel_0:4;
u_int16_t maxPdRaidLevel_0:12;
u_int16_t minPdRaidLevel_1:4;
u_int16_t maxPdRaidLevel_1:12;
u_int16_t minPdRaidLevel_5:4;
u_int16_t maxPdRaidLevel_5:12;
u_int16_t minPdRaidLevel_1E:4;
u_int16_t maxPdRaidLevel_1E:12;
u_int16_t minPdRaidLevel_6:4;
u_int16_t maxPdRaidLevel_6:12;
u_int16_t minPdRaidLevel_10:4;
u_int16_t maxPdRaidLevel_10:12;
u_int16_t minPdRaidLevel_50:4;
u_int16_t maxPdRaidLevel_50:12;
u_int16_t minPdRaidLevel_60:4;
u_int16_t maxPdRaidLevel_60:12;
u_int16_t minPdRaidLevel_1E_RLQ0:4;
u_int16_t maxPdRaidLevel_1E_RLQ0:12;
u_int16_t minPdRaidLevel_1E0_RLQ0:4;
u_int16_t maxPdRaidLevel_1E0_RLQ0:12;
u_int16_t reserved[6];
} pdsForRaidLevels;
u_int16_t maxPds; /* 0x780 */
u_int16_t maxDedHSPs; /* 0x782 */
u_int16_t maxGlobalHSPs; /* 0x784 */
u_int16_t ddfSize; /* 0x786 */
u_int8_t maxLdsPerArray; /* 0x788 */
u_int8_t partitionsInDDF; /* 0x789 */
u_int8_t lockKeyBinding; /* 0x78a */
u_int8_t maxPITsPerLd; /* 0x78b */
u_int8_t maxViewsPerLd; /* 0x78c */
u_int8_t maxTargetId; /* 0x78d */
u_int16_t maxBvlVdSize; /* 0x78e */
u_int16_t maxConfigurableSSCSize; /* 0x790 */
u_int16_t currentSSCsize; /* 0x792 */
char expanderFwVersion[12]; /* 0x794 */
u_int16_t PFKTrialTimeRemaining;/* 0x7A0 */
u_int16_t cacheMemorySize; /* 0x7A2 */
struct { /* 0x7A4 */
u_int32_t supportPIcontroller:1;
u_int32_t supportLdPIType1:1;
u_int32_t supportLdPIType2:1;
u_int32_t supportLdPIType3:1;
u_int32_t supportLdBBMInfo:1;
u_int32_t supportShieldState:1;
u_int32_t blockSSDWriteCacheChange:1;
u_int32_t supportSuspendResumeBGops:1;
u_int32_t supportEmergencySpares:1;
u_int32_t supportSetLinkSpeed:1;
u_int32_t supportBootTimePFKChange:1;
u_int32_t supportJBOD:1;
u_int32_t disableOnlinePFKChange:1;
u_int32_t supportPerfTuning:1;
u_int32_t supportSSDPatrolRead:1;
u_int32_t realTimeScheduler:1;
u_int32_t supportResetNow:1;
u_int32_t supportEmulatedDrives:1;
u_int32_t headlessMode:1;
u_int32_t dedicatedHotSparesLimited:1;
u_int32_t supportUnevenSpans:1;
u_int32_t reserved:11;
} adapterOperations2;
u_int8_t driverVersion[32]; /* 0x7A8 */
u_int8_t maxDAPdCountSpinup60; /* 0x7C8 */
u_int8_t temperatureROC; /* 0x7C9 */
u_int8_t temperatureCtrl; /* 0x7CA */
u_int8_t reserved4; /* 0x7CB */
u_int16_t maxConfigurablePds; /* 0x7CC */
u_int8_t reserved5[2]; /* 0x7CD reserved */
struct {
u_int32_t peerIsPresent:1;
u_int32_t peerIsIncompatible:1;
u_int32_t hwIncompatible:1;
u_int32_t fwVersionMismatch:1;
u_int32_t ctrlPropIncompatible:1;
u_int32_t premiumFeatureMismatch:1;
u_int32_t reserved:26;
} cluster;
char clusterId[16]; /* 0x7D4 */
char reserved6[4]; /* 0x7E4 RESERVED FOR IOV */
struct { /* 0x7E8 */
u_int32_t supportPersonalityChange:2;
u_int32_t supportThermalPollInterval:1;
u_int32_t supportDisableImmediateIO:1;
u_int32_t supportT10RebuildAssist:1;
u_int32_t supportMaxExtLDs:1;
u_int32_t supportCrashDump:1;
u_int32_t supportSwZone:1;
u_int32_t supportDebugQueue:1;
u_int32_t supportNVCacheErase:1;
u_int32_t supportForceTo512e:1;
u_int32_t supportHOQRebuild:1;
u_int32_t supportAllowedOpsforDrvRemoval:1;
u_int32_t supportDrvActivityLEDSetting:1;
u_int32_t supportNVDRAM:1;
u_int32_t supportForceFlash:1;
u_int32_t supportDisableSESMonitoring:1;
u_int32_t supportCacheBypassModes:1;
u_int32_t supportSecurityonJBOD:1;
u_int32_t discardCacheDuringLDDelete:1;
- u_int32_t reserved:12;
+ u_int32_t supportTTYLogCompression:1;
+ u_int32_t supportCPLDUpdate:1;
+ u_int32_t supportDiskCacheSettingForSysPDs:1;
+ u_int32_t supportExtendedSSCSize:1;
+ u_int32_t useSeqNumJbodFP:1;
+ u_int32_t reserved:7;
} adapterOperations3;
u_int8_t pad[0x800 - 0x7EC]; /* 0x7EC */
} __packed;
/*
* When SCSI mid-layer calls driver's reset routine, driver waits for
* MRSAS_RESET_WAIT_TIME seconds for all outstanding IO to complete. Note
* that the driver cannot _actually_ abort or reset pending commands. While
* it is waiting for the commands to complete, it prints a diagnostic message
* every MRSAS_RESET_NOTICE_INTERVAL seconds
*/
#define MRSAS_RESET_WAIT_TIME 180
#define MRSAS_INTERNAL_CMD_WAIT_TIME 180
#define MRSAS_IOC_INIT_WAIT_TIME 60
#define MRSAS_RESET_NOTICE_INTERVAL 5
#define MRSAS_IOCTL_CMD 0
#define MRSAS_DEFAULT_CMD_TIMEOUT 90
#define MRSAS_THROTTLE_QUEUE_DEPTH 16
/*
* MSI-x regsiters offset defines
*/
#define MPI2_SUP_REPLY_POST_HOST_INDEX_OFFSET (0x0000030C)
#define MPI2_REPLY_POST_HOST_INDEX_OFFSET (0x0000006C)
#define MR_MAX_REPLY_QUEUES_OFFSET (0x0000001F)
#define MR_MAX_REPLY_QUEUES_EXT_OFFSET (0x003FC000)
#define MR_MAX_REPLY_QUEUES_EXT_OFFSET_SHIFT 14
#define MR_MAX_MSIX_REG_ARRAY 16
/*
* FW reports the maximum of number of commands that it can accept (maximum
* commands that can be outstanding) at any time. The driver must report a
* lower number to the mid layer because it can issue a few internal commands
* itself (E.g, AEN, abort cmd, IOCTLs etc). The number of commands it needs
* is shown below
*/
#define MRSAS_INT_CMDS 32
#define MRSAS_SKINNY_INT_CMDS 5
#define MRSAS_MAX_MSIX_QUEUES 128
/*
* FW can accept both 32 and 64 bit SGLs. We want to allocate 32/64 bit SGLs
* based on the size of bus_addr_t
*/
#define IS_DMA64 (sizeof(bus_addr_t) == 8)
#define MFI_XSCALE_OMR0_CHANGE_INTERRUPT 0x00000001
#define MFI_INTR_FLAG_REPLY_MESSAGE 0x00000001
#define MFI_INTR_FLAG_FIRMWARE_STATE_CHANGE 0x00000002
#define MFI_G2_OUTBOUND_DOORBELL_CHANGE_INTERRUPT 0x00000004
#define MFI_OB_INTR_STATUS_MASK 0x00000002
#define MFI_POLL_TIMEOUT_SECS 60
#define MFI_REPLY_1078_MESSAGE_INTERRUPT 0x80000000
#define MFI_REPLY_GEN2_MESSAGE_INTERRUPT 0x00000001
#define MFI_GEN2_ENABLE_INTERRUPT_MASK 0x00000001
#define MFI_REPLY_SKINNY_MESSAGE_INTERRUPT 0x40000000
#define MFI_SKINNY_ENABLE_INTERRUPT_MASK (0x00000001)
#define MFI_1068_PCSR_OFFSET 0x84
#define MFI_1068_FW_HANDSHAKE_OFFSET 0x64
#define MFI_1068_FW_READY 0xDDDD0000
typedef union _MFI_CAPABILITIES {
struct {
u_int32_t support_fp_remote_lun:1;
u_int32_t support_additional_msix:1;
u_int32_t support_fastpath_wb:1;
u_int32_t support_max_255lds:1;
u_int32_t support_ndrive_r1_lb:1;
u_int32_t support_core_affinity:1;
u_int32_t security_protocol_cmds_fw:1;
- u_int32_t reserved:25;
+ u_int32_t support_ext_queue_depth:1;
+ u_int32_t support_ext_io_size:1;
+ u_int32_t reserved:23;
} mfi_capabilities;
u_int32_t reg;
} MFI_CAPABILITIES;
#pragma pack(1)
struct mrsas_sge32 {
u_int32_t phys_addr;
u_int32_t length;
};
#pragma pack()
#pragma pack(1)
struct mrsas_sge64 {
u_int64_t phys_addr;
u_int32_t length;
};
#pragma pack()
#pragma pack()
union mrsas_sgl {
struct mrsas_sge32 sge32[1];
struct mrsas_sge64 sge64[1];
};
#pragma pack()
#pragma pack(1)
struct mrsas_header {
u_int8_t cmd; /* 00e */
u_int8_t sense_len; /* 01h */
u_int8_t cmd_status; /* 02h */
u_int8_t scsi_status; /* 03h */
u_int8_t target_id; /* 04h */
u_int8_t lun; /* 05h */
u_int8_t cdb_len; /* 06h */
u_int8_t sge_count; /* 07h */
u_int32_t context; /* 08h */
u_int32_t pad_0; /* 0Ch */
u_int16_t flags; /* 10h */
u_int16_t timeout; /* 12h */
u_int32_t data_xferlen; /* 14h */
};
#pragma pack()
#pragma pack(1)
struct mrsas_init_frame {
u_int8_t cmd; /* 00h */
u_int8_t reserved_0; /* 01h */
u_int8_t cmd_status; /* 02h */
u_int8_t reserved_1; /* 03h */
MFI_CAPABILITIES driver_operations; /* 04h */
u_int32_t context; /* 08h */
u_int32_t pad_0; /* 0Ch */
u_int16_t flags; /* 10h */
u_int16_t reserved_3; /* 12h */
u_int32_t data_xfer_len; /* 14h */
u_int32_t queue_info_new_phys_addr_lo; /* 18h */
u_int32_t queue_info_new_phys_addr_hi; /* 1Ch */
u_int32_t queue_info_old_phys_addr_lo; /* 20h */
u_int32_t queue_info_old_phys_addr_hi; /* 24h */
u_int32_t driver_ver_lo; /* 28h */
u_int32_t driver_ver_hi; /* 2Ch */
u_int32_t reserved_4[4]; /* 30h */
};
#pragma pack()
#pragma pack(1)
struct mrsas_io_frame {
u_int8_t cmd; /* 00h */
u_int8_t sense_len; /* 01h */
u_int8_t cmd_status; /* 02h */
u_int8_t scsi_status; /* 03h */
u_int8_t target_id; /* 04h */
u_int8_t access_byte; /* 05h */
u_int8_t reserved_0; /* 06h */
u_int8_t sge_count; /* 07h */
u_int32_t context; /* 08h */
u_int32_t pad_0; /* 0Ch */
u_int16_t flags; /* 10h */
u_int16_t timeout; /* 12h */
u_int32_t lba_count; /* 14h */
u_int32_t sense_buf_phys_addr_lo; /* 18h */
u_int32_t sense_buf_phys_addr_hi; /* 1Ch */
u_int32_t start_lba_lo; /* 20h */
u_int32_t start_lba_hi; /* 24h */
union mrsas_sgl sgl; /* 28h */
};
#pragma pack()
#pragma pack(1)
struct mrsas_pthru_frame {
u_int8_t cmd; /* 00h */
u_int8_t sense_len; /* 01h */
u_int8_t cmd_status; /* 02h */
u_int8_t scsi_status; /* 03h */
u_int8_t target_id; /* 04h */
u_int8_t lun; /* 05h */
u_int8_t cdb_len; /* 06h */
u_int8_t sge_count; /* 07h */
u_int32_t context; /* 08h */
u_int32_t pad_0; /* 0Ch */
u_int16_t flags; /* 10h */
u_int16_t timeout; /* 12h */
u_int32_t data_xfer_len; /* 14h */
u_int32_t sense_buf_phys_addr_lo; /* 18h */
u_int32_t sense_buf_phys_addr_hi; /* 1Ch */
u_int8_t cdb[16]; /* 20h */
union mrsas_sgl sgl; /* 30h */
};
#pragma pack()
#pragma pack(1)
struct mrsas_dcmd_frame {
u_int8_t cmd; /* 00h */
u_int8_t reserved_0; /* 01h */
u_int8_t cmd_status; /* 02h */
u_int8_t reserved_1[4]; /* 03h */
u_int8_t sge_count; /* 07h */
u_int32_t context; /* 08h */
u_int32_t pad_0; /* 0Ch */
u_int16_t flags; /* 10h */
u_int16_t timeout; /* 12h */
u_int32_t data_xfer_len; /* 14h */
u_int32_t opcode; /* 18h */
union { /* 1Ch */
u_int8_t b[12];
u_int16_t s[6];
u_int32_t w[3];
} mbox;
union mrsas_sgl sgl; /* 28h */
};
#pragma pack()
#pragma pack(1)
struct mrsas_abort_frame {
u_int8_t cmd; /* 00h */
u_int8_t reserved_0; /* 01h */
u_int8_t cmd_status; /* 02h */
u_int8_t reserved_1; /* 03h */
MFI_CAPABILITIES driver_operations; /* 04h */
u_int32_t context; /* 08h */
u_int32_t pad_0; /* 0Ch */
u_int16_t flags; /* 10h */
u_int16_t reserved_3; /* 12h */
u_int32_t reserved_4; /* 14h */
u_int32_t abort_context; /* 18h */
u_int32_t pad_1; /* 1Ch */
u_int32_t abort_mfi_phys_addr_lo; /* 20h */
u_int32_t abort_mfi_phys_addr_hi; /* 24h */
u_int32_t reserved_5[6]; /* 28h */
};
#pragma pack()
#pragma pack(1)
struct mrsas_smp_frame {
u_int8_t cmd; /* 00h */
u_int8_t reserved_1; /* 01h */
u_int8_t cmd_status; /* 02h */
u_int8_t connection_status; /* 03h */
u_int8_t reserved_2[3]; /* 04h */
u_int8_t sge_count; /* 07h */
u_int32_t context; /* 08h */
u_int32_t pad_0; /* 0Ch */
u_int16_t flags; /* 10h */
u_int16_t timeout; /* 12h */
u_int32_t data_xfer_len; /* 14h */
u_int64_t sas_addr; /* 18h */
union {
struct mrsas_sge32 sge32[2]; /* [0]: resp [1]: req */
struct mrsas_sge64 sge64[2]; /* [0]: resp [1]: req */
} sgl;
};
#pragma pack()
#pragma pack(1)
struct mrsas_stp_frame {
u_int8_t cmd; /* 00h */
u_int8_t reserved_1; /* 01h */
u_int8_t cmd_status; /* 02h */
u_int8_t reserved_2; /* 03h */
u_int8_t target_id; /* 04h */
u_int8_t reserved_3[2]; /* 05h */
u_int8_t sge_count; /* 07h */
u_int32_t context; /* 08h */
u_int32_t pad_0; /* 0Ch */
u_int16_t flags; /* 10h */
u_int16_t timeout; /* 12h */
u_int32_t data_xfer_len; /* 14h */
u_int16_t fis[10]; /* 18h */
u_int32_t stp_flags;
union {
struct mrsas_sge32 sge32[2]; /* [0]: resp [1]: data */
struct mrsas_sge64 sge64[2]; /* [0]: resp [1]: data */
} sgl;
};
#pragma pack()
union mrsas_frame {
struct mrsas_header hdr;
struct mrsas_init_frame init;
struct mrsas_io_frame io;
struct mrsas_pthru_frame pthru;
struct mrsas_dcmd_frame dcmd;
struct mrsas_abort_frame abort;
struct mrsas_smp_frame smp;
struct mrsas_stp_frame stp;
u_int8_t raw_bytes[64];
};
#pragma pack(1)
union mrsas_evt_class_locale {
struct {
u_int16_t locale;
u_int8_t reserved;
int8_t class;
} __packed members;
u_int32_t word;
} __packed;
#pragma pack()
#pragma pack(1)
struct mrsas_evt_log_info {
u_int32_t newest_seq_num;
u_int32_t oldest_seq_num;
u_int32_t clear_seq_num;
u_int32_t shutdown_seq_num;
u_int32_t boot_seq_num;
} __packed;
#pragma pack()
struct mrsas_progress {
u_int16_t progress;
u_int16_t elapsed_seconds;
} __packed;
struct mrsas_evtarg_ld {
u_int16_t target_id;
u_int8_t ld_index;
u_int8_t reserved;
} __packed;
struct mrsas_evtarg_pd {
u_int16_t device_id;
u_int8_t encl_index;
u_int8_t slot_number;
} __packed;
struct mrsas_evt_detail {
u_int32_t seq_num;
u_int32_t time_stamp;
u_int32_t code;
union mrsas_evt_class_locale cl;
u_int8_t arg_type;
u_int8_t reserved1[15];
union {
struct {
struct mrsas_evtarg_pd pd;
u_int8_t cdb_length;
u_int8_t sense_length;
u_int8_t reserved[2];
u_int8_t cdb[16];
u_int8_t sense[64];
} __packed cdbSense;
struct mrsas_evtarg_ld ld;
struct {
struct mrsas_evtarg_ld ld;
u_int64_t count;
} __packed ld_count;
struct {
u_int64_t lba;
struct mrsas_evtarg_ld ld;
} __packed ld_lba;
struct {
struct mrsas_evtarg_ld ld;
u_int32_t prevOwner;
u_int32_t newOwner;
} __packed ld_owner;
struct {
u_int64_t ld_lba;
u_int64_t pd_lba;
struct mrsas_evtarg_ld ld;
struct mrsas_evtarg_pd pd;
} __packed ld_lba_pd_lba;
struct {
struct mrsas_evtarg_ld ld;
struct mrsas_progress prog;
} __packed ld_prog;
struct {
struct mrsas_evtarg_ld ld;
u_int32_t prev_state;
u_int32_t new_state;
} __packed ld_state;
struct {
u_int64_t strip;
struct mrsas_evtarg_ld ld;
} __packed ld_strip;
struct mrsas_evtarg_pd pd;
struct {
struct mrsas_evtarg_pd pd;
u_int32_t err;
} __packed pd_err;
struct {
u_int64_t lba;
struct mrsas_evtarg_pd pd;
} __packed pd_lba;
struct {
u_int64_t lba;
struct mrsas_evtarg_pd pd;
struct mrsas_evtarg_ld ld;
} __packed pd_lba_ld;
struct {
struct mrsas_evtarg_pd pd;
struct mrsas_progress prog;
} __packed pd_prog;
struct {
struct mrsas_evtarg_pd pd;
u_int32_t prevState;
u_int32_t newState;
} __packed pd_state;
struct {
u_int16_t vendorId;
u_int16_t deviceId;
u_int16_t subVendorId;
u_int16_t subDeviceId;
} __packed pci;
u_int32_t rate;
char str[96];
struct {
u_int32_t rtc;
u_int32_t elapsedSeconds;
} __packed time;
struct {
u_int32_t ecar;
u_int32_t elog;
char str[64];
} __packed ecc;
u_int8_t b[96];
u_int16_t s[48];
u_int32_t w[24];
u_int64_t d[12];
} args;
char description[128];
} __packed;
struct mrsas_irq_context {
struct mrsas_softc *sc;
uint32_t MSIxIndex;
};
+enum MEGASAS_OCR_REASON {
+ FW_FAULT_OCR = 0,
+ SCSIIO_TIMEOUT_OCR = 1,
+ MFI_DCMD_TIMEOUT_OCR = 2,
+};
+
/* Controller management info added to support Linux Emulator */
#define MAX_MGMT_ADAPTERS 1024
struct mrsas_mgmt_info {
u_int16_t count;
struct mrsas_softc *sc_ptr[MAX_MGMT_ADAPTERS];
int max_index;
};
#define PCI_TYPE0_ADDRESSES 6
#define PCI_TYPE1_ADDRESSES 2
#define PCI_TYPE2_ADDRESSES 5
typedef struct _MRSAS_DRV_PCI_COMMON_HEADER {
u_int16_t vendorID;
//(ro)
u_int16_t deviceID;
//(ro)
u_int16_t command;
//Device control
u_int16_t status;
u_int8_t revisionID;
//(ro)
u_int8_t progIf;
//(ro)
u_int8_t subClass;
//(ro)
u_int8_t baseClass;
//(ro)
u_int8_t cacheLineSize;
//(ro +)
u_int8_t latencyTimer;
//(ro +)
u_int8_t headerType;
//(ro)
u_int8_t bist;
//Built in self test
union {
struct _MRSAS_DRV_PCI_HEADER_TYPE_0 {
u_int32_t baseAddresses[PCI_TYPE0_ADDRESSES];
u_int32_t cis;
u_int16_t subVendorID;
u_int16_t subSystemID;
u_int32_t romBaseAddress;
u_int8_t capabilitiesPtr;
u_int8_t reserved1[3];
u_int32_t reserved2;
u_int8_t interruptLine;
u_int8_t interruptPin;
//(ro)
u_int8_t minimumGrant;
//(ro)
u_int8_t maximumLatency;
//(ro)
} type0;
/*
* PCI to PCI Bridge
*/
struct _MRSAS_DRV_PCI_HEADER_TYPE_1 {
u_int32_t baseAddresses[PCI_TYPE1_ADDRESSES];
u_int8_t primaryBus;
u_int8_t secondaryBus;
u_int8_t subordinateBus;
u_int8_t secondaryLatency;
u_int8_t ioBase;
u_int8_t ioLimit;
u_int16_t secondaryStatus;
u_int16_t memoryBase;
u_int16_t memoryLimit;
u_int16_t prefetchBase;
u_int16_t prefetchLimit;
u_int32_t prefetchBaseUpper32;
u_int32_t prefetchLimitUpper32;
u_int16_t ioBaseUpper16;
u_int16_t ioLimitUpper16;
u_int8_t capabilitiesPtr;
u_int8_t reserved1[3];
u_int32_t romBaseAddress;
u_int8_t interruptLine;
u_int8_t interruptPin;
u_int16_t bridgeControl;
} type1;
/*
* PCI to CARDBUS Bridge
*/
struct _MRSAS_DRV_PCI_HEADER_TYPE_2 {
u_int32_t socketRegistersBaseAddress;
u_int8_t capabilitiesPtr;
u_int8_t reserved;
u_int16_t secondaryStatus;
u_int8_t primaryBus;
u_int8_t secondaryBus;
u_int8_t subordinateBus;
u_int8_t secondaryLatency;
struct {
u_int32_t base;
u_int32_t limit;
} range [PCI_TYPE2_ADDRESSES - 1];
u_int8_t interruptLine;
u_int8_t interruptPin;
u_int16_t bridgeControl;
} type2;
} u;
} MRSAS_DRV_PCI_COMMON_HEADER, *PMRSAS_DRV_PCI_COMMON_HEADER;
#define MRSAS_DRV_PCI_COMMON_HEADER_SIZE sizeof(MRSAS_DRV_PCI_COMMON_HEADER) //64 bytes
typedef struct _MRSAS_DRV_PCI_LINK_CAPABILITY {
union {
struct {
u_int32_t linkSpeed:4;
u_int32_t linkWidth:6;
u_int32_t aspmSupport:2;
u_int32_t losExitLatency:3;
u_int32_t l1ExitLatency:3;
u_int32_t rsvdp:6;
u_int32_t portNumber:8;
} bits;
u_int32_t asUlong;
} u;
} MRSAS_DRV_PCI_LINK_CAPABILITY, *PMRSAS_DRV_PCI_LINK_CAPABILITY;
#define MRSAS_DRV_PCI_LINK_CAPABILITY_SIZE sizeof(MRSAS_DRV_PCI_LINK_CAPABILITY)
typedef struct _MRSAS_DRV_PCI_LINK_STATUS_CAPABILITY {
union {
struct {
u_int16_t linkSpeed:4;
u_int16_t negotiatedLinkWidth:6;
u_int16_t linkTrainingError:1;
u_int16_t linkTraning:1;
u_int16_t slotClockConfig:1;
u_int16_t rsvdZ:3;
} bits;
u_int16_t asUshort;
} u;
u_int16_t reserved;
} MRSAS_DRV_PCI_LINK_STATUS_CAPABILITY, *PMRSAS_DRV_PCI_LINK_STATUS_CAPABILITY;
#define MRSAS_DRV_PCI_LINK_STATUS_CAPABILITY_SIZE sizeof(MRSAS_DRV_PCI_LINK_STATUS_CAPABILITY)
typedef struct _MRSAS_DRV_PCI_CAPABILITIES {
MRSAS_DRV_PCI_LINK_CAPABILITY linkCapability;
MRSAS_DRV_PCI_LINK_STATUS_CAPABILITY linkStatusCapability;
} MRSAS_DRV_PCI_CAPABILITIES, *PMRSAS_DRV_PCI_CAPABILITIES;
#define MRSAS_DRV_PCI_CAPABILITIES_SIZE sizeof(MRSAS_DRV_PCI_CAPABILITIES)
/* PCI information */
typedef struct _MRSAS_DRV_PCI_INFORMATION {
u_int32_t busNumber;
u_int8_t deviceNumber;
u_int8_t functionNumber;
u_int8_t interruptVector;
u_int8_t reserved1;
MRSAS_DRV_PCI_COMMON_HEADER pciHeaderInfo;
MRSAS_DRV_PCI_CAPABILITIES capability;
u_int32_t domainID;
u_int8_t reserved2[28];
} MRSAS_DRV_PCI_INFORMATION, *PMRSAS_DRV_PCI_INFORMATION;
/*******************************************************************
* per-instance data
********************************************************************/
struct mrsas_softc {
device_t mrsas_dev;
struct cdev *mrsas_cdev;
+ struct intr_config_hook mrsas_ich;
+ struct cdev *mrsas_linux_emulator_cdev;
uint16_t device_id;
struct resource *reg_res;
int reg_res_id;
bus_space_tag_t bus_tag;
bus_space_handle_t bus_handle;
bus_dma_tag_t mrsas_parent_tag;
bus_dma_tag_t verbuf_tag;
bus_dmamap_t verbuf_dmamap;
void *verbuf_mem;
bus_addr_t verbuf_phys_addr;
bus_dma_tag_t sense_tag;
bus_dmamap_t sense_dmamap;
void *sense_mem;
bus_addr_t sense_phys_addr;
bus_dma_tag_t io_request_tag;
bus_dmamap_t io_request_dmamap;
void *io_request_mem;
bus_addr_t io_request_phys_addr;
bus_dma_tag_t chain_frame_tag;
bus_dmamap_t chain_frame_dmamap;
void *chain_frame_mem;
bus_addr_t chain_frame_phys_addr;
bus_dma_tag_t reply_desc_tag;
bus_dmamap_t reply_desc_dmamap;
void *reply_desc_mem;
bus_addr_t reply_desc_phys_addr;
bus_dma_tag_t ioc_init_tag;
bus_dmamap_t ioc_init_dmamap;
void *ioc_init_mem;
bus_addr_t ioc_init_phys_mem;
bus_dma_tag_t data_tag;
struct cam_sim *sim_0;
struct cam_sim *sim_1;
struct cam_path *path_0;
struct cam_path *path_1;
struct mtx sim_lock;
struct mtx pci_lock;
struct mtx io_lock;
struct mtx ioctl_lock;
struct mtx mpt_cmd_pool_lock;
struct mtx mfi_cmd_pool_lock;
struct mtx raidmap_lock;
struct mtx aen_lock;
struct selinfo mrsas_select;
uint32_t mrsas_aen_triggered;
uint32_t mrsas_poll_waiting;
struct sema ioctl_count_sema;
uint32_t max_fw_cmds;
uint32_t max_num_sge;
struct resource *mrsas_irq[MAX_MSIX_COUNT];
void *intr_handle[MAX_MSIX_COUNT];
int irq_id[MAX_MSIX_COUNT];
struct mrsas_irq_context irq_context[MAX_MSIX_COUNT];
int msix_vectors;
int msix_enable;
uint32_t msix_reg_offset[16];
uint8_t mask_interrupts;
+ uint16_t max_chain_frame_sz;
struct mrsas_mpt_cmd **mpt_cmd_list;
struct mrsas_mfi_cmd **mfi_cmd_list;
TAILQ_HEAD(, mrsas_mpt_cmd) mrsas_mpt_cmd_list_head;
TAILQ_HEAD(, mrsas_mfi_cmd) mrsas_mfi_cmd_list_head;
bus_addr_t req_frames_desc_phys;
u_int8_t *req_frames_desc;
u_int8_t *req_desc;
bus_addr_t io_request_frames_phys;
u_int8_t *io_request_frames;
bus_addr_t reply_frames_desc_phys;
u_int16_t last_reply_idx[MAX_MSIX_COUNT];
u_int32_t reply_q_depth;
u_int32_t request_alloc_sz;
u_int32_t reply_alloc_sz;
u_int32_t io_frames_alloc_sz;
u_int32_t chain_frames_alloc_sz;
u_int16_t max_sge_in_main_msg;
u_int16_t max_sge_in_chain;
u_int8_t chain_offset_io_request;
u_int8_t chain_offset_mfi_pthru;
u_int32_t map_sz;
u_int64_t map_id;
+ u_int64_t pd_seq_map_id;
struct mrsas_mfi_cmd *map_update_cmd;
+ struct mrsas_mfi_cmd *jbod_seq_cmd;
struct mrsas_mfi_cmd *aen_cmd;
u_int8_t fast_path_io;
void *chan;
void *ocr_chan;
u_int8_t adprecovery;
u_int8_t remove_in_progress;
u_int8_t ocr_thread_active;
u_int8_t do_timedout_reset;
u_int32_t reset_in_progress;
u_int32_t reset_count;
+
+ bus_dma_tag_t jbodmap_tag[2];
+ bus_dmamap_t jbodmap_dmamap[2];
+ void *jbodmap_mem[2];
+ bus_addr_t jbodmap_phys_addr[2];
+
bus_dma_tag_t raidmap_tag[2];
bus_dmamap_t raidmap_dmamap[2];
void *raidmap_mem[2];
bus_addr_t raidmap_phys_addr[2];
bus_dma_tag_t mficmd_frame_tag;
bus_dma_tag_t mficmd_sense_tag;
bus_dma_tag_t evt_detail_tag;
bus_dmamap_t evt_detail_dmamap;
struct mrsas_evt_detail *evt_detail_mem;
bus_addr_t evt_detail_phys_addr;
struct mrsas_ctrl_info *ctrl_info;
bus_dma_tag_t ctlr_info_tag;
bus_dmamap_t ctlr_info_dmamap;
void *ctlr_info_mem;
bus_addr_t ctlr_info_phys_addr;
u_int32_t max_sectors_per_req;
u_int32_t disableOnlineCtrlReset;
mrsas_atomic_t fw_outstanding;
u_int32_t mrsas_debug;
u_int32_t mrsas_io_timeout;
u_int32_t mrsas_fw_fault_check_delay;
u_int32_t io_cmds_highwater;
u_int8_t UnevenSpanSupport;
struct sysctl_ctx_list sysctl_ctx;
struct sysctl_oid *sysctl_tree;
struct proc *ocr_thread;
u_int32_t last_seq_num;
bus_dma_tag_t el_info_tag;
bus_dmamap_t el_info_dmamap;
void *el_info_mem;
bus_addr_t el_info_phys_addr;
struct mrsas_pd_list pd_list[MRSAS_MAX_PD];
struct mrsas_pd_list local_pd_list[MRSAS_MAX_PD];
u_int8_t ld_ids[MRSAS_MAX_LD_IDS];
struct taskqueue *ev_tq;
struct task ev_task;
u_int32_t CurLdCount;
u_int64_t reset_flags;
int lb_pending_cmds;
LD_LOAD_BALANCE_INFO load_balance_info[MAX_LOGICAL_DRIVES_EXT];
LD_SPAN_INFO log_to_span[MAX_LOGICAL_DRIVES_EXT];
u_int8_t secure_jbod_support;
+ u_int8_t use_seqnum_jbod_fp;
u_int8_t max256vdSupport;
u_int16_t fw_supported_vd_count;
u_int16_t fw_supported_pd_count;
u_int16_t drv_supported_vd_count;
u_int16_t drv_supported_pd_count;
u_int32_t max_map_sz;
u_int32_t current_map_sz;
u_int32_t old_map_sz;
u_int32_t new_map_sz;
u_int32_t drv_map_sz;
/* Non dma-able memory. Driver local copy. */
MR_DRV_RAID_MAP_ALL *ld_drv_map[2];
};
/* Compatibility shims for different OS versions */
#if __FreeBSD_version >= 800001
#define mrsas_kproc_create(func, farg, proc_ptr, flags, stackpgs, fmtstr, arg) \
kproc_create(func, farg, proc_ptr, flags, stackpgs, fmtstr, arg)
#define mrsas_kproc_exit(arg) kproc_exit(arg)
#else
#define mrsas_kproc_create(func, farg, proc_ptr, flags, stackpgs, fmtstr, arg) \
kthread_create(func, farg, proc_ptr, flags, stackpgs, fmtstr, arg)
#define mrsas_kproc_exit(arg) kthread_exit(arg)
#endif
static __inline void
mrsas_clear_bit(int b, volatile void *p)
{
atomic_clear_int(((volatile int *)p) + (b >> 5), 1 << (b & 0x1f));
}
static __inline void
mrsas_set_bit(int b, volatile void *p)
{
atomic_set_int(((volatile int *)p) + (b >> 5), 1 << (b & 0x1f));
}
static __inline int
mrsas_test_bit(int b, volatile void *p)
{
return ((volatile int *)p)[b >> 5] & (1 << (b & 0x1f));
}
#endif /* MRSAS_H */
Index: user/ngie/bsnmp_cleanup/sys/dev/mrsas/mrsas_cam.c
===================================================================
--- user/ngie/bsnmp_cleanup/sys/dev/mrsas/mrsas_cam.c (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/dev/mrsas/mrsas_cam.c (revision 299697)
@@ -1,1247 +1,1385 @@
/*
* Copyright (c) 2015, AVAGO Tech. All rights reserved. Author: Marian Choy
* Copyright (c) 2014, LSI Corp. All rights reserved. Author: Marian Choy
* Support: freebsdraid@avagotech.com
*
* 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. 3. Neither the name of the
* <ORGANIZATION> nor the names of its contributors may be used to endorse or
* promote products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
#include "dev/mrsas/mrsas.h"
#include <cam/cam.h>
#include <cam/cam_ccb.h>
#include <cam/cam_sim.h>
#include <cam/cam_xpt_sim.h>
#include <cam/cam_debug.h>
#include <cam/cam_periph.h>
#include <cam/cam_xpt_periph.h>
#include <cam/scsi/scsi_all.h>
#include <cam/scsi/scsi_message.h>
#include <sys/taskqueue.h>
#include <sys/kernel.h>
#include <sys/time.h> /* XXX for pcpu.h */
#include <sys/pcpu.h> /* XXX for PCPU_GET */
#define smp_processor_id() PCPU_GET(cpuid)
/*
* Function prototypes
*/
int mrsas_cam_attach(struct mrsas_softc *sc);
int mrsas_find_io_type(struct cam_sim *sim, union ccb *ccb);
int mrsas_bus_scan(struct mrsas_softc *sc);
int mrsas_bus_scan_sim(struct mrsas_softc *sc, struct cam_sim *sim);
int
mrsas_map_request(struct mrsas_softc *sc,
struct mrsas_mpt_cmd *cmd, union ccb *ccb);
int
-mrsas_build_ldio(struct mrsas_softc *sc, struct mrsas_mpt_cmd *cmd,
+mrsas_build_ldio_rw(struct mrsas_softc *sc, struct mrsas_mpt_cmd *cmd,
union ccb *ccb);
int
-mrsas_build_dcdb(struct mrsas_softc *sc, struct mrsas_mpt_cmd *cmd,
- union ccb *ccb, struct cam_sim *sim);
+mrsas_build_ldio_nonrw(struct mrsas_softc *sc, struct mrsas_mpt_cmd *cmd,
+ union ccb *ccb);
int
+mrsas_build_syspdio(struct mrsas_softc *sc, struct mrsas_mpt_cmd *cmd,
+ union ccb *ccb, struct cam_sim *sim, u_int8_t fp_possible);
+int
mrsas_setup_io(struct mrsas_softc *sc, struct mrsas_mpt_cmd *cmd,
union ccb *ccb, u_int32_t device_id,
MRSAS_RAID_SCSI_IO_REQUEST * io_request);
void mrsas_xpt_freeze(struct mrsas_softc *sc);
void mrsas_xpt_release(struct mrsas_softc *sc);
void mrsas_cam_detach(struct mrsas_softc *sc);
void mrsas_release_mpt_cmd(struct mrsas_mpt_cmd *cmd);
void mrsas_unmap_request(struct mrsas_softc *sc, struct mrsas_mpt_cmd *cmd);
void mrsas_cmd_done(struct mrsas_softc *sc, struct mrsas_mpt_cmd *cmd);
void
mrsas_fire_cmd(struct mrsas_softc *sc, u_int32_t req_desc_lo,
u_int32_t req_desc_hi);
void
mrsas_set_pd_lba(MRSAS_RAID_SCSI_IO_REQUEST * io_request,
u_int8_t cdb_len, struct IO_REQUEST_INFO *io_info, union ccb *ccb,
MR_DRV_RAID_MAP_ALL * local_map_ptr, u_int32_t ref_tag,
u_int32_t ld_block_size);
static void mrsas_freeze_simq(struct mrsas_mpt_cmd *cmd, struct cam_sim *sim);
static void mrsas_cam_poll(struct cam_sim *sim);
static void mrsas_action(struct cam_sim *sim, union ccb *ccb);
static void mrsas_scsiio_timeout(void *data);
static void
mrsas_data_load_cb(void *arg, bus_dma_segment_t *segs,
int nseg, int error);
static int32_t
mrsas_startio(struct mrsas_softc *sc, struct cam_sim *sim,
union ccb *ccb);
struct mrsas_mpt_cmd *mrsas_get_mpt_cmd(struct mrsas_softc *sc);
MRSAS_REQUEST_DESCRIPTOR_UNION *
mrsas_get_request_desc(struct mrsas_softc *sc, u_int16_t index);
extern u_int16_t MR_TargetIdToLdGet(u_int32_t ldTgtId, MR_DRV_RAID_MAP_ALL * map);
extern u_int32_t
MR_LdBlockSizeGet(u_int32_t ldTgtId, MR_DRV_RAID_MAP_ALL * map,
struct mrsas_softc *sc);
extern void mrsas_isr(void *arg);
extern void mrsas_aen_handler(struct mrsas_softc *sc);
extern u_int8_t
MR_BuildRaidContext(struct mrsas_softc *sc,
struct IO_REQUEST_INFO *io_info, RAID_CONTEXT * pRAID_Context,
MR_DRV_RAID_MAP_ALL * map);
extern u_int16_t
MR_LdSpanArrayGet(u_int32_t ld, u_int32_t span,
MR_DRV_RAID_MAP_ALL * map);
extern u_int16_t
mrsas_get_updated_dev_handle(struct mrsas_softc *sc,
PLD_LOAD_BALANCE_INFO lbInfo, struct IO_REQUEST_INFO *io_info);
extern u_int8_t
megasas_get_best_arm(PLD_LOAD_BALANCE_INFO lbInfo, u_int8_t arm,
u_int64_t block, u_int32_t count);
+extern int mrsas_complete_cmd(struct mrsas_softc *sc, u_int32_t MSIxIndex);
/*
* mrsas_cam_attach: Main entry to CAM subsystem
* input: Adapter instance soft state
*
* This function is called from mrsas_attach() during initialization to perform
* SIM allocations and XPT bus registration. If the kernel version is 7.4 or
* earlier, it would also initiate a bus scan.
*/
int
mrsas_cam_attach(struct mrsas_softc *sc)
{
struct cam_devq *devq;
int mrsas_cam_depth;
mrsas_cam_depth = sc->max_fw_cmds - MRSAS_INTERNAL_CMDS;
if ((devq = cam_simq_alloc(mrsas_cam_depth)) == NULL) {
device_printf(sc->mrsas_dev, "Cannot allocate SIM queue\n");
return (ENOMEM);
}
/*
* Create SIM for bus 0 and register, also create path
*/
sc->sim_0 = cam_sim_alloc(mrsas_action, mrsas_cam_poll, "mrsas", sc,
device_get_unit(sc->mrsas_dev), &sc->sim_lock, mrsas_cam_depth,
mrsas_cam_depth, devq);
if (sc->sim_0 == NULL) {
cam_simq_free(devq);
device_printf(sc->mrsas_dev, "Cannot register SIM\n");
return (ENXIO);
}
/* Initialize taskqueue for Event Handling */
TASK_INIT(&sc->ev_task, 0, (void *)mrsas_aen_handler, sc);
sc->ev_tq = taskqueue_create("mrsas_taskq", M_NOWAIT | M_ZERO,
taskqueue_thread_enqueue, &sc->ev_tq);
/* Run the task queue with lowest priority */
taskqueue_start_threads(&sc->ev_tq, 1, 255, "%s taskq",
device_get_nameunit(sc->mrsas_dev));
mtx_lock(&sc->sim_lock);
if (xpt_bus_register(sc->sim_0, sc->mrsas_dev, 0) != CAM_SUCCESS) {
cam_sim_free(sc->sim_0, TRUE); /* passing true frees the devq */
mtx_unlock(&sc->sim_lock);
return (ENXIO);
}
if (xpt_create_path(&sc->path_0, NULL, cam_sim_path(sc->sim_0),
CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD) != CAM_REQ_CMP) {
xpt_bus_deregister(cam_sim_path(sc->sim_0));
cam_sim_free(sc->sim_0, TRUE); /* passing true will free the
* devq */
mtx_unlock(&sc->sim_lock);
return (ENXIO);
}
mtx_unlock(&sc->sim_lock);
/*
* Create SIM for bus 1 and register, also create path
*/
sc->sim_1 = cam_sim_alloc(mrsas_action, mrsas_cam_poll, "mrsas", sc,
device_get_unit(sc->mrsas_dev), &sc->sim_lock, mrsas_cam_depth,
mrsas_cam_depth, devq);
if (sc->sim_1 == NULL) {
cam_simq_free(devq);
device_printf(sc->mrsas_dev, "Cannot register SIM\n");
return (ENXIO);
}
mtx_lock(&sc->sim_lock);
if (xpt_bus_register(sc->sim_1, sc->mrsas_dev, 1) != CAM_SUCCESS) {
cam_sim_free(sc->sim_1, TRUE); /* passing true frees the devq */
mtx_unlock(&sc->sim_lock);
return (ENXIO);
}
if (xpt_create_path(&sc->path_1, NULL, cam_sim_path(sc->sim_1),
CAM_TARGET_WILDCARD,
CAM_LUN_WILDCARD) != CAM_REQ_CMP) {
xpt_bus_deregister(cam_sim_path(sc->sim_1));
cam_sim_free(sc->sim_1, TRUE);
mtx_unlock(&sc->sim_lock);
return (ENXIO);
}
mtx_unlock(&sc->sim_lock);
#if (__FreeBSD_version <= 704000)
if (mrsas_bus_scan(sc)) {
device_printf(sc->mrsas_dev, "Error in bus scan.\n");
return (1);
}
#endif
return (0);
}
/*
* mrsas_cam_detach: De-allocates and teardown CAM
* input: Adapter instance soft state
*
* De-registers and frees the paths and SIMs.
*/
void
mrsas_cam_detach(struct mrsas_softc *sc)
{
if (sc->ev_tq != NULL)
taskqueue_free(sc->ev_tq);
mtx_lock(&sc->sim_lock);
if (sc->path_0)
xpt_free_path(sc->path_0);
if (sc->sim_0) {
xpt_bus_deregister(cam_sim_path(sc->sim_0));
cam_sim_free(sc->sim_0, FALSE);
}
if (sc->path_1)
xpt_free_path(sc->path_1);
if (sc->sim_1) {
xpt_bus_deregister(cam_sim_path(sc->sim_1));
cam_sim_free(sc->sim_1, TRUE);
}
mtx_unlock(&sc->sim_lock);
}
/*
* mrsas_action: SIM callback entry point
* input: pointer to SIM pointer to CAM Control Block
*
* This function processes CAM subsystem requests. The type of request is stored
* in ccb->ccb_h.func_code. The preprocessor #ifdef is necessary because
* ccb->cpi.maxio is not supported for FreeBSD version 7.4 or earlier.
*/
static void
mrsas_action(struct cam_sim *sim, union ccb *ccb)
{
struct mrsas_softc *sc = (struct mrsas_softc *)cam_sim_softc(sim);
struct ccb_hdr *ccb_h = &(ccb->ccb_h);
u_int32_t device_id;
switch (ccb->ccb_h.func_code) {
case XPT_SCSI_IO:
{
device_id = ccb_h->target_id;
/*
* bus 0 is LD, bus 1 is for system-PD
*/
if (cam_sim_bus(sim) == 1 &&
sc->pd_list[device_id].driveState != MR_PD_STATE_SYSTEM) {
ccb->ccb_h.status |= CAM_DEV_NOT_THERE;
xpt_done(ccb);
} else {
if (mrsas_startio(sc, sim, ccb)) {
ccb->ccb_h.status |= CAM_REQ_INVALID;
xpt_done(ccb);
}
}
break;
}
case XPT_ABORT:
{
ccb->ccb_h.status = CAM_UA_ABORT;
xpt_done(ccb);
break;
}
case XPT_RESET_BUS:
{
xpt_done(ccb);
break;
}
case XPT_GET_TRAN_SETTINGS:
{
ccb->cts.protocol = PROTO_SCSI;
ccb->cts.protocol_version = SCSI_REV_2;
ccb->cts.transport = XPORT_SPI;
ccb->cts.transport_version = 2;
ccb->cts.xport_specific.spi.valid = CTS_SPI_VALID_DISC;
ccb->cts.xport_specific.spi.flags = CTS_SPI_FLAGS_DISC_ENB;
ccb->cts.proto_specific.scsi.valid = CTS_SCSI_VALID_TQ;
ccb->cts.proto_specific.scsi.flags = CTS_SCSI_FLAGS_TAG_ENB;
ccb->ccb_h.status = CAM_REQ_CMP;
xpt_done(ccb);
break;
}
case XPT_SET_TRAN_SETTINGS:
{
ccb->ccb_h.status = CAM_FUNC_NOTAVAIL;
xpt_done(ccb);
break;
}
case XPT_CALC_GEOMETRY:
{
cam_calc_geometry(&ccb->ccg, 1);
xpt_done(ccb);
break;
}
case XPT_PATH_INQ:
{
ccb->cpi.version_num = 1;
ccb->cpi.hba_inquiry = 0;
ccb->cpi.target_sprt = 0;
#if (__FreeBSD_version >= 902001)
ccb->cpi.hba_misc = PIM_UNMAPPED;
#else
ccb->cpi.hba_misc = 0;
#endif
ccb->cpi.hba_eng_cnt = 0;
ccb->cpi.max_lun = MRSAS_SCSI_MAX_LUNS;
ccb->cpi.unit_number = cam_sim_unit(sim);
ccb->cpi.bus_id = cam_sim_bus(sim);
ccb->cpi.initiator_id = MRSAS_SCSI_INITIATOR_ID;
ccb->cpi.base_transfer_speed = 150000;
strncpy(ccb->cpi.sim_vid, "FreeBSD", SIM_IDLEN);
strncpy(ccb->cpi.hba_vid, "AVAGO", HBA_IDLEN);
strncpy(ccb->cpi.dev_name, cam_sim_name(sim), DEV_IDLEN);
ccb->cpi.transport = XPORT_SPI;
ccb->cpi.transport_version = 2;
ccb->cpi.protocol = PROTO_SCSI;
ccb->cpi.protocol_version = SCSI_REV_2;
if (ccb->cpi.bus_id == 0)
ccb->cpi.max_target = MRSAS_MAX_PD - 1;
else
ccb->cpi.max_target = MRSAS_MAX_LD_IDS - 1;
#if (__FreeBSD_version > 704000)
- ccb->cpi.maxio = MRSAS_MAX_IO_SIZE;
+ ccb->cpi.maxio = sc->max_num_sge * MRSAS_PAGE_SIZE;
#endif
ccb->ccb_h.status = CAM_REQ_CMP;
xpt_done(ccb);
break;
}
default:
{
ccb->ccb_h.status = CAM_REQ_INVALID;
xpt_done(ccb);
break;
}
}
}
/*
* mrsas_scsiio_timeout: Callback function for IO timed out
* input: mpt command context
*
* This function will execute after timeout value provided by ccb header from
* CAM layer, if timer expires. Driver will run timer for all DCDM and LDIO
* coming from CAM layer. This function is callback function for IO timeout
* and it runs in no-sleep context. Set do_timedout_reset in Adapter context
* so that it will execute OCR/Kill adpter from ocr_thread context.
*/
static void
mrsas_scsiio_timeout(void *data)
{
struct mrsas_mpt_cmd *cmd;
struct mrsas_softc *sc;
cmd = (struct mrsas_mpt_cmd *)data;
sc = cmd->sc;
if (cmd->ccb_ptr == NULL) {
printf("command timeout with NULL ccb\n");
return;
}
/*
* Below callout is dummy entry so that it will be cancelled from
* mrsas_cmd_done(). Now Controller will go to OCR/Kill Adapter based
* on OCR enable/disable property of Controller from ocr_thread
* context.
*/
#if (__FreeBSD_version >= 1000510)
callout_reset_sbt(&cmd->cm_callout, SBT_1S * 600, 0,
mrsas_scsiio_timeout, cmd, 0);
#else
callout_reset(&cmd->cm_callout, (600000 * hz) / 1000,
mrsas_scsiio_timeout, cmd);
#endif
- sc->do_timedout_reset = 1;
+ sc->do_timedout_reset = SCSIIO_TIMEOUT_OCR;
if (sc->ocr_thread_active)
wakeup(&sc->ocr_chan);
}
/*
* mrsas_startio: SCSI IO entry point
* input: Adapter instance soft state
* pointer to CAM Control Block
*
* This function is the SCSI IO entry point and it initiates IO processing. It
* copies the IO and depending if the IO is read/write or inquiry, it would
* call mrsas_build_ldio() or mrsas_build_dcdb(), respectively. It returns 0
* if the command is sent to firmware successfully, otherwise it returns 1.
*/
static int32_t
mrsas_startio(struct mrsas_softc *sc, struct cam_sim *sim,
union ccb *ccb)
{
struct mrsas_mpt_cmd *cmd;
struct ccb_hdr *ccb_h = &(ccb->ccb_h);
struct ccb_scsiio *csio = &(ccb->csio);
MRSAS_REQUEST_DESCRIPTOR_UNION *req_desc;
+ u_int8_t cmd_type;
if ((csio->cdb_io.cdb_bytes[0]) == SYNCHRONIZE_CACHE) {
ccb->ccb_h.status = CAM_REQ_CMP;
xpt_done(ccb);
return (0);
}
ccb_h->status |= CAM_SIM_QUEUED;
cmd = mrsas_get_mpt_cmd(sc);
if (!cmd) {
ccb_h->status |= CAM_REQUEUE_REQ;
xpt_done(ccb);
return (0);
}
if ((ccb_h->flags & CAM_DIR_MASK) != CAM_DIR_NONE) {
if (ccb_h->flags & CAM_DIR_IN)
cmd->flags |= MRSAS_DIR_IN;
if (ccb_h->flags & CAM_DIR_OUT)
cmd->flags |= MRSAS_DIR_OUT;
} else
cmd->flags = MRSAS_DIR_NONE; /* no data */
/* For FreeBSD 9.2 and higher */
#if (__FreeBSD_version >= 902001)
/*
* XXX We don't yet support physical addresses here.
*/
switch ((ccb->ccb_h.flags & CAM_DATA_MASK)) {
case CAM_DATA_PADDR:
case CAM_DATA_SG_PADDR:
device_printf(sc->mrsas_dev, "%s: physical addresses not supported\n",
__func__);
mrsas_release_mpt_cmd(cmd);
ccb_h->status = CAM_REQ_INVALID;
ccb_h->status &= ~CAM_SIM_QUEUED;
goto done;
case CAM_DATA_SG:
device_printf(sc->mrsas_dev, "%s: scatter gather is not supported\n",
__func__);
mrsas_release_mpt_cmd(cmd);
ccb_h->status = CAM_REQ_INVALID;
goto done;
case CAM_DATA_VADDR:
- if (csio->dxfer_len > MRSAS_MAX_IO_SIZE) {
+ if (csio->dxfer_len > (sc->max_num_sge * MRSAS_PAGE_SIZE)) {
mrsas_release_mpt_cmd(cmd);
ccb_h->status = CAM_REQ_TOO_BIG;
goto done;
}
cmd->length = csio->dxfer_len;
if (cmd->length)
cmd->data = csio->data_ptr;
break;
case CAM_DATA_BIO:
+ if (csio->dxfer_len > (sc->max_num_sge * MRSAS_PAGE_SIZE)) {
+ mrsas_release_mpt_cmd(cmd);
+ ccb_h->status = CAM_REQ_TOO_BIG;
+ goto done;
+ }
cmd->length = csio->dxfer_len;
if (cmd->length)
cmd->data = csio->data_ptr;
break;
default:
ccb->ccb_h.status = CAM_REQ_INVALID;
goto done;
}
#else
if (!(ccb_h->flags & CAM_DATA_PHYS)) { /* Virtual data address */
if (!(ccb_h->flags & CAM_SCATTER_VALID)) {
- if (csio->dxfer_len > MRSAS_MAX_IO_SIZE) {
+ if (csio->dxfer_len > (sc->max_num_sge * MRSAS_PAGE_SIZE)) {
mrsas_release_mpt_cmd(cmd);
ccb_h->status = CAM_REQ_TOO_BIG;
goto done;
}
cmd->length = csio->dxfer_len;
if (cmd->length)
cmd->data = csio->data_ptr;
} else {
mrsas_release_mpt_cmd(cmd);
ccb_h->status = CAM_REQ_INVALID;
goto done;
}
} else { /* Data addresses are physical. */
mrsas_release_mpt_cmd(cmd);
ccb_h->status = CAM_REQ_INVALID;
ccb_h->status &= ~CAM_SIM_QUEUED;
goto done;
}
#endif
/* save ccb ptr */
cmd->ccb_ptr = ccb;
req_desc = mrsas_get_request_desc(sc, (cmd->index) - 1);
if (!req_desc) {
device_printf(sc->mrsas_dev, "Cannot get request_descriptor.\n");
return (FAIL);
}
memset(req_desc, 0, sizeof(MRSAS_REQUEST_DESCRIPTOR_UNION));
cmd->request_desc = req_desc;
if (ccb_h->flags & CAM_CDB_POINTER)
bcopy(csio->cdb_io.cdb_ptr, cmd->io_request->CDB.CDB32, csio->cdb_len);
else
bcopy(csio->cdb_io.cdb_bytes, cmd->io_request->CDB.CDB32, csio->cdb_len);
mtx_lock(&sc->raidmap_lock);
/* Check for IO type READ-WRITE targeted for Logical Volume */
- if (mrsas_find_io_type(sim, ccb) == READ_WRITE_LDIO) {
+ cmd_type = mrsas_find_io_type(sim, ccb);
+ switch (cmd_type) {
+ case READ_WRITE_LDIO:
/* Build READ-WRITE IO for Logical Volume */
- if (mrsas_build_ldio(sc, cmd, ccb)) {
- device_printf(sc->mrsas_dev, "Build LDIO failed.\n");
+ if (mrsas_build_ldio_rw(sc, cmd, ccb)) {
+ device_printf(sc->mrsas_dev, "Build RW LDIO failed.\n");
mtx_unlock(&sc->raidmap_lock);
return (1);
}
- } else {
- if (mrsas_build_dcdb(sc, cmd, ccb, sim)) {
- device_printf(sc->mrsas_dev, "Build DCDB failed.\n");
+ break;
+ case NON_READ_WRITE_LDIO:
+ /* Build NON READ-WRITE IO for Logical Volume */
+ if (mrsas_build_ldio_nonrw(sc, cmd, ccb)) {
+ device_printf(sc->mrsas_dev, "Build NON-RW LDIO failed.\n");
mtx_unlock(&sc->raidmap_lock);
return (1);
}
+ break;
+ case READ_WRITE_SYSPDIO:
+ case NON_READ_WRITE_SYSPDIO:
+ if (sc->secure_jbod_support &&
+ (cmd_type == NON_READ_WRITE_SYSPDIO)) {
+ /* Build NON-RW IO for JBOD */
+ if (mrsas_build_syspdio(sc, cmd, ccb, sim, 0)) {
+ device_printf(sc->mrsas_dev,
+ "Build SYSPDIO failed.\n");
+ mtx_unlock(&sc->raidmap_lock);
+ return (1);
+ }
+ } else {
+ /* Build RW IO for JBOD */
+ if (mrsas_build_syspdio(sc, cmd, ccb, sim, 1)) {
+ device_printf(sc->mrsas_dev,
+ "Build SYSPDIO failed.\n");
+ mtx_unlock(&sc->raidmap_lock);
+ return (1);
+ }
+ }
}
mtx_unlock(&sc->raidmap_lock);
if (cmd->flags == MRSAS_DIR_IN) /* from device */
cmd->io_request->Control |= MPI2_SCSIIO_CONTROL_READ;
else if (cmd->flags == MRSAS_DIR_OUT) /* to device */
cmd->io_request->Control |= MPI2_SCSIIO_CONTROL_WRITE;
cmd->io_request->SGLFlags = MPI2_SGE_FLAGS_64_BIT_ADDRESSING;
cmd->io_request->SGLOffset0 = offsetof(MRSAS_RAID_SCSI_IO_REQUEST, SGL) / 4;
cmd->io_request->SenseBufferLowAddress = cmd->sense_phys_addr;
cmd->io_request->SenseBufferLength = MRSAS_SCSI_SENSE_BUFFERSIZE;
req_desc = cmd->request_desc;
req_desc->SCSIIO.SMID = cmd->index;
/*
* Start timer for IO timeout. Default timeout value is 90 second.
*/
#if (__FreeBSD_version >= 1000510)
callout_reset_sbt(&cmd->cm_callout, SBT_1S * 600, 0,
mrsas_scsiio_timeout, cmd, 0);
#else
callout_reset(&cmd->cm_callout, (600000 * hz) / 1000,
mrsas_scsiio_timeout, cmd);
#endif
mrsas_atomic_inc(&sc->fw_outstanding);
if (mrsas_atomic_read(&sc->fw_outstanding) > sc->io_cmds_highwater)
sc->io_cmds_highwater++;
mrsas_fire_cmd(sc, req_desc->addr.u.low, req_desc->addr.u.high);
return (0);
done:
xpt_done(ccb);
return (0);
}
/*
* mrsas_find_io_type: Determines if IO is read/write or inquiry
* input: pointer to CAM Control Block
*
* This function determines if the IO is read/write or inquiry. It returns a 1
* if the IO is read/write and 0 if it is inquiry.
*/
int
mrsas_find_io_type(struct cam_sim *sim, union ccb *ccb)
{
struct ccb_scsiio *csio = &(ccb->csio);
switch (csio->cdb_io.cdb_bytes[0]) {
case READ_10:
case WRITE_10:
case READ_12:
case WRITE_12:
case READ_6:
case WRITE_6:
case READ_16:
case WRITE_16:
return (cam_sim_bus(sim) ?
READ_WRITE_SYSPDIO : READ_WRITE_LDIO);
default:
return (cam_sim_bus(sim) ?
NON_READ_WRITE_SYSPDIO : NON_READ_WRITE_LDIO);
}
}
/*
* mrsas_get_mpt_cmd: Get a cmd from free command pool
* input: Adapter instance soft state
*
* This function removes an MPT command from the command free list and
* initializes it.
*/
struct mrsas_mpt_cmd *
mrsas_get_mpt_cmd(struct mrsas_softc *sc)
{
struct mrsas_mpt_cmd *cmd = NULL;
mtx_lock(&sc->mpt_cmd_pool_lock);
if (!TAILQ_EMPTY(&sc->mrsas_mpt_cmd_list_head)) {
cmd = TAILQ_FIRST(&sc->mrsas_mpt_cmd_list_head);
TAILQ_REMOVE(&sc->mrsas_mpt_cmd_list_head, cmd, next);
+ } else {
+ goto out;
}
+
memset((uint8_t *)cmd->io_request, 0, MRSAS_MPI2_RAID_DEFAULT_IO_FRAME_SIZE);
cmd->data = NULL;
cmd->length = 0;
cmd->flags = 0;
cmd->error_code = 0;
cmd->load_balance = 0;
cmd->ccb_ptr = NULL;
- mtx_unlock(&sc->mpt_cmd_pool_lock);
+out:
+ mtx_unlock(&sc->mpt_cmd_pool_lock);
return cmd;
}
/*
* mrsas_release_mpt_cmd: Return a cmd to free command pool
* input: Command packet for return to free command pool
*
* This function returns an MPT command to the free command list.
*/
void
mrsas_release_mpt_cmd(struct mrsas_mpt_cmd *cmd)
{
struct mrsas_softc *sc = cmd->sc;
mtx_lock(&sc->mpt_cmd_pool_lock);
cmd->sync_cmd_idx = (u_int32_t)MRSAS_ULONG_MAX;
TAILQ_INSERT_TAIL(&(sc->mrsas_mpt_cmd_list_head), cmd, next);
mtx_unlock(&sc->mpt_cmd_pool_lock);
return;
}
/*
* mrsas_get_request_desc: Get request descriptor from array
* input: Adapter instance soft state
* SMID index
*
* This function returns a pointer to the request descriptor.
*/
MRSAS_REQUEST_DESCRIPTOR_UNION *
mrsas_get_request_desc(struct mrsas_softc *sc, u_int16_t index)
{
u_int8_t *p;
if (index >= sc->max_fw_cmds) {
device_printf(sc->mrsas_dev, "Invalid SMID (0x%x)request for desc\n", index);
return NULL;
}
p = sc->req_desc + sizeof(MRSAS_REQUEST_DESCRIPTOR_UNION) * index;
return (MRSAS_REQUEST_DESCRIPTOR_UNION *) p;
}
/*
- * mrsas_build_ldio: Builds an LDIO command
+ * mrsas_build_ldio_rw: Builds an LDIO command
* input: Adapter instance soft state
* Pointer to command packet
* Pointer to CCB
*
* This function builds the LDIO command packet. It returns 0 if the command is
* built successfully, otherwise it returns a 1.
*/
int
-mrsas_build_ldio(struct mrsas_softc *sc, struct mrsas_mpt_cmd *cmd,
+mrsas_build_ldio_rw(struct mrsas_softc *sc, struct mrsas_mpt_cmd *cmd,
union ccb *ccb)
{
struct ccb_hdr *ccb_h = &(ccb->ccb_h);
struct ccb_scsiio *csio = &(ccb->csio);
u_int32_t device_id;
MRSAS_RAID_SCSI_IO_REQUEST *io_request;
device_id = ccb_h->target_id;
io_request = cmd->io_request;
io_request->RaidContext.VirtualDiskTgtId = device_id;
io_request->RaidContext.status = 0;
io_request->RaidContext.exStatus = 0;
/* just the cdb len, other flags zero, and ORed-in later for FP */
io_request->IoFlags = csio->cdb_len;
if (mrsas_setup_io(sc, cmd, ccb, device_id, io_request) != SUCCESS)
device_printf(sc->mrsas_dev, "Build ldio or fpio error\n");
io_request->DataLength = cmd->length;
if (mrsas_map_request(sc, cmd, ccb) == SUCCESS) {
- if (cmd->sge_count > MRSAS_MAX_SGL) {
+ if (cmd->sge_count > sc->max_num_sge) {
device_printf(sc->mrsas_dev, "Error: sge_count (0x%x) exceeds"
"max (0x%x) allowed\n", cmd->sge_count, sc->max_num_sge);
return (FAIL);
}
+ /*
+ * numSGE store lower 8 bit of sge_count. numSGEExt store
+ * higher 8 bit of sge_count
+ */
io_request->RaidContext.numSGE = cmd->sge_count;
+ io_request->RaidContext.numSGEExt = (uint8_t)(cmd->sge_count >> 8);
+
} else {
device_printf(sc->mrsas_dev, "Data map/load failed.\n");
return (FAIL);
}
return (0);
}
/*
* mrsas_setup_io: Set up data including Fast Path I/O
* input: Adapter instance soft state
* Pointer to command packet
* Pointer to CCB
*
* This function builds the DCDB inquiry command. It returns 0 if the command
* is built successfully, otherwise it returns a 1.
*/
int
mrsas_setup_io(struct mrsas_softc *sc, struct mrsas_mpt_cmd *cmd,
union ccb *ccb, u_int32_t device_id,
MRSAS_RAID_SCSI_IO_REQUEST * io_request)
{
struct ccb_hdr *ccb_h = &(ccb->ccb_h);
struct ccb_scsiio *csio = &(ccb->csio);
struct IO_REQUEST_INFO io_info;
MR_DRV_RAID_MAP_ALL *map_ptr;
u_int8_t fp_possible;
u_int32_t start_lba_hi, start_lba_lo, ld_block_size;
u_int32_t datalength = 0;
start_lba_lo = 0;
start_lba_hi = 0;
fp_possible = 0;
/*
* READ_6 (0x08) or WRITE_6 (0x0A) cdb
*/
if (csio->cdb_len == 6) {
datalength = (u_int32_t)csio->cdb_io.cdb_bytes[4];
start_lba_lo = ((u_int32_t)csio->cdb_io.cdb_bytes[1] << 16) |
((u_int32_t)csio->cdb_io.cdb_bytes[2] << 8) |
(u_int32_t)csio->cdb_io.cdb_bytes[3];
start_lba_lo &= 0x1FFFFF;
}
/*
* READ_10 (0x28) or WRITE_6 (0x2A) cdb
*/
else if (csio->cdb_len == 10) {
datalength = (u_int32_t)csio->cdb_io.cdb_bytes[8] |
((u_int32_t)csio->cdb_io.cdb_bytes[7] << 8);
start_lba_lo = ((u_int32_t)csio->cdb_io.cdb_bytes[2] << 24) |
((u_int32_t)csio->cdb_io.cdb_bytes[3] << 16) |
(u_int32_t)csio->cdb_io.cdb_bytes[4] << 8 |
((u_int32_t)csio->cdb_io.cdb_bytes[5]);
}
/*
* READ_12 (0xA8) or WRITE_12 (0xAA) cdb
*/
else if (csio->cdb_len == 12) {
datalength = (u_int32_t)csio->cdb_io.cdb_bytes[6] << 24 |
((u_int32_t)csio->cdb_io.cdb_bytes[7] << 16) |
((u_int32_t)csio->cdb_io.cdb_bytes[8] << 8) |
((u_int32_t)csio->cdb_io.cdb_bytes[9]);
start_lba_lo = ((u_int32_t)csio->cdb_io.cdb_bytes[2] << 24) |
((u_int32_t)csio->cdb_io.cdb_bytes[3] << 16) |
(u_int32_t)csio->cdb_io.cdb_bytes[4] << 8 |
((u_int32_t)csio->cdb_io.cdb_bytes[5]);
}
/*
* READ_16 (0x88) or WRITE_16 (0xx8A) cdb
*/
else if (csio->cdb_len == 16) {
datalength = (u_int32_t)csio->cdb_io.cdb_bytes[10] << 24 |
((u_int32_t)csio->cdb_io.cdb_bytes[11] << 16) |
((u_int32_t)csio->cdb_io.cdb_bytes[12] << 8) |
((u_int32_t)csio->cdb_io.cdb_bytes[13]);
start_lba_lo = ((u_int32_t)csio->cdb_io.cdb_bytes[6] << 24) |
((u_int32_t)csio->cdb_io.cdb_bytes[7] << 16) |
(u_int32_t)csio->cdb_io.cdb_bytes[8] << 8 |
((u_int32_t)csio->cdb_io.cdb_bytes[9]);
start_lba_hi = ((u_int32_t)csio->cdb_io.cdb_bytes[2] << 24) |
((u_int32_t)csio->cdb_io.cdb_bytes[3] << 16) |
(u_int32_t)csio->cdb_io.cdb_bytes[4] << 8 |
((u_int32_t)csio->cdb_io.cdb_bytes[5]);
}
memset(&io_info, 0, sizeof(struct IO_REQUEST_INFO));
io_info.ldStartBlock = ((u_int64_t)start_lba_hi << 32) | start_lba_lo;
io_info.numBlocks = datalength;
io_info.ldTgtId = device_id;
switch (ccb_h->flags & CAM_DIR_MASK) {
case CAM_DIR_IN:
io_info.isRead = 1;
break;
case CAM_DIR_OUT:
io_info.isRead = 0;
break;
case CAM_DIR_NONE:
default:
mrsas_dprint(sc, MRSAS_TRACE, "From %s : DMA Flag is %d \n", __func__, ccb_h->flags & CAM_DIR_MASK);
break;
}
map_ptr = sc->ld_drv_map[(sc->map_id & 1)];
ld_block_size = MR_LdBlockSizeGet(device_id, map_ptr, sc);
if ((MR_TargetIdToLdGet(device_id, map_ptr) >= MAX_LOGICAL_DRIVES_EXT) ||
(!sc->fast_path_io)) {
io_request->RaidContext.regLockFlags = 0;
fp_possible = 0;
} else {
if (MR_BuildRaidContext(sc, &io_info, &io_request->RaidContext, map_ptr))
fp_possible = io_info.fpOkForIo;
}
cmd->request_desc->SCSIIO.MSIxIndex =
sc->msix_vectors ? smp_processor_id() % sc->msix_vectors : 0;
if (fp_possible) {
mrsas_set_pd_lba(io_request, csio->cdb_len, &io_info, ccb, map_ptr,
start_lba_lo, ld_block_size);
io_request->Function = MPI2_FUNCTION_SCSI_IO_REQUEST;
cmd->request_desc->SCSIIO.RequestFlags =
(MPI2_REQ_DESCRIPT_FLAGS_HIGH_PRIORITY <<
MRSAS_REQ_DESCRIPT_FLAGS_TYPE_SHIFT);
- if ((sc->device_id == MRSAS_INVADER) || (sc->device_id == MRSAS_FURY)) {
+ if ((sc->device_id == MRSAS_INVADER) ||
+ (sc->device_id == MRSAS_FURY) ||
+ (sc->device_id == MRSAS_INTRUDER) ||
+ (sc->device_id == MRSAS_INTRUDER_24)) {
if (io_request->RaidContext.regLockFlags == REGION_TYPE_UNUSED)
cmd->request_desc->SCSIIO.RequestFlags =
(MRSAS_REQ_DESCRIPT_FLAGS_NO_LOCK <<
MRSAS_REQ_DESCRIPT_FLAGS_TYPE_SHIFT);
io_request->RaidContext.Type = MPI2_TYPE_CUDA;
io_request->RaidContext.nseg = 0x1;
io_request->IoFlags |= MPI25_SAS_DEVICE0_FLAGS_ENABLED_FAST_PATH;
io_request->RaidContext.regLockFlags |=
(MR_RL_FLAGS_GRANT_DESTINATION_CUDA |
MR_RL_FLAGS_SEQ_NUM_ENABLE);
}
if ((sc->load_balance_info[device_id].loadBalanceFlag) &&
(io_info.isRead)) {
io_info.devHandle =
mrsas_get_updated_dev_handle(sc,
&sc->load_balance_info[device_id], &io_info);
cmd->load_balance = MRSAS_LOAD_BALANCE_FLAG;
cmd->pd_r1_lb = io_info.pd_after_lb;
} else
cmd->load_balance = 0;
cmd->request_desc->SCSIIO.DevHandle = io_info.devHandle;
io_request->DevHandle = io_info.devHandle;
} else {
/* Not FP IO */
io_request->RaidContext.timeoutValue = map_ptr->raidMap.fpPdIoTimeoutSec;
cmd->request_desc->SCSIIO.RequestFlags =
(MRSAS_REQ_DESCRIPT_FLAGS_LD_IO <<
MRSAS_REQ_DESCRIPT_FLAGS_TYPE_SHIFT);
- if ((sc->device_id == MRSAS_INVADER) || (sc->device_id == MRSAS_FURY)) {
+ if ((sc->device_id == MRSAS_INVADER) ||
+ (sc->device_id == MRSAS_FURY) ||
+ (sc->device_id == MRSAS_INTRUDER) ||
+ (sc->device_id == MRSAS_INTRUDER_24)) {
if (io_request->RaidContext.regLockFlags == REGION_TYPE_UNUSED)
cmd->request_desc->SCSIIO.RequestFlags =
(MRSAS_REQ_DESCRIPT_FLAGS_NO_LOCK <<
MRSAS_REQ_DESCRIPT_FLAGS_TYPE_SHIFT);
io_request->RaidContext.Type = MPI2_TYPE_CUDA;
io_request->RaidContext.regLockFlags |=
(MR_RL_FLAGS_GRANT_DESTINATION_CPU0 |
MR_RL_FLAGS_SEQ_NUM_ENABLE);
io_request->RaidContext.nseg = 0x1;
}
io_request->Function = MRSAS_MPI2_FUNCTION_LD_IO_REQUEST;
io_request->DevHandle = device_id;
}
return (0);
}
/*
- * mrsas_build_dcdb: Builds an DCDB command
+ * mrsas_build_ldio_nonrw: Builds an LDIO command
* input: Adapter instance soft state
* Pointer to command packet
* Pointer to CCB
*
- * This function builds the DCDB inquiry command. It returns 0 if the command
- * is built successfully, otherwise it returns a 1.
+ * This function builds the LDIO command packet. It returns 0 if the command is
+ * built successfully, otherwise it returns a 1.
*/
int
-mrsas_build_dcdb(struct mrsas_softc *sc, struct mrsas_mpt_cmd *cmd,
- union ccb *ccb, struct cam_sim *sim)
+mrsas_build_ldio_nonrw(struct mrsas_softc *sc, struct mrsas_mpt_cmd *cmd,
+ union ccb *ccb)
{
struct ccb_hdr *ccb_h = &(ccb->ccb_h);
u_int32_t device_id;
- MR_DRV_RAID_MAP_ALL *map_ptr;
MRSAS_RAID_SCSI_IO_REQUEST *io_request;
io_request = cmd->io_request;
device_id = ccb_h->target_id;
- map_ptr = sc->ld_drv_map[(sc->map_id & 1)];
- /*
- * Check if this is RW for system PD or
- * it's a NON RW for sys PD and there is NO secure jbod FW support
- */
- if (cam_sim_bus(sim) == 1 &&
- sc->pd_list[device_id].driveState == MR_PD_STATE_SYSTEM) {
+ /* FW path for LD Non-RW (SCSI management commands) */
+ io_request->Function = MRSAS_MPI2_FUNCTION_LD_IO_REQUEST;
+ io_request->DevHandle = device_id;
+ cmd->request_desc->SCSIIO.RequestFlags =
+ (MPI2_REQ_DESCRIPT_FLAGS_SCSI_IO <<
+ MRSAS_REQ_DESCRIPT_FLAGS_TYPE_SHIFT);
- io_request->DevHandle =
- map_ptr->raidMap.devHndlInfo[device_id].curDevHdl;
- io_request->RaidContext.RAIDFlags =
- MR_RAID_FLAGS_IO_SUB_TYPE_SYSTEM_PD <<
- MR_RAID_CTX_RAID_FLAGS_IO_SUB_TYPE_SHIFT;
- cmd->request_desc->SCSIIO.DevHandle = io_request->DevHandle;
- cmd->request_desc->SCSIIO.MSIxIndex =
- sc->msix_vectors ? smp_processor_id() % sc->msix_vectors : 0;
+ io_request->RaidContext.VirtualDiskTgtId = device_id;
+ io_request->LUN[1] = ccb_h->target_lun & 0xF;
+ io_request->DataLength = cmd->length;
- if (sc->secure_jbod_support && (mrsas_find_io_type(sim, ccb) == NON_READ_WRITE_SYSPDIO)) {
- /* system pd firmware path */
- io_request->Function = MRSAS_MPI2_FUNCTION_LD_IO_REQUEST;
- cmd->request_desc->SCSIIO.RequestFlags =
- (MPI2_REQ_DESCRIPT_FLAGS_SCSI_IO << MRSAS_REQ_DESCRIPT_FLAGS_TYPE_SHIFT);
- } else {
- /* system pd fast path */
- io_request->Function = MPI2_FUNCTION_SCSI_IO_REQUEST;
- io_request->RaidContext.timeoutValue = map_ptr->raidMap.fpPdIoTimeoutSec;
- io_request->RaidContext.regLockFlags = 0;
- io_request->RaidContext.regLockRowLBA = 0;
- io_request->RaidContext.regLockLength = 0;
+ if (mrsas_map_request(sc, cmd, ccb) == SUCCESS) {
+ if (cmd->sge_count > sc->max_num_sge) {
+ device_printf(sc->mrsas_dev, "Error: sge_count (0x%x) exceeds"
+ "max (0x%x) allowed\n", cmd->sge_count, sc->max_num_sge);
+ return (1);
+ }
+ /*
+ * numSGE store lower 8 bit of sge_count. numSGEExt store
+ * higher 8 bit of sge_count
+ */
+ io_request->RaidContext.numSGE = cmd->sge_count;
+ io_request->RaidContext.numSGEExt = (uint8_t)(cmd->sge_count >> 8);
+ } else {
+ device_printf(sc->mrsas_dev, "Data map/load failed.\n");
+ return (1);
+ }
+ return (0);
+}
- cmd->request_desc->SCSIIO.RequestFlags =
- (MPI2_REQ_DESCRIPT_FLAGS_HIGH_PRIORITY <<
- MRSAS_REQ_DESCRIPT_FLAGS_TYPE_SHIFT);
+/*
+ * mrsas_build_syspdio: Builds an DCDB command
+ * input: Adapter instance soft state
+ * Pointer to command packet
+ * Pointer to CCB
+ *
+ * This function builds the DCDB inquiry command. It returns 0 if the command
+ * is built successfully, otherwise it returns a 1.
+ */
+int
+mrsas_build_syspdio(struct mrsas_softc *sc, struct mrsas_mpt_cmd *cmd,
+ union ccb *ccb, struct cam_sim *sim, u_int8_t fp_possible)
+{
+ struct ccb_hdr *ccb_h = &(ccb->ccb_h);
+ u_int32_t device_id;
+ MR_DRV_RAID_MAP_ALL *local_map_ptr;
+ MRSAS_RAID_SCSI_IO_REQUEST *io_request;
+ struct MR_PD_CFG_SEQ_NUM_SYNC *pd_sync;
- /*
- * NOTE - For system pd RW cmds only IoFlags will be FAST_PATH
- * Because the NON RW cmds will now go via FW Queue
- * and not the Exception queue
- */
- if ((sc->device_id == MRSAS_INVADER) || (sc->device_id == MRSAS_FURY))
- io_request->IoFlags |= MPI25_SAS_DEVICE0_FLAGS_ENABLED_FAST_PATH;
- }
+ pd_sync = (void *)sc->jbodmap_mem[(sc->pd_seq_map_id - 1) & 1];
+
+ io_request = cmd->io_request;
+ device_id = ccb_h->target_id;
+ local_map_ptr = sc->ld_drv_map[(sc->map_id & 1)];
+ io_request->RaidContext.RAIDFlags = MR_RAID_FLAGS_IO_SUB_TYPE_SYSTEM_PD
+ << MR_RAID_CTX_RAID_FLAGS_IO_SUB_TYPE_SHIFT;
+ io_request->RaidContext.regLockFlags = 0;
+ io_request->RaidContext.regLockRowLBA = 0;
+ io_request->RaidContext.regLockLength = 0;
+
+ /* If FW supports PD sequence number */
+ if (sc->use_seqnum_jbod_fp &&
+ sc->pd_list[device_id].driveType == 0x00) {
+ //printf("Using Drv seq num\n");
+ io_request->RaidContext.VirtualDiskTgtId = device_id + 255;
+ io_request->RaidContext.configSeqNum = pd_sync->seq[device_id].seqNum;
+ io_request->DevHandle = pd_sync->seq[device_id].devHandle;
+ io_request->RaidContext.regLockFlags |=
+ (MR_RL_FLAGS_SEQ_NUM_ENABLE | MR_RL_FLAGS_GRANT_DESTINATION_CUDA);
+ io_request->RaidContext.Type = MPI2_TYPE_CUDA;
+ io_request->RaidContext.nseg = 0x1;
+ } else if (sc->fast_path_io) {
+ //printf("Using LD RAID map\n");
+ io_request->RaidContext.VirtualDiskTgtId = device_id;
+ io_request->RaidContext.configSeqNum = 0;
+ local_map_ptr = sc->ld_drv_map[(sc->map_id & 1)];
+ io_request->DevHandle =
+ local_map_ptr->raidMap.devHndlInfo[device_id].curDevHdl;
} else {
- /* FW path for SysPD or LD Non-RW (SCSI management commands) */
+ //printf("Using FW PATH\n");
+ /* Want to send all IO via FW path */
+ io_request->RaidContext.VirtualDiskTgtId = device_id;
+ io_request->RaidContext.configSeqNum = 0;
+ io_request->DevHandle = 0xFFFF;
+ }
+
+ cmd->request_desc->SCSIIO.DevHandle = io_request->DevHandle;
+ cmd->request_desc->SCSIIO.MSIxIndex =
+ sc->msix_vectors ? smp_processor_id() % sc->msix_vectors : 0;
+
+ if (!fp_possible) {
+ /* system pd firmware path */
io_request->Function = MRSAS_MPI2_FUNCTION_LD_IO_REQUEST;
- io_request->DevHandle = device_id;
cmd->request_desc->SCSIIO.RequestFlags =
(MPI2_REQ_DESCRIPT_FLAGS_SCSI_IO <<
MRSAS_REQ_DESCRIPT_FLAGS_TYPE_SHIFT);
+ io_request->RaidContext.timeoutValue =
+ local_map_ptr->raidMap.fpPdIoTimeoutSec;
+ io_request->RaidContext.VirtualDiskTgtId = device_id;
+ } else {
+ /* system pd fast path */
+ io_request->Function = MPI2_FUNCTION_SCSI_IO_REQUEST;
+ io_request->RaidContext.timeoutValue = local_map_ptr->raidMap.fpPdIoTimeoutSec;
+
+ /*
+ * NOTE - For system pd RW cmds only IoFlags will be FAST_PATH
+ * Because the NON RW cmds will now go via FW Queue
+ * and not the Exception queue
+ */
+ io_request->IoFlags |= MPI25_SAS_DEVICE0_FLAGS_ENABLED_FAST_PATH;
+
+ cmd->request_desc->SCSIIO.RequestFlags =
+ (MPI2_REQ_DESCRIPT_FLAGS_HIGH_PRIORITY <<
+ MRSAS_REQ_DESCRIPT_FLAGS_TYPE_SHIFT);
}
- io_request->RaidContext.VirtualDiskTgtId = device_id;
io_request->LUN[1] = ccb_h->target_lun & 0xF;
io_request->DataLength = cmd->length;
if (mrsas_map_request(sc, cmd, ccb) == SUCCESS) {
if (cmd->sge_count > sc->max_num_sge) {
device_printf(sc->mrsas_dev, "Error: sge_count (0x%x) exceeds"
"max (0x%x) allowed\n", cmd->sge_count, sc->max_num_sge);
return (1);
}
+ /*
+ * numSGE store lower 8 bit of sge_count. numSGEExt store
+ * higher 8 bit of sge_count
+ */
io_request->RaidContext.numSGE = cmd->sge_count;
+ io_request->RaidContext.numSGEExt = (uint8_t)(cmd->sge_count >> 8);
} else {
device_printf(sc->mrsas_dev, "Data map/load failed.\n");
return (1);
}
return (0);
}
/*
* mrsas_map_request: Map and load data
* input: Adapter instance soft state
* Pointer to command packet
*
* For data from OS, map and load the data buffer into bus space. The SG list
* is built in the callback. If the bus dmamap load is not successful,
* cmd->error_code will contain the error code and a 1 is returned.
*/
int
mrsas_map_request(struct mrsas_softc *sc,
struct mrsas_mpt_cmd *cmd, union ccb *ccb)
{
u_int32_t retcode = 0;
struct cam_sim *sim;
sim = xpt_path_sim(cmd->ccb_ptr->ccb_h.path);
if (cmd->data != NULL) {
/* Map data buffer into bus space */
mtx_lock(&sc->io_lock);
#if (__FreeBSD_version >= 902001)
retcode = bus_dmamap_load_ccb(sc->data_tag, cmd->data_dmamap, ccb,
mrsas_data_load_cb, cmd, 0);
#else
retcode = bus_dmamap_load(sc->data_tag, cmd->data_dmamap, cmd->data,
cmd->length, mrsas_data_load_cb, cmd, BUS_DMA_NOWAIT);
#endif
mtx_unlock(&sc->io_lock);
if (retcode)
device_printf(sc->mrsas_dev, "bus_dmamap_load(): retcode = %d\n", retcode);
if (retcode == EINPROGRESS) {
device_printf(sc->mrsas_dev, "request load in progress\n");
mrsas_freeze_simq(cmd, sim);
}
}
if (cmd->error_code)
return (1);
return (retcode);
}
/*
* mrsas_unmap_request: Unmap and unload data
* input: Adapter instance soft state
* Pointer to command packet
*
* This function unmaps and unloads data from OS.
*/
void
mrsas_unmap_request(struct mrsas_softc *sc, struct mrsas_mpt_cmd *cmd)
{
if (cmd->data != NULL) {
if (cmd->flags & MRSAS_DIR_IN)
bus_dmamap_sync(sc->data_tag, cmd->data_dmamap, BUS_DMASYNC_POSTREAD);
if (cmd->flags & MRSAS_DIR_OUT)
bus_dmamap_sync(sc->data_tag, cmd->data_dmamap, BUS_DMASYNC_POSTWRITE);
mtx_lock(&sc->io_lock);
bus_dmamap_unload(sc->data_tag, cmd->data_dmamap);
mtx_unlock(&sc->io_lock);
}
}
/*
* mrsas_data_load_cb: Callback entry point
* input: Pointer to command packet as argument
* Pointer to segment
* Number of segments Error
*
* This is the callback function of the bus dma map load. It builds the SG
* list.
*/
static void
mrsas_data_load_cb(void *arg, bus_dma_segment_t *segs, int nseg, int error)
{
struct mrsas_mpt_cmd *cmd = (struct mrsas_mpt_cmd *)arg;
struct mrsas_softc *sc = cmd->sc;
MRSAS_RAID_SCSI_IO_REQUEST *io_request;
pMpi25IeeeSgeChain64_t sgl_ptr;
int i = 0, sg_processed = 0;
if (error) {
cmd->error_code = error;
device_printf(sc->mrsas_dev, "mrsas_data_load_cb: error=%d\n", error);
if (error == EFBIG) {
cmd->ccb_ptr->ccb_h.status = CAM_REQ_TOO_BIG;
return;
}
}
if (cmd->flags & MRSAS_DIR_IN)
bus_dmamap_sync(cmd->sc->data_tag, cmd->data_dmamap,
BUS_DMASYNC_PREREAD);
if (cmd->flags & MRSAS_DIR_OUT)
bus_dmamap_sync(cmd->sc->data_tag, cmd->data_dmamap,
BUS_DMASYNC_PREWRITE);
if (nseg > sc->max_num_sge) {
device_printf(sc->mrsas_dev, "SGE count is too large or 0.\n");
return;
}
io_request = cmd->io_request;
sgl_ptr = (pMpi25IeeeSgeChain64_t)&io_request->SGL;
- if ((sc->device_id == MRSAS_INVADER) || (sc->device_id == MRSAS_FURY)) {
+ if ((sc->device_id == MRSAS_INVADER) ||
+ (sc->device_id == MRSAS_FURY) ||
+ (sc->device_id == MRSAS_INTRUDER) ||
+ (sc->device_id == MRSAS_INTRUDER_24)) {
pMpi25IeeeSgeChain64_t sgl_ptr_end = sgl_ptr;
sgl_ptr_end += sc->max_sge_in_main_msg - 1;
sgl_ptr_end->Flags = 0;
}
if (nseg != 0) {
for (i = 0; i < nseg; i++) {
sgl_ptr->Address = segs[i].ds_addr;
sgl_ptr->Length = segs[i].ds_len;
sgl_ptr->Flags = 0;
- if ((sc->device_id == MRSAS_INVADER) || (sc->device_id == MRSAS_FURY)) {
+ if ((sc->device_id == MRSAS_INVADER) ||
+ (sc->device_id == MRSAS_FURY) ||
+ (sc->device_id == MRSAS_INTRUDER) ||
+ (sc->device_id == MRSAS_INTRUDER_24)) {
if (i == nseg - 1)
sgl_ptr->Flags = IEEE_SGE_FLAGS_END_OF_LIST;
}
sgl_ptr++;
sg_processed = i + 1;
if ((sg_processed == (sc->max_sge_in_main_msg - 1)) &&
(nseg > sc->max_sge_in_main_msg)) {
pMpi25IeeeSgeChain64_t sg_chain;
- if ((sc->device_id == MRSAS_INVADER) || (sc->device_id == MRSAS_FURY)) {
+ if ((sc->device_id == MRSAS_INVADER) ||
+ (sc->device_id == MRSAS_FURY) ||
+ (sc->device_id == MRSAS_INTRUDER) ||
+ (sc->device_id == MRSAS_INTRUDER_24)) {
if ((cmd->io_request->IoFlags & MPI25_SAS_DEVICE0_FLAGS_ENABLED_FAST_PATH)
!= MPI25_SAS_DEVICE0_FLAGS_ENABLED_FAST_PATH)
cmd->io_request->ChainOffset = sc->chain_offset_io_request;
else
cmd->io_request->ChainOffset = 0;
} else
cmd->io_request->ChainOffset = sc->chain_offset_io_request;
sg_chain = sgl_ptr;
- if ((sc->device_id == MRSAS_INVADER) || (sc->device_id == MRSAS_FURY))
+ if ((sc->device_id == MRSAS_INVADER) ||
+ (sc->device_id == MRSAS_FURY) ||
+ (sc->device_id == MRSAS_INTRUDER) ||
+ (sc->device_id == MRSAS_INTRUDER_24))
sg_chain->Flags = IEEE_SGE_FLAGS_CHAIN_ELEMENT;
else
sg_chain->Flags = (IEEE_SGE_FLAGS_CHAIN_ELEMENT | MPI2_IEEE_SGE_FLAGS_IOCPLBNTA_ADDR);
sg_chain->Length = (sizeof(MPI2_SGE_IO_UNION) * (nseg - sg_processed));
sg_chain->Address = cmd->chain_frame_phys_addr;
sgl_ptr = (pMpi25IeeeSgeChain64_t)cmd->chain_frame;
}
}
}
cmd->sge_count = nseg;
}
/*
* mrsas_freeze_simq: Freeze SIM queue
* input: Pointer to command packet
* Pointer to SIM
*
* This function freezes the sim queue.
*/
static void
mrsas_freeze_simq(struct mrsas_mpt_cmd *cmd, struct cam_sim *sim)
{
union ccb *ccb = (union ccb *)(cmd->ccb_ptr);
xpt_freeze_simq(sim, 1);
ccb->ccb_h.status |= CAM_RELEASE_SIMQ;
ccb->ccb_h.status |= CAM_REQUEUE_REQ;
}
void
mrsas_xpt_freeze(struct mrsas_softc *sc)
{
xpt_freeze_simq(sc->sim_0, 1);
xpt_freeze_simq(sc->sim_1, 1);
}
void
mrsas_xpt_release(struct mrsas_softc *sc)
{
xpt_release_simq(sc->sim_0, 1);
xpt_release_simq(sc->sim_1, 1);
}
/*
* mrsas_cmd_done: Perform remaining command completion
* input: Adapter instance soft state Pointer to command packet
*
* This function calls ummap request and releases the MPT command.
*/
void
mrsas_cmd_done(struct mrsas_softc *sc, struct mrsas_mpt_cmd *cmd)
{
callout_stop(&cmd->cm_callout);
mrsas_unmap_request(sc, cmd);
mtx_lock(&sc->sim_lock);
xpt_done(cmd->ccb_ptr);
cmd->ccb_ptr = NULL;
mtx_unlock(&sc->sim_lock);
mrsas_release_mpt_cmd(cmd);
}
/*
* mrsas_cam_poll: Polling entry point
* input: Pointer to SIM
*
* This is currently a stub function.
*/
static void
mrsas_cam_poll(struct cam_sim *sim)
{
+ int i;
struct mrsas_softc *sc = (struct mrsas_softc *)cam_sim_softc(sim);
- mrsas_isr((void *)sc);
+ if (sc->msix_vectors != 0){
+ for (i=0; i<sc->msix_vectors; i++){
+ mrsas_complete_cmd(sc, i);
+ }
+ } else {
+ mrsas_complete_cmd(sc, 0);
+ }
}
/*
* mrsas_bus_scan: Perform bus scan
* input: Adapter instance soft state
*
* This mrsas_bus_scan function is needed for FreeBSD 7.x. Also, it should not
* be called in FreeBSD 8.x and later versions, where the bus scan is
* automatic.
*/
int
mrsas_bus_scan(struct mrsas_softc *sc)
{
union ccb *ccb_0;
union ccb *ccb_1;
if ((ccb_0 = xpt_alloc_ccb()) == NULL) {
return (ENOMEM);
}
if ((ccb_1 = xpt_alloc_ccb()) == NULL) {
xpt_free_ccb(ccb_0);
return (ENOMEM);
}
mtx_lock(&sc->sim_lock);
if (xpt_create_path(&ccb_0->ccb_h.path, xpt_periph, cam_sim_path(sc->sim_0),
CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD) != CAM_REQ_CMP) {
xpt_free_ccb(ccb_0);
xpt_free_ccb(ccb_1);
mtx_unlock(&sc->sim_lock);
return (EIO);
}
if (xpt_create_path(&ccb_1->ccb_h.path, xpt_periph, cam_sim_path(sc->sim_1),
CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD) != CAM_REQ_CMP) {
xpt_free_ccb(ccb_0);
xpt_free_ccb(ccb_1);
mtx_unlock(&sc->sim_lock);
return (EIO);
}
mtx_unlock(&sc->sim_lock);
xpt_rescan(ccb_0);
xpt_rescan(ccb_1);
return (0);
}
/*
* mrsas_bus_scan_sim: Perform bus scan per SIM
* input: adapter instance soft state
*
* This function will be called from Event handler on LD creation/deletion,
* JBOD on/off.
*/
int
mrsas_bus_scan_sim(struct mrsas_softc *sc, struct cam_sim *sim)
{
union ccb *ccb;
if ((ccb = xpt_alloc_ccb()) == NULL) {
return (ENOMEM);
}
mtx_lock(&sc->sim_lock);
if (xpt_create_path(&ccb->ccb_h.path, xpt_periph, cam_sim_path(sim),
CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD) != CAM_REQ_CMP) {
xpt_free_ccb(ccb);
mtx_unlock(&sc->sim_lock);
return (EIO);
}
mtx_unlock(&sc->sim_lock);
xpt_rescan(ccb);
return (0);
}
Index: user/ngie/bsnmp_cleanup/sys/dev/mrsas/mrsas_fp.c
===================================================================
--- user/ngie/bsnmp_cleanup/sys/dev/mrsas/mrsas_fp.c (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/dev/mrsas/mrsas_fp.c (revision 299697)
@@ -1,1554 +1,1557 @@
/*
* Copyright (c) 2015, AVAGO Tech. All rights reserved. Author: Marian Choy
* Copyright (c) 2014, LSI Corp. All rights reserved. Author: Marian Choy
* Support: freebsdraid@avagotech.com
*
* 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. 3. Neither the name of the
* <ORGANIZATION> nor the names of its contributors may be used to endorse or
* promote products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are
* those of the authors and should not be interpreted as representing
* official policies,either expressed or implied, of the FreeBSD Project.
*
* Send feedback to: <megaraidfbsd@avagotech.com> Mail to: AVAGO TECHNOLOGIES, 1621
* Barber Lane, Milpitas, CA 95035 ATTN: MegaRaid FreeBSD
*
*/
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
#include <dev/mrsas/mrsas.h>
#include <cam/cam.h>
#include <cam/cam_ccb.h>
#include <cam/cam_sim.h>
#include <cam/cam_xpt_sim.h>
#include <cam/cam_debug.h>
#include <cam/cam_periph.h>
#include <cam/cam_xpt_periph.h>
/*
* Function prototypes
*/
u_int8_t MR_ValidateMapInfo(struct mrsas_softc *sc);
u_int8_t
mrsas_get_best_arm_pd(struct mrsas_softc *sc,
PLD_LOAD_BALANCE_INFO lbInfo, struct IO_REQUEST_INFO *io_info);
u_int8_t
MR_BuildRaidContext(struct mrsas_softc *sc,
struct IO_REQUEST_INFO *io_info,
RAID_CONTEXT * pRAID_Context, MR_DRV_RAID_MAP_ALL * map);
u_int8_t
MR_GetPhyParams(struct mrsas_softc *sc, u_int32_t ld,
u_int64_t stripRow, u_int16_t stripRef, struct IO_REQUEST_INFO *io_info,
RAID_CONTEXT * pRAID_Context,
MR_DRV_RAID_MAP_ALL * map);
u_int16_t MR_TargetIdToLdGet(u_int32_t ldTgtId, MR_DRV_RAID_MAP_ALL * map);
u_int32_t MR_LdBlockSizeGet(u_int32_t ldTgtId, MR_DRV_RAID_MAP_ALL * map);
u_int16_t MR_GetLDTgtId(u_int32_t ld, MR_DRV_RAID_MAP_ALL * map);
u_int16_t
mrsas_get_updated_dev_handle(struct mrsas_softc *sc,
PLD_LOAD_BALANCE_INFO lbInfo, struct IO_REQUEST_INFO *io_info);
u_int32_t mega_mod64(u_int64_t dividend, u_int32_t divisor);
u_int32_t
MR_GetSpanBlock(u_int32_t ld, u_int64_t row, u_int64_t *span_blk,
MR_DRV_RAID_MAP_ALL * map, int *div_error);
u_int64_t mega_div64_32(u_int64_t dividend, u_int32_t divisor);
void
mrsas_update_load_balance_params(struct mrsas_softc *sc,
MR_DRV_RAID_MAP_ALL * map, PLD_LOAD_BALANCE_INFO lbInfo);
void
mrsas_set_pd_lba(MRSAS_RAID_SCSI_IO_REQUEST * io_request,
u_int8_t cdb_len, struct IO_REQUEST_INFO *io_info, union ccb *ccb,
MR_DRV_RAID_MAP_ALL * local_map_ptr, u_int32_t ref_tag,
u_int32_t ld_block_size);
static u_int16_t
MR_LdSpanArrayGet(u_int32_t ld, u_int32_t span,
MR_DRV_RAID_MAP_ALL * map);
static u_int16_t MR_PdDevHandleGet(u_int32_t pd, MR_DRV_RAID_MAP_ALL * map);
static u_int16_t
MR_ArPdGet(u_int32_t ar, u_int32_t arm,
MR_DRV_RAID_MAP_ALL * map);
static MR_LD_SPAN *
MR_LdSpanPtrGet(u_int32_t ld, u_int32_t span,
MR_DRV_RAID_MAP_ALL * map);
static u_int8_t
MR_LdDataArmGet(u_int32_t ld, u_int32_t armIdx,
MR_DRV_RAID_MAP_ALL * map);
static MR_SPAN_BLOCK_INFO *
MR_LdSpanInfoGet(u_int32_t ld,
MR_DRV_RAID_MAP_ALL * map);
MR_LD_RAID *MR_LdRaidGet(u_int32_t ld, MR_DRV_RAID_MAP_ALL * map);
void MR_PopulateDrvRaidMap(struct mrsas_softc *sc);
/*
* Spanset related function prototypes Added for PRL11 configuration (Uneven
* span support)
*/
void mr_update_span_set(MR_DRV_RAID_MAP_ALL * map, PLD_SPAN_INFO ldSpanInfo);
static u_int8_t
mr_spanset_get_phy_params(struct mrsas_softc *sc, u_int32_t ld,
u_int64_t stripRow, u_int16_t stripRef, struct IO_REQUEST_INFO *io_info,
RAID_CONTEXT * pRAID_Context, MR_DRV_RAID_MAP_ALL * map);
static u_int64_t
get_row_from_strip(struct mrsas_softc *sc, u_int32_t ld,
u_int64_t strip, MR_DRV_RAID_MAP_ALL * map);
static u_int32_t
mr_spanset_get_span_block(struct mrsas_softc *sc,
u_int32_t ld, u_int64_t row, u_int64_t *span_blk,
MR_DRV_RAID_MAP_ALL * map, int *div_error);
static u_int8_t
get_arm(struct mrsas_softc *sc, u_int32_t ld, u_int8_t span,
u_int64_t stripe, MR_DRV_RAID_MAP_ALL * map);
/*
* Spanset related defines Added for PRL11 configuration(Uneven span support)
*/
#define SPAN_ROW_SIZE(map, ld, index_) MR_LdSpanPtrGet(ld, index_, map)->spanRowSize
#define SPAN_ROW_DATA_SIZE(map_, ld, index_) \
MR_LdSpanPtrGet(ld, index_, map)->spanRowDataSize
#define SPAN_INVALID 0xff
#define SPAN_DEBUG 0
/*
* Related Defines
*/
typedef u_int64_t REGION_KEY;
typedef u_int32_t REGION_LEN;
#define MR_LD_STATE_OPTIMAL 3
#define FALSE 0
#define TRUE 1
#define LB_PENDING_CMDS_DEFAULT 4
/*
* Related Macros
*/
#define ABS_DIFF(a,b) ( ((a) > (b)) ? ((a) - (b)) : ((b) - (a)) )
#define swap32(x) \
((unsigned int)( \
(((unsigned int)(x) & (unsigned int)0x000000ffUL) << 24) | \
(((unsigned int)(x) & (unsigned int)0x0000ff00UL) << 8) | \
(((unsigned int)(x) & (unsigned int)0x00ff0000UL) >> 8) | \
(((unsigned int)(x) & (unsigned int)0xff000000UL) >> 24) ))
/*
* In-line functions for mod and divide of 64-bit dividend and 32-bit
* divisor. Assumes a check for a divisor of zero is not possible.
*
* @param dividend: Dividend
* @param divisor: Divisor
* @return remainder
*/
#define mega_mod64(dividend, divisor) ({ \
int remainder; \
remainder = ((u_int64_t) (dividend)) % (u_int32_t) (divisor); \
remainder;})
#define mega_div64_32(dividend, divisor) ({ \
int quotient; \
quotient = ((u_int64_t) (dividend)) / (u_int32_t) (divisor); \
quotient;})
/*
* Various RAID map access functions. These functions access the various
* parts of the RAID map and returns the appropriate parameters.
*/
MR_LD_RAID *
MR_LdRaidGet(u_int32_t ld, MR_DRV_RAID_MAP_ALL * map)
{
return (&map->raidMap.ldSpanMap[ld].ldRaid);
}
u_int16_t
MR_GetLDTgtId(u_int32_t ld, MR_DRV_RAID_MAP_ALL * map)
{
return (map->raidMap.ldSpanMap[ld].ldRaid.targetId);
}
static u_int16_t
MR_LdSpanArrayGet(u_int32_t ld, u_int32_t span, MR_DRV_RAID_MAP_ALL * map)
{
return map->raidMap.ldSpanMap[ld].spanBlock[span].span.arrayRef;
}
static u_int8_t
MR_LdDataArmGet(u_int32_t ld, u_int32_t armIdx, MR_DRV_RAID_MAP_ALL * map)
{
return map->raidMap.ldSpanMap[ld].dataArmMap[armIdx];
}
static u_int16_t
MR_PdDevHandleGet(u_int32_t pd, MR_DRV_RAID_MAP_ALL * map)
{
return map->raidMap.devHndlInfo[pd].curDevHdl;
}
static u_int16_t
MR_ArPdGet(u_int32_t ar, u_int32_t arm, MR_DRV_RAID_MAP_ALL * map)
{
return map->raidMap.arMapInfo[ar].pd[arm];
}
static MR_LD_SPAN *
MR_LdSpanPtrGet(u_int32_t ld, u_int32_t span, MR_DRV_RAID_MAP_ALL * map)
{
return &map->raidMap.ldSpanMap[ld].spanBlock[span].span;
}
static MR_SPAN_BLOCK_INFO *
MR_LdSpanInfoGet(u_int32_t ld, MR_DRV_RAID_MAP_ALL * map)
{
return &map->raidMap.ldSpanMap[ld].spanBlock[0];
}
u_int16_t
MR_TargetIdToLdGet(u_int32_t ldTgtId, MR_DRV_RAID_MAP_ALL * map)
{
return map->raidMap.ldTgtIdToLd[ldTgtId];
}
u_int32_t
MR_LdBlockSizeGet(u_int32_t ldTgtId, MR_DRV_RAID_MAP_ALL * map)
{
MR_LD_RAID *raid;
u_int32_t ld, ldBlockSize = MRSAS_SCSIBLOCKSIZE;
ld = MR_TargetIdToLdGet(ldTgtId, map);
/*
* Check if logical drive was removed.
*/
if (ld >= MAX_LOGICAL_DRIVES)
return ldBlockSize;
raid = MR_LdRaidGet(ld, map);
ldBlockSize = raid->logicalBlockLength;
if (!ldBlockSize)
ldBlockSize = MRSAS_SCSIBLOCKSIZE;
return ldBlockSize;
}
/*
* This function will Populate Driver Map using firmware raid map
*/
void
MR_PopulateDrvRaidMap(struct mrsas_softc *sc)
{
MR_FW_RAID_MAP_ALL *fw_map_old = NULL;
MR_FW_RAID_MAP *pFwRaidMap = NULL;
unsigned int i;
MR_DRV_RAID_MAP_ALL *drv_map = sc->ld_drv_map[(sc->map_id & 1)];
MR_DRV_RAID_MAP *pDrvRaidMap = &drv_map->raidMap;
if (sc->max256vdSupport) {
memcpy(sc->ld_drv_map[sc->map_id & 1],
sc->raidmap_mem[sc->map_id & 1],
sc->current_map_sz);
/*
* New Raid map will not set totalSize, so keep expected
* value for legacy code in ValidateMapInfo
*/
pDrvRaidMap->totalSize = sizeof(MR_FW_RAID_MAP_EXT);
} else {
fw_map_old = (MR_FW_RAID_MAP_ALL *) sc->raidmap_mem[(sc->map_id & 1)];
pFwRaidMap = &fw_map_old->raidMap;
#if VD_EXT_DEBUG
for (i = 0; i < pFwRaidMap->ldCount; i++) {
device_printf(sc->mrsas_dev,
"Index 0x%x Target Id 0x%x Seq Num 0x%x Size 0/%lx\n", i,
fw_map_old->raidMap.ldSpanMap[i].ldRaid.targetId,
fw_map_old->raidMap.ldSpanMap[i].ldRaid.seqNum,
fw_map_old->raidMap.ldSpanMap[i].ldRaid.size);
}
#endif
memset(drv_map, 0, sc->drv_map_sz);
pDrvRaidMap->totalSize = pFwRaidMap->totalSize;
pDrvRaidMap->ldCount = pFwRaidMap->ldCount;
pDrvRaidMap->fpPdIoTimeoutSec =
pFwRaidMap->fpPdIoTimeoutSec;
for (i = 0; i < MAX_RAIDMAP_LOGICAL_DRIVES + MAX_RAIDMAP_VIEWS; i++) {
pDrvRaidMap->ldTgtIdToLd[i] =
(u_int8_t)pFwRaidMap->ldTgtIdToLd[i];
}
for (i = 0; i < pDrvRaidMap->ldCount; i++) {
pDrvRaidMap->ldSpanMap[i] =
pFwRaidMap->ldSpanMap[i];
#if VD_EXT_DEBUG
device_printf(sc->mrsas_dev, "pFwRaidMap->ldSpanMap[%d].ldRaid.targetId 0x%x "
"pFwRaidMap->ldSpanMap[%d].ldRaid.seqNum 0x%x size 0x%x\n",
i, i, pFwRaidMap->ldSpanMap[i].ldRaid.targetId,
pFwRaidMap->ldSpanMap[i].ldRaid.seqNum,
(u_int32_t)pFwRaidMap->ldSpanMap[i].ldRaid.rowSize);
device_printf(sc->mrsas_dev, "pDrvRaidMap->ldSpanMap[%d].ldRaid.targetId 0x%x"
"pDrvRaidMap->ldSpanMap[%d].ldRaid.seqNum 0x%x size 0x%x\n", i, i,
pDrvRaidMap->ldSpanMap[i].ldRaid.targetId,
pDrvRaidMap->ldSpanMap[i].ldRaid.seqNum,
(u_int32_t)pDrvRaidMap->ldSpanMap[i].ldRaid.rowSize);
device_printf(sc->mrsas_dev, "drv raid map all %p raid map %p LD RAID MAP %p/%p\n",
drv_map, pDrvRaidMap,
&pFwRaidMap->ldSpanMap[i].ldRaid, &pDrvRaidMap->ldSpanMap[i].ldRaid);
#endif
}
memcpy(pDrvRaidMap->arMapInfo, pFwRaidMap->arMapInfo,
sizeof(MR_ARRAY_INFO) * MAX_RAIDMAP_ARRAYS);
memcpy(pDrvRaidMap->devHndlInfo, pFwRaidMap->devHndlInfo,
sizeof(MR_DEV_HANDLE_INFO) *
MAX_RAIDMAP_PHYSICAL_DEVICES);
}
}
/*
* MR_ValidateMapInfo: Validate RAID map
* input: Adapter instance soft state
*
* This function checks and validates the loaded RAID map. It returns 0 if
* successful, and 1 otherwise.
*/
u_int8_t
MR_ValidateMapInfo(struct mrsas_softc *sc)
{
if (!sc) {
return 1;
}
MR_PopulateDrvRaidMap(sc);
MR_DRV_RAID_MAP_ALL *drv_map = sc->ld_drv_map[(sc->map_id & 1)];
MR_DRV_RAID_MAP *pDrvRaidMap = &drv_map->raidMap;
u_int32_t expected_map_size;
drv_map = sc->ld_drv_map[(sc->map_id & 1)];
pDrvRaidMap = &drv_map->raidMap;
PLD_SPAN_INFO ldSpanInfo = (PLD_SPAN_INFO) & sc->log_to_span;
if (sc->max256vdSupport)
expected_map_size = sizeof(MR_FW_RAID_MAP_EXT);
else
expected_map_size =
(sizeof(MR_FW_RAID_MAP) - sizeof(MR_LD_SPAN_MAP)) +
(sizeof(MR_LD_SPAN_MAP) * pDrvRaidMap->ldCount);
if (pDrvRaidMap->totalSize != expected_map_size) {
device_printf(sc->mrsas_dev, "map size %x not matching ld count\n", expected_map_size);
device_printf(sc->mrsas_dev, "span map= %x\n", (unsigned int)sizeof(MR_LD_SPAN_MAP));
device_printf(sc->mrsas_dev, "pDrvRaidMap->totalSize=%x\n", pDrvRaidMap->totalSize);
return 1;
}
if (sc->UnevenSpanSupport) {
mr_update_span_set(drv_map, ldSpanInfo);
}
mrsas_update_load_balance_params(sc, drv_map, sc->load_balance_info);
return 0;
}
/*
*
* Function to print info about span set created in driver from FW raid map
*
* Inputs: map
* ldSpanInfo: ld map span info per HBA instance
*
*
*/
#if SPAN_DEBUG
static int
getSpanInfo(MR_DRV_RAID_MAP_ALL * map, PLD_SPAN_INFO ldSpanInfo)
{
u_int8_t span;
u_int32_t element;
MR_LD_RAID *raid;
LD_SPAN_SET *span_set;
MR_QUAD_ELEMENT *quad;
int ldCount;
u_int16_t ld;
for (ldCount = 0; ldCount < MAX_LOGICAL_DRIVES; ldCount++) {
ld = MR_TargetIdToLdGet(ldCount, map);
if (ld >= MAX_LOGICAL_DRIVES) {
continue;
}
raid = MR_LdRaidGet(ld, map);
printf("LD %x: span_depth=%x\n", ld, raid->spanDepth);
for (span = 0; span < raid->spanDepth; span++)
printf("Span=%x, number of quads=%x\n", span,
map->raidMap.ldSpanMap[ld].spanBlock[span].
block_span_info.noElements);
for (element = 0; element < MAX_QUAD_DEPTH; element++) {
span_set = &(ldSpanInfo[ld].span_set[element]);
if (span_set->span_row_data_width == 0)
break;
printf("Span Set %x: width=%x, diff=%x\n", element,
(unsigned int)span_set->span_row_data_width,
(unsigned int)span_set->diff);
printf("logical LBA start=0x%08lx, end=0x%08lx\n",
(long unsigned int)span_set->log_start_lba,
(long unsigned int)span_set->log_end_lba);
printf("span row start=0x%08lx, end=0x%08lx\n",
(long unsigned int)span_set->span_row_start,
(long unsigned int)span_set->span_row_end);
printf("data row start=0x%08lx, end=0x%08lx\n",
(long unsigned int)span_set->data_row_start,
(long unsigned int)span_set->data_row_end);
printf("data strip start=0x%08lx, end=0x%08lx\n",
(long unsigned int)span_set->data_strip_start,
(long unsigned int)span_set->data_strip_end);
for (span = 0; span < raid->spanDepth; span++) {
if (map->raidMap.ldSpanMap[ld].spanBlock[span].
block_span_info.noElements >= element + 1) {
quad = &map->raidMap.ldSpanMap[ld].
spanBlock[span].block_span_info.
quad[element];
printf("Span=%x, Quad=%x, diff=%x\n", span,
element, quad->diff);
printf("offset_in_span=0x%08lx\n",
(long unsigned int)quad->offsetInSpan);
printf("logical start=0x%08lx, end=0x%08lx\n",
(long unsigned int)quad->logStart,
(long unsigned int)quad->logEnd);
}
}
}
}
return 0;
}
#endif
/*
*
* This routine calculates the Span block for given row using spanset.
*
* Inputs : HBA instance
* ld: Logical drive number
* row: Row number
* map: LD map
*
* Outputs : span - Span number block
* - Absolute Block number in the physical disk
* div_error - Devide error code.
*/
u_int32_t
mr_spanset_get_span_block(struct mrsas_softc *sc, u_int32_t ld, u_int64_t row,
u_int64_t *span_blk, MR_DRV_RAID_MAP_ALL * map, int *div_error)
{
MR_LD_RAID *raid = MR_LdRaidGet(ld, map);
LD_SPAN_SET *span_set;
MR_QUAD_ELEMENT *quad;
u_int32_t span, info;
PLD_SPAN_INFO ldSpanInfo = sc->log_to_span;
for (info = 0; info < MAX_QUAD_DEPTH; info++) {
span_set = &(ldSpanInfo[ld].span_set[info]);
if (span_set->span_row_data_width == 0)
break;
if (row > span_set->data_row_end)
continue;
for (span = 0; span < raid->spanDepth; span++)
if (map->raidMap.ldSpanMap[ld].spanBlock[span].
block_span_info.noElements >= info + 1) {
quad = &map->raidMap.ldSpanMap[ld].
spanBlock[span].
block_span_info.quad[info];
if (quad->diff == 0) {
*div_error = 1;
return span;
}
if (quad->logStart <= row &&
row <= quad->logEnd &&
(mega_mod64(row - quad->logStart,
quad->diff)) == 0) {
if (span_blk != NULL) {
u_int64_t blk;
blk = mega_div64_32
((row - quad->logStart),
quad->diff);
blk = (blk + quad->offsetInSpan)
<< raid->stripeShift;
*span_blk = blk;
}
return span;
}
}
}
return SPAN_INVALID;
}
/*
*
* This routine calculates the row for given strip using spanset.
*
* Inputs : HBA instance
* ld: Logical drive number
* Strip: Strip
* map: LD map
*
* Outputs : row - row associated with strip
*/
static u_int64_t
get_row_from_strip(struct mrsas_softc *sc,
u_int32_t ld, u_int64_t strip, MR_DRV_RAID_MAP_ALL * map)
{
MR_LD_RAID *raid = MR_LdRaidGet(ld, map);
LD_SPAN_SET *span_set;
PLD_SPAN_INFO ldSpanInfo = sc->log_to_span;
u_int32_t info, strip_offset, span, span_offset;
u_int64_t span_set_Strip, span_set_Row;
for (info = 0; info < MAX_QUAD_DEPTH; info++) {
span_set = &(ldSpanInfo[ld].span_set[info]);
if (span_set->span_row_data_width == 0)
break;
if (strip > span_set->data_strip_end)
continue;
span_set_Strip = strip - span_set->data_strip_start;
strip_offset = mega_mod64(span_set_Strip,
span_set->span_row_data_width);
span_set_Row = mega_div64_32(span_set_Strip,
span_set->span_row_data_width) * span_set->diff;
for (span = 0, span_offset = 0; span < raid->spanDepth; span++)
if (map->raidMap.ldSpanMap[ld].spanBlock[span].
block_span_info.noElements >= info + 1) {
if (strip_offset >=
span_set->strip_offset[span])
span_offset++;
else
break;
}
mrsas_dprint(sc, MRSAS_PRL11, "AVAGO Debug : Strip 0x%llx, span_set_Strip 0x%llx, span_set_Row 0x%llx "
"data width 0x%llx span offset 0x%llx\n", (unsigned long long)strip,
(unsigned long long)span_set_Strip,
(unsigned long long)span_set_Row,
(unsigned long long)span_set->span_row_data_width, (unsigned long long)span_offset);
mrsas_dprint(sc, MRSAS_PRL11, "AVAGO Debug : For strip 0x%llx row is 0x%llx\n", (unsigned long long)strip,
(unsigned long long)span_set->data_row_start +
(unsigned long long)span_set_Row + (span_offset - 1));
return (span_set->data_row_start + span_set_Row + (span_offset - 1));
}
return -1LLU;
}
/*
*
* This routine calculates the Start Strip for given row using spanset.
*
* Inputs: HBA instance
* ld: Logical drive number
* row: Row number
* map: LD map
*
* Outputs : Strip - Start strip associated with row
*/
static u_int64_t
get_strip_from_row(struct mrsas_softc *sc,
u_int32_t ld, u_int64_t row, MR_DRV_RAID_MAP_ALL * map)
{
MR_LD_RAID *raid = MR_LdRaidGet(ld, map);
LD_SPAN_SET *span_set;
MR_QUAD_ELEMENT *quad;
PLD_SPAN_INFO ldSpanInfo = sc->log_to_span;
u_int32_t span, info;
u_int64_t strip;
for (info = 0; info < MAX_QUAD_DEPTH; info++) {
span_set = &(ldSpanInfo[ld].span_set[info]);
if (span_set->span_row_data_width == 0)
break;
if (row > span_set->data_row_end)
continue;
for (span = 0; span < raid->spanDepth; span++)
if (map->raidMap.ldSpanMap[ld].spanBlock[span].
block_span_info.noElements >= info + 1) {
quad = &map->raidMap.ldSpanMap[ld].
spanBlock[span].block_span_info.quad[info];
if (quad->logStart <= row &&
row <= quad->logEnd &&
mega_mod64((row - quad->logStart),
quad->diff) == 0) {
strip = mega_div64_32
(((row - span_set->data_row_start)
- quad->logStart),
quad->diff);
strip *= span_set->span_row_data_width;
strip += span_set->data_strip_start;
strip += span_set->strip_offset[span];
return strip;
}
}
}
mrsas_dprint(sc, MRSAS_PRL11, "AVAGO Debug - get_strip_from_row: returns invalid "
"strip for ld=%x, row=%lx\n", ld, (long unsigned int)row);
return -1;
}
/*
* *****************************************************************************
*
*
* This routine calculates the Physical Arm for given strip using spanset.
*
* Inputs : HBA instance
* Logical drive number
* Strip
* LD map
*
* Outputs : Phys Arm - Phys Arm associated with strip
*/
static u_int32_t
get_arm_from_strip(struct mrsas_softc *sc,
u_int32_t ld, u_int64_t strip, MR_DRV_RAID_MAP_ALL * map)
{
MR_LD_RAID *raid = MR_LdRaidGet(ld, map);
LD_SPAN_SET *span_set;
PLD_SPAN_INFO ldSpanInfo = sc->log_to_span;
u_int32_t info, strip_offset, span, span_offset;
for (info = 0; info < MAX_QUAD_DEPTH; info++) {
span_set = &(ldSpanInfo[ld].span_set[info]);
if (span_set->span_row_data_width == 0)
break;
if (strip > span_set->data_strip_end)
continue;
strip_offset = (u_int32_t)mega_mod64
((strip - span_set->data_strip_start),
span_set->span_row_data_width);
for (span = 0, span_offset = 0; span < raid->spanDepth; span++)
if (map->raidMap.ldSpanMap[ld].spanBlock[span].
block_span_info.noElements >= info + 1) {
if (strip_offset >= span_set->strip_offset[span])
span_offset = span_set->strip_offset[span];
else
break;
}
mrsas_dprint(sc, MRSAS_PRL11, "AVAGO PRL11: get_arm_from_strip: "
"for ld=0x%x strip=0x%lx arm is 0x%x\n", ld,
(long unsigned int)strip, (strip_offset - span_offset));
return (strip_offset - span_offset);
}
mrsas_dprint(sc, MRSAS_PRL11, "AVAGO Debug: - get_arm_from_strip: returns invalid arm"
" for ld=%x strip=%lx\n", ld, (long unsigned int)strip);
return -1;
}
/* This Function will return Phys arm */
u_int8_t
get_arm(struct mrsas_softc *sc, u_int32_t ld, u_int8_t span, u_int64_t stripe,
MR_DRV_RAID_MAP_ALL * map)
{
MR_LD_RAID *raid = MR_LdRaidGet(ld, map);
/* Need to check correct default value */
u_int32_t arm = 0;
switch (raid->level) {
case 0:
case 5:
case 6:
arm = mega_mod64(stripe, SPAN_ROW_SIZE(map, ld, span));
break;
case 1:
/* start with logical arm */
arm = get_arm_from_strip(sc, ld, stripe, map);
arm *= 2;
break;
}
return arm;
}
/*
*
* This routine calculates the arm, span and block for the specified stripe and
* reference in stripe using spanset
*
* Inputs :
* sc - HBA instance
* ld - Logical drive number
* stripRow: Stripe number
* stripRef: Reference in stripe
*
* Outputs : span - Span number block - Absolute Block
* number in the physical disk
*/
static u_int8_t
mr_spanset_get_phy_params(struct mrsas_softc *sc, u_int32_t ld, u_int64_t stripRow,
u_int16_t stripRef, struct IO_REQUEST_INFO *io_info,
RAID_CONTEXT * pRAID_Context, MR_DRV_RAID_MAP_ALL * map)
{
MR_LD_RAID *raid = MR_LdRaidGet(ld, map);
u_int32_t pd, arRef;
u_int8_t physArm, span;
u_int64_t row;
u_int8_t retval = TRUE;
u_int64_t *pdBlock = &io_info->pdBlock;
u_int16_t *pDevHandle = &io_info->devHandle;
u_int32_t logArm, rowMod, armQ, arm;
u_int8_t do_invader = 0;
- if ((sc->device_id == MRSAS_INVADER) || (sc->device_id == MRSAS_FURY))
+ if ((sc->device_id == MRSAS_INVADER) ||
+ (sc->device_id == MRSAS_FURY) ||
+ (sc->device_id == MRSAS_INTRUDER) ||
+ (sc->device_id == MRSAS_INTRUDER_24))
do_invader = 1;
/* Get row and span from io_info for Uneven Span IO. */
row = io_info->start_row;
span = io_info->start_span;
if (raid->level == 6) {
logArm = get_arm_from_strip(sc, ld, stripRow, map);
rowMod = mega_mod64(row, SPAN_ROW_SIZE(map, ld, span));
armQ = SPAN_ROW_SIZE(map, ld, span) - 1 - rowMod;
arm = armQ + 1 + logArm;
if (arm >= SPAN_ROW_SIZE(map, ld, span))
arm -= SPAN_ROW_SIZE(map, ld, span);
physArm = (u_int8_t)arm;
} else
/* Calculate the arm */
physArm = get_arm(sc, ld, span, stripRow, map);
arRef = MR_LdSpanArrayGet(ld, span, map);
pd = MR_ArPdGet(arRef, physArm, map);
if (pd != MR_PD_INVALID)
*pDevHandle = MR_PdDevHandleGet(pd, map);
else {
*pDevHandle = MR_PD_INVALID;
if ((raid->level >= 5) && ((!do_invader) || (do_invader &&
raid->regTypeReqOnRead != REGION_TYPE_UNUSED)))
pRAID_Context->regLockFlags = REGION_TYPE_EXCLUSIVE;
else if (raid->level == 1) {
pd = MR_ArPdGet(arRef, physArm + 1, map);
if (pd != MR_PD_INVALID)
*pDevHandle = MR_PdDevHandleGet(pd, map);
}
}
*pdBlock += stripRef + MR_LdSpanPtrGet(ld, span, map)->startBlk;
pRAID_Context->spanArm = (span << RAID_CTX_SPANARM_SPAN_SHIFT) | physArm;
io_info->span_arm = pRAID_Context->spanArm;
return retval;
}
/*
* MR_BuildRaidContext: Set up Fast path RAID context
*
* This function will initiate command processing. The start/end row and strip
* information is calculated then the lock is acquired. This function will
* return 0 if region lock was acquired OR return num strips.
*/
u_int8_t
MR_BuildRaidContext(struct mrsas_softc *sc, struct IO_REQUEST_INFO *io_info,
RAID_CONTEXT * pRAID_Context, MR_DRV_RAID_MAP_ALL * map)
{
MR_LD_RAID *raid;
u_int32_t ld, stripSize, stripe_mask;
u_int64_t endLba, endStrip, endRow, start_row, start_strip;
REGION_KEY regStart;
REGION_LEN regSize;
u_int8_t num_strips, numRows;
u_int16_t ref_in_start_stripe, ref_in_end_stripe;
u_int64_t ldStartBlock;
u_int32_t numBlocks, ldTgtId;
u_int8_t isRead, stripIdx;
u_int8_t retval = 0;
u_int8_t startlba_span = SPAN_INVALID;
u_int64_t *pdBlock = &io_info->pdBlock;
int error_code = 0;
ldStartBlock = io_info->ldStartBlock;
numBlocks = io_info->numBlocks;
ldTgtId = io_info->ldTgtId;
isRead = io_info->isRead;
io_info->IoforUnevenSpan = 0;
io_info->start_span = SPAN_INVALID;
ld = MR_TargetIdToLdGet(ldTgtId, map);
raid = MR_LdRaidGet(ld, map);
if (raid->rowDataSize == 0) {
if (MR_LdSpanPtrGet(ld, 0, map)->spanRowDataSize == 0)
return FALSE;
else if (sc->UnevenSpanSupport) {
io_info->IoforUnevenSpan = 1;
} else {
mrsas_dprint(sc, MRSAS_PRL11, "AVAGO Debug: raid->rowDataSize is 0, but has SPAN[0] rowDataSize = 0x%0x,"
" but there is _NO_ UnevenSpanSupport\n",
MR_LdSpanPtrGet(ld, 0, map)->spanRowDataSize);
return FALSE;
}
}
stripSize = 1 << raid->stripeShift;
stripe_mask = stripSize - 1;
/*
* calculate starting row and stripe, and number of strips and rows
*/
start_strip = ldStartBlock >> raid->stripeShift;
ref_in_start_stripe = (u_int16_t)(ldStartBlock & stripe_mask);
endLba = ldStartBlock + numBlocks - 1;
ref_in_end_stripe = (u_int16_t)(endLba & stripe_mask);
endStrip = endLba >> raid->stripeShift;
num_strips = (u_int8_t)(endStrip - start_strip + 1); /* End strip */
if (io_info->IoforUnevenSpan) {
start_row = get_row_from_strip(sc, ld, start_strip, map);
endRow = get_row_from_strip(sc, ld, endStrip, map);
if (raid->spanDepth == 1) {
startlba_span = 0;
*pdBlock = start_row << raid->stripeShift;
} else {
startlba_span = (u_int8_t)mr_spanset_get_span_block(sc, ld, start_row,
pdBlock, map, &error_code);
if (error_code == 1) {
mrsas_dprint(sc, MRSAS_PRL11, "AVAGO Debug: return from %s %d. Send IO w/o region lock.\n",
__func__, __LINE__);
return FALSE;
}
}
if (startlba_span == SPAN_INVALID) {
mrsas_dprint(sc, MRSAS_PRL11, "AVAGO Debug: return from %s %d for row 0x%llx,"
"start strip %llx endSrip %llx\n", __func__,
__LINE__, (unsigned long long)start_row,
(unsigned long long)start_strip,
(unsigned long long)endStrip);
return FALSE;
}
io_info->start_span = startlba_span;
io_info->start_row = start_row;
mrsas_dprint(sc, MRSAS_PRL11, "AVAGO Debug: Check Span number from %s %d for row 0x%llx, "
" start strip 0x%llx endSrip 0x%llx span 0x%x\n",
__func__, __LINE__, (unsigned long long)start_row,
(unsigned long long)start_strip,
(unsigned long long)endStrip, startlba_span);
mrsas_dprint(sc, MRSAS_PRL11, "AVAGO Debug : 1. start_row 0x%llx endRow 0x%llx Start span 0x%x\n",
(unsigned long long)start_row, (unsigned long long)endRow, startlba_span);
} else {
start_row = mega_div64_32(start_strip, raid->rowDataSize);
endRow = mega_div64_32(endStrip, raid->rowDataSize);
}
numRows = (u_int8_t)(endRow - start_row + 1); /* get the row count */
/*
* Calculate region info. (Assume region at start of first row, and
* assume this IO needs the full row - will adjust if not true.)
*/
regStart = start_row << raid->stripeShift;
regSize = stripSize;
/* Check if we can send this I/O via FastPath */
if (raid->capability.fpCapable) {
if (isRead)
io_info->fpOkForIo = (raid->capability.fpReadCapable &&
((num_strips == 1) ||
raid->capability.fpReadAcrossStripe));
else
io_info->fpOkForIo = (raid->capability.fpWriteCapable &&
((num_strips == 1) ||
raid->capability.fpWriteAcrossStripe));
} else
io_info->fpOkForIo = FALSE;
if (numRows == 1) {
if (num_strips == 1) {
regStart += ref_in_start_stripe;
regSize = numBlocks;
}
} else if (io_info->IoforUnevenSpan == 0) {
/*
* For Even span region lock optimization. If the start strip
* is the last in the start row
*/
if (start_strip == (start_row + 1) * raid->rowDataSize - 1) {
regStart += ref_in_start_stripe;
/*
* initialize count to sectors from startRef to end
* of strip
*/
regSize = stripSize - ref_in_start_stripe;
}
/* add complete rows in the middle of the transfer */
if (numRows > 2)
regSize += (numRows - 2) << raid->stripeShift;
/* if IO ends within first strip of last row */
if (endStrip == endRow * raid->rowDataSize)
regSize += ref_in_end_stripe + 1;
else
regSize += stripSize;
} else {
if (start_strip == (get_strip_from_row(sc, ld, start_row, map) +
SPAN_ROW_DATA_SIZE(map, ld, startlba_span) - 1)) {
regStart += ref_in_start_stripe;
/*
* initialize count to sectors from startRef to end
* of strip
*/
regSize = stripSize - ref_in_start_stripe;
}
/* add complete rows in the middle of the transfer */
if (numRows > 2)
regSize += (numRows - 2) << raid->stripeShift;
/* if IO ends within first strip of last row */
if (endStrip == get_strip_from_row(sc, ld, endRow, map))
regSize += ref_in_end_stripe + 1;
else
regSize += stripSize;
}
pRAID_Context->timeoutValue = map->raidMap.fpPdIoTimeoutSec;
- if ((sc->device_id == MRSAS_INVADER) || (sc->device_id == MRSAS_FURY))
+ if ((sc->device_id == MRSAS_INVADER) ||
+ (sc->device_id == MRSAS_FURY) ||
+ (sc->device_id == MRSAS_INTRUDER) ||
+ (sc->device_id == MRSAS_INTRUDER_24))
pRAID_Context->regLockFlags = (isRead) ? raid->regTypeReqOnRead : raid->regTypeReqOnWrite;
else
pRAID_Context->regLockFlags = (isRead) ? REGION_TYPE_SHARED_READ : raid->regTypeReqOnWrite;
pRAID_Context->VirtualDiskTgtId = raid->targetId;
pRAID_Context->regLockRowLBA = regStart;
pRAID_Context->regLockLength = regSize;
pRAID_Context->configSeqNum = raid->seqNum;
/*
* Get Phy Params only if FP capable, or else leave it to MR firmware
* to do the calculation.
*/
if (io_info->fpOkForIo) {
retval = io_info->IoforUnevenSpan ?
mr_spanset_get_phy_params(sc, ld, start_strip,
ref_in_start_stripe, io_info, pRAID_Context, map) :
MR_GetPhyParams(sc, ld, start_strip,
ref_in_start_stripe, io_info, pRAID_Context, map);
/* If IO on an invalid Pd, then FP is not possible */
if (io_info->devHandle == MR_PD_INVALID)
io_info->fpOkForIo = FALSE;
return retval;
} else if (isRead) {
for (stripIdx = 0; stripIdx < num_strips; stripIdx++) {
retval = io_info->IoforUnevenSpan ?
mr_spanset_get_phy_params(sc, ld, start_strip + stripIdx,
ref_in_start_stripe, io_info, pRAID_Context, map) :
MR_GetPhyParams(sc, ld, start_strip + stripIdx,
ref_in_start_stripe, io_info, pRAID_Context, map);
if (!retval)
return TRUE;
}
}
#if SPAN_DEBUG
/* Just for testing what arm we get for strip. */
get_arm_from_strip(sc, ld, start_strip, map);
#endif
return TRUE;
}
/*
*
* This routine pepare spanset info from Valid Raid map and store it into local
* copy of ldSpanInfo per instance data structure.
*
* Inputs : LD map
* ldSpanInfo per HBA instance
*
*/
void
mr_update_span_set(MR_DRV_RAID_MAP_ALL * map, PLD_SPAN_INFO ldSpanInfo)
{
u_int8_t span, count;
u_int32_t element, span_row_width;
u_int64_t span_row;
MR_LD_RAID *raid;
LD_SPAN_SET *span_set, *span_set_prev;
MR_QUAD_ELEMENT *quad;
int ldCount;
u_int16_t ld;
for (ldCount = 0; ldCount < MAX_LOGICAL_DRIVES; ldCount++) {
ld = MR_TargetIdToLdGet(ldCount, map);
if (ld >= MAX_LOGICAL_DRIVES)
continue;
raid = MR_LdRaidGet(ld, map);
for (element = 0; element < MAX_QUAD_DEPTH; element++) {
for (span = 0; span < raid->spanDepth; span++) {
if (map->raidMap.ldSpanMap[ld].spanBlock[span].
block_span_info.noElements < element + 1)
continue;
/* TO-DO */
span_set = &(ldSpanInfo[ld].span_set[element]);
quad = &map->raidMap.ldSpanMap[ld].
spanBlock[span].block_span_info.quad[element];
span_set->diff = quad->diff;
for (count = 0, span_row_width = 0;
count < raid->spanDepth; count++) {
if (map->raidMap.ldSpanMap[ld].spanBlock[count].
block_span_info.noElements >= element + 1) {
span_set->strip_offset[count] = span_row_width;
span_row_width +=
MR_LdSpanPtrGet(ld, count, map)->spanRowDataSize;
#if SPAN_DEBUG
printf("AVAGO Debug span %x rowDataSize %x\n", count,
MR_LdSpanPtrGet(ld, count, map)->spanRowDataSize);
#endif
}
}
span_set->span_row_data_width = span_row_width;
span_row = mega_div64_32(((quad->logEnd -
quad->logStart) + quad->diff), quad->diff);
if (element == 0) {
span_set->log_start_lba = 0;
span_set->log_end_lba =
((span_row << raid->stripeShift) * span_row_width) - 1;
span_set->span_row_start = 0;
span_set->span_row_end = span_row - 1;
span_set->data_strip_start = 0;
span_set->data_strip_end = (span_row * span_row_width) - 1;
span_set->data_row_start = 0;
span_set->data_row_end = (span_row * quad->diff) - 1;
} else {
span_set_prev = &(ldSpanInfo[ld].span_set[element - 1]);
span_set->log_start_lba = span_set_prev->log_end_lba + 1;
span_set->log_end_lba = span_set->log_start_lba +
((span_row << raid->stripeShift) * span_row_width) - 1;
span_set->span_row_start = span_set_prev->span_row_end + 1;
span_set->span_row_end =
span_set->span_row_start + span_row - 1;
span_set->data_strip_start =
span_set_prev->data_strip_end + 1;
span_set->data_strip_end = span_set->data_strip_start +
(span_row * span_row_width) - 1;
span_set->data_row_start = span_set_prev->data_row_end + 1;
span_set->data_row_end = span_set->data_row_start +
(span_row * quad->diff) - 1;
}
break;
}
if (span == raid->spanDepth)
break; /* no quads remain */
}
}
#if SPAN_DEBUG
getSpanInfo(map, ldSpanInfo); /* to get span set info */
#endif
}
/*
* mrsas_update_load_balance_params: Update load balance parmas
* Inputs:
* sc - driver softc instance
* drv_map - driver RAID map
* lbInfo - Load balance info
*
* This function updates the load balance parameters for the LD config of a two
* drive optimal RAID-1.
*/
void
mrsas_update_load_balance_params(struct mrsas_softc *sc,
MR_DRV_RAID_MAP_ALL * drv_map, PLD_LOAD_BALANCE_INFO lbInfo)
{
int ldCount;
u_int16_t ld;
MR_LD_RAID *raid;
if (sc->lb_pending_cmds > 128 || sc->lb_pending_cmds < 1)
sc->lb_pending_cmds = LB_PENDING_CMDS_DEFAULT;
for (ldCount = 0; ldCount < MAX_LOGICAL_DRIVES_EXT; ldCount++) {
ld = MR_TargetIdToLdGet(ldCount, drv_map);
if (ld >= MAX_LOGICAL_DRIVES_EXT) {
lbInfo[ldCount].loadBalanceFlag = 0;
continue;
}
raid = MR_LdRaidGet(ld, drv_map);
if ((raid->level != 1) ||
(raid->ldState != MR_LD_STATE_OPTIMAL)) {
lbInfo[ldCount].loadBalanceFlag = 0;
continue;
}
lbInfo[ldCount].loadBalanceFlag = 1;
}
}
/*
* mrsas_set_pd_lba: Sets PD LBA
* input: io_request pointer
* CDB length
* io_info pointer
* Pointer to CCB
* Local RAID map pointer
* Start block of IO Block Size
*
* Used to set the PD logical block address in CDB for FP IOs.
*/
void
mrsas_set_pd_lba(MRSAS_RAID_SCSI_IO_REQUEST * io_request, u_int8_t cdb_len,
struct IO_REQUEST_INFO *io_info, union ccb *ccb,
MR_DRV_RAID_MAP_ALL * local_map_ptr, u_int32_t ref_tag,
u_int32_t ld_block_size)
{
MR_LD_RAID *raid;
u_int32_t ld;
u_int64_t start_blk = io_info->pdBlock;
u_int8_t *cdb = io_request->CDB.CDB32;
u_int32_t num_blocks = io_info->numBlocks;
u_int8_t opcode = 0, flagvals = 0, groupnum = 0, control = 0;
struct ccb_hdr *ccb_h = &(ccb->ccb_h);
/* Check if T10 PI (DIF) is enabled for this LD */
ld = MR_TargetIdToLdGet(io_info->ldTgtId, local_map_ptr);
raid = MR_LdRaidGet(ld, local_map_ptr);
if (raid->capability.ldPiMode == MR_PROT_INFO_TYPE_CONTROLLER) {
memset(cdb, 0, sizeof(io_request->CDB.CDB32));
cdb[0] = MRSAS_SCSI_VARIABLE_LENGTH_CMD;
cdb[7] = MRSAS_SCSI_ADDL_CDB_LEN;
if (ccb_h->flags == CAM_DIR_OUT)
cdb[9] = MRSAS_SCSI_SERVICE_ACTION_READ32;
else
cdb[9] = MRSAS_SCSI_SERVICE_ACTION_WRITE32;
cdb[10] = MRSAS_RD_WR_PROTECT_CHECK_ALL;
/* LBA */
cdb[12] = (u_int8_t)((start_blk >> 56) & 0xff);
cdb[13] = (u_int8_t)((start_blk >> 48) & 0xff);
cdb[14] = (u_int8_t)((start_blk >> 40) & 0xff);
cdb[15] = (u_int8_t)((start_blk >> 32) & 0xff);
cdb[16] = (u_int8_t)((start_blk >> 24) & 0xff);
cdb[17] = (u_int8_t)((start_blk >> 16) & 0xff);
cdb[18] = (u_int8_t)((start_blk >> 8) & 0xff);
cdb[19] = (u_int8_t)(start_blk & 0xff);
/* Logical block reference tag */
io_request->CDB.EEDP32.PrimaryReferenceTag = swap32(ref_tag);
io_request->CDB.EEDP32.PrimaryApplicationTagMask = 0xffff;
io_request->IoFlags = 32; /* Specify 32-byte cdb */
/* Transfer length */
cdb[28] = (u_int8_t)((num_blocks >> 24) & 0xff);
cdb[29] = (u_int8_t)((num_blocks >> 16) & 0xff);
cdb[30] = (u_int8_t)((num_blocks >> 8) & 0xff);
cdb[31] = (u_int8_t)(num_blocks & 0xff);
/* set SCSI IO EEDP Flags */
if (ccb_h->flags == CAM_DIR_OUT) {
io_request->EEDPFlags =
MPI2_SCSIIO_EEDPFLAGS_INC_PRI_REFTAG |
MPI2_SCSIIO_EEDPFLAGS_CHECK_REFTAG |
MPI2_SCSIIO_EEDPFLAGS_CHECK_REMOVE_OP |
MPI2_SCSIIO_EEDPFLAGS_CHECK_APPTAG |
MPI2_SCSIIO_EEDPFLAGS_CHECK_GUARD;
} else {
io_request->EEDPFlags =
MPI2_SCSIIO_EEDPFLAGS_INC_PRI_REFTAG |
MPI2_SCSIIO_EEDPFLAGS_INSERT_OP;
}
io_request->Control |= (0x4 << 26);
io_request->EEDPBlockSize = ld_block_size;
} else {
/* Some drives don't support 16/12 byte CDB's, convert to 10 */
if (((cdb_len == 12) || (cdb_len == 16)) &&
(start_blk <= 0xffffffff)) {
if (cdb_len == 16) {
opcode = cdb[0] == READ_16 ? READ_10 : WRITE_10;
flagvals = cdb[1];
groupnum = cdb[14];
control = cdb[15];
} else {
opcode = cdb[0] == READ_12 ? READ_10 : WRITE_10;
flagvals = cdb[1];
groupnum = cdb[10];
control = cdb[11];
}
memset(cdb, 0, sizeof(io_request->CDB.CDB32));
cdb[0] = opcode;
cdb[1] = flagvals;
cdb[6] = groupnum;
cdb[9] = control;
/* Transfer length */
cdb[8] = (u_int8_t)(num_blocks & 0xff);
cdb[7] = (u_int8_t)((num_blocks >> 8) & 0xff);
io_request->IoFlags = 10; /* Specify 10-byte cdb */
cdb_len = 10;
} else if ((cdb_len < 16) && (start_blk > 0xffffffff)) {
/* Convert to 16 byte CDB for large LBA's */
switch (cdb_len) {
case 6:
opcode = cdb[0] == READ_6 ? READ_16 : WRITE_16;
control = cdb[5];
break;
case 10:
opcode = cdb[0] == READ_10 ? READ_16 : WRITE_16;
flagvals = cdb[1];
groupnum = cdb[6];
control = cdb[9];
break;
case 12:
opcode = cdb[0] == READ_12 ? READ_16 : WRITE_16;
flagvals = cdb[1];
groupnum = cdb[10];
control = cdb[11];
break;
}
memset(cdb, 0, sizeof(io_request->CDB.CDB32));
cdb[0] = opcode;
cdb[1] = flagvals;
cdb[14] = groupnum;
cdb[15] = control;
/* Transfer length */
cdb[13] = (u_int8_t)(num_blocks & 0xff);
cdb[12] = (u_int8_t)((num_blocks >> 8) & 0xff);
cdb[11] = (u_int8_t)((num_blocks >> 16) & 0xff);
cdb[10] = (u_int8_t)((num_blocks >> 24) & 0xff);
io_request->IoFlags = 16; /* Specify 16-byte cdb */
cdb_len = 16;
} else if ((cdb_len == 6) && (start_blk > 0x1fffff)) {
/* convert to 10 byte CDB */
opcode = cdb[0] == READ_6 ? READ_10 : WRITE_10;
control = cdb[5];
memset(cdb, 0, sizeof(io_request->CDB.CDB32));
cdb[0] = opcode;
cdb[9] = control;
/* Set transfer length */
cdb[8] = (u_int8_t)(num_blocks & 0xff);
cdb[7] = (u_int8_t)((num_blocks >> 8) & 0xff);
/* Specify 10-byte cdb */
cdb_len = 10;
}
/* Fall through normal case, just load LBA here */
u_int8_t val = cdb[1] & 0xE0;
switch (cdb_len) {
case 6:
cdb[3] = (u_int8_t)(start_blk & 0xff);
cdb[2] = (u_int8_t)((start_blk >> 8) & 0xff);
cdb[1] = val | ((u_int8_t)(start_blk >> 16) & 0x1f);
break;
case 10:
cdb[5] = (u_int8_t)(start_blk & 0xff);
cdb[4] = (u_int8_t)((start_blk >> 8) & 0xff);
cdb[3] = (u_int8_t)((start_blk >> 16) & 0xff);
cdb[2] = (u_int8_t)((start_blk >> 24) & 0xff);
break;
- case 12:
- cdb[5] = (u_int8_t)(start_blk & 0xff);
- cdb[4] = (u_int8_t)((start_blk >> 8) & 0xff);
- cdb[3] = (u_int8_t)((start_blk >> 16) & 0xff);
- cdb[2] = (u_int8_t)((start_blk >> 24) & 0xff);
- break;
case 16:
cdb[9] = (u_int8_t)(start_blk & 0xff);
cdb[8] = (u_int8_t)((start_blk >> 8) & 0xff);
cdb[7] = (u_int8_t)((start_blk >> 16) & 0xff);
cdb[6] = (u_int8_t)((start_blk >> 24) & 0xff);
cdb[5] = (u_int8_t)((start_blk >> 32) & 0xff);
cdb[4] = (u_int8_t)((start_blk >> 40) & 0xff);
cdb[3] = (u_int8_t)((start_blk >> 48) & 0xff);
cdb[2] = (u_int8_t)((start_blk >> 56) & 0xff);
break;
}
}
}
/*
* mrsas_get_best_arm_pd: Determine the best spindle arm
* Inputs:
* sc - HBA instance
* lbInfo - Load balance info
* io_info - IO request info
*
* This function determines and returns the best arm by looking at the
* parameters of the last PD access.
*/
u_int8_t
mrsas_get_best_arm_pd(struct mrsas_softc *sc,
PLD_LOAD_BALANCE_INFO lbInfo, struct IO_REQUEST_INFO *io_info)
{
MR_LD_RAID *raid;
MR_DRV_RAID_MAP_ALL *drv_map;
u_int16_t pend0, pend1, ld;
u_int64_t diff0, diff1;
u_int8_t bestArm, pd0, pd1, span, arm;
u_int32_t arRef, span_row_size;
u_int64_t block = io_info->ldStartBlock;
u_int32_t count = io_info->numBlocks;
span = ((io_info->span_arm & RAID_CTX_SPANARM_SPAN_MASK)
>> RAID_CTX_SPANARM_SPAN_SHIFT);
arm = (io_info->span_arm & RAID_CTX_SPANARM_ARM_MASK);
drv_map = sc->ld_drv_map[(sc->map_id & 1)];
ld = MR_TargetIdToLdGet(io_info->ldTgtId, drv_map);
raid = MR_LdRaidGet(ld, drv_map);
span_row_size = sc->UnevenSpanSupport ?
SPAN_ROW_SIZE(drv_map, ld, span) : raid->rowSize;
arRef = MR_LdSpanArrayGet(ld, span, drv_map);
pd0 = MR_ArPdGet(arRef, arm, drv_map);
pd1 = MR_ArPdGet(arRef, (arm + 1) >= span_row_size ?
(arm + 1 - span_row_size) : arm + 1, drv_map);
/* get the pending cmds for the data and mirror arms */
pend0 = mrsas_atomic_read(&lbInfo->scsi_pending_cmds[pd0]);
pend1 = mrsas_atomic_read(&lbInfo->scsi_pending_cmds[pd1]);
/* Determine the disk whose head is nearer to the req. block */
diff0 = ABS_DIFF(block, lbInfo->last_accessed_block[pd0]);
diff1 = ABS_DIFF(block, lbInfo->last_accessed_block[pd1]);
bestArm = (diff0 <= diff1 ? arm : arm ^ 1);
if ((bestArm == arm && pend0 > pend1 + sc->lb_pending_cmds) ||
(bestArm != arm && pend1 > pend0 + sc->lb_pending_cmds))
bestArm ^= 1;
/* Update the last accessed block on the correct pd */
lbInfo->last_accessed_block[bestArm == arm ? pd0 : pd1] = block + count - 1;
io_info->span_arm = (span << RAID_CTX_SPANARM_SPAN_SHIFT) | bestArm;
io_info->pd_after_lb = (bestArm == arm) ? pd0 : pd1;
#if SPAN_DEBUG
if (arm != bestArm)
printf("AVAGO Debug R1 Load balance occur - span 0x%x arm 0x%x bestArm 0x%x "
"io_info->span_arm 0x%x\n",
span, arm, bestArm, io_info->span_arm);
#endif
return io_info->pd_after_lb;
}
/*
* mrsas_get_updated_dev_handle: Get the update dev handle
* Inputs:
* sc - Adapter instance soft state
* lbInfo - Load balance info
* io_info - io_info pointer
*
* This function determines and returns the updated dev handle.
*/
u_int16_t
mrsas_get_updated_dev_handle(struct mrsas_softc *sc,
PLD_LOAD_BALANCE_INFO lbInfo, struct IO_REQUEST_INFO *io_info)
{
u_int8_t arm_pd;
u_int16_t devHandle;
MR_DRV_RAID_MAP_ALL *drv_map;
drv_map = sc->ld_drv_map[(sc->map_id & 1)];
/* get best new arm */
arm_pd = mrsas_get_best_arm_pd(sc, lbInfo, io_info);
devHandle = MR_PdDevHandleGet(arm_pd, drv_map);
mrsas_atomic_inc(&lbInfo->scsi_pending_cmds[arm_pd]);
return devHandle;
}
/*
* MR_GetPhyParams: Calculates arm, span, and block
* Inputs: Adapter soft state
* Logical drive number (LD)
* Stripe number(stripRow)
* Reference in stripe (stripRef)
*
* Outputs: Absolute Block number in the physical disk
*
* This routine calculates the arm, span and block for the specified stripe and
* reference in stripe.
*/
u_int8_t
MR_GetPhyParams(struct mrsas_softc *sc, u_int32_t ld,
u_int64_t stripRow,
u_int16_t stripRef, struct IO_REQUEST_INFO *io_info,
RAID_CONTEXT * pRAID_Context, MR_DRV_RAID_MAP_ALL * map)
{
MR_LD_RAID *raid = MR_LdRaidGet(ld, map);
u_int32_t pd, arRef;
u_int8_t physArm, span;
u_int64_t row;
u_int8_t retval = TRUE;
int error_code = 0;
u_int64_t *pdBlock = &io_info->pdBlock;
u_int16_t *pDevHandle = &io_info->devHandle;
u_int32_t rowMod, armQ, arm, logArm;
u_int8_t do_invader = 0;
- if ((sc->device_id == MRSAS_INVADER) || (sc->device_id == MRSAS_FURY))
+ if ((sc->device_id == MRSAS_INVADER) ||
+ (sc->device_id == MRSAS_FURY) ||
+ (sc->device_id == MRSAS_INTRUDER) ||
+ (sc->device_id == MRSAS_INTRUDER_24))
do_invader = 1;
row = mega_div64_32(stripRow, raid->rowDataSize);
if (raid->level == 6) {
/* logical arm within row */
logArm = mega_mod64(stripRow, raid->rowDataSize);
if (raid->rowSize == 0)
return FALSE;
rowMod = mega_mod64(row, raid->rowSize); /* get logical row mod */
armQ = raid->rowSize - 1 - rowMod; /* index of Q drive */
arm = armQ + 1 + logArm;/* data always logically follows Q */
if (arm >= raid->rowSize) /* handle wrap condition */
arm -= raid->rowSize;
physArm = (u_int8_t)arm;
} else {
if (raid->modFactor == 0)
return FALSE;
physArm = MR_LdDataArmGet(ld, mega_mod64(stripRow, raid->modFactor), map);
}
if (raid->spanDepth == 1) {
span = 0;
*pdBlock = row << raid->stripeShift;
} else {
span = (u_int8_t)MR_GetSpanBlock(ld, row, pdBlock, map, &error_code);
if (error_code == 1)
return FALSE;
}
/* Get the array on which this span is present */
arRef = MR_LdSpanArrayGet(ld, span, map);
pd = MR_ArPdGet(arRef, physArm, map); /* Get the Pd. */
if (pd != MR_PD_INVALID)
/* Get dev handle from Pd */
*pDevHandle = MR_PdDevHandleGet(pd, map);
else {
*pDevHandle = MR_PD_INVALID; /* set dev handle as invalid. */
if ((raid->level >= 5) && ((!do_invader) || (do_invader &&
raid->regTypeReqOnRead != REGION_TYPE_UNUSED)))
pRAID_Context->regLockFlags = REGION_TYPE_EXCLUSIVE;
else if (raid->level == 1) {
/* Get Alternate Pd. */
pd = MR_ArPdGet(arRef, physArm + 1, map);
if (pd != MR_PD_INVALID)
/* Get dev handle from Pd. */
*pDevHandle = MR_PdDevHandleGet(pd, map);
}
}
*pdBlock += stripRef + MR_LdSpanPtrGet(ld, span, map)->startBlk;
pRAID_Context->spanArm = (span << RAID_CTX_SPANARM_SPAN_SHIFT) | physArm;
io_info->span_arm = pRAID_Context->spanArm;
return retval;
}
/*
* MR_GetSpanBlock: Calculates span block
* Inputs: LD
* row PD
* span block
* RAID map pointer
*
* Outputs: Span number Error code
*
* This routine calculates the span from the span block info.
*/
u_int32_t
MR_GetSpanBlock(u_int32_t ld, u_int64_t row, u_int64_t *span_blk,
MR_DRV_RAID_MAP_ALL * map, int *div_error)
{
MR_SPAN_BLOCK_INFO *pSpanBlock = MR_LdSpanInfoGet(ld, map);
MR_QUAD_ELEMENT *quad;
MR_LD_RAID *raid = MR_LdRaidGet(ld, map);
u_int32_t span, j;
u_int64_t blk, debugBlk;
for (span = 0; span < raid->spanDepth; span++, pSpanBlock++) {
for (j = 0; j < pSpanBlock->block_span_info.noElements; j++) {
quad = &pSpanBlock->block_span_info.quad[j];
if (quad->diff == 0) {
*div_error = 1;
return span;
}
if (quad->logStart <= row && row <= quad->logEnd &&
(mega_mod64(row - quad->logStart, quad->diff)) == 0) {
if (span_blk != NULL) {
blk = mega_div64_32((row - quad->logStart), quad->diff);
debugBlk = blk;
blk = (blk + quad->offsetInSpan) << raid->stripeShift;
*span_blk = blk;
}
return span;
}
}
}
return span;
}
Index: user/ngie/bsnmp_cleanup/sys/dev/mrsas/mrsas_ioctl.c
===================================================================
--- user/ngie/bsnmp_cleanup/sys/dev/mrsas/mrsas_ioctl.c (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/dev/mrsas/mrsas_ioctl.c (revision 299697)
@@ -1,507 +1,530 @@
/*
* Copyright (c) 2015, AVAGO Tech. All rights reserved. Author: Marian Choy
* Copyright (c) 2014, LSI Corp. All rights reserved. Author: Marian Choy
* Support: freebsdraid@avagotech.com
*
* 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. 3. Neither the name of the
* <ORGANIZATION> nor the names of its contributors may be used to endorse or
* promote products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are
* those of the authors and should not be interpreted as representing
* official policies,either expressed or implied, of the FreeBSD Project.
*
* Send feedback to: <megaraidfbsd@avagotech.com> Mail to: AVAGO TECHNOLOGIES, 1621
* Barber Lane, Milpitas, CA 95035 ATTN: MegaRaid FreeBSD
*
*/
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
#include <dev/mrsas/mrsas.h>
#include <dev/mrsas/mrsas_ioctl.h>
/*
* Function prototypes
*/
int mrsas_alloc_mfi_cmds(struct mrsas_softc *sc);
int mrsas_passthru(struct mrsas_softc *sc, void *arg, u_long ioctlCmd);
void mrsas_free_ioc_cmd(struct mrsas_softc *sc);
void mrsas_free_frame(struct mrsas_softc *sc, struct mrsas_mfi_cmd *cmd);
void *mrsas_alloc_frame(struct mrsas_softc *sc, struct mrsas_mfi_cmd *cmd);
static int mrsas_create_frame_pool(struct mrsas_softc *sc);
static void
mrsas_alloc_cb(void *arg, bus_dma_segment_t *segs,
int nsegs, int error);
extern struct mrsas_mfi_cmd *mrsas_get_mfi_cmd(struct mrsas_softc *sc);
extern void mrsas_release_mfi_cmd(struct mrsas_mfi_cmd *cmd);
extern int
mrsas_issue_blocked_cmd(struct mrsas_softc *sc,
struct mrsas_mfi_cmd *cmd);
/*
* mrsas_passthru: Handle pass-through commands
* input: Adapter instance soft state argument pointer
*
* This function is called from mrsas_ioctl() to handle pass-through and ioctl
* commands to Firmware.
*/
int
mrsas_passthru(struct mrsas_softc *sc, void *arg, u_long ioctlCmd)
{
struct mrsas_iocpacket *user_ioc = (struct mrsas_iocpacket *)arg;
#ifdef COMPAT_FREEBSD32
struct mrsas_iocpacket32 *user_ioc32 = (struct mrsas_iocpacket32 *)arg;
#endif
union mrsas_frame *in_cmd = (union mrsas_frame *)&(user_ioc->frame.raw);
struct mrsas_mfi_cmd *cmd = NULL;
bus_dma_tag_t ioctl_data_tag[MAX_IOCTL_SGE];
bus_dmamap_t ioctl_data_dmamap[MAX_IOCTL_SGE];
void *ioctl_data_mem[MAX_IOCTL_SGE];
bus_addr_t ioctl_data_phys_addr[MAX_IOCTL_SGE];
bus_dma_tag_t ioctl_sense_tag = 0;
bus_dmamap_t ioctl_sense_dmamap = 0;
void *ioctl_sense_mem = NULL;
bus_addr_t ioctl_sense_phys_addr = 0;
int i, ioctl_data_size = 0, ioctl_sense_size, ret = 0;
struct mrsas_sge32 *kern_sge32;
unsigned long *sense_ptr;
uint8_t *iov_base_ptrin = NULL;
size_t iov_len = 0;
/*
* Check for NOP from MegaCli... MegaCli can issue a DCMD of 0. In
* this case do nothing and return 0 to it as status.
*/
if (in_cmd->dcmd.opcode == 0) {
device_printf(sc->mrsas_dev, "In %s() Got a NOP\n", __func__);
user_ioc->frame.hdr.cmd_status = MFI_STAT_OK;
return (0);
}
/* Validate SGL length */
if (user_ioc->sge_count > MAX_IOCTL_SGE) {
device_printf(sc->mrsas_dev, "In %s() SGL is too long (%d > 8).\n",
__func__, user_ioc->sge_count);
return (ENOENT);
}
/* Get a command */
cmd = mrsas_get_mfi_cmd(sc);
if (!cmd) {
device_printf(sc->mrsas_dev, "Failed to get a free cmd for IOCTL\n");
return (ENOMEM);
}
/*
* User's IOCTL packet has 2 frames (maximum). Copy those two frames
* into our cmd's frames. cmd->frame's context will get overwritten
* when we copy from user's frames. So set that value alone
* separately
*/
memcpy(cmd->frame, user_ioc->frame.raw, 2 * MEGAMFI_FRAME_SIZE);
cmd->frame->hdr.context = cmd->index;
cmd->frame->hdr.pad_0 = 0;
cmd->frame->hdr.flags &= ~(MFI_FRAME_IEEE | MFI_FRAME_SGL64 |
MFI_FRAME_SENSE64);
/*
* The management interface between applications and the fw uses MFI
* frames. E.g, RAID configuration changes, LD property changes etc
* are accomplishes through different kinds of MFI frames. The driver
* needs to care only about substituting user buffers with kernel
* buffers in SGLs. The location of SGL is embedded in the struct
* iocpacket itself.
*/
kern_sge32 = (struct mrsas_sge32 *)
((unsigned long)cmd->frame + user_ioc->sgl_off);
+ memset(ioctl_data_tag, 0, (sizeof(bus_dma_tag_t) * MAX_IOCTL_SGE));
+ memset(ioctl_data_dmamap, 0, (sizeof(bus_dmamap_t) * MAX_IOCTL_SGE));
+ memset(ioctl_data_mem, 0, (sizeof(void *) * MAX_IOCTL_SGE));
+ memset(ioctl_data_phys_addr, 0, (sizeof(bus_addr_t) * MAX_IOCTL_SGE));
+
/*
* For each user buffer, create a mirror buffer and copy in
*/
for (i = 0; i < user_ioc->sge_count; i++) {
if (ioctlCmd == MRSAS_IOC_FIRMWARE_PASS_THROUGH64) {
if (!user_ioc->sgl[i].iov_len)
continue;
ioctl_data_size = user_ioc->sgl[i].iov_len;
#ifdef COMPAT_FREEBSD32
} else {
if (!user_ioc32->sgl[i].iov_len)
continue;
ioctl_data_size = user_ioc32->sgl[i].iov_len;
#endif
}
if (bus_dma_tag_create(sc->mrsas_parent_tag,
1, 0,
BUS_SPACE_MAXADDR_32BIT,
BUS_SPACE_MAXADDR,
NULL, NULL,
ioctl_data_size,
1,
ioctl_data_size,
BUS_DMA_ALLOCNOW,
NULL, NULL,
&ioctl_data_tag[i])) {
device_printf(sc->mrsas_dev, "Cannot allocate ioctl data tag\n");
ret = ENOMEM;
goto out;
}
if (bus_dmamem_alloc(ioctl_data_tag[i], (void **)&ioctl_data_mem[i],
(BUS_DMA_NOWAIT | BUS_DMA_ZERO), &ioctl_data_dmamap[i])) {
device_printf(sc->mrsas_dev, "Cannot allocate ioctl data mem\n");
ret = ENOMEM;
goto out;
}
if (bus_dmamap_load(ioctl_data_tag[i], ioctl_data_dmamap[i],
ioctl_data_mem[i], ioctl_data_size, mrsas_alloc_cb,
&ioctl_data_phys_addr[i], BUS_DMA_NOWAIT)) {
device_printf(sc->mrsas_dev, "Cannot load ioctl data mem\n");
ret = ENOMEM;
goto out;
}
/* Save the physical address and length */
kern_sge32[i].phys_addr = (u_int32_t)ioctl_data_phys_addr[i];
if (ioctlCmd == MRSAS_IOC_FIRMWARE_PASS_THROUGH64) {
kern_sge32[i].length = user_ioc->sgl[i].iov_len;
iov_base_ptrin = user_ioc->sgl[i].iov_base;
iov_len = user_ioc->sgl[i].iov_len;
#ifdef COMPAT_FREEBSD32
} else {
kern_sge32[i].length = user_ioc32->sgl[i].iov_len;
iov_base_ptrin = PTRIN(user_ioc32->sgl[i].iov_base);
iov_len = user_ioc32->sgl[i].iov_len;
#endif
}
/* Copy in data from user space */
ret = copyin(iov_base_ptrin, ioctl_data_mem[i], iov_len);
if (ret) {
device_printf(sc->mrsas_dev, "IOCTL copyin failed!\n");
goto out;
}
}
ioctl_sense_size = user_ioc->sense_len;
if (user_ioc->sense_len) {
if (bus_dma_tag_create(sc->mrsas_parent_tag,
1, 0,
BUS_SPACE_MAXADDR_32BIT,
BUS_SPACE_MAXADDR,
NULL, NULL,
ioctl_sense_size,
1,
ioctl_sense_size,
BUS_DMA_ALLOCNOW,
NULL, NULL,
&ioctl_sense_tag)) {
device_printf(sc->mrsas_dev, "Cannot allocate ioctl sense tag\n");
ret = ENOMEM;
goto out;
}
if (bus_dmamem_alloc(ioctl_sense_tag, (void **)&ioctl_sense_mem,
(BUS_DMA_NOWAIT | BUS_DMA_ZERO), &ioctl_sense_dmamap)) {
device_printf(sc->mrsas_dev, "Cannot allocate ioctl sense mem\n");
ret = ENOMEM;
goto out;
}
if (bus_dmamap_load(ioctl_sense_tag, ioctl_sense_dmamap,
ioctl_sense_mem, ioctl_sense_size, mrsas_alloc_cb,
&ioctl_sense_phys_addr, BUS_DMA_NOWAIT)) {
device_printf(sc->mrsas_dev, "Cannot load ioctl sense mem\n");
ret = ENOMEM;
goto out;
}
sense_ptr =
(unsigned long *)((unsigned long)cmd->frame + user_ioc->sense_off);
*sense_ptr = ioctl_sense_phys_addr;
}
/*
* Set the sync_cmd flag so that the ISR knows not to complete this
* cmd to the SCSI mid-layer
*/
cmd->sync_cmd = 1;
- mrsas_issue_blocked_cmd(sc, cmd);
+ ret = mrsas_issue_blocked_cmd(sc, cmd);
+ if (ret == ETIMEDOUT) {
+ mrsas_dprint(sc, MRSAS_OCR,
+ "IOCTL command is timed out, initiating OCR\n");
+ sc->do_timedout_reset = MFI_DCMD_TIMEOUT_OCR;
+ ret = EAGAIN;
+ goto out;
+ }
cmd->sync_cmd = 0;
/*
* copy out the kernel buffers to user buffers
*/
for (i = 0; i < user_ioc->sge_count; i++) {
if (ioctlCmd == MRSAS_IOC_FIRMWARE_PASS_THROUGH64) {
iov_base_ptrin = user_ioc->sgl[i].iov_base;
iov_len = user_ioc->sgl[i].iov_len;
#ifdef COMPAT_FREEBSD32
} else {
iov_base_ptrin = PTRIN(user_ioc32->sgl[i].iov_base);
iov_len = user_ioc32->sgl[i].iov_len;
#endif
}
ret = copyout(ioctl_data_mem[i], iov_base_ptrin, iov_len);
if (ret) {
device_printf(sc->mrsas_dev, "IOCTL copyout failed!\n");
goto out;
}
}
/*
* copy out the sense
*/
if (user_ioc->sense_len) {
/*
* sense_buff points to the location that has the user sense
* buffer address
*/
sense_ptr = (unsigned long *)((unsigned long)user_ioc->frame.raw +
user_ioc->sense_off);
ret = copyout(ioctl_sense_mem, (unsigned long *)*sense_ptr,
user_ioc->sense_len);
if (ret) {
device_printf(sc->mrsas_dev, "IOCTL sense copyout failed!\n");
goto out;
}
}
/*
* Return command status to user space
*/
memcpy(&user_ioc->frame.hdr.cmd_status, &cmd->frame->hdr.cmd_status,
sizeof(u_int8_t));
out:
/*
* Release sense buffer
*/
if (user_ioc->sense_len) {
if (ioctl_sense_phys_addr)
bus_dmamap_unload(ioctl_sense_tag, ioctl_sense_dmamap);
if (ioctl_sense_mem != NULL)
bus_dmamem_free(ioctl_sense_tag, ioctl_sense_mem, ioctl_sense_dmamap);
if (ioctl_sense_tag != NULL)
bus_dma_tag_destroy(ioctl_sense_tag);
}
/*
* Release data buffers
*/
for (i = 0; i < user_ioc->sge_count; i++) {
if (ioctlCmd == MRSAS_IOC_FIRMWARE_PASS_THROUGH64) {
if (!user_ioc->sgl[i].iov_len)
continue;
#ifdef COMPAT_FREEBSD32
} else {
if (!user_ioc32->sgl[i].iov_len)
continue;
#endif
}
if (ioctl_data_phys_addr[i])
bus_dmamap_unload(ioctl_data_tag[i], ioctl_data_dmamap[i]);
if (ioctl_data_mem[i] != NULL)
bus_dmamem_free(ioctl_data_tag[i], ioctl_data_mem[i],
ioctl_data_dmamap[i]);
if (ioctl_data_tag[i] != NULL)
bus_dma_tag_destroy(ioctl_data_tag[i]);
}
/* Free command */
mrsas_release_mfi_cmd(cmd);
return (ret);
}
/*
* mrsas_alloc_mfi_cmds: Allocates the command packets
* input: Adapter instance soft state
*
* Each IOCTL or passthru command that is issued to the FW are wrapped in a
* local data structure called mrsas_mfi_cmd. The frame embedded in this
* mrsas_mfi is issued to FW. The array is used only to look up the
* mrsas_mfi_cmd given the context. The free commands are maintained in a
* linked list.
*/
int
mrsas_alloc_mfi_cmds(struct mrsas_softc *sc)
{
int i, j;
u_int32_t max_cmd;
struct mrsas_mfi_cmd *cmd;
max_cmd = MRSAS_MAX_MFI_CMDS;
/*
* sc->mfi_cmd_list is an array of struct mrsas_mfi_cmd pointers.
* Allocate the dynamic array first and then allocate individual
* commands.
*/
sc->mfi_cmd_list = malloc(sizeof(struct mrsas_mfi_cmd *) * max_cmd, M_MRSAS, M_NOWAIT);
if (!sc->mfi_cmd_list) {
device_printf(sc->mrsas_dev, "Cannot alloc memory for mfi_cmd cmd_list.\n");
return (ENOMEM);
}
memset(sc->mfi_cmd_list, 0, sizeof(struct mrsas_mfi_cmd *) * max_cmd);
for (i = 0; i < max_cmd; i++) {
sc->mfi_cmd_list[i] = malloc(sizeof(struct mrsas_mfi_cmd),
M_MRSAS, M_NOWAIT);
if (!sc->mfi_cmd_list[i]) {
for (j = 0; j < i; j++)
free(sc->mfi_cmd_list[j], M_MRSAS);
free(sc->mfi_cmd_list, M_MRSAS);
sc->mfi_cmd_list = NULL;
return (ENOMEM);
}
}
for (i = 0; i < max_cmd; i++) {
cmd = sc->mfi_cmd_list[i];
memset(cmd, 0, sizeof(struct mrsas_mfi_cmd));
cmd->index = i;
cmd->ccb_ptr = NULL;
cmd->sc = sc;
TAILQ_INSERT_TAIL(&(sc->mrsas_mfi_cmd_list_head), cmd, next);
}
/* create a frame pool and assign one frame to each command */
if (mrsas_create_frame_pool(sc)) {
device_printf(sc->mrsas_dev, "Cannot allocate DMA frame pool.\n");
/* Free the frames */
for (i = 0; i < MRSAS_MAX_MFI_CMDS; i++) {
cmd = sc->mfi_cmd_list[i];
mrsas_free_frame(sc, cmd);
}
if (sc->mficmd_frame_tag != NULL)
bus_dma_tag_destroy(sc->mficmd_frame_tag);
return (ENOMEM);
}
return (0);
}
/*
* mrsas_create_frame_pool: Creates DMA pool for cmd frames
* input: Adapter soft state
*
* Each command packet has an embedded DMA memory buffer that is used for
* filling MFI frame and the SG list that immediately follows the frame. This
* function creates those DMA memory buffers for each command packet by using
* PCI pool facility. pad_0 is initialized to 0 to prevent corrupting value
* of context and could cause FW crash.
*/
static int
mrsas_create_frame_pool(struct mrsas_softc *sc)
{
int i;
struct mrsas_mfi_cmd *cmd;
if (bus_dma_tag_create(sc->mrsas_parent_tag,
1, 0,
BUS_SPACE_MAXADDR_32BIT,
BUS_SPACE_MAXADDR,
NULL, NULL,
MRSAS_MFI_FRAME_SIZE,
1,
MRSAS_MFI_FRAME_SIZE,
BUS_DMA_ALLOCNOW,
NULL, NULL,
&sc->mficmd_frame_tag)) {
device_printf(sc->mrsas_dev, "Cannot create MFI frame tag\n");
return (ENOMEM);
}
for (i = 0; i < MRSAS_MAX_MFI_CMDS; i++) {
cmd = sc->mfi_cmd_list[i];
cmd->frame = mrsas_alloc_frame(sc, cmd);
if (cmd->frame == NULL) {
device_printf(sc->mrsas_dev, "Cannot alloc MFI frame memory\n");
return (ENOMEM);
}
+ /*
+ * For MFI controllers.
+ * max_num_sge = 60
+ * max_sge_sz = 16 byte (sizeof megasas_sge_skinny)
+ * Totl 960 byte (15 MFI frame of 64 byte)
+ *
+ * Fusion adapter require only 3 extra frame.
+ * max_num_sge = 16 (defined as MAX_IOCTL_SGE)
+ * max_sge_sz = 12 byte (sizeof megasas_sge64)
+ * Total 192 byte (3 MFI frame of 64 byte)
+ */
memset(cmd->frame, 0, MRSAS_MFI_FRAME_SIZE);
cmd->frame->io.context = cmd->index;
cmd->frame->io.pad_0 = 0;
}
return (0);
}
/*
* mrsas_alloc_frame: Allocates MFI Frames
* input: Adapter soft state
*
* Create bus DMA memory tag and dmamap and load memory for MFI frames. Returns
* virtual memory pointer to allocated region.
*/
void *
mrsas_alloc_frame(struct mrsas_softc *sc, struct mrsas_mfi_cmd *cmd)
{
u_int32_t frame_size = MRSAS_MFI_FRAME_SIZE;
if (bus_dmamem_alloc(sc->mficmd_frame_tag, (void **)&cmd->frame_mem,
BUS_DMA_NOWAIT, &cmd->frame_dmamap)) {
device_printf(sc->mrsas_dev, "Cannot alloc MFI frame memory\n");
return (NULL);
}
if (bus_dmamap_load(sc->mficmd_frame_tag, cmd->frame_dmamap,
cmd->frame_mem, frame_size, mrsas_alloc_cb,
&cmd->frame_phys_addr, BUS_DMA_NOWAIT)) {
device_printf(sc->mrsas_dev, "Cannot load IO request memory\n");
return (NULL);
}
return (cmd->frame_mem);
}
/*
* mrsas_alloc_cb: Callback function of bus_dmamap_load()
* input: callback argument,
* machine dependent type that describes DMA segments,
* number of segments,
* error code.
*
* This function is for the driver to receive mapping information resultant of
* the bus_dmamap_load(). The information is actually not being used, but the
* address is saved anyway.
*/
static void
mrsas_alloc_cb(void *arg, bus_dma_segment_t *segs,
int nsegs, int error)
{
bus_addr_t *addr;
addr = arg;
*addr = segs[0].ds_addr;
}
/*
* mrsas_free_frames: Frees memory for MFI frames
* input: Adapter soft state
*
* Deallocates MFI frames memory. Called from mrsas_free_mem() during detach
* and error case during creation of frame pool.
*/
void
mrsas_free_frame(struct mrsas_softc *sc, struct mrsas_mfi_cmd *cmd)
{
if (cmd->frame_phys_addr)
bus_dmamap_unload(sc->mficmd_frame_tag, cmd->frame_dmamap);
if (cmd->frame_mem != NULL)
bus_dmamem_free(sc->mficmd_frame_tag, cmd->frame_mem, cmd->frame_dmamap);
}
Index: user/ngie/bsnmp_cleanup/sys/dev/pci/pci_host_generic.c
===================================================================
--- user/ngie/bsnmp_cleanup/sys/dev/pci/pci_host_generic.c (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/dev/pci/pci_host_generic.c (revision 299697)
@@ -1,873 +1,874 @@
/*-
* Copyright (c) 2015 Ruslan Bukin <br@bsdpad.com>
* Copyright (c) 2014 The FreeBSD Foundation
* All rights reserved.
*
* This software was developed by Semihalf under
* the sponsorship of the FreeBSD Foundation.
*
* 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.
*/
/* Generic ECAM PCIe driver */
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
#include "opt_platform.h"
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/malloc.h>
#include <sys/kernel.h>
#include <sys/rman.h>
#include <sys/module.h>
#include <sys/bus.h>
#include <sys/endian.h>
#include <sys/cpuset.h>
#include <sys/rwlock.h>
#include <dev/ofw/openfirm.h>
#include <dev/ofw/ofw_bus.h>
#include <dev/ofw/ofw_bus_subr.h>
#include <dev/ofw/ofw_pci.h>
#include <dev/pci/pcivar.h>
#include <dev/pci/pcireg.h>
#include <dev/pci/pcib_private.h>
#include <dev/pci/pci_host_generic.h>
#include <machine/cpu.h>
#include <machine/bus.h>
#include <machine/intr.h>
#include <vm/vm_page.h>
#include "pcib_if.h"
/* Assembling ECAM Configuration Address */
#define PCIE_BUS_SHIFT 20
#define PCIE_SLOT_SHIFT 15
#define PCIE_FUNC_SHIFT 12
#define PCIE_BUS_MASK 0xFF
#define PCIE_SLOT_MASK 0x1F
#define PCIE_FUNC_MASK 0x07
#define PCIE_REG_MASK 0xFFF
#define PCIE_ADDR_OFFSET(bus, slot, func, reg) \
((((bus) & PCIE_BUS_MASK) << PCIE_BUS_SHIFT) | \
(((slot) & PCIE_SLOT_MASK) << PCIE_SLOT_SHIFT) | \
(((func) & PCIE_FUNC_MASK) << PCIE_FUNC_SHIFT) | \
((reg) & PCIE_REG_MASK))
#define PCI_IO_WINDOW_OFFSET 0x1000
#define SPACE_CODE_SHIFT 24
#define SPACE_CODE_MASK 0x3
#define SPACE_CODE_IO_SPACE 0x1
#define PROPS_CELL_SIZE 1
#define PCI_ADDR_CELL_SIZE 2
/* OFW bus interface */
struct generic_pcie_ofw_devinfo {
struct ofw_bus_devinfo di_dinfo;
struct resource_list di_rl;
};
/* Forward prototypes */
static int generic_pcie_probe(device_t dev);
static int parse_pci_mem_ranges(struct generic_pcie_softc *sc);
static uint32_t generic_pcie_read_config(device_t dev, u_int bus, u_int slot,
u_int func, u_int reg, int bytes);
static void generic_pcie_write_config(device_t dev, u_int bus, u_int slot,
u_int func, u_int reg, uint32_t val, int bytes);
static int generic_pcie_maxslots(device_t dev);
static int generic_pcie_read_ivar(device_t dev, device_t child, int index,
uintptr_t *result);
static int generic_pcie_write_ivar(device_t dev, device_t child, int index,
uintptr_t value);
static struct resource *generic_pcie_alloc_resource_ofw(device_t, device_t,
int, int *, rman_res_t, rman_res_t, rman_res_t, u_int);
static struct resource *generic_pcie_alloc_resource_pcie(device_t dev,
device_t child, int type, int *rid, rman_res_t start, rman_res_t end,
rman_res_t count, u_int flags);
static int generic_pcie_release_resource(device_t dev, device_t child,
int type, int rid, struct resource *res);
static int generic_pcie_release_resource_ofw(device_t, device_t, int, int,
struct resource *);
static int generic_pcie_release_resource_pcie(device_t, device_t, int, int,
struct resource *);
static int generic_pcie_ofw_bus_attach(device_t);
static const struct ofw_bus_devinfo *generic_pcie_ofw_get_devinfo(device_t,
device_t);
static __inline void
get_addr_size_cells(phandle_t node, pcell_t *addr_cells, pcell_t *size_cells)
{
*addr_cells = 2;
/* Find address cells if present */
OF_getencprop(node, "#address-cells", addr_cells, sizeof(*addr_cells));
*size_cells = 2;
/* Find size cells if present */
OF_getencprop(node, "#size-cells", size_cells, sizeof(*size_cells));
}
static int
generic_pcie_probe(device_t dev)
{
if (!ofw_bus_status_okay(dev))
return (ENXIO);
if (ofw_bus_is_compatible(dev, "pci-host-ecam-generic")) {
device_set_desc(dev, "Generic PCI host controller");
return (BUS_PROBE_GENERIC);
}
if (ofw_bus_is_compatible(dev, "arm,gem5_pcie")) {
device_set_desc(dev, "GEM5 PCIe host controller");
return (BUS_PROBE_DEFAULT);
}
return (ENXIO);
}
int
pci_host_generic_attach(device_t dev)
{
struct generic_pcie_softc *sc;
uint64_t phys_base;
uint64_t pci_base;
uint64_t size;
int error;
int tuple;
int rid;
sc = device_get_softc(dev);
sc->dev = dev;
/* Retrieve 'ranges' property from FDT */
if (bootverbose)
device_printf(dev, "parsing FDT for ECAM%d:\n",
sc->ecam);
if (parse_pci_mem_ranges(sc))
return (ENXIO);
/* Attach OFW bus */
if (generic_pcie_ofw_bus_attach(dev) != 0)
return (ENXIO);
rid = 0;
sc->res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, RF_ACTIVE);
if (sc->res == NULL) {
device_printf(dev, "could not map memory.\n");
return (ENXIO);
}
sc->bst = rman_get_bustag(sc->res);
sc->bsh = rman_get_bushandle(sc->res);
sc->mem_rman.rm_type = RMAN_ARRAY;
sc->mem_rman.rm_descr = "PCIe Memory";
sc->io_rman.rm_type = RMAN_ARRAY;
sc->io_rman.rm_descr = "PCIe IO window";
/* Initialize rman and allocate memory regions */
error = rman_init(&sc->mem_rman);
if (error) {
device_printf(dev, "rman_init() failed. error = %d\n", error);
return (error);
}
error = rman_init(&sc->io_rman);
if (error) {
device_printf(dev, "rman_init() failed. error = %d\n", error);
return (error);
}
for (tuple = 0; tuple < MAX_RANGES_TUPLES; tuple++) {
phys_base = sc->ranges[tuple].phys_base;
pci_base = sc->ranges[tuple].pci_base;
size = sc->ranges[tuple].size;
if (phys_base == 0 || size == 0)
continue; /* empty range element */
if (sc->ranges[tuple].flags & FLAG_MEM) {
error = rman_manage_region(&sc->mem_rman,
phys_base, phys_base + size - 1);
} else if (sc->ranges[tuple].flags & FLAG_IO) {
error = rman_manage_region(&sc->io_rman,
pci_base + PCI_IO_WINDOW_OFFSET,
pci_base + PCI_IO_WINDOW_OFFSET + size - 1);
} else
continue;
if (error) {
device_printf(dev, "rman_manage_region() failed."
"error = %d\n", error);
rman_fini(&sc->mem_rman);
return (error);
}
}
ofw_bus_setup_iinfo(ofw_bus_get_node(dev), &sc->pci_iinfo,
sizeof(cell_t));
device_add_child(dev, "pci", -1);
return (bus_generic_attach(dev));
}
static int
parse_pci_mem_ranges(struct generic_pcie_softc *sc)
{
pcell_t pci_addr_cells, parent_addr_cells;
pcell_t attributes, size_cells;
cell_t *base_ranges;
int nbase_ranges;
phandle_t node;
int i, j, k;
int tuple;
node = ofw_bus_get_node(sc->dev);
OF_getencprop(node, "#address-cells", &pci_addr_cells,
sizeof(pci_addr_cells));
OF_getencprop(node, "#size-cells", &size_cells,
sizeof(size_cells));
OF_getencprop(OF_parent(node), "#address-cells", &parent_addr_cells,
sizeof(parent_addr_cells));
if (parent_addr_cells != 2 || pci_addr_cells != 3 || size_cells != 2) {
device_printf(sc->dev,
"Unexpected number of address or size cells in FDT\n");
return (ENXIO);
}
nbase_ranges = OF_getproplen(node, "ranges");
sc->nranges = nbase_ranges / sizeof(cell_t) /
(parent_addr_cells + pci_addr_cells + size_cells);
base_ranges = malloc(nbase_ranges, M_DEVBUF, M_WAITOK);
OF_getencprop(node, "ranges", base_ranges, nbase_ranges);
for (i = 0, j = 0; i < sc->nranges; i++) {
attributes = (base_ranges[j++] >> SPACE_CODE_SHIFT) & \
SPACE_CODE_MASK;
if (attributes == SPACE_CODE_IO_SPACE) {
sc->ranges[i].flags |= FLAG_IO;
} else {
sc->ranges[i].flags |= FLAG_MEM;
}
sc->ranges[i].pci_base = 0;
for (k = 0; k < (pci_addr_cells - 1); k++) {
sc->ranges[i].pci_base <<= 32;
sc->ranges[i].pci_base |= base_ranges[j++];
}
sc->ranges[i].phys_base = 0;
for (k = 0; k < parent_addr_cells; k++) {
sc->ranges[i].phys_base <<= 32;
sc->ranges[i].phys_base |= base_ranges[j++];
}
sc->ranges[i].size = 0;
for (k = 0; k < size_cells; k++) {
sc->ranges[i].size <<= 32;
sc->ranges[i].size |= base_ranges[j++];
}
}
for (; i < MAX_RANGES_TUPLES; i++) {
/* zero-fill remaining tuples to mark empty elements in array */
sc->ranges[i].pci_base = 0;
sc->ranges[i].phys_base = 0;
sc->ranges[i].size = 0;
}
if (bootverbose) {
for (tuple = 0; tuple < MAX_RANGES_TUPLES; tuple++) {
device_printf(sc->dev,
"\tPCI addr: 0x%jx, CPU addr: 0x%jx, Size: 0x%jx\n",
sc->ranges[tuple].pci_base,
sc->ranges[tuple].phys_base,
sc->ranges[tuple].size);
}
}
free(base_ranges, M_DEVBUF);
return (0);
}
static uint32_t
generic_pcie_read_config(device_t dev, u_int bus, u_int slot,
u_int func, u_int reg, int bytes)
{
struct generic_pcie_softc *sc;
bus_space_handle_t h;
bus_space_tag_t t;
uint64_t offset;
uint32_t data;
if ((bus > PCI_BUSMAX) || (slot > PCI_SLOTMAX) ||
(func > PCI_FUNCMAX) || (reg > PCIE_REGMAX))
return (~0U);
sc = device_get_softc(dev);
offset = PCIE_ADDR_OFFSET(bus, slot, func, reg);
t = sc->bst;
h = sc->bsh;
switch (bytes) {
case 1:
data = bus_space_read_1(t, h, offset);
break;
case 2:
data = le16toh(bus_space_read_2(t, h, offset));
break;
case 4:
data = le32toh(bus_space_read_4(t, h, offset));
break;
default:
return (~0U);
}
return (data);
}
static void
generic_pcie_write_config(device_t dev, u_int bus, u_int slot,
u_int func, u_int reg, uint32_t val, int bytes)
{
struct generic_pcie_softc *sc;
bus_space_handle_t h;
bus_space_tag_t t;
uint64_t offset;
if ((bus > PCI_BUSMAX) || (slot > PCI_SLOTMAX) ||
(func > PCI_FUNCMAX) || (reg > PCIE_REGMAX))
return;
sc = device_get_softc(dev);
offset = PCIE_ADDR_OFFSET(bus, slot, func, reg);
t = sc->bst;
h = sc->bsh;
switch (bytes) {
case 1:
bus_space_write_1(t, h, offset, val);
break;
case 2:
bus_space_write_2(t, h, offset, htole16(val));
break;
case 4:
bus_space_write_4(t, h, offset, htole32(val));
break;
default:
return;
}
}
static int
generic_pcie_maxslots(device_t dev)
{
return (31); /* max slots per bus acc. to standard */
}
static int
generic_pcie_route_interrupt(device_t bus, device_t dev, int pin)
{
struct generic_pcie_softc *sc;
struct ofw_pci_register reg;
uint32_t pintr, mintr[2];
phandle_t iparent;
int intrcells;
sc = device_get_softc(bus);
pintr = pin;
bzero(&reg, sizeof(reg));
reg.phys_hi = (pci_get_bus(dev) << OFW_PCI_PHYS_HI_BUSSHIFT) |
(pci_get_slot(dev) << OFW_PCI_PHYS_HI_DEVICESHIFT) |
(pci_get_function(dev) << OFW_PCI_PHYS_HI_FUNCTIONSHIFT);
intrcells = ofw_bus_lookup_imap(ofw_bus_get_node(dev),
&sc->pci_iinfo, &reg, sizeof(reg), &pintr, sizeof(pintr),
mintr, sizeof(mintr), &iparent);
if (intrcells) {
pintr = ofw_bus_map_intr(dev, iparent, intrcells, mintr);
return (pintr);
}
device_printf(bus, "could not route pin %d for device %d.%d\n",
pin, pci_get_slot(dev), pci_get_function(dev));
return (PCI_INVALID_IRQ);
}
static int
generic_pcie_read_ivar(device_t dev, device_t child, int index,
uintptr_t *result)
{
struct generic_pcie_softc *sc;
int secondary_bus;
sc = device_get_softc(dev);
if (index == PCIB_IVAR_BUS) {
/* this pcib adds only pci bus 0 as child */
secondary_bus = 0;
*result = secondary_bus;
return (0);
}
if (index == PCIB_IVAR_DOMAIN) {
*result = sc->ecam;
return (0);
}
if (bootverbose)
device_printf(dev, "ERROR: Unknown index %d.\n", index);
return (ENOENT);
}
static int
generic_pcie_write_ivar(device_t dev, device_t child, int index,
uintptr_t value)
{
return (ENOENT);
}
static struct rman *
generic_pcie_rman(struct generic_pcie_softc *sc, int type)
{
switch (type) {
case SYS_RES_IOPORT:
return (&sc->io_rman);
case SYS_RES_MEMORY:
return (&sc->mem_rman);
default:
break;
}
return (NULL);
}
static int
generic_pcie_release_resource_pcie(device_t dev, device_t child, int type,
int rid, struct resource *res)
{
struct generic_pcie_softc *sc;
struct rman *rm;
sc = device_get_softc(dev);
rm = generic_pcie_rman(sc, type);
if (rm != NULL) {
KASSERT(rman_is_region_manager(res, rm), ("rman mismatch"));
rman_release_resource(res);
}
return (bus_generic_release_resource(dev, child, type, rid, res));
}
static int
generic_pcie_release_resource(device_t dev, device_t child, int type,
int rid, struct resource *res)
{
/* For PCIe devices that do not have FDT nodes, use PCIB method */
if ((int)ofw_bus_get_node(child) <= 0) {
return (generic_pcie_release_resource_pcie(dev,
child, type, rid, res));
}
/* For other devices use OFW method */
return (generic_pcie_release_resource_ofw(dev,
child, type, rid, res));
}
struct resource *
pci_host_generic_alloc_resource(device_t dev, device_t child, int type, int *rid,
rman_res_t start, rman_res_t end, rman_res_t count, u_int flags)
{
/* For PCIe devices that do not have FDT nodes, use PCIB method */
if ((int)ofw_bus_get_node(child) <= 0)
return (generic_pcie_alloc_resource_pcie(dev, child, type, rid,
start, end, count, flags));
/* For other devices use OFW method */
return (generic_pcie_alloc_resource_ofw(dev, child, type, rid,
start, end, count, flags));
}
static struct resource *
generic_pcie_alloc_resource_pcie(device_t dev, device_t child, int type, int *rid,
rman_res_t start, rman_res_t end, rman_res_t count, u_int flags)
{
struct generic_pcie_softc *sc;
struct resource *res;
struct rman *rm;
sc = device_get_softc(dev);
rm = generic_pcie_rman(sc, type);
if (rm == NULL)
return (BUS_ALLOC_RESOURCE(device_get_parent(dev), dev,
type, rid, start, end, count, flags));
if (bootverbose) {
device_printf(dev,
"rman_reserve_resource: start=%#jx, end=%#jx, count=%#jx\n",
start, end, count);
}
res = rman_reserve_resource(rm, start, end, count, flags, child);
if (res == NULL)
goto fail;
rman_set_rid(res, *rid);
if (flags & RF_ACTIVE)
if (bus_activate_resource(child, type, *rid, res)) {
rman_release_resource(res);
goto fail;
}
return (res);
fail:
device_printf(dev, "%s FAIL: type=%d, rid=%d, "
"start=%016jx, end=%016jx, count=%016jx, flags=%x\n",
__func__, type, *rid, start, end, count, flags);
return (NULL);
}
static int
generic_pcie_adjust_resource(device_t dev, device_t child, int type,
struct resource *res, rman_res_t start, rman_res_t end)
{
struct generic_pcie_softc *sc;
struct rman *rm;
sc = device_get_softc(dev);
rm = generic_pcie_rman(sc, type);
if (rm != NULL)
return (rman_adjust_resource(res, start, end));
return (bus_generic_adjust_resource(dev, child, type, res, start, end));
}
static int
generic_pcie_activate_resource(device_t dev, device_t child, int type, int rid,
struct resource *r)
{
struct generic_pcie_softc *sc;
uint64_t phys_base;
uint64_t pci_base;
uint64_t size;
int found;
int res;
int i;
sc = device_get_softc(dev);
if ((res = rman_activate_resource(r)) != 0)
return (res);
switch(type) {
case SYS_RES_IOPORT:
found = 0;
for (i = 0; i < MAX_RANGES_TUPLES; i++) {
pci_base = sc->ranges[i].pci_base;
phys_base = sc->ranges[i].phys_base;
size = sc->ranges[i].size;
if ((rid > pci_base) && (rid < (pci_base + size))) {
found = 1;
break;
}
}
if (found) {
rman_set_start(r, rman_get_start(r) + phys_base);
+ rman_set_end(r, rman_get_end(r) + phys_base);
BUS_ACTIVATE_RESOURCE(device_get_parent(dev), child,
type, rid, r);
} else {
device_printf(dev, "Failed to activate IOPORT resource\n");
res = 0;
}
break;
case SYS_RES_MEMORY:
BUS_ACTIVATE_RESOURCE(device_get_parent(dev), child, type, rid, r);
break;
default:
break;
}
return (res);
}
static int
generic_pcie_deactivate_resource(device_t dev, device_t child, int type, int rid,
struct resource *r)
{
struct generic_pcie_softc *sc;
vm_offset_t vaddr;
int res;
sc = device_get_softc(dev);
if ((res = rman_deactivate_resource(r)) != 0)
return (res);
switch(type) {
case SYS_RES_IOPORT:
case SYS_RES_MEMORY:
vaddr = (vm_offset_t)rman_get_virtual(r);
pmap_unmapdev(vaddr, rman_get_size(r));
break;
default:
break;
}
return (res);
}
static int
generic_pcie_alloc_msi(device_t pci, device_t child, int count, int maxcount,
int *irqs)
{
#if defined(__aarch64__)
return (arm_alloc_msi(pci, child, count, maxcount, irqs));
#else
return (ENXIO);
#endif
}
static int
generic_pcie_release_msi(device_t pci, device_t child, int count, int *irqs)
{
#if defined(__aarch64__)
return (arm_release_msi(pci, child, count, irqs));
#else
return (ENXIO);
#endif
}
static int
generic_pcie_map_msi(device_t pci, device_t child, int irq, uint64_t *addr,
uint32_t *data)
{
#if defined(__aarch64__)
return (arm_map_msi(pci, child, irq, addr, data));
#else
return (ENXIO);
#endif
}
static int
generic_pcie_alloc_msix(device_t pci, device_t child, int *irq)
{
#if defined(__aarch64__)
return (arm_alloc_msix(pci, child, irq));
#else
return (ENXIO);
#endif
}
static int
generic_pcie_release_msix(device_t pci, device_t child, int irq)
{
#if defined(__aarch64__)
return (arm_release_msix(pci, child, irq));
#else
return (ENXIO);
#endif
}
static device_method_t generic_pcie_methods[] = {
DEVMETHOD(device_probe, generic_pcie_probe),
DEVMETHOD(device_attach, pci_host_generic_attach),
DEVMETHOD(bus_read_ivar, generic_pcie_read_ivar),
DEVMETHOD(bus_write_ivar, generic_pcie_write_ivar),
DEVMETHOD(bus_alloc_resource, pci_host_generic_alloc_resource),
DEVMETHOD(bus_adjust_resource, generic_pcie_adjust_resource),
DEVMETHOD(bus_release_resource, generic_pcie_release_resource),
DEVMETHOD(bus_activate_resource, generic_pcie_activate_resource),
DEVMETHOD(bus_deactivate_resource, generic_pcie_deactivate_resource),
DEVMETHOD(bus_setup_intr, bus_generic_setup_intr),
DEVMETHOD(bus_teardown_intr, bus_generic_teardown_intr),
/* pcib interface */
DEVMETHOD(pcib_maxslots, generic_pcie_maxslots),
DEVMETHOD(pcib_route_interrupt, generic_pcie_route_interrupt),
DEVMETHOD(pcib_read_config, generic_pcie_read_config),
DEVMETHOD(pcib_write_config, generic_pcie_write_config),
DEVMETHOD(pcib_alloc_msi, generic_pcie_alloc_msi),
DEVMETHOD(pcib_release_msi, generic_pcie_release_msi),
DEVMETHOD(pcib_alloc_msix, generic_pcie_alloc_msix),
DEVMETHOD(pcib_release_msix, generic_pcie_release_msix),
DEVMETHOD(pcib_map_msi, generic_pcie_map_msi),
/* ofw_bus interface */
DEVMETHOD(ofw_bus_get_devinfo, generic_pcie_ofw_get_devinfo),
DEVMETHOD(ofw_bus_get_compat, ofw_bus_gen_get_compat),
DEVMETHOD(ofw_bus_get_model, ofw_bus_gen_get_model),
DEVMETHOD(ofw_bus_get_name, ofw_bus_gen_get_name),
DEVMETHOD(ofw_bus_get_node, ofw_bus_gen_get_node),
DEVMETHOD(ofw_bus_get_type, ofw_bus_gen_get_type),
DEVMETHOD_END
};
static const struct ofw_bus_devinfo *
generic_pcie_ofw_get_devinfo(device_t bus __unused, device_t child)
{
struct generic_pcie_ofw_devinfo *di;
di = device_get_ivars(child);
return (&di->di_dinfo);
}
static struct resource *
generic_pcie_alloc_resource_ofw(device_t bus, device_t child, int type, int *rid,
rman_res_t start, rman_res_t end, rman_res_t count, u_int flags)
{
struct generic_pcie_softc *sc;
struct generic_pcie_ofw_devinfo *di;
struct resource_list_entry *rle;
int i;
sc = device_get_softc(bus);
if (RMAN_IS_DEFAULT_RANGE(start, end)) {
if ((di = device_get_ivars(child)) == NULL)
return (NULL);
if (type == SYS_RES_IOPORT)
type = SYS_RES_MEMORY;
/* Find defaults for this rid */
rle = resource_list_find(&di->di_rl, type, *rid);
if (rle == NULL)
return (NULL);
start = rle->start;
end = rle->end;
count = rle->count;
}
if (type == SYS_RES_MEMORY) {
/* Remap through ranges property */
for (i = 0; i < MAX_RANGES_TUPLES; i++) {
if (start >= sc->ranges[i].phys_base && end <
sc->ranges[i].pci_base + sc->ranges[i].size) {
start -= sc->ranges[i].phys_base;
start += sc->ranges[i].pci_base;
end -= sc->ranges[i].phys_base;
end += sc->ranges[i].pci_base;
break;
}
}
if (i == MAX_RANGES_TUPLES) {
device_printf(bus, "Could not map resource "
"%#jx-%#jx\n", start, end);
return (NULL);
}
}
return (bus_generic_alloc_resource(bus, child, type, rid, start, end,
count, flags));
}
static int
generic_pcie_release_resource_ofw(device_t bus, device_t child, int type, int rid,
struct resource *res)
{
return (bus_generic_release_resource(bus, child, type, rid, res));
}
/* Helper functions */
static int
generic_pcie_ofw_bus_attach(device_t dev)
{
struct generic_pcie_ofw_devinfo *di;
device_t child;
phandle_t parent, node;
pcell_t addr_cells, size_cells;
parent = ofw_bus_get_node(dev);
if (parent > 0) {
get_addr_size_cells(parent, &addr_cells, &size_cells);
/* Iterate through all bus subordinates */
for (node = OF_child(parent); node > 0; node = OF_peer(node)) {
/* Allocate and populate devinfo. */
di = malloc(sizeof(*di), M_DEVBUF, M_WAITOK | M_ZERO);
if (ofw_bus_gen_setup_devinfo(&di->di_dinfo, node) != 0) {
free(di, M_DEVBUF);
continue;
}
/* Initialize and populate resource list. */
resource_list_init(&di->di_rl);
ofw_bus_reg_to_rl(dev, node, addr_cells, size_cells,
&di->di_rl);
ofw_bus_intr_to_rl(dev, node, &di->di_rl, NULL);
/* Add newbus device for this FDT node */
child = device_add_child(dev, NULL, -1);
if (child == NULL) {
resource_list_free(&di->di_rl);
ofw_bus_gen_destroy_devinfo(&di->di_dinfo);
free(di, M_DEVBUF);
continue;
}
device_set_ivars(child, di);
}
}
return (0);
}
DEFINE_CLASS_0(pcib, generic_pcie_driver,
generic_pcie_methods, sizeof(struct generic_pcie_softc));
devclass_t generic_pcie_devclass;
DRIVER_MODULE(pcib, simplebus, generic_pcie_driver,
generic_pcie_devclass, 0, 0);
DRIVER_MODULE(pcib, ofwbus, generic_pcie_driver,
generic_pcie_devclass, 0, 0);
Index: user/ngie/bsnmp_cleanup/sys/dev/sym/sym_hipd.c
===================================================================
--- user/ngie/bsnmp_cleanup/sys/dev/sym/sym_hipd.c (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/dev/sym/sym_hipd.c (revision 299697)
@@ -1,9623 +1,9623 @@
/*-
* Device driver optimized for the Symbios/LSI 53C896/53C895A/53C1010
* PCI-SCSI controllers.
*
* Copyright (C) 1999-2001 Gerard Roudier <groudier@free.fr>
*
* This driver also supports the following Symbios/LSI PCI-SCSI chips:
* 53C810A, 53C825A, 53C860, 53C875, 53C876, 53C885, 53C895,
* 53C810, 53C815, 53C825 and the 53C1510D is 53C8XX mode.
*
*
* This driver for FreeBSD-CAM is derived from the Linux sym53c8xx driver.
* Copyright (C) 1998-1999 Gerard Roudier
*
* The sym53c8xx driver is derived from the ncr53c8xx driver that had been
* a port of the FreeBSD ncr driver to Linux-1.2.13.
*
* The original ncr driver has been written for 386bsd and FreeBSD by
* Wolfgang Stanglmeier <wolf@cologne.de>
* Stefan Esser <se@mi.Uni-Koeln.de>
* Copyright (C) 1994 Wolfgang Stanglmeier
*
* The initialisation code, and part of the code that addresses
* FreeBSD-CAM services is based on the aic7xxx driver for FreeBSD-CAM
* written by Justin T. Gibbs.
*
* Other major contributions:
*
* NVRAM detection and reading.
* Copyright (C) 1997 Richard Waltham <dormouse@farsrobt.demon.co.uk>
*
*-----------------------------------------------------------------------------
*
* 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.
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHORS 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$");
#define SYM_DRIVER_NAME "sym-1.6.5-20000902"
/* #define SYM_DEBUG_GENERIC_SUPPORT */
#include <sys/param.h>
/*
* Driver configuration options.
*/
#include "opt_sym.h"
#include <dev/sym/sym_conf.h>
#include <sys/systm.h>
#include <sys/malloc.h>
#include <sys/endian.h>
#include <sys/kernel.h>
#include <sys/lock.h>
#include <sys/mutex.h>
#include <sys/module.h>
#include <sys/bus.h>
#include <sys/proc.h>
#include <dev/pci/pcireg.h>
#include <dev/pci/pcivar.h>
#include <machine/bus.h>
#include <machine/resource.h>
#include <machine/atomic.h>
#ifdef __sparc64__
#include <dev/ofw/openfirm.h>
#include <machine/ofw_machdep.h>
#endif
#include <sys/rman.h>
#include <cam/cam.h>
#include <cam/cam_ccb.h>
#include <cam/cam_sim.h>
#include <cam/cam_xpt_sim.h>
#include <cam/cam_debug.h>
#include <cam/scsi/scsi_all.h>
#include <cam/scsi/scsi_message.h>
/* Short and quite clear integer types */
typedef int8_t s8;
typedef int16_t s16;
typedef int32_t s32;
typedef u_int8_t u8;
typedef u_int16_t u16;
typedef u_int32_t u32;
/*
* Driver definitions.
*/
#include <dev/sym/sym_defs.h>
#include <dev/sym/sym_fw.h>
/*
* IA32 architecture does not reorder STORES and prevents
* LOADS from passing STORES. It is called `program order'
* by Intel and allows device drivers to deal with memory
* ordering by only ensuring that the code is not reordered
* by the compiler when ordering is required.
* Other architectures implement a weaker ordering that
* requires memory barriers (and also IO barriers when they
* make sense) to be used.
*/
#if defined __i386__ || defined __amd64__
#define MEMORY_BARRIER() do { ; } while(0)
#elif defined __powerpc__
#define MEMORY_BARRIER() __asm__ volatile("eieio; sync" : : : "memory")
#elif defined __sparc64__
#define MEMORY_BARRIER() __asm__ volatile("membar #Sync" : : : "memory")
#elif defined __arm__
#define MEMORY_BARRIER() dmb()
#elif defined __aarch64__
#define MEMORY_BARRIER() dmb(sy)
#else
#error "Not supported platform"
#endif
/*
* A la VMS/CAM-3 queue management.
*/
typedef struct sym_quehead {
struct sym_quehead *flink; /* Forward pointer */
struct sym_quehead *blink; /* Backward pointer */
} SYM_QUEHEAD;
#define sym_que_init(ptr) do { \
(ptr)->flink = (ptr); (ptr)->blink = (ptr); \
} while (0)
static __inline void __sym_que_add(struct sym_quehead * new,
struct sym_quehead * blink,
struct sym_quehead * flink)
{
flink->blink = new;
new->flink = flink;
new->blink = blink;
blink->flink = new;
}
static __inline void __sym_que_del(struct sym_quehead * blink,
struct sym_quehead * flink)
{
flink->blink = blink;
blink->flink = flink;
}
static __inline int sym_que_empty(struct sym_quehead *head)
{
return head->flink == head;
}
static __inline void sym_que_splice(struct sym_quehead *list,
struct sym_quehead *head)
{
struct sym_quehead *first = list->flink;
if (first != list) {
struct sym_quehead *last = list->blink;
struct sym_quehead *at = head->flink;
first->blink = head;
head->flink = first;
last->flink = at;
at->blink = last;
}
}
#define sym_que_entry(ptr, type, member) \
((type *)((char *)(ptr)-(size_t)(&((type *)0)->member)))
#define sym_insque(new, pos) __sym_que_add(new, pos, (pos)->flink)
#define sym_remque(el) __sym_que_del((el)->blink, (el)->flink)
#define sym_insque_head(new, head) __sym_que_add(new, head, (head)->flink)
static __inline struct sym_quehead *sym_remque_head(struct sym_quehead *head)
{
struct sym_quehead *elem = head->flink;
if (elem != head)
__sym_que_del(head, elem->flink);
else
elem = NULL;
return elem;
}
#define sym_insque_tail(new, head) __sym_que_add(new, (head)->blink, head)
/*
* This one may be useful.
*/
#define FOR_EACH_QUEUED_ELEMENT(head, qp) \
for (qp = (head)->flink; qp != (head); qp = qp->flink)
/*
* FreeBSD does not offer our kind of queue in the CAM CCB.
* So, we have to cast.
*/
#define sym_qptr(p) ((struct sym_quehead *) (p))
/*
* Simple bitmap operations.
*/
#define sym_set_bit(p, n) (((u32 *)(p))[(n)>>5] |= (1<<((n)&0x1f)))
#define sym_clr_bit(p, n) (((u32 *)(p))[(n)>>5] &= ~(1<<((n)&0x1f)))
#define sym_is_bit(p, n) (((u32 *)(p))[(n)>>5] & (1<<((n)&0x1f)))
/*
* Number of tasks per device we want to handle.
*/
#if SYM_CONF_MAX_TAG_ORDER > 8
#error "more than 256 tags per logical unit not allowed."
#endif
#define SYM_CONF_MAX_TASK (1<<SYM_CONF_MAX_TAG_ORDER)
/*
* Donnot use more tasks that we can handle.
*/
#ifndef SYM_CONF_MAX_TAG
#define SYM_CONF_MAX_TAG SYM_CONF_MAX_TASK
#endif
#if SYM_CONF_MAX_TAG > SYM_CONF_MAX_TASK
#undef SYM_CONF_MAX_TAG
#define SYM_CONF_MAX_TAG SYM_CONF_MAX_TASK
#endif
/*
* This one means 'NO TAG for this job'
*/
#define NO_TAG (256)
/*
* Number of SCSI targets.
*/
#if SYM_CONF_MAX_TARGET > 16
#error "more than 16 targets not allowed."
#endif
/*
* Number of logical units per target.
*/
#if SYM_CONF_MAX_LUN > 64
#error "more than 64 logical units per target not allowed."
#endif
/*
* Asynchronous pre-scaler (ns). Shall be 40 for
* the SCSI timings to be compliant.
*/
#define SYM_CONF_MIN_ASYNC (40)
/*
* Number of entries in the START and DONE queues.
*
* We limit to 1 PAGE in order to succeed allocation of
* these queues. Each entry is 8 bytes long (2 DWORDS).
*/
#ifdef SYM_CONF_MAX_START
#define SYM_CONF_MAX_QUEUE (SYM_CONF_MAX_START+2)
#else
#define SYM_CONF_MAX_QUEUE (7*SYM_CONF_MAX_TASK+2)
#define SYM_CONF_MAX_START (SYM_CONF_MAX_QUEUE-2)
#endif
#if SYM_CONF_MAX_QUEUE > PAGE_SIZE/8
#undef SYM_CONF_MAX_QUEUE
#define SYM_CONF_MAX_QUEUE PAGE_SIZE/8
#undef SYM_CONF_MAX_START
#define SYM_CONF_MAX_START (SYM_CONF_MAX_QUEUE-2)
#endif
/*
* For this one, we want a short name :-)
*/
#define MAX_QUEUE SYM_CONF_MAX_QUEUE
/*
* Active debugging tags and verbosity.
*/
#define DEBUG_ALLOC (0x0001)
#define DEBUG_PHASE (0x0002)
#define DEBUG_POLL (0x0004)
#define DEBUG_QUEUE (0x0008)
#define DEBUG_RESULT (0x0010)
#define DEBUG_SCATTER (0x0020)
#define DEBUG_SCRIPT (0x0040)
#define DEBUG_TINY (0x0080)
#define DEBUG_TIMING (0x0100)
#define DEBUG_NEGO (0x0200)
#define DEBUG_TAGS (0x0400)
#define DEBUG_POINTER (0x0800)
#if 0
static int sym_debug = 0;
#define DEBUG_FLAGS sym_debug
#else
/* #define DEBUG_FLAGS (0x0631) */
#define DEBUG_FLAGS (0x0000)
#endif
#define sym_verbose (np->verbose)
/*
* Insert a delay in micro-seconds and milli-seconds.
*/
static void UDELAY(int us) { DELAY(us); }
static void MDELAY(int ms) { while (ms--) UDELAY(1000); }
/*
* Simple power of two buddy-like allocator.
*
* This simple code is not intended to be fast, but to
* provide power of 2 aligned memory allocations.
* Since the SCRIPTS processor only supplies 8 bit arithmetic,
* this allocator allows simple and fast address calculations
* from the SCRIPTS code. In addition, cache line alignment
* is guaranteed for power of 2 cache line size.
*
* This allocator has been developed for the Linux sym53c8xx
* driver, since this O/S does not provide naturally aligned
* allocations.
* It has the advantage of allowing the driver to use private
* pages of memory that will be useful if we ever need to deal
* with IO MMUs for PCI.
*/
#define MEMO_SHIFT 4 /* 16 bytes minimum memory chunk */
#define MEMO_PAGE_ORDER 0 /* 1 PAGE maximum */
#if 0
#define MEMO_FREE_UNUSED /* Free unused pages immediately */
#endif
#define MEMO_WARN 1
#define MEMO_CLUSTER_SHIFT (PAGE_SHIFT+MEMO_PAGE_ORDER)
#define MEMO_CLUSTER_SIZE (1UL << MEMO_CLUSTER_SHIFT)
#define MEMO_CLUSTER_MASK (MEMO_CLUSTER_SIZE-1)
#define get_pages() malloc(MEMO_CLUSTER_SIZE, M_DEVBUF, M_NOWAIT)
#define free_pages(p) free((p), M_DEVBUF)
typedef u_long m_addr_t; /* Enough bits to bit-hack addresses */
typedef struct m_link { /* Link between free memory chunks */
struct m_link *next;
} m_link_s;
typedef struct m_vtob { /* Virtual to Bus address translation */
struct m_vtob *next;
bus_dmamap_t dmamap; /* Map for this chunk */
m_addr_t vaddr; /* Virtual address */
m_addr_t baddr; /* Bus physical address */
} m_vtob_s;
/* Hash this stuff a bit to speed up translations */
#define VTOB_HASH_SHIFT 5
#define VTOB_HASH_SIZE (1UL << VTOB_HASH_SHIFT)
#define VTOB_HASH_MASK (VTOB_HASH_SIZE-1)
#define VTOB_HASH_CODE(m) \
((((m_addr_t) (m)) >> MEMO_CLUSTER_SHIFT) & VTOB_HASH_MASK)
typedef struct m_pool { /* Memory pool of a given kind */
bus_dma_tag_t dev_dmat; /* Identifies the pool */
bus_dma_tag_t dmat; /* Tag for our fixed allocations */
m_addr_t (*getp)(struct m_pool *);
#ifdef MEMO_FREE_UNUSED
void (*freep)(struct m_pool *, m_addr_t);
#endif
#define M_GETP() mp->getp(mp)
#define M_FREEP(p) mp->freep(mp, p)
int nump;
m_vtob_s *(vtob[VTOB_HASH_SIZE]);
struct m_pool *next;
struct m_link h[MEMO_CLUSTER_SHIFT - MEMO_SHIFT + 1];
} m_pool_s;
static void *___sym_malloc(m_pool_s *mp, int size)
{
int i = 0;
int s = (1 << MEMO_SHIFT);
int j;
m_addr_t a;
m_link_s *h = mp->h;
if (size > MEMO_CLUSTER_SIZE)
return NULL;
while (size > s) {
s <<= 1;
++i;
}
j = i;
while (!h[j].next) {
if (s == MEMO_CLUSTER_SIZE) {
h[j].next = (m_link_s *) M_GETP();
if (h[j].next)
h[j].next->next = NULL;
break;
}
++j;
s <<= 1;
}
a = (m_addr_t) h[j].next;
if (a) {
h[j].next = h[j].next->next;
while (j > i) {
j -= 1;
s >>= 1;
h[j].next = (m_link_s *) (a+s);
h[j].next->next = NULL;
}
}
#ifdef DEBUG
printf("___sym_malloc(%d) = %p\n", size, (void *) a);
#endif
return (void *) a;
}
static void ___sym_mfree(m_pool_s *mp, void *ptr, int size)
{
int i = 0;
int s = (1 << MEMO_SHIFT);
m_link_s *q;
m_addr_t a, b;
m_link_s *h = mp->h;
#ifdef DEBUG
printf("___sym_mfree(%p, %d)\n", ptr, size);
#endif
if (size > MEMO_CLUSTER_SIZE)
return;
while (size > s) {
s <<= 1;
++i;
}
a = (m_addr_t) ptr;
while (1) {
#ifdef MEMO_FREE_UNUSED
if (s == MEMO_CLUSTER_SIZE) {
M_FREEP(a);
break;
}
#endif
b = a ^ s;
q = &h[i];
while (q->next && q->next != (m_link_s *) b) {
q = q->next;
}
if (!q->next) {
((m_link_s *) a)->next = h[i].next;
h[i].next = (m_link_s *) a;
break;
}
q->next = q->next->next;
a = a & b;
s <<= 1;
++i;
}
}
static void *__sym_calloc2(m_pool_s *mp, int size, char *name, int uflags)
{
void *p;
p = ___sym_malloc(mp, size);
if (DEBUG_FLAGS & DEBUG_ALLOC)
printf ("new %-10s[%4d] @%p.\n", name, size, p);
if (p)
bzero(p, size);
else if (uflags & MEMO_WARN)
printf ("__sym_calloc2: failed to allocate %s[%d]\n", name, size);
return p;
}
#define __sym_calloc(mp, s, n) __sym_calloc2(mp, s, n, MEMO_WARN)
static void __sym_mfree(m_pool_s *mp, void *ptr, int size, char *name)
{
if (DEBUG_FLAGS & DEBUG_ALLOC)
printf ("freeing %-10s[%4d] @%p.\n", name, size, ptr);
___sym_mfree(mp, ptr, size);
}
/*
* Default memory pool we donnot need to involve in DMA.
*/
/*
* With the `bus dma abstraction', we use a separate pool for
* memory we donnot need to involve in DMA.
*/
static m_addr_t ___mp0_getp(m_pool_s *mp)
{
m_addr_t m = (m_addr_t) get_pages();
if (m)
++mp->nump;
return m;
}
#ifdef MEMO_FREE_UNUSED
static void ___mp0_freep(m_pool_s *mp, m_addr_t m)
{
free_pages(m);
--mp->nump;
}
#endif
#ifdef MEMO_FREE_UNUSED
static m_pool_s mp0 = {0, 0, ___mp0_getp, ___mp0_freep};
#else
static m_pool_s mp0 = {0, 0, ___mp0_getp};
#endif
/*
* Actual memory allocation routine for non-DMAed memory.
*/
static void *sym_calloc(int size, char *name)
{
void *m;
/* Lock */
m = __sym_calloc(&mp0, size, name);
/* Unlock */
return m;
}
/*
* Actual memory allocation routine for non-DMAed memory.
*/
static void sym_mfree(void *ptr, int size, char *name)
{
/* Lock */
__sym_mfree(&mp0, ptr, size, name);
/* Unlock */
}
/*
* DMAable pools.
*/
/*
* With `bus dma abstraction', we use a separate pool per parent
* BUS handle. A reverse table (hashed) is maintained for virtual
* to BUS address translation.
*/
static void getbaddrcb(void *arg, bus_dma_segment_t *segs, int nseg __unused,
int error)
{
bus_addr_t *baddr;
KASSERT(nseg == 1, ("%s: too many DMA segments (%d)", __func__, nseg));
baddr = (bus_addr_t *)arg;
if (error)
*baddr = 0;
else
*baddr = segs->ds_addr;
}
static m_addr_t ___dma_getp(m_pool_s *mp)
{
m_vtob_s *vbp;
void *vaddr = NULL;
bus_addr_t baddr = 0;
vbp = __sym_calloc(&mp0, sizeof(*vbp), "VTOB");
if (!vbp)
goto out_err;
if (bus_dmamem_alloc(mp->dmat, &vaddr,
BUS_DMA_COHERENT | BUS_DMA_WAITOK, &vbp->dmamap))
goto out_err;
bus_dmamap_load(mp->dmat, vbp->dmamap, vaddr,
MEMO_CLUSTER_SIZE, getbaddrcb, &baddr, BUS_DMA_NOWAIT);
if (baddr) {
int hc = VTOB_HASH_CODE(vaddr);
vbp->vaddr = (m_addr_t) vaddr;
vbp->baddr = (m_addr_t) baddr;
vbp->next = mp->vtob[hc];
mp->vtob[hc] = vbp;
++mp->nump;
return (m_addr_t) vaddr;
}
out_err:
if (baddr)
bus_dmamap_unload(mp->dmat, vbp->dmamap);
if (vaddr)
bus_dmamem_free(mp->dmat, vaddr, vbp->dmamap);
if (vbp)
__sym_mfree(&mp0, vbp, sizeof(*vbp), "VTOB");
return 0;
}
#ifdef MEMO_FREE_UNUSED
static void ___dma_freep(m_pool_s *mp, m_addr_t m)
{
m_vtob_s **vbpp, *vbp;
int hc = VTOB_HASH_CODE(m);
vbpp = &mp->vtob[hc];
while (*vbpp && (*vbpp)->vaddr != m)
vbpp = &(*vbpp)->next;
if (*vbpp) {
vbp = *vbpp;
*vbpp = (*vbpp)->next;
bus_dmamap_unload(mp->dmat, vbp->dmamap);
bus_dmamem_free(mp->dmat, (void *) vbp->vaddr, vbp->dmamap);
__sym_mfree(&mp0, vbp, sizeof(*vbp), "VTOB");
--mp->nump;
}
}
#endif
static __inline m_pool_s *___get_dma_pool(bus_dma_tag_t dev_dmat)
{
m_pool_s *mp;
for (mp = mp0.next; mp && mp->dev_dmat != dev_dmat; mp = mp->next);
return mp;
}
static m_pool_s *___cre_dma_pool(bus_dma_tag_t dev_dmat)
{
m_pool_s *mp = NULL;
mp = __sym_calloc(&mp0, sizeof(*mp), "MPOOL");
if (mp) {
mp->dev_dmat = dev_dmat;
if (!bus_dma_tag_create(dev_dmat, 1, MEMO_CLUSTER_SIZE,
BUS_SPACE_MAXADDR_32BIT,
BUS_SPACE_MAXADDR,
NULL, NULL, MEMO_CLUSTER_SIZE, 1,
MEMO_CLUSTER_SIZE, 0,
NULL, NULL, &mp->dmat)) {
mp->getp = ___dma_getp;
#ifdef MEMO_FREE_UNUSED
mp->freep = ___dma_freep;
#endif
mp->next = mp0.next;
mp0.next = mp;
return mp;
}
}
if (mp)
__sym_mfree(&mp0, mp, sizeof(*mp), "MPOOL");
return NULL;
}
#ifdef MEMO_FREE_UNUSED
static void ___del_dma_pool(m_pool_s *p)
{
struct m_pool **pp = &mp0.next;
while (*pp && *pp != p)
pp = &(*pp)->next;
if (*pp) {
*pp = (*pp)->next;
bus_dma_tag_destroy(p->dmat);
__sym_mfree(&mp0, p, sizeof(*p), "MPOOL");
}
}
#endif
static void *__sym_calloc_dma(bus_dma_tag_t dev_dmat, int size, char *name)
{
struct m_pool *mp;
void *m = NULL;
/* Lock */
mp = ___get_dma_pool(dev_dmat);
if (!mp)
mp = ___cre_dma_pool(dev_dmat);
if (mp)
m = __sym_calloc(mp, size, name);
#ifdef MEMO_FREE_UNUSED
if (mp && !mp->nump)
___del_dma_pool(mp);
#endif
/* Unlock */
return m;
}
static void
__sym_mfree_dma(bus_dma_tag_t dev_dmat, void *m, int size, char *name)
{
struct m_pool *mp;
/* Lock */
mp = ___get_dma_pool(dev_dmat);
if (mp)
__sym_mfree(mp, m, size, name);
#ifdef MEMO_FREE_UNUSED
if (mp && !mp->nump)
___del_dma_pool(mp);
#endif
/* Unlock */
}
static m_addr_t __vtobus(bus_dma_tag_t dev_dmat, void *m)
{
m_pool_s *mp;
int hc = VTOB_HASH_CODE(m);
m_vtob_s *vp = NULL;
m_addr_t a = ((m_addr_t) m) & ~MEMO_CLUSTER_MASK;
/* Lock */
mp = ___get_dma_pool(dev_dmat);
if (mp) {
vp = mp->vtob[hc];
while (vp && (m_addr_t) vp->vaddr != a)
vp = vp->next;
}
/* Unlock */
if (!vp)
panic("sym: VTOBUS FAILED!\n");
return vp ? vp->baddr + (((m_addr_t) m) - a) : 0;
}
/*
* Verbs for DMAable memory handling.
* The _uvptv_ macro avoids a nasty warning about pointer to volatile
* being discarded.
*/
#define _uvptv_(p) ((void *)((vm_offset_t)(p)))
#define _sym_calloc_dma(np, s, n) __sym_calloc_dma(np->bus_dmat, s, n)
#define _sym_mfree_dma(np, p, s, n) \
__sym_mfree_dma(np->bus_dmat, _uvptv_(p), s, n)
#define sym_calloc_dma(s, n) _sym_calloc_dma(np, s, n)
#define sym_mfree_dma(p, s, n) _sym_mfree_dma(np, p, s, n)
#define _vtobus(np, p) __vtobus(np->bus_dmat, _uvptv_(p))
#define vtobus(p) _vtobus(np, p)
/*
* Print a buffer in hexadecimal format.
*/
static void sym_printb_hex (u_char *p, int n)
{
while (n-- > 0)
printf (" %x", *p++);
}
/*
* Same with a label at beginning and .\n at end.
*/
static void sym_printl_hex (char *label, u_char *p, int n)
{
printf ("%s", label);
sym_printb_hex (p, n);
printf (".\n");
}
/*
* Return a string for SCSI BUS mode.
*/
static const char *sym_scsi_bus_mode(int mode)
{
switch(mode) {
case SMODE_HVD: return "HVD";
case SMODE_SE: return "SE";
case SMODE_LVD: return "LVD";
}
return "??";
}
/*
* Some poor and bogus sync table that refers to Tekram NVRAM layout.
*/
#ifdef SYM_CONF_NVRAM_SUPPORT
static const u_char Tekram_sync[16] =
{25,31,37,43, 50,62,75,125, 12,15,18,21, 6,7,9,10};
#endif
/*
* Union of supported NVRAM formats.
*/
struct sym_nvram {
int type;
#define SYM_SYMBIOS_NVRAM (1)
#define SYM_TEKRAM_NVRAM (2)
#ifdef SYM_CONF_NVRAM_SUPPORT
union {
Symbios_nvram Symbios;
Tekram_nvram Tekram;
} data;
#endif
};
/*
* This one is hopefully useless, but actually useful. :-)
*/
#ifndef assert
#define assert(expression) { \
if (!(expression)) { \
(void)panic( \
"assertion \"%s\" failed: file \"%s\", line %d\n", \
#expression, \
__FILE__, __LINE__); \
} \
}
#endif
/*
* Some provision for a possible big endian mode supported by
* Symbios chips (never seen, by the way).
* For now, this stuff does not deserve any comments. :)
*/
#define sym_offb(o) (o)
#define sym_offw(o) (o)
/*
* Some provision for support for BIG ENDIAN CPU.
*/
#define cpu_to_scr(dw) htole32(dw)
#define scr_to_cpu(dw) le32toh(dw)
/*
* Access to the chip IO registers and on-chip RAM.
* We use the `bus space' interface under FreeBSD-4 and
* later kernel versions.
*/
#if defined(SYM_CONF_IOMAPPED)
#define INB_OFF(o) bus_read_1(np->io_res, (o))
#define INW_OFF(o) bus_read_2(np->io_res, (o))
#define INL_OFF(o) bus_read_4(np->io_res, (o))
#define OUTB_OFF(o, v) bus_write_1(np->io_res, (o), (v))
#define OUTW_OFF(o, v) bus_write_2(np->io_res, (o), (v))
#define OUTL_OFF(o, v) bus_write_4(np->io_res, (o), (v))
#else /* Memory mapped IO */
#define INB_OFF(o) bus_read_1(np->mmio_res, (o))
#define INW_OFF(o) bus_read_2(np->mmio_res, (o))
#define INL_OFF(o) bus_read_4(np->mmio_res, (o))
#define OUTB_OFF(o, v) bus_write_1(np->mmio_res, (o), (v))
#define OUTW_OFF(o, v) bus_write_2(np->mmio_res, (o), (v))
#define OUTL_OFF(o, v) bus_write_4(np->mmio_res, (o), (v))
#endif /* SYM_CONF_IOMAPPED */
#define OUTRAM_OFF(o, a, l) \
bus_write_region_1(np->ram_res, (o), (a), (l))
/*
* Common definitions for both bus space and legacy IO methods.
*/
#define INB(r) INB_OFF(offsetof(struct sym_reg,r))
#define INW(r) INW_OFF(offsetof(struct sym_reg,r))
#define INL(r) INL_OFF(offsetof(struct sym_reg,r))
#define OUTB(r, v) OUTB_OFF(offsetof(struct sym_reg,r), (v))
#define OUTW(r, v) OUTW_OFF(offsetof(struct sym_reg,r), (v))
#define OUTL(r, v) OUTL_OFF(offsetof(struct sym_reg,r), (v))
#define OUTONB(r, m) OUTB(r, INB(r) | (m))
#define OUTOFFB(r, m) OUTB(r, INB(r) & ~(m))
#define OUTONW(r, m) OUTW(r, INW(r) | (m))
#define OUTOFFW(r, m) OUTW(r, INW(r) & ~(m))
#define OUTONL(r, m) OUTL(r, INL(r) | (m))
#define OUTOFFL(r, m) OUTL(r, INL(r) & ~(m))
/*
* We normally want the chip to have a consistent view
* of driver internal data structures when we restart it.
* Thus these macros.
*/
#define OUTL_DSP(v) \
do { \
MEMORY_BARRIER(); \
OUTL (nc_dsp, (v)); \
} while (0)
#define OUTONB_STD() \
do { \
MEMORY_BARRIER(); \
OUTONB (nc_dcntl, (STD|NOCOM)); \
} while (0)
/*
* Command control block states.
*/
#define HS_IDLE (0)
#define HS_BUSY (1)
#define HS_NEGOTIATE (2) /* sync/wide data transfer*/
#define HS_DISCONNECT (3) /* Disconnected by target */
#define HS_WAIT (4) /* waiting for resource */
#define HS_DONEMASK (0x80)
#define HS_COMPLETE (4|HS_DONEMASK)
#define HS_SEL_TIMEOUT (5|HS_DONEMASK) /* Selection timeout */
#define HS_UNEXPECTED (6|HS_DONEMASK) /* Unexpected disconnect */
#define HS_COMP_ERR (7|HS_DONEMASK) /* Completed with error */
/*
* Software Interrupt Codes
*/
#define SIR_BAD_SCSI_STATUS (1)
#define SIR_SEL_ATN_NO_MSG_OUT (2)
#define SIR_MSG_RECEIVED (3)
#define SIR_MSG_WEIRD (4)
#define SIR_NEGO_FAILED (5)
#define SIR_NEGO_PROTO (6)
#define SIR_SCRIPT_STOPPED (7)
#define SIR_REJECT_TO_SEND (8)
#define SIR_SWIDE_OVERRUN (9)
#define SIR_SODL_UNDERRUN (10)
#define SIR_RESEL_NO_MSG_IN (11)
#define SIR_RESEL_NO_IDENTIFY (12)
#define SIR_RESEL_BAD_LUN (13)
#define SIR_TARGET_SELECTED (14)
#define SIR_RESEL_BAD_I_T_L (15)
#define SIR_RESEL_BAD_I_T_L_Q (16)
#define SIR_ABORT_SENT (17)
#define SIR_RESEL_ABORTED (18)
#define SIR_MSG_OUT_DONE (19)
#define SIR_COMPLETE_ERROR (20)
#define SIR_DATA_OVERRUN (21)
#define SIR_BAD_PHASE (22)
#define SIR_MAX (22)
/*
* Extended error bit codes.
* xerr_status field of struct sym_ccb.
*/
#define XE_EXTRA_DATA (1) /* unexpected data phase */
#define XE_BAD_PHASE (1<<1) /* illegal phase (4/5) */
#define XE_PARITY_ERR (1<<2) /* unrecovered SCSI parity error */
#define XE_SODL_UNRUN (1<<3) /* ODD transfer in DATA OUT phase */
#define XE_SWIDE_OVRUN (1<<4) /* ODD transfer in DATA IN phase */
/*
* Negotiation status.
* nego_status field of struct sym_ccb.
*/
#define NS_SYNC (1)
#define NS_WIDE (2)
#define NS_PPR (3)
/*
* A CCB hashed table is used to retrieve CCB address
* from DSA value.
*/
#define CCB_HASH_SHIFT 8
#define CCB_HASH_SIZE (1UL << CCB_HASH_SHIFT)
#define CCB_HASH_MASK (CCB_HASH_SIZE-1)
#define CCB_HASH_CODE(dsa) (((dsa) >> 9) & CCB_HASH_MASK)
/*
* Device flags.
*/
#define SYM_DISC_ENABLED (1)
#define SYM_TAGS_ENABLED (1<<1)
#define SYM_SCAN_BOOT_DISABLED (1<<2)
#define SYM_SCAN_LUNS_DISABLED (1<<3)
/*
* Host adapter miscellaneous flags.
*/
#define SYM_AVOID_BUS_RESET (1)
#define SYM_SCAN_TARGETS_HILO (1<<1)
/*
* Device quirks.
* Some devices, for example the CHEETAH 2 LVD, disconnects without
* saving the DATA POINTER then reselects and terminates the IO.
* On reselection, the automatic RESTORE DATA POINTER makes the
* CURRENT DATA POINTER not point at the end of the IO.
* This behaviour just breaks our calculation of the residual.
* For now, we just force an AUTO SAVE on disconnection and will
* fix that in a further driver version.
*/
#define SYM_QUIRK_AUTOSAVE 1
/*
* Misc.
*/
#define SYM_LOCK() mtx_lock(&np->mtx)
#define SYM_LOCK_ASSERT(_what) mtx_assert(&np->mtx, (_what))
#define SYM_LOCK_DESTROY() mtx_destroy(&np->mtx)
#define SYM_LOCK_INIT() mtx_init(&np->mtx, "sym_lock", NULL, MTX_DEF)
#define SYM_LOCK_INITIALIZED() mtx_initialized(&np->mtx)
#define SYM_UNLOCK() mtx_unlock(&np->mtx)
#define SYM_SNOOP_TIMEOUT (10000000)
#define SYM_PCI_IO PCIR_BAR(0)
#define SYM_PCI_MMIO PCIR_BAR(1)
#define SYM_PCI_RAM PCIR_BAR(2)
#define SYM_PCI_RAM64 PCIR_BAR(3)
/*
* Back-pointer from the CAM CCB to our data structures.
*/
#define sym_hcb_ptr spriv_ptr0
/* #define sym_ccb_ptr spriv_ptr1 */
/*
* We mostly have to deal with pointers.
* Thus these typedef's.
*/
typedef struct sym_tcb *tcb_p;
typedef struct sym_lcb *lcb_p;
typedef struct sym_ccb *ccb_p;
typedef struct sym_hcb *hcb_p;
/*
* Gather negotiable parameters value
*/
struct sym_trans {
u8 scsi_version;
u8 spi_version;
u8 period;
u8 offset;
u8 width;
u8 options; /* PPR options */
};
struct sym_tinfo {
struct sym_trans current;
struct sym_trans goal;
struct sym_trans user;
};
#define BUS_8_BIT MSG_EXT_WDTR_BUS_8_BIT
#define BUS_16_BIT MSG_EXT_WDTR_BUS_16_BIT
/*
* Global TCB HEADER.
*
* Due to lack of indirect addressing on earlier NCR chips,
* this substructure is copied from the TCB to a global
* address after selection.
* For SYMBIOS chips that support LOAD/STORE this copy is
* not needed and thus not performed.
*/
struct sym_tcbh {
/*
* Scripts bus addresses of LUN table accessed from scripts.
* LUN #0 is a special case, since multi-lun devices are rare,
* and we we want to speed-up the general case and not waste
* resources.
*/
u32 luntbl_sa; /* bus address of this table */
u32 lun0_sa; /* bus address of LCB #0 */
/*
* Actual SYNC/WIDE IO registers value for this target.
* 'sval', 'wval' and 'uval' are read from SCRIPTS and
* so have alignment constraints.
*/
/*0*/ u_char uval; /* -> SCNTL4 register */
/*1*/ u_char sval; /* -> SXFER io register */
/*2*/ u_char filler1;
/*3*/ u_char wval; /* -> SCNTL3 io register */
};
/*
* Target Control Block
*/
struct sym_tcb {
/*
* TCB header.
* Assumed at offset 0.
*/
/*0*/ struct sym_tcbh head;
/*
* LUN table used by the SCRIPTS processor.
* An array of bus addresses is used on reselection.
*/
u32 *luntbl; /* LCBs bus address table */
/*
* LUN table used by the C code.
*/
lcb_p lun0p; /* LCB of LUN #0 (usual case) */
#if SYM_CONF_MAX_LUN > 1
lcb_p *lunmp; /* Other LCBs [1..MAX_LUN] */
#endif
/*
* Bitmap that tells about LUNs that succeeded at least
* 1 IO and therefore assumed to be a real device.
* Avoid useless allocation of the LCB structure.
*/
u32 lun_map[(SYM_CONF_MAX_LUN+31)/32];
/*
* Bitmap that tells about LUNs that haven't yet an LCB
* allocated (not discovered or LCB allocation failed).
*/
u32 busy0_map[(SYM_CONF_MAX_LUN+31)/32];
/*
* Transfer capabilities (SIP)
*/
struct sym_tinfo tinfo;
/*
* Keep track of the CCB used for the negotiation in order
* to ensure that only 1 negotiation is queued at a time.
*/
ccb_p nego_cp; /* CCB used for the nego */
/*
* Set when we want to reset the device.
*/
u_char to_reset;
/*
* Other user settable limits and options.
* These limits are read from the NVRAM if present.
*/
u_char usrflags;
u_short usrtags;
};
/*
* Assert some alignments required by the chip.
*/
CTASSERT(((offsetof(struct sym_reg, nc_sxfer) ^
offsetof(struct sym_tcb, head.sval)) &3) == 0);
CTASSERT(((offsetof(struct sym_reg, nc_scntl3) ^
offsetof(struct sym_tcb, head.wval)) &3) == 0);
/*
* Global LCB HEADER.
*
* Due to lack of indirect addressing on earlier NCR chips,
* this substructure is copied from the LCB to a global
* address after selection.
* For SYMBIOS chips that support LOAD/STORE this copy is
* not needed and thus not performed.
*/
struct sym_lcbh {
/*
* SCRIPTS address jumped by SCRIPTS on reselection.
* For not probed logical units, this address points to
* SCRIPTS that deal with bad LU handling (must be at
* offset zero of the LCB for that reason).
*/
/*0*/ u32 resel_sa;
/*
* Task (bus address of a CCB) read from SCRIPTS that points
* to the unique ITL nexus allowed to be disconnected.
*/
u32 itl_task_sa;
/*
* Task table bus address (read from SCRIPTS).
*/
u32 itlq_tbl_sa;
};
/*
* Logical Unit Control Block
*/
struct sym_lcb {
/*
* TCB header.
* Assumed at offset 0.
*/
/*0*/ struct sym_lcbh head;
/*
* Task table read from SCRIPTS that contains pointers to
* ITLQ nexuses. The bus address read from SCRIPTS is
* inside the header.
*/
u32 *itlq_tbl; /* Kernel virtual address */
/*
* Busy CCBs management.
*/
u_short busy_itlq; /* Number of busy tagged CCBs */
u_short busy_itl; /* Number of busy untagged CCBs */
/*
* Circular tag allocation buffer.
*/
u_short ia_tag; /* Tag allocation index */
u_short if_tag; /* Tag release index */
u_char *cb_tags; /* Circular tags buffer */
/*
* Set when we want to clear all tasks.
*/
u_char to_clear;
/*
* Capabilities.
*/
u_char user_flags;
u_char current_flags;
};
/*
* Action from SCRIPTS on a task.
* Is part of the CCB, but is also used separately to plug
* error handling action to perform from SCRIPTS.
*/
struct sym_actscr {
u32 start; /* Jumped by SCRIPTS after selection */
u32 restart; /* Jumped by SCRIPTS on relection */
};
/*
* Phase mismatch context.
*
* It is part of the CCB and is used as parameters for the
* DATA pointer. We need two contexts to handle correctly the
* SAVED DATA POINTER.
*/
struct sym_pmc {
struct sym_tblmove sg; /* Updated interrupted SG block */
u32 ret; /* SCRIPT return address */
};
/*
* LUN control block lookup.
* We use a direct pointer for LUN #0, and a table of
* pointers which is only allocated for devices that support
* LUN(s) > 0.
*/
#if SYM_CONF_MAX_LUN <= 1
#define sym_lp(tp, lun) (!lun) ? (tp)->lun0p : 0
#else
#define sym_lp(tp, lun) \
(!lun) ? (tp)->lun0p : (tp)->lunmp ? (tp)->lunmp[(lun)] : 0
#endif
/*
* Status are used by the host and the script processor.
*
* The last four bytes (status[4]) are copied to the
* scratchb register (declared as scr0..scr3) just after the
* select/reselect, and copied back just after disconnecting.
* Inside the script the XX_REG are used.
*/
/*
* Last four bytes (script)
*/
#define QU_REG scr0
#define HS_REG scr1
#define HS_PRT nc_scr1
#define SS_REG scr2
#define SS_PRT nc_scr2
#define HF_REG scr3
#define HF_PRT nc_scr3
/*
* Last four bytes (host)
*/
#define actualquirks phys.head.status[0]
#define host_status phys.head.status[1]
#define ssss_status phys.head.status[2]
#define host_flags phys.head.status[3]
/*
* Host flags
*/
#define HF_IN_PM0 1u
#define HF_IN_PM1 (1u<<1)
#define HF_ACT_PM (1u<<2)
#define HF_DP_SAVED (1u<<3)
#define HF_SENSE (1u<<4)
#define HF_EXT_ERR (1u<<5)
#define HF_DATA_IN (1u<<6)
#ifdef SYM_CONF_IARB_SUPPORT
#define HF_HINT_IARB (1u<<7)
#endif
/*
* Global CCB HEADER.
*
* Due to lack of indirect addressing on earlier NCR chips,
* this substructure is copied from the ccb to a global
* address after selection (or reselection) and copied back
* before disconnect.
* For SYMBIOS chips that support LOAD/STORE this copy is
* not needed and thus not performed.
*/
struct sym_ccbh {
/*
* Start and restart SCRIPTS addresses (must be at 0).
*/
/*0*/ struct sym_actscr go;
/*
* SCRIPTS jump address that deal with data pointers.
* 'savep' points to the position in the script responsible
* for the actual transfer of data.
* It's written on reception of a SAVE_DATA_POINTER message.
*/
u32 savep; /* Jump address to saved data pointer */
u32 lastp; /* SCRIPTS address at end of data */
u32 goalp; /* Not accessed for now from SCRIPTS */
/*
* Status fields.
*/
u8 status[4];
};
/*
* Data Structure Block
*
* During execution of a ccb by the script processor, the
* DSA (data structure address) register points to this
* substructure of the ccb.
*/
struct sym_dsb {
/*
* CCB header.
* Also assumed at offset 0 of the sym_ccb structure.
*/
/*0*/ struct sym_ccbh head;
/*
* Phase mismatch contexts.
* We need two to handle correctly the SAVED DATA POINTER.
* MUST BOTH BE AT OFFSET < 256, due to using 8 bit arithmetic
* for address calculation from SCRIPTS.
*/
struct sym_pmc pm0;
struct sym_pmc pm1;
/*
* Table data for Script
*/
struct sym_tblsel select;
struct sym_tblmove smsg;
struct sym_tblmove smsg_ext;
struct sym_tblmove cmd;
struct sym_tblmove sense;
struct sym_tblmove wresid;
struct sym_tblmove data [SYM_CONF_MAX_SG];
};
/*
* Our Command Control Block
*/
struct sym_ccb {
/*
* This is the data structure which is pointed by the DSA
* register when it is executed by the script processor.
* It must be the first entry.
*/
struct sym_dsb phys;
/*
* Pointer to CAM ccb and related stuff.
*/
struct callout ch; /* callout handle */
union ccb *cam_ccb; /* CAM scsiio ccb */
u8 cdb_buf[16]; /* Copy of CDB */
u8 *sns_bbuf; /* Bounce buffer for sense data */
#define SYM_SNS_BBUF_LEN sizeof(struct scsi_sense_data)
int data_len; /* Total data length */
int segments; /* Number of SG segments */
/*
* Miscellaneous status'.
*/
u_char nego_status; /* Negotiation status */
u_char xerr_status; /* Extended error flags */
u32 extra_bytes; /* Extraneous bytes transferred */
/*
* Message areas.
* We prepare a message to be sent after selection.
* We may use a second one if the command is rescheduled
* due to CHECK_CONDITION or COMMAND TERMINATED.
* Contents are IDENTIFY and SIMPLE_TAG.
* While negotiating sync or wide transfer,
* a SDTR or WDTR message is appended.
*/
u_char scsi_smsg [12];
u_char scsi_smsg2[12];
/*
* Auto request sense related fields.
*/
u_char sensecmd[6]; /* Request Sense command */
u_char sv_scsi_status; /* Saved SCSI status */
u_char sv_xerr_status; /* Saved extended status */
int sv_resid; /* Saved residual */
/*
* Map for the DMA of user data.
*/
void *arg; /* Argument for some callback */
bus_dmamap_t dmamap; /* DMA map for user data */
u_char dmamapped;
#define SYM_DMA_NONE 0
#define SYM_DMA_READ 1
#define SYM_DMA_WRITE 2
/*
* Other fields.
*/
u32 ccb_ba; /* BUS address of this CCB */
u_short tag; /* Tag for this transfer */
/* NO_TAG means no tag */
u_char target;
u_char lun;
ccb_p link_ccbh; /* Host adapter CCB hash chain */
SYM_QUEHEAD
link_ccbq; /* Link to free/busy CCB queue */
u32 startp; /* Initial data pointer */
int ext_sg; /* Extreme data pointer, used */
int ext_ofs; /* to calculate the residual. */
u_char to_abort; /* Want this IO to be aborted */
};
#define CCB_BA(cp,lbl) (cp->ccb_ba + offsetof(struct sym_ccb, lbl))
/*
* Host Control Block
*/
struct sym_hcb {
struct mtx mtx;
/*
* Global headers.
* Due to poorness of addressing capabilities, earlier
* chips (810, 815, 825) copy part of the data structures
* (CCB, TCB and LCB) in fixed areas.
*/
#ifdef SYM_CONF_GENERIC_SUPPORT
struct sym_ccbh ccb_head;
struct sym_tcbh tcb_head;
struct sym_lcbh lcb_head;
#endif
/*
* Idle task and invalid task actions and
* their bus addresses.
*/
struct sym_actscr idletask, notask, bad_itl, bad_itlq;
vm_offset_t idletask_ba, notask_ba, bad_itl_ba, bad_itlq_ba;
/*
* Dummy lun table to protect us against target
* returning bad lun number on reselection.
*/
u32 *badluntbl; /* Table physical address */
u32 badlun_sa; /* SCRIPT handler BUS address */
/*
* Bus address of this host control block.
*/
u32 hcb_ba;
/*
* Bit 32-63 of the on-chip RAM bus address in LE format.
* The START_RAM64 script loads the MMRS and MMWS from this
* field.
*/
u32 scr_ram_seg;
/*
* Chip and controller indentification.
*/
device_t device;
/*
* Initial value of some IO register bits.
* These values are assumed to have been set by BIOS, and may
* be used to probe adapter implementation differences.
*/
u_char sv_scntl0, sv_scntl3, sv_dmode, sv_dcntl, sv_ctest3, sv_ctest4,
sv_ctest5, sv_gpcntl, sv_stest2, sv_stest4, sv_scntl4,
sv_stest1;
/*
* Actual initial value of IO register bits used by the
* driver. They are loaded at initialisation according to
* features that are to be enabled/disabled.
*/
u_char rv_scntl0, rv_scntl3, rv_dmode, rv_dcntl, rv_ctest3, rv_ctest4,
rv_ctest5, rv_stest2, rv_ccntl0, rv_ccntl1, rv_scntl4;
/*
* Target data.
*/
#ifdef __amd64__
struct sym_tcb *target;
#else
struct sym_tcb target[SYM_CONF_MAX_TARGET];
#endif
/*
* Target control block bus address array used by the SCRIPT
* on reselection.
*/
u32 *targtbl;
u32 targtbl_ba;
/*
* CAM SIM information for this instance.
*/
struct cam_sim *sim;
struct cam_path *path;
/*
* Allocated hardware resources.
*/
struct resource *irq_res;
struct resource *io_res;
struct resource *mmio_res;
struct resource *ram_res;
int ram_id;
void *intr;
/*
* Bus stuff.
*
* My understanding of PCI is that all agents must share the
* same addressing range and model.
* But some hardware architecture guys provide complex and
* brain-deaded stuff that makes shit.
* This driver only support PCI compliant implementations and
* deals with part of the BUS stuff complexity only to fit O/S
* requirements.
*/
/*
* DMA stuff.
*/
bus_dma_tag_t bus_dmat; /* DMA tag from parent BUS */
bus_dma_tag_t data_dmat; /* DMA tag for user data */
/*
* BUS addresses of the chip
*/
vm_offset_t mmio_ba; /* MMIO BUS address */
int mmio_ws; /* MMIO Window size */
vm_offset_t ram_ba; /* RAM BUS address */
int ram_ws; /* RAM window size */
/*
* SCRIPTS virtual and physical bus addresses.
* 'script' is loaded in the on-chip RAM if present.
* 'scripth' stays in main memory for all chips except the
* 53C895A, 53C896 and 53C1010 that provide 8K on-chip RAM.
*/
u_char *scripta0; /* Copies of script and scripth */
u_char *scriptb0; /* Copies of script and scripth */
vm_offset_t scripta_ba; /* Actual script and scripth */
vm_offset_t scriptb_ba; /* bus addresses. */
vm_offset_t scriptb0_ba;
u_short scripta_sz; /* Actual size of script A */
u_short scriptb_sz; /* Actual size of script B */
/*
* Bus addresses, setup and patch methods for
* the selected firmware.
*/
struct sym_fwa_ba fwa_bas; /* Useful SCRIPTA bus addresses */
struct sym_fwb_ba fwb_bas; /* Useful SCRIPTB bus addresses */
void (*fw_setup)(hcb_p np, const struct sym_fw *fw);
void (*fw_patch)(hcb_p np);
const char *fw_name;
/*
* General controller parameters and configuration.
*/
u_short device_id; /* PCI device id */
u_char revision_id; /* PCI device revision id */
u_int features; /* Chip features map */
u_char myaddr; /* SCSI id of the adapter */
u_char maxburst; /* log base 2 of dwords burst */
u_char maxwide; /* Maximum transfer width */
u_char minsync; /* Min sync period factor (ST) */
u_char maxsync; /* Max sync period factor (ST) */
u_char maxoffs; /* Max scsi offset (ST) */
u_char minsync_dt; /* Min sync period factor (DT) */
u_char maxsync_dt; /* Max sync period factor (DT) */
u_char maxoffs_dt; /* Max scsi offset (DT) */
u_char multiplier; /* Clock multiplier (1,2,4) */
u_char clock_divn; /* Number of clock divisors */
u32 clock_khz; /* SCSI clock frequency in KHz */
u32 pciclk_khz; /* Estimated PCI clock in KHz */
/*
* Start queue management.
* It is filled up by the host processor and accessed by the
* SCRIPTS processor in order to start SCSI commands.
*/
volatile /* Prevent code optimizations */
u32 *squeue; /* Start queue virtual address */
u32 squeue_ba; /* Start queue BUS address */
u_short squeueput; /* Next free slot of the queue */
u_short actccbs; /* Number of allocated CCBs */
/*
* Command completion queue.
* It is the same size as the start queue to avoid overflow.
*/
u_short dqueueget; /* Next position to scan */
volatile /* Prevent code optimizations */
u32 *dqueue; /* Completion (done) queue */
u32 dqueue_ba; /* Done queue BUS address */
/*
* Miscellaneous buffers accessed by the scripts-processor.
* They shall be DWORD aligned, because they may be read or
* written with a script command.
*/
u_char msgout[8]; /* Buffer for MESSAGE OUT */
u_char msgin [8]; /* Buffer for MESSAGE IN */
u32 lastmsg; /* Last SCSI message sent */
u_char scratch; /* Scratch for SCSI receive */
/*
* Miscellaneous configuration and status parameters.
*/
u_char usrflags; /* Miscellaneous user flags */
u_char scsi_mode; /* Current SCSI BUS mode */
u_char verbose; /* Verbosity for this controller*/
u32 cache; /* Used for cache test at init. */
/*
* CCB lists and queue.
*/
ccb_p ccbh[CCB_HASH_SIZE]; /* CCB hashed by DSA value */
SYM_QUEHEAD free_ccbq; /* Queue of available CCBs */
SYM_QUEHEAD busy_ccbq; /* Queue of busy CCBs */
/*
* During error handling and/or recovery,
* active CCBs that are to be completed with
* error or requeued are moved from the busy_ccbq
* to the comp_ccbq prior to completion.
*/
SYM_QUEHEAD comp_ccbq;
/*
* CAM CCB pending queue.
*/
SYM_QUEHEAD cam_ccbq;
/*
* IMMEDIATE ARBITRATION (IARB) control.
*
* We keep track in 'last_cp' of the last CCB that has been
* queued to the SCRIPTS processor and clear 'last_cp' when
* this CCB completes. If last_cp is not zero at the moment
* we queue a new CCB, we set a flag in 'last_cp' that is
* used by the SCRIPTS as a hint for setting IARB.
* We donnot set more than 'iarb_max' consecutive hints for
* IARB in order to leave devices a chance to reselect.
* By the way, any non zero value of 'iarb_max' is unfair. :)
*/
#ifdef SYM_CONF_IARB_SUPPORT
u_short iarb_max; /* Max. # consecutive IARB hints*/
u_short iarb_count; /* Actual # of these hints */
ccb_p last_cp;
#endif
/*
* Command abort handling.
* We need to synchronize tightly with the SCRIPTS
* processor in order to handle things correctly.
*/
u_char abrt_msg[4]; /* Message to send buffer */
struct sym_tblmove abrt_tbl; /* Table for the MOV of it */
struct sym_tblsel abrt_sel; /* Sync params for selection */
u_char istat_sem; /* Tells the chip to stop (SEM) */
};
#define HCB_BA(np, lbl) (np->hcb_ba + offsetof(struct sym_hcb, lbl))
/*
* Return the name of the controller.
*/
static __inline const char *sym_name(hcb_p np)
{
return device_get_nameunit(np->device);
}
/*--------------------------------------------------------------------------*/
/*------------------------------ FIRMWARES ---------------------------------*/
/*--------------------------------------------------------------------------*/
/*
* This stuff will be moved to a separate source file when
* the driver will be broken into several source modules.
*/
/*
* Macros used for all firmwares.
*/
#define SYM_GEN_A(s, label) ((short) offsetof(s, label)),
#define SYM_GEN_B(s, label) ((short) offsetof(s, label)),
#define PADDR_A(label) SYM_GEN_PADDR_A(struct SYM_FWA_SCR, label)
#define PADDR_B(label) SYM_GEN_PADDR_B(struct SYM_FWB_SCR, label)
#ifdef SYM_CONF_GENERIC_SUPPORT
/*
* Allocate firmware #1 script area.
*/
#define SYM_FWA_SCR sym_fw1a_scr
#define SYM_FWB_SCR sym_fw1b_scr
#include <dev/sym/sym_fw1.h>
static const struct sym_fwa_ofs sym_fw1a_ofs = {
SYM_GEN_FW_A(struct SYM_FWA_SCR)
};
static const struct sym_fwb_ofs sym_fw1b_ofs = {
SYM_GEN_FW_B(struct SYM_FWB_SCR)
};
#undef SYM_FWA_SCR
#undef SYM_FWB_SCR
#endif /* SYM_CONF_GENERIC_SUPPORT */
/*
* Allocate firmware #2 script area.
*/
#define SYM_FWA_SCR sym_fw2a_scr
#define SYM_FWB_SCR sym_fw2b_scr
#include <dev/sym/sym_fw2.h>
static const struct sym_fwa_ofs sym_fw2a_ofs = {
SYM_GEN_FW_A(struct SYM_FWA_SCR)
};
static const struct sym_fwb_ofs sym_fw2b_ofs = {
SYM_GEN_FW_B(struct SYM_FWB_SCR)
SYM_GEN_B(struct SYM_FWB_SCR, start64)
SYM_GEN_B(struct SYM_FWB_SCR, pm_handle)
};
#undef SYM_FWA_SCR
#undef SYM_FWB_SCR
#undef SYM_GEN_A
#undef SYM_GEN_B
#undef PADDR_A
#undef PADDR_B
#ifdef SYM_CONF_GENERIC_SUPPORT
/*
* Patch routine for firmware #1.
*/
static void
sym_fw1_patch(hcb_p np)
{
struct sym_fw1a_scr *scripta0;
struct sym_fw1b_scr *scriptb0;
scripta0 = (struct sym_fw1a_scr *) np->scripta0;
scriptb0 = (struct sym_fw1b_scr *) np->scriptb0;
/*
* Remove LED support if not needed.
*/
if (!(np->features & FE_LED0)) {
scripta0->idle[0] = cpu_to_scr(SCR_NO_OP);
scripta0->reselected[0] = cpu_to_scr(SCR_NO_OP);
scripta0->start[0] = cpu_to_scr(SCR_NO_OP);
}
#ifdef SYM_CONF_IARB_SUPPORT
/*
* If user does not want to use IMMEDIATE ARBITRATION
* when we are reselected while attempting to arbitrate,
* patch the SCRIPTS accordingly with a SCRIPT NO_OP.
*/
if (!SYM_CONF_SET_IARB_ON_ARB_LOST)
scripta0->ungetjob[0] = cpu_to_scr(SCR_NO_OP);
#endif
/*
* Patch some data in SCRIPTS.
* - start and done queue initial bus address.
* - target bus address table bus address.
*/
scriptb0->startpos[0] = cpu_to_scr(np->squeue_ba);
scriptb0->done_pos[0] = cpu_to_scr(np->dqueue_ba);
scriptb0->targtbl[0] = cpu_to_scr(np->targtbl_ba);
}
#endif /* SYM_CONF_GENERIC_SUPPORT */
/*
* Patch routine for firmware #2.
*/
static void
sym_fw2_patch(hcb_p np)
{
struct sym_fw2a_scr *scripta0;
struct sym_fw2b_scr *scriptb0;
scripta0 = (struct sym_fw2a_scr *) np->scripta0;
scriptb0 = (struct sym_fw2b_scr *) np->scriptb0;
/*
* Remove LED support if not needed.
*/
if (!(np->features & FE_LED0)) {
scripta0->idle[0] = cpu_to_scr(SCR_NO_OP);
scripta0->reselected[0] = cpu_to_scr(SCR_NO_OP);
scripta0->start[0] = cpu_to_scr(SCR_NO_OP);
}
#ifdef SYM_CONF_IARB_SUPPORT
/*
* If user does not want to use IMMEDIATE ARBITRATION
* when we are reselected while attempting to arbitrate,
* patch the SCRIPTS accordingly with a SCRIPT NO_OP.
*/
if (!SYM_CONF_SET_IARB_ON_ARB_LOST)
scripta0->ungetjob[0] = cpu_to_scr(SCR_NO_OP);
#endif
/*
* Patch some variable in SCRIPTS.
* - start and done queue initial bus address.
* - target bus address table bus address.
*/
scriptb0->startpos[0] = cpu_to_scr(np->squeue_ba);
scriptb0->done_pos[0] = cpu_to_scr(np->dqueue_ba);
scriptb0->targtbl[0] = cpu_to_scr(np->targtbl_ba);
/*
* Remove the load of SCNTL4 on reselection if not a C10.
*/
if (!(np->features & FE_C10)) {
scripta0->resel_scntl4[0] = cpu_to_scr(SCR_NO_OP);
scripta0->resel_scntl4[1] = cpu_to_scr(0);
}
/*
* Remove a couple of work-arounds specific to C1010 if
* they are not desirable. See `sym_fw2.h' for more details.
*/
if (!(np->device_id == PCI_ID_LSI53C1010_2 &&
np->revision_id < 0x1 &&
np->pciclk_khz < 60000)) {
scripta0->datao_phase[0] = cpu_to_scr(SCR_NO_OP);
scripta0->datao_phase[1] = cpu_to_scr(0);
}
if (!(np->device_id == PCI_ID_LSI53C1010 &&
/* np->revision_id < 0xff */ 1)) {
scripta0->sel_done[0] = cpu_to_scr(SCR_NO_OP);
scripta0->sel_done[1] = cpu_to_scr(0);
}
/*
* Patch some other variables in SCRIPTS.
* These ones are loaded by the SCRIPTS processor.
*/
scriptb0->pm0_data_addr[0] =
cpu_to_scr(np->scripta_ba +
offsetof(struct sym_fw2a_scr, pm0_data));
scriptb0->pm1_data_addr[0] =
cpu_to_scr(np->scripta_ba +
offsetof(struct sym_fw2a_scr, pm1_data));
}
/*
* Fill the data area in scripts.
* To be done for all firmwares.
*/
static void
sym_fw_fill_data (u32 *in, u32 *out)
{
int i;
for (i = 0; i < SYM_CONF_MAX_SG; i++) {
*in++ = SCR_CHMOV_TBL ^ SCR_DATA_IN;
*in++ = offsetof (struct sym_dsb, data[i]);
*out++ = SCR_CHMOV_TBL ^ SCR_DATA_OUT;
*out++ = offsetof (struct sym_dsb, data[i]);
}
}
/*
* Setup useful script bus addresses.
* To be done for all firmwares.
*/
static void
sym_fw_setup_bus_addresses(hcb_p np, const struct sym_fw *fw)
{
u32 *pa;
const u_short *po;
int i;
/*
* Build the bus address table for script A
* from the script A offset table.
*/
po = (const u_short *) fw->a_ofs;
pa = (u32 *) &np->fwa_bas;
for (i = 0 ; i < sizeof(np->fwa_bas)/sizeof(u32) ; i++)
pa[i] = np->scripta_ba + po[i];
/*
* Same for script B.
*/
po = (const u_short *) fw->b_ofs;
pa = (u32 *) &np->fwb_bas;
for (i = 0 ; i < sizeof(np->fwb_bas)/sizeof(u32) ; i++)
pa[i] = np->scriptb_ba + po[i];
}
#ifdef SYM_CONF_GENERIC_SUPPORT
/*
* Setup routine for firmware #1.
*/
static void
sym_fw1_setup(hcb_p np, const struct sym_fw *fw)
{
struct sym_fw1a_scr *scripta0;
scripta0 = (struct sym_fw1a_scr *) np->scripta0;
/*
* Fill variable parts in scripts.
*/
sym_fw_fill_data(scripta0->data_in, scripta0->data_out);
/*
* Setup bus addresses used from the C code..
*/
sym_fw_setup_bus_addresses(np, fw);
}
#endif /* SYM_CONF_GENERIC_SUPPORT */
/*
* Setup routine for firmware #2.
*/
static void
sym_fw2_setup(hcb_p np, const struct sym_fw *fw)
{
struct sym_fw2a_scr *scripta0;
scripta0 = (struct sym_fw2a_scr *) np->scripta0;
/*
* Fill variable parts in scripts.
*/
sym_fw_fill_data(scripta0->data_in, scripta0->data_out);
/*
* Setup bus addresses used from the C code..
*/
sym_fw_setup_bus_addresses(np, fw);
}
/*
* Allocate firmware descriptors.
*/
#ifdef SYM_CONF_GENERIC_SUPPORT
static const struct sym_fw sym_fw1 = SYM_FW_ENTRY(sym_fw1, "NCR-generic");
#endif /* SYM_CONF_GENERIC_SUPPORT */
static const struct sym_fw sym_fw2 = SYM_FW_ENTRY(sym_fw2, "LOAD/STORE-based");
/*
* Find the most appropriate firmware for a chip.
*/
static const struct sym_fw *
sym_find_firmware(const struct sym_pci_chip *chip)
{
if (chip->features & FE_LDSTR)
return &sym_fw2;
#ifdef SYM_CONF_GENERIC_SUPPORT
else if (!(chip->features & (FE_PFEN|FE_NOPM|FE_DAC)))
return &sym_fw1;
#endif
else
return NULL;
}
/*
* Bind a script to physical addresses.
*/
static void sym_fw_bind_script (hcb_p np, u32 *start, int len)
{
u32 opcode, new, old, tmp1, tmp2;
u32 *end, *cur;
int relocs;
cur = start;
end = start + len/4;
while (cur < end) {
opcode = *cur;
/*
* If we forget to change the length
* in scripts, a field will be
* padded with 0. This is an illegal
* command.
*/
if (opcode == 0) {
printf ("%s: ERROR0 IN SCRIPT at %d.\n",
sym_name(np), (int) (cur-start));
MDELAY (10000);
++cur;
continue;
}
/*
* We use the bogus value 0xf00ff00f ;-)
* to reserve data area in SCRIPTS.
*/
if (opcode == SCR_DATA_ZERO) {
*cur++ = 0;
continue;
}
if (DEBUG_FLAGS & DEBUG_SCRIPT)
printf ("%d: <%x>\n", (int) (cur-start),
(unsigned)opcode);
/*
* We don't have to decode ALL commands
*/
switch (opcode >> 28) {
case 0xf:
/*
* LOAD / STORE DSA relative, don't relocate.
*/
relocs = 0;
break;
case 0xe:
/*
* LOAD / STORE absolute.
*/
relocs = 1;
break;
case 0xc:
/*
* COPY has TWO arguments.
*/
relocs = 2;
tmp1 = cur[1];
tmp2 = cur[2];
if ((tmp1 ^ tmp2) & 3) {
printf ("%s: ERROR1 IN SCRIPT at %d.\n",
sym_name(np), (int) (cur-start));
MDELAY (10000);
}
/*
* If PREFETCH feature not enabled, remove
* the NO FLUSH bit if present.
*/
if ((opcode & SCR_NO_FLUSH) &&
!(np->features & FE_PFEN)) {
opcode = (opcode & ~SCR_NO_FLUSH);
}
break;
case 0x0:
/*
* MOVE/CHMOV (absolute address)
*/
if (!(np->features & FE_WIDE))
opcode = (opcode | OPC_MOVE);
relocs = 1;
break;
case 0x1:
/*
* MOVE/CHMOV (table indirect)
*/
if (!(np->features & FE_WIDE))
opcode = (opcode | OPC_MOVE);
relocs = 0;
break;
case 0x8:
/*
* JUMP / CALL
* dont't relocate if relative :-)
*/
if (opcode & 0x00800000)
relocs = 0;
else if ((opcode & 0xf8400000) == 0x80400000)/*JUMP64*/
relocs = 2;
else
relocs = 1;
break;
case 0x4:
case 0x5:
case 0x6:
case 0x7:
relocs = 1;
break;
default:
relocs = 0;
break;
}
/*
* Scriptify:) the opcode.
*/
*cur++ = cpu_to_scr(opcode);
/*
* If no relocation, assume 1 argument
* and just scriptize:) it.
*/
if (!relocs) {
*cur = cpu_to_scr(*cur);
++cur;
continue;
}
/*
* Otherwise performs all needed relocations.
*/
while (relocs--) {
old = *cur;
switch (old & RELOC_MASK) {
case RELOC_REGISTER:
new = (old & ~RELOC_MASK) + np->mmio_ba;
break;
case RELOC_LABEL_A:
new = (old & ~RELOC_MASK) + np->scripta_ba;
break;
case RELOC_LABEL_B:
new = (old & ~RELOC_MASK) + np->scriptb_ba;
break;
case RELOC_SOFTC:
new = (old & ~RELOC_MASK) + np->hcb_ba;
break;
case 0:
/*
* Don't relocate a 0 address.
* They are mostly used for patched or
* script self-modified areas.
*/
if (old == 0) {
new = old;
break;
}
/* fall through */
default:
new = 0;
panic("sym_fw_bind_script: "
"weird relocation %x\n", old);
break;
}
*cur++ = cpu_to_scr(new);
}
}
}
/*---------------------------------------------------------------------------*/
/*--------------------------- END OF FIRMWARES -----------------------------*/
/*---------------------------------------------------------------------------*/
/*
* Function prototypes.
*/
static void sym_save_initial_setting (hcb_p np);
static int sym_prepare_setting (hcb_p np, struct sym_nvram *nvram);
static int sym_prepare_nego (hcb_p np, ccb_p cp, int nego, u_char *msgptr);
static void sym_put_start_queue (hcb_p np, ccb_p cp);
static void sym_chip_reset (hcb_p np);
static void sym_soft_reset (hcb_p np);
static void sym_start_reset (hcb_p np);
static int sym_reset_scsi_bus (hcb_p np, int enab_int);
static int sym_wakeup_done (hcb_p np);
static void sym_flush_busy_queue (hcb_p np, int cam_status);
static void sym_flush_comp_queue (hcb_p np, int cam_status);
static void sym_init (hcb_p np, int reason);
static int sym_getsync(hcb_p np, u_char dt, u_char sfac, u_char *divp,
u_char *fakp);
static void sym_setsync (hcb_p np, ccb_p cp, u_char ofs, u_char per,
u_char div, u_char fak);
static void sym_setwide (hcb_p np, ccb_p cp, u_char wide);
static void sym_setpprot(hcb_p np, ccb_p cp, u_char dt, u_char ofs,
u_char per, u_char wide, u_char div, u_char fak);
static void sym_settrans(hcb_p np, ccb_p cp, u_char dt, u_char ofs,
u_char per, u_char wide, u_char div, u_char fak);
static void sym_log_hard_error (hcb_p np, u_short sist, u_char dstat);
static void sym_intr (void *arg);
static void sym_poll (struct cam_sim *sim);
static void sym_recover_scsi_int (hcb_p np, u_char hsts);
static void sym_int_sto (hcb_p np);
static void sym_int_udc (hcb_p np);
static void sym_int_sbmc (hcb_p np);
static void sym_int_par (hcb_p np, u_short sist);
static void sym_int_ma (hcb_p np);
static int sym_dequeue_from_squeue(hcb_p np, int i, int target, int lun,
int task);
static void sym_sir_bad_scsi_status (hcb_p np, ccb_p cp);
static int sym_clear_tasks (hcb_p np, int status, int targ, int lun, int task);
static void sym_sir_task_recovery (hcb_p np, int num);
static int sym_evaluate_dp (hcb_p np, ccb_p cp, u32 scr, int *ofs);
static void sym_modify_dp(hcb_p np, ccb_p cp, int ofs);
static int sym_compute_residual (hcb_p np, ccb_p cp);
static int sym_show_msg (u_char * msg);
static void sym_print_msg (ccb_p cp, char *label, u_char *msg);
static void sym_sync_nego (hcb_p np, tcb_p tp, ccb_p cp);
static void sym_ppr_nego (hcb_p np, tcb_p tp, ccb_p cp);
static void sym_wide_nego (hcb_p np, tcb_p tp, ccb_p cp);
static void sym_nego_default (hcb_p np, tcb_p tp, ccb_p cp);
static void sym_nego_rejected (hcb_p np, tcb_p tp, ccb_p cp);
static void sym_int_sir (hcb_p np);
static void sym_free_ccb (hcb_p np, ccb_p cp);
static ccb_p sym_get_ccb (hcb_p np, u_char tn, u_char ln, u_char tag_order);
static ccb_p sym_alloc_ccb (hcb_p np);
static ccb_p sym_ccb_from_dsa (hcb_p np, u32 dsa);
static lcb_p sym_alloc_lcb (hcb_p np, u_char tn, u_char ln);
static void sym_alloc_lcb_tags (hcb_p np, u_char tn, u_char ln);
static int sym_snooptest (hcb_p np);
static void sym_selectclock(hcb_p np, u_char scntl3);
static void sym_getclock (hcb_p np, int mult);
static int sym_getpciclock (hcb_p np);
static void sym_complete_ok (hcb_p np, ccb_p cp);
static void sym_complete_error (hcb_p np, ccb_p cp);
static void sym_callout (void *arg);
static int sym_abort_scsiio (hcb_p np, union ccb *ccb, int timed_out);
static void sym_reset_dev (hcb_p np, union ccb *ccb);
static void sym_action (struct cam_sim *sim, union ccb *ccb);
static int sym_setup_cdb (hcb_p np, struct ccb_scsiio *csio, ccb_p cp);
static void sym_setup_data_and_start (hcb_p np, struct ccb_scsiio *csio,
ccb_p cp);
static int sym_fast_scatter_sg_physical(hcb_p np, ccb_p cp,
bus_dma_segment_t *psegs, int nsegs);
static int sym_scatter_sg_physical (hcb_p np, ccb_p cp,
bus_dma_segment_t *psegs, int nsegs);
static void sym_action2 (struct cam_sim *sim, union ccb *ccb);
static void sym_update_trans(hcb_p np, struct sym_trans *tip,
struct ccb_trans_settings *cts);
static void sym_update_dflags(hcb_p np, u_char *flags,
struct ccb_trans_settings *cts);
static const struct sym_pci_chip *sym_find_pci_chip (device_t dev);
static int sym_pci_probe (device_t dev);
static int sym_pci_attach (device_t dev);
static void sym_pci_free (hcb_p np);
static int sym_cam_attach (hcb_p np);
static void sym_cam_free (hcb_p np);
static void sym_nvram_setup_host (hcb_p np, struct sym_nvram *nvram);
static void sym_nvram_setup_target (hcb_p np, int targ, struct sym_nvram *nvp);
static int sym_read_nvram (hcb_p np, struct sym_nvram *nvp);
/*
* Print something which allows to retrieve the controller type,
* unit, target, lun concerned by a kernel message.
*/
static void PRINT_TARGET (hcb_p np, int target)
{
printf ("%s:%d:", sym_name(np), target);
}
static void PRINT_LUN(hcb_p np, int target, int lun)
{
printf ("%s:%d:%d:", sym_name(np), target, lun);
}
static void PRINT_ADDR (ccb_p cp)
{
if (cp && cp->cam_ccb)
xpt_print_path(cp->cam_ccb->ccb_h.path);
}
/*
* Take into account this ccb in the freeze count.
*/
static void sym_freeze_cam_ccb(union ccb *ccb)
{
if (!(ccb->ccb_h.flags & CAM_DEV_QFRZDIS)) {
if (!(ccb->ccb_h.status & CAM_DEV_QFRZN)) {
ccb->ccb_h.status |= CAM_DEV_QFRZN;
xpt_freeze_devq(ccb->ccb_h.path, 1);
}
}
}
/*
* Set the status field of a CAM CCB.
*/
static __inline void sym_set_cam_status(union ccb *ccb, cam_status status)
{
ccb->ccb_h.status &= ~CAM_STATUS_MASK;
ccb->ccb_h.status |= status;
}
/*
* Get the status field of a CAM CCB.
*/
static __inline int sym_get_cam_status(union ccb *ccb)
{
return ccb->ccb_h.status & CAM_STATUS_MASK;
}
/*
* Enqueue a CAM CCB.
*/
static void sym_enqueue_cam_ccb(ccb_p cp)
{
hcb_p np;
union ccb *ccb;
ccb = cp->cam_ccb;
np = (hcb_p) cp->arg;
assert(!(ccb->ccb_h.status & CAM_SIM_QUEUED));
ccb->ccb_h.status = CAM_REQ_INPROG;
callout_reset_sbt(&cp->ch, SBT_1MS * ccb->ccb_h.timeout, 0, sym_callout,
(caddr_t)ccb, 0);
ccb->ccb_h.status |= CAM_SIM_QUEUED;
ccb->ccb_h.sym_hcb_ptr = np;
sym_insque_tail(sym_qptr(&ccb->ccb_h.sim_links), &np->cam_ccbq);
}
/*
* Complete a pending CAM CCB.
*/
static void sym_xpt_done(hcb_p np, union ccb *ccb, ccb_p cp)
{
SYM_LOCK_ASSERT(MA_OWNED);
if (ccb->ccb_h.status & CAM_SIM_QUEUED) {
callout_stop(&cp->ch);
sym_remque(sym_qptr(&ccb->ccb_h.sim_links));
ccb->ccb_h.status &= ~CAM_SIM_QUEUED;
ccb->ccb_h.sym_hcb_ptr = NULL;
}
xpt_done(ccb);
}
static void sym_xpt_done2(hcb_p np, union ccb *ccb, int cam_status)
{
SYM_LOCK_ASSERT(MA_OWNED);
sym_set_cam_status(ccb, cam_status);
xpt_done(ccb);
}
/*
* SYMBIOS chip clock divisor table.
*
* Divisors are multiplied by 10,000,000 in order to make
* calculations more simple.
*/
#define _5M 5000000
static const u32 div_10M[] =
{2*_5M, 3*_5M, 4*_5M, 6*_5M, 8*_5M, 12*_5M, 16*_5M};
/*
* SYMBIOS chips allow burst lengths of 2, 4, 8, 16, 32, 64,
* 128 transfers. All chips support at least 16 transfers
* bursts. The 825A, 875 and 895 chips support bursts of up
* to 128 transfers and the 895A and 896 support bursts of up
* to 64 transfers. All other chips support up to 16
* transfers bursts.
*
* For PCI 32 bit data transfers each transfer is a DWORD.
* It is a QUADWORD (8 bytes) for PCI 64 bit data transfers.
*
* We use log base 2 (burst length) as internal code, with
* value 0 meaning "burst disabled".
*/
/*
* Burst length from burst code.
*/
#define burst_length(bc) (!(bc))? 0 : 1 << (bc)
/*
* Burst code from io register bits.
*/
#define burst_code(dmode, ctest4, ctest5) \
(ctest4) & 0x80? 0 : (((dmode) & 0xc0) >> 6) + ((ctest5) & 0x04) + 1
/*
* Set initial io register bits from burst code.
*/
static __inline void sym_init_burst(hcb_p np, u_char bc)
{
np->rv_ctest4 &= ~0x80;
np->rv_dmode &= ~(0x3 << 6);
np->rv_ctest5 &= ~0x4;
if (!bc) {
np->rv_ctest4 |= 0x80;
}
else {
--bc;
np->rv_dmode |= ((bc & 0x3) << 6);
np->rv_ctest5 |= (bc & 0x4);
}
}
/*
* Print out the list of targets that have some flag disabled by user.
*/
static void sym_print_targets_flag(hcb_p np, int mask, char *msg)
{
int cnt;
int i;
for (cnt = 0, i = 0 ; i < SYM_CONF_MAX_TARGET ; i++) {
if (i == np->myaddr)
continue;
if (np->target[i].usrflags & mask) {
if (!cnt++)
printf("%s: %s disabled for targets",
sym_name(np), msg);
printf(" %d", i);
}
}
if (cnt)
printf(".\n");
}
/*
* Save initial settings of some IO registers.
* Assumed to have been set by BIOS.
* We cannot reset the chip prior to reading the
* IO registers, since informations will be lost.
* Since the SCRIPTS processor may be running, this
* is not safe on paper, but it seems to work quite
* well. :)
*/
static void sym_save_initial_setting (hcb_p np)
{
np->sv_scntl0 = INB(nc_scntl0) & 0x0a;
np->sv_scntl3 = INB(nc_scntl3) & 0x07;
np->sv_dmode = INB(nc_dmode) & 0xce;
np->sv_dcntl = INB(nc_dcntl) & 0xa8;
np->sv_ctest3 = INB(nc_ctest3) & 0x01;
np->sv_ctest4 = INB(nc_ctest4) & 0x80;
np->sv_gpcntl = INB(nc_gpcntl);
np->sv_stest1 = INB(nc_stest1);
np->sv_stest2 = INB(nc_stest2) & 0x20;
np->sv_stest4 = INB(nc_stest4);
if (np->features & FE_C10) { /* Always large DMA fifo + ultra3 */
np->sv_scntl4 = INB(nc_scntl4);
np->sv_ctest5 = INB(nc_ctest5) & 0x04;
}
else
np->sv_ctest5 = INB(nc_ctest5) & 0x24;
}
/*
* Prepare io register values used by sym_init() according
* to selected and supported features.
*/
static int sym_prepare_setting(hcb_p np, struct sym_nvram *nvram)
{
u_char burst_max;
u32 period;
int i;
/*
* Wide ?
*/
np->maxwide = (np->features & FE_WIDE)? 1 : 0;
/*
* Get the frequency of the chip's clock.
*/
if (np->features & FE_QUAD)
np->multiplier = 4;
else if (np->features & FE_DBLR)
np->multiplier = 2;
else
np->multiplier = 1;
np->clock_khz = (np->features & FE_CLK80)? 80000 : 40000;
np->clock_khz *= np->multiplier;
if (np->clock_khz != 40000)
sym_getclock(np, np->multiplier);
/*
* Divisor to be used for async (timer pre-scaler).
*/
i = np->clock_divn - 1;
while (--i >= 0) {
if (10ul * SYM_CONF_MIN_ASYNC * np->clock_khz > div_10M[i]) {
++i;
break;
}
}
np->rv_scntl3 = i+1;
/*
* The C1010 uses hardwired divisors for async.
* So, we just throw away, the async. divisor.:-)
*/
if (np->features & FE_C10)
np->rv_scntl3 = 0;
/*
* Minimum synchronous period factor supported by the chip.
* Btw, 'period' is in tenths of nanoseconds.
*/
period = howmany(4 * div_10M[0], np->clock_khz);
if (period <= 250) np->minsync = 10;
else if (period <= 303) np->minsync = 11;
else if (period <= 500) np->minsync = 12;
else np->minsync = howmany(period, 40);
/*
* Check against chip SCSI standard support (SCSI-2,ULTRA,ULTRA2).
*/
if (np->minsync < 25 &&
!(np->features & (FE_ULTRA|FE_ULTRA2|FE_ULTRA3)))
np->minsync = 25;
else if (np->minsync < 12 &&
!(np->features & (FE_ULTRA2|FE_ULTRA3)))
np->minsync = 12;
/*
* Maximum synchronous period factor supported by the chip.
*/
period = (11 * div_10M[np->clock_divn - 1]) / (4 * np->clock_khz);
np->maxsync = period > 2540 ? 254 : period / 10;
/*
* If chip is a C1010, guess the sync limits in DT mode.
*/
if ((np->features & (FE_C10|FE_ULTRA3)) == (FE_C10|FE_ULTRA3)) {
if (np->clock_khz == 160000) {
np->minsync_dt = 9;
np->maxsync_dt = 50;
np->maxoffs_dt = 62;
}
}
/*
* 64 bit addressing (895A/896/1010) ?
*/
if (np->features & FE_DAC)
#ifdef __LP64__
np->rv_ccntl1 |= (XTIMOD | EXTIBMV);
#else
np->rv_ccntl1 |= (DDAC);
#endif
/*
* Phase mismatch handled by SCRIPTS (895A/896/1010) ?
*/
if (np->features & FE_NOPM)
np->rv_ccntl0 |= (ENPMJ);
/*
* C1010 Errata.
* In dual channel mode, contention occurs if internal cycles
* are used. Disable internal cycles.
*/
if (np->device_id == PCI_ID_LSI53C1010 &&
np->revision_id < 0x2)
np->rv_ccntl0 |= DILS;
/*
* Select burst length (dwords)
*/
burst_max = SYM_SETUP_BURST_ORDER;
if (burst_max == 255)
burst_max = burst_code(np->sv_dmode, np->sv_ctest4,
np->sv_ctest5);
if (burst_max > 7)
burst_max = 7;
if (burst_max > np->maxburst)
burst_max = np->maxburst;
/*
* DEL 352 - 53C810 Rev x11 - Part Number 609-0392140 - ITEM 2.
* This chip and the 860 Rev 1 may wrongly use PCI cache line
* based transactions on LOAD/STORE instructions. So we have
* to prevent these chips from using such PCI transactions in
* this driver. The generic ncr driver that does not use
* LOAD/STORE instructions does not need this work-around.
*/
if ((np->device_id == PCI_ID_SYM53C810 &&
np->revision_id >= 0x10 && np->revision_id <= 0x11) ||
(np->device_id == PCI_ID_SYM53C860 &&
np->revision_id <= 0x1))
np->features &= ~(FE_WRIE|FE_ERL|FE_ERMP);
/*
* Select all supported special features.
* If we are using on-board RAM for scripts, prefetch (PFEN)
* does not help, but burst op fetch (BOF) does.
* Disabling PFEN makes sure BOF will be used.
*/
if (np->features & FE_ERL)
np->rv_dmode |= ERL; /* Enable Read Line */
if (np->features & FE_BOF)
np->rv_dmode |= BOF; /* Burst Opcode Fetch */
if (np->features & FE_ERMP)
np->rv_dmode |= ERMP; /* Enable Read Multiple */
#if 1
if ((np->features & FE_PFEN) && !np->ram_ba)
#else
if (np->features & FE_PFEN)
#endif
np->rv_dcntl |= PFEN; /* Prefetch Enable */
if (np->features & FE_CLSE)
np->rv_dcntl |= CLSE; /* Cache Line Size Enable */
if (np->features & FE_WRIE)
np->rv_ctest3 |= WRIE; /* Write and Invalidate */
if (np->features & FE_DFS)
np->rv_ctest5 |= DFS; /* Dma Fifo Size */
/*
* Select some other
*/
if (SYM_SETUP_PCI_PARITY)
np->rv_ctest4 |= MPEE; /* Master parity checking */
if (SYM_SETUP_SCSI_PARITY)
np->rv_scntl0 |= 0x0a; /* full arb., ena parity, par->ATN */
/*
* Get parity checking, host ID and verbose mode from NVRAM
*/
np->myaddr = 255;
sym_nvram_setup_host (np, nvram);
#ifdef __sparc64__
np->myaddr = OF_getscsinitid(np->device);
#endif
/*
* Get SCSI addr of host adapter (set by bios?).
*/
if (np->myaddr == 255) {
np->myaddr = INB(nc_scid) & 0x07;
if (!np->myaddr)
np->myaddr = SYM_SETUP_HOST_ID;
}
/*
* Prepare initial io register bits for burst length
*/
sym_init_burst(np, burst_max);
/*
* Set SCSI BUS mode.
* - LVD capable chips (895/895A/896/1010) report the
* current BUS mode through the STEST4 IO register.
* - For previous generation chips (825/825A/875),
* user has to tell us how to check against HVD,
* since a 100% safe algorithm is not possible.
*/
np->scsi_mode = SMODE_SE;
if (np->features & (FE_ULTRA2|FE_ULTRA3))
np->scsi_mode = (np->sv_stest4 & SMODE);
else if (np->features & FE_DIFF) {
if (SYM_SETUP_SCSI_DIFF == 1) {
if (np->sv_scntl3) {
if (np->sv_stest2 & 0x20)
np->scsi_mode = SMODE_HVD;
}
else if (nvram->type == SYM_SYMBIOS_NVRAM) {
if (!(INB(nc_gpreg) & 0x08))
np->scsi_mode = SMODE_HVD;
}
}
else if (SYM_SETUP_SCSI_DIFF == 2)
np->scsi_mode = SMODE_HVD;
}
if (np->scsi_mode == SMODE_HVD)
np->rv_stest2 |= 0x20;
/*
* Set LED support from SCRIPTS.
* Ignore this feature for boards known to use a
* specific GPIO wiring and for the 895A, 896
* and 1010 that drive the LED directly.
*/
if ((SYM_SETUP_SCSI_LED ||
(nvram->type == SYM_SYMBIOS_NVRAM ||
(nvram->type == SYM_TEKRAM_NVRAM &&
np->device_id == PCI_ID_SYM53C895))) &&
!(np->features & FE_LEDC) && !(np->sv_gpcntl & 0x01))
np->features |= FE_LED0;
/*
* Set irq mode.
*/
switch(SYM_SETUP_IRQ_MODE & 3) {
case 2:
np->rv_dcntl |= IRQM;
break;
case 1:
np->rv_dcntl |= (np->sv_dcntl & IRQM);
break;
default:
break;
}
/*
* Configure targets according to driver setup.
* If NVRAM present get targets setup from NVRAM.
*/
for (i = 0 ; i < SYM_CONF_MAX_TARGET ; i++) {
tcb_p tp = &np->target[i];
tp->tinfo.user.scsi_version = tp->tinfo.current.scsi_version= 2;
tp->tinfo.user.spi_version = tp->tinfo.current.spi_version = 2;
tp->tinfo.user.period = np->minsync;
if (np->features & FE_ULTRA3)
tp->tinfo.user.period = np->minsync_dt;
tp->tinfo.user.offset = np->maxoffs;
tp->tinfo.user.width = np->maxwide ? BUS_16_BIT : BUS_8_BIT;
tp->usrflags |= (SYM_DISC_ENABLED | SYM_TAGS_ENABLED);
tp->usrtags = SYM_SETUP_MAX_TAG;
sym_nvram_setup_target (np, i, nvram);
/*
* For now, guess PPR/DT support from the period
* and BUS width.
*/
if (np->features & FE_ULTRA3) {
if (tp->tinfo.user.period <= 9 &&
tp->tinfo.user.width == BUS_16_BIT) {
tp->tinfo.user.options |= PPR_OPT_DT;
tp->tinfo.user.offset = np->maxoffs_dt;
tp->tinfo.user.spi_version = 3;
}
}
if (!tp->usrtags)
tp->usrflags &= ~SYM_TAGS_ENABLED;
}
/*
* Let user know about the settings.
*/
i = nvram->type;
printf("%s: %s NVRAM, ID %d, Fast-%d, %s, %s\n", sym_name(np),
i == SYM_SYMBIOS_NVRAM ? "Symbios" :
(i == SYM_TEKRAM_NVRAM ? "Tekram" : "No"),
np->myaddr,
(np->features & FE_ULTRA3) ? 80 :
(np->features & FE_ULTRA2) ? 40 :
(np->features & FE_ULTRA) ? 20 : 10,
sym_scsi_bus_mode(np->scsi_mode),
(np->rv_scntl0 & 0xa) ? "parity checking" : "NO parity");
/*
* Tell him more on demand.
*/
if (sym_verbose) {
printf("%s: %s IRQ line driver%s\n",
sym_name(np),
np->rv_dcntl & IRQM ? "totem pole" : "open drain",
np->ram_ba ? ", using on-chip SRAM" : "");
printf("%s: using %s firmware.\n", sym_name(np), np->fw_name);
if (np->features & FE_NOPM)
printf("%s: handling phase mismatch from SCRIPTS.\n",
sym_name(np));
}
/*
* And still more.
*/
if (sym_verbose > 1) {
printf ("%s: initial SCNTL3/DMODE/DCNTL/CTEST3/4/5 = "
"(hex) %02x/%02x/%02x/%02x/%02x/%02x\n",
sym_name(np), np->sv_scntl3, np->sv_dmode, np->sv_dcntl,
np->sv_ctest3, np->sv_ctest4, np->sv_ctest5);
printf ("%s: final SCNTL3/DMODE/DCNTL/CTEST3/4/5 = "
"(hex) %02x/%02x/%02x/%02x/%02x/%02x\n",
sym_name(np), np->rv_scntl3, np->rv_dmode, np->rv_dcntl,
np->rv_ctest3, np->rv_ctest4, np->rv_ctest5);
}
/*
* Let user be aware of targets that have some disable flags set.
*/
sym_print_targets_flag(np, SYM_SCAN_BOOT_DISABLED, "SCAN AT BOOT");
if (sym_verbose)
sym_print_targets_flag(np, SYM_SCAN_LUNS_DISABLED,
"SCAN FOR LUNS");
return 0;
}
/*
* Prepare the next negotiation message if needed.
*
* Fill in the part of message buffer that contains the
* negotiation and the nego_status field of the CCB.
* Returns the size of the message in bytes.
*/
static int sym_prepare_nego(hcb_p np, ccb_p cp, int nego, u_char *msgptr)
{
tcb_p tp = &np->target[cp->target];
int msglen = 0;
/*
* Early C1010 chips need a work-around for DT
* data transfer to work.
*/
if (!(np->features & FE_U3EN))
tp->tinfo.goal.options = 0;
/*
* negotiate using PPR ?
*/
if (tp->tinfo.goal.options & PPR_OPT_MASK)
nego = NS_PPR;
/*
* negotiate wide transfers ?
*/
else if (tp->tinfo.current.width != tp->tinfo.goal.width)
nego = NS_WIDE;
/*
* negotiate synchronous transfers?
*/
else if (tp->tinfo.current.period != tp->tinfo.goal.period ||
tp->tinfo.current.offset != tp->tinfo.goal.offset)
nego = NS_SYNC;
switch (nego) {
case NS_SYNC:
msgptr[msglen++] = M_EXTENDED;
msgptr[msglen++] = 3;
msgptr[msglen++] = M_X_SYNC_REQ;
msgptr[msglen++] = tp->tinfo.goal.period;
msgptr[msglen++] = tp->tinfo.goal.offset;
break;
case NS_WIDE:
msgptr[msglen++] = M_EXTENDED;
msgptr[msglen++] = 2;
msgptr[msglen++] = M_X_WIDE_REQ;
msgptr[msglen++] = tp->tinfo.goal.width;
break;
case NS_PPR:
msgptr[msglen++] = M_EXTENDED;
msgptr[msglen++] = 6;
msgptr[msglen++] = M_X_PPR_REQ;
msgptr[msglen++] = tp->tinfo.goal.period;
msgptr[msglen++] = 0;
msgptr[msglen++] = tp->tinfo.goal.offset;
msgptr[msglen++] = tp->tinfo.goal.width;
msgptr[msglen++] = tp->tinfo.goal.options & PPR_OPT_DT;
break;
}
cp->nego_status = nego;
if (nego) {
tp->nego_cp = cp; /* Keep track a nego will be performed */
if (DEBUG_FLAGS & DEBUG_NEGO) {
sym_print_msg(cp, nego == NS_SYNC ? "sync msgout" :
nego == NS_WIDE ? "wide msgout" :
"ppr msgout", msgptr);
}
}
return msglen;
}
/*
* Insert a job into the start queue.
*/
static void sym_put_start_queue(hcb_p np, ccb_p cp)
{
u_short qidx;
#ifdef SYM_CONF_IARB_SUPPORT
/*
* If the previously queued CCB is not yet done,
* set the IARB hint. The SCRIPTS will go with IARB
* for this job when starting the previous one.
* We leave devices a chance to win arbitration by
* not using more than 'iarb_max' consecutive
* immediate arbitrations.
*/
if (np->last_cp && np->iarb_count < np->iarb_max) {
np->last_cp->host_flags |= HF_HINT_IARB;
++np->iarb_count;
}
else
np->iarb_count = 0;
np->last_cp = cp;
#endif
/*
* Insert first the idle task and then our job.
* The MB should ensure proper ordering.
*/
qidx = np->squeueput + 2;
if (qidx >= MAX_QUEUE*2) qidx = 0;
np->squeue [qidx] = cpu_to_scr(np->idletask_ba);
MEMORY_BARRIER();
np->squeue [np->squeueput] = cpu_to_scr(cp->ccb_ba);
np->squeueput = qidx;
if (DEBUG_FLAGS & DEBUG_QUEUE)
printf ("%s: queuepos=%d.\n", sym_name (np), np->squeueput);
/*
* Script processor may be waiting for reselect.
* Wake it up.
*/
MEMORY_BARRIER();
OUTB (nc_istat, SIGP|np->istat_sem);
}
/*
* Soft reset the chip.
*
* Raising SRST when the chip is running may cause
* problems on dual function chips (see below).
* On the other hand, LVD devices need some delay
* to settle and report actual BUS mode in STEST4.
*/
static void sym_chip_reset (hcb_p np)
{
OUTB (nc_istat, SRST);
UDELAY (10);
OUTB (nc_istat, 0);
UDELAY(2000); /* For BUS MODE to settle */
}
/*
* Soft reset the chip.
*
* Some 896 and 876 chip revisions may hang-up if we set
* the SRST (soft reset) bit at the wrong time when SCRIPTS
* are running.
* So, we need to abort the current operation prior to
* soft resetting the chip.
*/
static void sym_soft_reset (hcb_p np)
{
u_char istat;
int i;
OUTB (nc_istat, CABRT);
for (i = 1000000 ; i ; --i) {
istat = INB (nc_istat);
if (istat & SIP) {
INW (nc_sist);
continue;
}
if (istat & DIP) {
OUTB (nc_istat, 0);
INB (nc_dstat);
break;
}
}
if (!i)
printf("%s: unable to abort current chip operation.\n",
sym_name(np));
sym_chip_reset (np);
}
/*
* Start reset process.
*
* The interrupt handler will reinitialize the chip.
*/
static void sym_start_reset(hcb_p np)
{
(void) sym_reset_scsi_bus(np, 1);
}
static int sym_reset_scsi_bus(hcb_p np, int enab_int)
{
u32 term;
int retv = 0;
sym_soft_reset(np); /* Soft reset the chip */
if (enab_int)
OUTW (nc_sien, RST);
/*
* Enable Tolerant, reset IRQD if present and
* properly set IRQ mode, prior to resetting the bus.
*/
OUTB (nc_stest3, TE);
OUTB (nc_dcntl, (np->rv_dcntl & IRQM));
OUTB (nc_scntl1, CRST);
UDELAY (200);
if (!SYM_SETUP_SCSI_BUS_CHECK)
goto out;
/*
* Check for no terminators or SCSI bus shorts to ground.
* Read SCSI data bus, data parity bits and control signals.
* We are expecting RESET to be TRUE and other signals to be
* FALSE.
*/
term = INB(nc_sstat0);
term = ((term & 2) << 7) + ((term & 1) << 17); /* rst sdp0 */
term |= ((INB(nc_sstat2) & 0x01) << 26) | /* sdp1 */
((INW(nc_sbdl) & 0xff) << 9) | /* d7-0 */
((INW(nc_sbdl) & 0xff00) << 10) | /* d15-8 */
INB(nc_sbcl); /* req ack bsy sel atn msg cd io */
if (!(np->features & FE_WIDE))
term &= 0x3ffff;
if (term != (2<<7)) {
printf("%s: suspicious SCSI data while resetting the BUS.\n",
sym_name(np));
printf("%s: %sdp0,d7-0,rst,req,ack,bsy,sel,atn,msg,c/d,i/o = "
"0x%lx, expecting 0x%lx\n",
sym_name(np),
(np->features & FE_WIDE) ? "dp1,d15-8," : "",
(u_long)term, (u_long)(2<<7));
if (SYM_SETUP_SCSI_BUS_CHECK == 1)
retv = 1;
}
out:
OUTB (nc_scntl1, 0);
/* MDELAY(100); */
return retv;
}
/*
* The chip may have completed jobs. Look at the DONE QUEUE.
*
* On architectures that may reorder LOAD/STORE operations,
* a memory barrier may be needed after the reading of the
* so-called `flag' and prior to dealing with the data.
*/
static int sym_wakeup_done (hcb_p np)
{
ccb_p cp;
int i, n;
u32 dsa;
SYM_LOCK_ASSERT(MA_OWNED);
n = 0;
i = np->dqueueget;
while (1) {
dsa = scr_to_cpu(np->dqueue[i]);
if (!dsa)
break;
np->dqueue[i] = 0;
if ((i = i+2) >= MAX_QUEUE*2)
i = 0;
cp = sym_ccb_from_dsa(np, dsa);
if (cp) {
MEMORY_BARRIER();
sym_complete_ok (np, cp);
++n;
}
else
printf ("%s: bad DSA (%x) in done queue.\n",
sym_name(np), (u_int) dsa);
}
np->dqueueget = i;
return n;
}
/*
* Complete all active CCBs with error.
* Used on CHIP/SCSI RESET.
*/
static void sym_flush_busy_queue (hcb_p np, int cam_status)
{
/*
* Move all active CCBs to the COMP queue
* and flush this queue.
*/
sym_que_splice(&np->busy_ccbq, &np->comp_ccbq);
sym_que_init(&np->busy_ccbq);
sym_flush_comp_queue(np, cam_status);
}
/*
* Start chip.
*
* 'reason' means:
* 0: initialisation.
* 1: SCSI BUS RESET delivered or received.
* 2: SCSI BUS MODE changed.
*/
static void sym_init (hcb_p np, int reason)
{
int i;
u32 phys;
SYM_LOCK_ASSERT(MA_OWNED);
/*
* Reset chip if asked, otherwise just clear fifos.
*/
if (reason == 1)
sym_soft_reset(np);
else {
OUTB (nc_stest3, TE|CSF);
OUTONB (nc_ctest3, CLF);
}
/*
* Clear Start Queue
*/
phys = np->squeue_ba;
for (i = 0; i < MAX_QUEUE*2; i += 2) {
np->squeue[i] = cpu_to_scr(np->idletask_ba);
np->squeue[i+1] = cpu_to_scr(phys + (i+2)*4);
}
np->squeue[MAX_QUEUE*2-1] = cpu_to_scr(phys);
/*
* Start at first entry.
*/
np->squeueput = 0;
/*
* Clear Done Queue
*/
phys = np->dqueue_ba;
for (i = 0; i < MAX_QUEUE*2; i += 2) {
np->dqueue[i] = 0;
np->dqueue[i+1] = cpu_to_scr(phys + (i+2)*4);
}
np->dqueue[MAX_QUEUE*2-1] = cpu_to_scr(phys);
/*
* Start at first entry.
*/
np->dqueueget = 0;
/*
* Install patches in scripts.
* This also let point to first position the start
* and done queue pointers used from SCRIPTS.
*/
np->fw_patch(np);
/*
* Wakeup all pending jobs.
*/
sym_flush_busy_queue(np, CAM_SCSI_BUS_RESET);
/*
* Init chip.
*/
OUTB (nc_istat, 0x00 ); /* Remove Reset, abort */
UDELAY (2000); /* The 895 needs time for the bus mode to settle */
OUTB (nc_scntl0, np->rv_scntl0 | 0xc0);
/* full arb., ena parity, par->ATN */
OUTB (nc_scntl1, 0x00); /* odd parity, and remove CRST!! */
sym_selectclock(np, np->rv_scntl3); /* Select SCSI clock */
OUTB (nc_scid , RRE|np->myaddr); /* Adapter SCSI address */
OUTW (nc_respid, 1ul<<np->myaddr); /* Id to respond to */
OUTB (nc_istat , SIGP ); /* Signal Process */
OUTB (nc_dmode , np->rv_dmode); /* Burst length, dma mode */
OUTB (nc_ctest5, np->rv_ctest5); /* Large fifo + large burst */
OUTB (nc_dcntl , NOCOM|np->rv_dcntl); /* Protect SFBR */
OUTB (nc_ctest3, np->rv_ctest3); /* Write and invalidate */
OUTB (nc_ctest4, np->rv_ctest4); /* Master parity checking */
/* Extended Sreq/Sack filtering not supported on the C10 */
if (np->features & FE_C10)
OUTB (nc_stest2, np->rv_stest2);
else
OUTB (nc_stest2, EXT|np->rv_stest2);
OUTB (nc_stest3, TE); /* TolerANT enable */
OUTB (nc_stime0, 0x0c); /* HTH disabled STO 0.25 sec */
/*
* For now, disable AIP generation on C1010-66.
*/
if (np->device_id == PCI_ID_LSI53C1010_2)
OUTB (nc_aipcntl1, DISAIP);
/*
* C10101 Errata.
* Errant SGE's when in narrow. Write bits 4 & 5 of
* STEST1 register to disable SGE. We probably should do
* that from SCRIPTS for each selection/reselection, but
* I just don't want. :)
*/
if (np->device_id == PCI_ID_LSI53C1010 &&
/* np->revision_id < 0xff */ 1)
OUTB (nc_stest1, INB(nc_stest1) | 0x30);
/*
* DEL 441 - 53C876 Rev 5 - Part Number 609-0392787/2788 - ITEM 2.
* Disable overlapped arbitration for some dual function devices,
* regardless revision id (kind of post-chip-design feature. ;-))
*/
if (np->device_id == PCI_ID_SYM53C875)
OUTB (nc_ctest0, (1<<5));
else if (np->device_id == PCI_ID_SYM53C896)
np->rv_ccntl0 |= DPR;
/*
* Write CCNTL0/CCNTL1 for chips capable of 64 bit addressing
* and/or hardware phase mismatch, since only such chips
* seem to support those IO registers.
*/
if (np->features & (FE_DAC|FE_NOPM)) {
OUTB (nc_ccntl0, np->rv_ccntl0);
OUTB (nc_ccntl1, np->rv_ccntl1);
}
/*
* If phase mismatch handled by scripts (895A/896/1010),
* set PM jump addresses.
*/
if (np->features & FE_NOPM) {
OUTL (nc_pmjad1, SCRIPTB_BA (np, pm_handle));
OUTL (nc_pmjad2, SCRIPTB_BA (np, pm_handle));
}
/*
* Enable GPIO0 pin for writing if LED support from SCRIPTS.
* Also set GPIO5 and clear GPIO6 if hardware LED control.
*/
if (np->features & FE_LED0)
OUTB(nc_gpcntl, INB(nc_gpcntl) & ~0x01);
else if (np->features & FE_LEDC)
OUTB(nc_gpcntl, (INB(nc_gpcntl) & ~0x41) | 0x20);
/*
* enable ints
*/
OUTW (nc_sien , STO|HTH|MA|SGE|UDC|RST|PAR);
OUTB (nc_dien , MDPE|BF|SSI|SIR|IID);
/*
* For 895/6 enable SBMC interrupt and save current SCSI bus mode.
* Try to eat the spurious SBMC interrupt that may occur when
* we reset the chip but not the SCSI BUS (at initialization).
*/
if (np->features & (FE_ULTRA2|FE_ULTRA3)) {
OUTONW (nc_sien, SBMC);
if (reason == 0) {
MDELAY(100);
INW (nc_sist);
}
np->scsi_mode = INB (nc_stest4) & SMODE;
}
/*
* Fill in target structure.
* Reinitialize usrsync.
* Reinitialize usrwide.
* Prepare sync negotiation according to actual SCSI bus mode.
*/
for (i=0;i<SYM_CONF_MAX_TARGET;i++) {
tcb_p tp = &np->target[i];
tp->to_reset = 0;
tp->head.sval = 0;
tp->head.wval = np->rv_scntl3;
tp->head.uval = 0;
tp->tinfo.current.period = 0;
tp->tinfo.current.offset = 0;
tp->tinfo.current.width = BUS_8_BIT;
tp->tinfo.current.options = 0;
}
/*
* Download SCSI SCRIPTS to on-chip RAM if present,
* and start script processor.
*/
if (np->ram_ba) {
if (sym_verbose > 1)
printf ("%s: Downloading SCSI SCRIPTS.\n",
sym_name(np));
if (np->ram_ws == 8192) {
OUTRAM_OFF(4096, np->scriptb0, np->scriptb_sz);
OUTL (nc_mmws, np->scr_ram_seg);
OUTL (nc_mmrs, np->scr_ram_seg);
OUTL (nc_sfs, np->scr_ram_seg);
phys = SCRIPTB_BA (np, start64);
}
else
phys = SCRIPTA_BA (np, init);
OUTRAM_OFF(0, np->scripta0, np->scripta_sz);
}
else
phys = SCRIPTA_BA (np, init);
np->istat_sem = 0;
OUTL (nc_dsa, np->hcb_ba);
OUTL_DSP (phys);
/*
* Notify the XPT about the RESET condition.
*/
if (reason != 0)
xpt_async(AC_BUS_RESET, np->path, NULL);
}
/*
* Get clock factor and sync divisor for a given
* synchronous factor period.
*/
static int
sym_getsync(hcb_p np, u_char dt, u_char sfac, u_char *divp, u_char *fakp)
{
u32 clk = np->clock_khz; /* SCSI clock frequency in kHz */
int div = np->clock_divn; /* Number of divisors supported */
u32 fak; /* Sync factor in sxfer */
u32 per; /* Period in tenths of ns */
u32 kpc; /* (per * clk) */
int ret;
/*
* Compute the synchronous period in tenths of nano-seconds
*/
if (dt && sfac <= 9) per = 125;
else if (sfac <= 10) per = 250;
else if (sfac == 11) per = 303;
else if (sfac == 12) per = 500;
else per = 40 * sfac;
ret = per;
kpc = per * clk;
if (dt)
kpc <<= 1;
/*
* For earliest C10 revision 0, we cannot use extra
* clocks for the setting of the SCSI clocking.
* Note that this limits the lowest sync data transfer
* to 5 Mega-transfers per second and may result in
* using higher clock divisors.
*/
#if 1
if ((np->features & (FE_C10|FE_U3EN)) == FE_C10) {
/*
* Look for the lowest clock divisor that allows an
* output speed not faster than the period.
*/
while (div > 0) {
--div;
if (kpc > (div_10M[div] << 2)) {
++div;
break;
}
}
fak = 0; /* No extra clocks */
if (div == np->clock_divn) { /* Are we too fast ? */
ret = -1;
}
*divp = div;
*fakp = fak;
return ret;
}
#endif
/*
* Look for the greatest clock divisor that allows an
* input speed faster than the period.
*/
while (div-- > 0)
if (kpc >= (div_10M[div] << 2)) break;
/*
* Calculate the lowest clock factor that allows an output
* speed not faster than the period, and the max output speed.
* If fak >= 1 we will set both XCLKH_ST and XCLKH_DT.
* If fak >= 2 we will also set XCLKS_ST and XCLKS_DT.
*/
if (dt) {
fak = (kpc - 1) / (div_10M[div] << 1) + 1 - 2;
/* ret = ((2+fak)*div_10M[div])/np->clock_khz; */
}
else {
fak = (kpc - 1) / div_10M[div] + 1 - 4;
/* ret = ((4+fak)*div_10M[div])/np->clock_khz; */
}
/*
* Check against our hardware limits, or bugs :).
*/
if (fak > 2) {fak = 2; ret = -1;}
/*
* Compute and return sync parameters.
*/
*divp = div;
*fakp = fak;
return ret;
}
/*
* Tell the SCSI layer about the new transfer parameters.
*/
static void
sym_xpt_async_transfer_neg(hcb_p np, int target, u_int spi_valid)
{
struct ccb_trans_settings cts;
struct cam_path *path;
int sts;
tcb_p tp = &np->target[target];
sts = xpt_create_path(&path, NULL, cam_sim_path(np->sim), target,
CAM_LUN_WILDCARD);
if (sts != CAM_REQ_CMP)
return;
bzero(&cts, sizeof(cts));
#define cts__scsi (cts.proto_specific.scsi)
#define cts__spi (cts.xport_specific.spi)
cts.type = CTS_TYPE_CURRENT_SETTINGS;
cts.protocol = PROTO_SCSI;
cts.transport = XPORT_SPI;
cts.protocol_version = tp->tinfo.current.scsi_version;
cts.transport_version = tp->tinfo.current.spi_version;
cts__spi.valid = spi_valid;
if (spi_valid & CTS_SPI_VALID_SYNC_RATE)
cts__spi.sync_period = tp->tinfo.current.period;
if (spi_valid & CTS_SPI_VALID_SYNC_OFFSET)
cts__spi.sync_offset = tp->tinfo.current.offset;
if (spi_valid & CTS_SPI_VALID_BUS_WIDTH)
cts__spi.bus_width = tp->tinfo.current.width;
if (spi_valid & CTS_SPI_VALID_PPR_OPTIONS)
cts__spi.ppr_options = tp->tinfo.current.options;
#undef cts__spi
#undef cts__scsi
xpt_setup_ccb(&cts.ccb_h, path, /*priority*/1);
xpt_async(AC_TRANSFER_NEG, path, &cts);
xpt_free_path(path);
}
#define SYM_SPI_VALID_WDTR \
CTS_SPI_VALID_BUS_WIDTH | \
CTS_SPI_VALID_SYNC_RATE | \
CTS_SPI_VALID_SYNC_OFFSET
#define SYM_SPI_VALID_SDTR \
CTS_SPI_VALID_SYNC_RATE | \
CTS_SPI_VALID_SYNC_OFFSET
#define SYM_SPI_VALID_PPR \
CTS_SPI_VALID_PPR_OPTIONS | \
CTS_SPI_VALID_BUS_WIDTH | \
CTS_SPI_VALID_SYNC_RATE | \
CTS_SPI_VALID_SYNC_OFFSET
/*
* We received a WDTR.
* Let everything be aware of the changes.
*/
static void sym_setwide(hcb_p np, ccb_p cp, u_char wide)
{
tcb_p tp = &np->target[cp->target];
sym_settrans(np, cp, 0, 0, 0, wide, 0, 0);
/*
* Tell the SCSI layer about the new transfer parameters.
*/
tp->tinfo.goal.width = tp->tinfo.current.width = wide;
tp->tinfo.current.offset = 0;
tp->tinfo.current.period = 0;
tp->tinfo.current.options = 0;
sym_xpt_async_transfer_neg(np, cp->target, SYM_SPI_VALID_WDTR);
}
/*
* We received a SDTR.
* Let everything be aware of the changes.
*/
static void
sym_setsync(hcb_p np, ccb_p cp, u_char ofs, u_char per, u_char div, u_char fak)
{
tcb_p tp = &np->target[cp->target];
u_char wide = (cp->phys.select.sel_scntl3 & EWS) ? 1 : 0;
sym_settrans(np, cp, 0, ofs, per, wide, div, fak);
/*
* Tell the SCSI layer about the new transfer parameters.
*/
tp->tinfo.goal.period = tp->tinfo.current.period = per;
tp->tinfo.goal.offset = tp->tinfo.current.offset = ofs;
tp->tinfo.goal.options = tp->tinfo.current.options = 0;
sym_xpt_async_transfer_neg(np, cp->target, SYM_SPI_VALID_SDTR);
}
/*
* We received a PPR.
* Let everything be aware of the changes.
*/
static void sym_setpprot(hcb_p np, ccb_p cp, u_char dt, u_char ofs,
u_char per, u_char wide, u_char div, u_char fak)
{
tcb_p tp = &np->target[cp->target];
sym_settrans(np, cp, dt, ofs, per, wide, div, fak);
/*
* Tell the SCSI layer about the new transfer parameters.
*/
tp->tinfo.goal.width = tp->tinfo.current.width = wide;
tp->tinfo.goal.period = tp->tinfo.current.period = per;
tp->tinfo.goal.offset = tp->tinfo.current.offset = ofs;
tp->tinfo.goal.options = tp->tinfo.current.options = dt;
sym_xpt_async_transfer_neg(np, cp->target, SYM_SPI_VALID_PPR);
}
/*
* Switch trans mode for current job and it's target.
*/
static void sym_settrans(hcb_p np, ccb_p cp, u_char dt, u_char ofs,
u_char per, u_char wide, u_char div, u_char fak)
{
SYM_QUEHEAD *qp;
union ccb *ccb;
tcb_p tp;
u_char target = INB (nc_sdid) & 0x0f;
u_char sval, wval, uval;
assert (cp);
if (!cp) return;
ccb = cp->cam_ccb;
assert (ccb);
if (!ccb) return;
assert (target == (cp->target & 0xf));
tp = &np->target[target];
sval = tp->head.sval;
wval = tp->head.wval;
uval = tp->head.uval;
#if 0
printf("XXXX sval=%x wval=%x uval=%x (%x)\n",
sval, wval, uval, np->rv_scntl3);
#endif
/*
* Set the offset.
*/
if (!(np->features & FE_C10))
sval = (sval & ~0x1f) | ofs;
else
sval = (sval & ~0x3f) | ofs;
/*
* Set the sync divisor and extra clock factor.
*/
if (ofs != 0) {
wval = (wval & ~0x70) | ((div+1) << 4);
if (!(np->features & FE_C10))
sval = (sval & ~0xe0) | (fak << 5);
else {
uval = uval & ~(XCLKH_ST|XCLKH_DT|XCLKS_ST|XCLKS_DT);
if (fak >= 1) uval |= (XCLKH_ST|XCLKH_DT);
if (fak >= 2) uval |= (XCLKS_ST|XCLKS_DT);
}
}
/*
* Set the bus width.
*/
wval = wval & ~EWS;
if (wide != 0)
wval |= EWS;
/*
* Set misc. ultra enable bits.
*/
if (np->features & FE_C10) {
uval = uval & ~(U3EN|AIPCKEN);
if (dt) {
assert(np->features & FE_U3EN);
uval |= U3EN;
}
}
else {
wval = wval & ~ULTRA;
if (per <= 12) wval |= ULTRA;
}
/*
* Stop there if sync parameters are unchanged.
*/
if (tp->head.sval == sval &&
tp->head.wval == wval &&
tp->head.uval == uval)
return;
tp->head.sval = sval;
tp->head.wval = wval;
tp->head.uval = uval;
/*
* Disable extended Sreq/Sack filtering if per < 50.
* Not supported on the C1010.
*/
if (per < 50 && !(np->features & FE_C10))
OUTOFFB (nc_stest2, EXT);
/*
* set actual value and sync_status
*/
OUTB (nc_sxfer, tp->head.sval);
OUTB (nc_scntl3, tp->head.wval);
if (np->features & FE_C10) {
OUTB (nc_scntl4, tp->head.uval);
}
/*
* patch ALL busy ccbs of this target.
*/
FOR_EACH_QUEUED_ELEMENT(&np->busy_ccbq, qp) {
cp = sym_que_entry(qp, struct sym_ccb, link_ccbq);
if (cp->target != target)
continue;
cp->phys.select.sel_scntl3 = tp->head.wval;
cp->phys.select.sel_sxfer = tp->head.sval;
if (np->features & FE_C10) {
cp->phys.select.sel_scntl4 = tp->head.uval;
}
}
}
/*
* log message for real hard errors
*
* sym0 targ 0?: ERROR (ds:si) (so-si-sd) (sxfer/scntl3) @ name (dsp:dbc).
* reg: r0 r1 r2 r3 r4 r5 r6 ..... rf.
*
* exception register:
* ds: dstat
* si: sist
*
* SCSI bus lines:
* so: control lines as driven by chip.
* si: control lines as seen by chip.
* sd: scsi data lines as seen by chip.
*
* wide/fastmode:
* sxfer: (see the manual)
* scntl3: (see the manual)
*
* current script command:
* dsp: script address (relative to start of script).
* dbc: first word of script command.
*
* First 24 register of the chip:
* r0..rf
*/
static void sym_log_hard_error(hcb_p np, u_short sist, u_char dstat)
{
u32 dsp;
int script_ofs;
int script_size;
char *script_name;
u_char *script_base;
int i;
dsp = INL (nc_dsp);
if (dsp > np->scripta_ba &&
dsp <= np->scripta_ba + np->scripta_sz) {
script_ofs = dsp - np->scripta_ba;
script_size = np->scripta_sz;
script_base = (u_char *) np->scripta0;
script_name = "scripta";
}
else if (np->scriptb_ba < dsp &&
dsp <= np->scriptb_ba + np->scriptb_sz) {
script_ofs = dsp - np->scriptb_ba;
script_size = np->scriptb_sz;
script_base = (u_char *) np->scriptb0;
script_name = "scriptb";
} else {
script_ofs = dsp;
script_size = 0;
script_base = 0;
script_name = "mem";
}
printf ("%s:%d: ERROR (%x:%x) (%x-%x-%x) (%x/%x) @ (%s %x:%08x).\n",
sym_name (np), (unsigned)INB (nc_sdid)&0x0f, dstat, sist,
(unsigned)INB (nc_socl), (unsigned)INB (nc_sbcl),
(unsigned)INB (nc_sbdl), (unsigned)INB (nc_sxfer),
(unsigned)INB (nc_scntl3), script_name, script_ofs,
(unsigned)INL (nc_dbc));
if (((script_ofs & 3) == 0) &&
(unsigned)script_ofs < script_size) {
printf ("%s: script cmd = %08x\n", sym_name(np),
scr_to_cpu((int) *(u32 *)(script_base + script_ofs)));
}
printf ("%s: regdump:", sym_name(np));
for (i=0; i<24;i++)
printf (" %02x", (unsigned)INB_OFF(i));
printf (".\n");
/*
* PCI BUS error, read the PCI ststus register.
*/
if (dstat & (MDPE|BF)) {
u_short pci_sts;
pci_sts = pci_read_config(np->device, PCIR_STATUS, 2);
if (pci_sts & 0xf900) {
pci_write_config(np->device, PCIR_STATUS, pci_sts, 2);
printf("%s: PCI STATUS = 0x%04x\n",
sym_name(np), pci_sts & 0xf900);
}
}
}
/*
* chip interrupt handler
*
* In normal situations, interrupt conditions occur one at
* a time. But when something bad happens on the SCSI BUS,
* the chip may raise several interrupt flags before
* stopping and interrupting the CPU. The additionnal
* interrupt flags are stacked in some extra registers
* after the SIP and/or DIP flag has been raised in the
* ISTAT. After the CPU has read the interrupt condition
* flag from SIST or DSTAT, the chip unstacks the other
* interrupt flags and sets the corresponding bits in
* SIST or DSTAT. Since the chip starts stacking once the
* SIP or DIP flag is set, there is a small window of time
* where the stacking does not occur.
*
* Typically, multiple interrupt conditions may happen in
* the following situations:
*
* - SCSI parity error + Phase mismatch (PAR|MA)
* When a parity error is detected in input phase
* and the device switches to msg-in phase inside a
* block MOV.
* - SCSI parity error + Unexpected disconnect (PAR|UDC)
* When a stupid device does not want to handle the
* recovery of an SCSI parity error.
* - Some combinations of STO, PAR, UDC, ...
* When using non compliant SCSI stuff, when user is
* doing non compliant hot tampering on the BUS, when
* something really bad happens to a device, etc ...
*
* The heuristic suggested by SYMBIOS to handle
* multiple interrupts is to try unstacking all
* interrupts conditions and to handle them on some
* priority based on error severity.
* This will work when the unstacking has been
* successful, but we cannot be 100 % sure of that,
* since the CPU may have been faster to unstack than
* the chip is able to stack. Hmmm ... But it seems that
* such a situation is very unlikely to happen.
*
* If this happen, for example STO caught by the CPU
* then UDC happenning before the CPU have restarted
* the SCRIPTS, the driver may wrongly complete the
* same command on UDC, since the SCRIPTS didn't restart
* and the DSA still points to the same command.
* We avoid this situation by setting the DSA to an
* invalid value when the CCB is completed and before
* restarting the SCRIPTS.
*
* Another issue is that we need some section of our
* recovery procedures to be somehow uninterruptible but
* the SCRIPTS processor does not provides such a
* feature. For this reason, we handle recovery preferently
* from the C code and check against some SCRIPTS critical
* sections from the C code.
*
* Hopefully, the interrupt handling of the driver is now
* able to resist to weird BUS error conditions, but donnot
* ask me for any guarantee that it will never fail. :-)
* Use at your own decision and risk.
*/
static void sym_intr1 (hcb_p np)
{
u_char istat, istatc;
u_char dstat;
u_short sist;
SYM_LOCK_ASSERT(MA_OWNED);
/*
* interrupt on the fly ?
*
* A `dummy read' is needed to ensure that the
* clear of the INTF flag reaches the device
* before the scanning of the DONE queue.
*/
istat = INB (nc_istat);
if (istat & INTF) {
OUTB (nc_istat, (istat & SIGP) | INTF | np->istat_sem);
istat = INB (nc_istat); /* DUMMY READ */
if (DEBUG_FLAGS & DEBUG_TINY) printf ("F ");
(void)sym_wakeup_done (np);
}
if (!(istat & (SIP|DIP)))
return;
#if 0 /* We should never get this one */
if (istat & CABRT)
OUTB (nc_istat, CABRT);
#endif
/*
* PAR and MA interrupts may occur at the same time,
* and we need to know of both in order to handle
* this situation properly. We try to unstack SCSI
* interrupts for that reason. BTW, I dislike a LOT
* such a loop inside the interrupt routine.
* Even if DMA interrupt stacking is very unlikely to
* happen, we also try unstacking these ones, since
* this has no performance impact.
*/
sist = 0;
dstat = 0;
istatc = istat;
do {
if (istatc & SIP)
sist |= INW (nc_sist);
if (istatc & DIP)
dstat |= INB (nc_dstat);
istatc = INB (nc_istat);
istat |= istatc;
} while (istatc & (SIP|DIP));
if (DEBUG_FLAGS & DEBUG_TINY)
printf ("<%d|%x:%x|%x:%x>",
(int)INB(nc_scr0),
dstat,sist,
(unsigned)INL(nc_dsp),
(unsigned)INL(nc_dbc));
/*
* On paper, a memory barrier may be needed here.
* And since we are paranoid ... :)
*/
MEMORY_BARRIER();
/*
* First, interrupts we want to service cleanly.
*
* Phase mismatch (MA) is the most frequent interrupt
* for chip earlier than the 896 and so we have to service
* it as quickly as possible.
* A SCSI parity error (PAR) may be combined with a phase
* mismatch condition (MA).
* Programmed interrupts (SIR) are used to call the C code
* from SCRIPTS.
* The single step interrupt (SSI) is not used in this
* driver.
*/
if (!(sist & (STO|GEN|HTH|SGE|UDC|SBMC|RST)) &&
!(dstat & (MDPE|BF|ABRT|IID))) {
if (sist & PAR) sym_int_par (np, sist);
else if (sist & MA) sym_int_ma (np);
else if (dstat & SIR) sym_int_sir (np);
else if (dstat & SSI) OUTONB_STD ();
else goto unknown_int;
return;
}
/*
* Now, interrupts that donnot happen in normal
* situations and that we may need to recover from.
*
* On SCSI RESET (RST), we reset everything.
* On SCSI BUS MODE CHANGE (SBMC), we complete all
* active CCBs with RESET status, prepare all devices
* for negotiating again and restart the SCRIPTS.
* On STO and UDC, we complete the CCB with the corres-
* ponding status and restart the SCRIPTS.
*/
if (sist & RST) {
xpt_print_path(np->path);
printf("SCSI BUS reset detected.\n");
sym_init (np, 1);
return;
}
OUTB (nc_ctest3, np->rv_ctest3 | CLF); /* clear dma fifo */
OUTB (nc_stest3, TE|CSF); /* clear scsi fifo */
if (!(sist & (GEN|HTH|SGE)) &&
!(dstat & (MDPE|BF|ABRT|IID))) {
if (sist & SBMC) sym_int_sbmc (np);
else if (sist & STO) sym_int_sto (np);
else if (sist & UDC) sym_int_udc (np);
else goto unknown_int;
return;
}
/*
* Now, interrupts we are not able to recover cleanly.
*
* Log message for hard errors.
* Reset everything.
*/
sym_log_hard_error(np, sist, dstat);
if ((sist & (GEN|HTH|SGE)) ||
(dstat & (MDPE|BF|ABRT|IID))) {
sym_start_reset(np);
return;
}
unknown_int:
/*
* We just miss the cause of the interrupt. :(
* Print a message. The timeout will do the real work.
*/
printf( "%s: unknown interrupt(s) ignored, "
"ISTAT=0x%x DSTAT=0x%x SIST=0x%x\n",
sym_name(np), istat, dstat, sist);
}
static void sym_intr(void *arg)
{
hcb_p np = arg;
SYM_LOCK();
if (DEBUG_FLAGS & DEBUG_TINY) printf ("[");
sym_intr1((hcb_p) arg);
if (DEBUG_FLAGS & DEBUG_TINY) printf ("]");
SYM_UNLOCK();
}
static void sym_poll(struct cam_sim *sim)
{
sym_intr1(cam_sim_softc(sim));
}
/*
* generic recovery from scsi interrupt
*
* The doc says that when the chip gets an SCSI interrupt,
* it tries to stop in an orderly fashion, by completing
* an instruction fetch that had started or by flushing
* the DMA fifo for a write to memory that was executing.
* Such a fashion is not enough to know if the instruction
* that was just before the current DSP value has been
* executed or not.
*
* There are some small SCRIPTS sections that deal with
* the start queue and the done queue that may break any
* assomption from the C code if we are interrupted
* inside, so we reset if this happens. Btw, since these
* SCRIPTS sections are executed while the SCRIPTS hasn't
* started SCSI operations, it is very unlikely to happen.
*
* All the driver data structures are supposed to be
* allocated from the same 4 GB memory window, so there
* is a 1 to 1 relationship between DSA and driver data
* structures. Since we are careful :) to invalidate the
* DSA when we complete a command or when the SCRIPTS
* pushes a DSA into a queue, we can trust it when it
* points to a CCB.
*/
static void sym_recover_scsi_int (hcb_p np, u_char hsts)
{
u32 dsp = INL (nc_dsp);
u32 dsa = INL (nc_dsa);
ccb_p cp = sym_ccb_from_dsa(np, dsa);
/*
* If we haven't been interrupted inside the SCRIPTS
* critical paths, we can safely restart the SCRIPTS
* and trust the DSA value if it matches a CCB.
*/
if ((!(dsp > SCRIPTA_BA (np, getjob_begin) &&
dsp < SCRIPTA_BA (np, getjob_end) + 1)) &&
(!(dsp > SCRIPTA_BA (np, ungetjob) &&
dsp < SCRIPTA_BA (np, reselect) + 1)) &&
(!(dsp > SCRIPTB_BA (np, sel_for_abort) &&
dsp < SCRIPTB_BA (np, sel_for_abort_1) + 1)) &&
(!(dsp > SCRIPTA_BA (np, done) &&
dsp < SCRIPTA_BA (np, done_end) + 1))) {
OUTB (nc_ctest3, np->rv_ctest3 | CLF); /* clear dma fifo */
OUTB (nc_stest3, TE|CSF); /* clear scsi fifo */
/*
* If we have a CCB, let the SCRIPTS call us back for
* the handling of the error with SCRATCHA filled with
* STARTPOS. This way, we will be able to freeze the
* device queue and requeue awaiting IOs.
*/
if (cp) {
cp->host_status = hsts;
OUTL_DSP (SCRIPTA_BA (np, complete_error));
}
/*
* Otherwise just restart the SCRIPTS.
*/
else {
OUTL (nc_dsa, 0xffffff);
OUTL_DSP (SCRIPTA_BA (np, start));
}
}
else
goto reset_all;
return;
reset_all:
sym_start_reset(np);
}
/*
* chip exception handler for selection timeout
*/
static void sym_int_sto (hcb_p np)
{
u32 dsp = INL (nc_dsp);
if (DEBUG_FLAGS & DEBUG_TINY) printf ("T");
if (dsp == SCRIPTA_BA (np, wf_sel_done) + 8)
sym_recover_scsi_int(np, HS_SEL_TIMEOUT);
else
sym_start_reset(np);
}
/*
* chip exception handler for unexpected disconnect
*/
static void sym_int_udc (hcb_p np)
{
printf ("%s: unexpected disconnect\n", sym_name(np));
sym_recover_scsi_int(np, HS_UNEXPECTED);
}
/*
* chip exception handler for SCSI bus mode change
*
* spi2-r12 11.2.3 says a transceiver mode change must
* generate a reset event and a device that detects a reset
* event shall initiate a hard reset. It says also that a
* device that detects a mode change shall set data transfer
* mode to eight bit asynchronous, etc...
* So, just reinitializing all except chip should be enough.
*/
static void sym_int_sbmc (hcb_p np)
{
u_char scsi_mode = INB (nc_stest4) & SMODE;
/*
* Notify user.
*/
xpt_print_path(np->path);
printf("SCSI BUS mode change from %s to %s.\n",
sym_scsi_bus_mode(np->scsi_mode), sym_scsi_bus_mode(scsi_mode));
/*
* Should suspend command processing for a few seconds and
* reinitialize all except the chip.
*/
sym_init (np, 2);
}
/*
* chip exception handler for SCSI parity error.
*
* When the chip detects a SCSI parity error and is
* currently executing a (CH)MOV instruction, it does
* not interrupt immediately, but tries to finish the
* transfer of the current scatter entry before
* interrupting. The following situations may occur:
*
* - The complete scatter entry has been transferred
* without the device having changed phase.
* The chip will then interrupt with the DSP pointing
* to the instruction that follows the MOV.
*
* - A phase mismatch occurs before the MOV finished
* and phase errors are to be handled by the C code.
* The chip will then interrupt with both PAR and MA
* conditions set.
*
* - A phase mismatch occurs before the MOV finished and
* phase errors are to be handled by SCRIPTS.
* The chip will load the DSP with the phase mismatch
* JUMP address and interrupt the host processor.
*/
static void sym_int_par (hcb_p np, u_short sist)
{
u_char hsts = INB (HS_PRT);
u32 dsp = INL (nc_dsp);
u32 dbc = INL (nc_dbc);
u32 dsa = INL (nc_dsa);
u_char sbcl = INB (nc_sbcl);
u_char cmd = dbc >> 24;
int phase = cmd & 7;
ccb_p cp = sym_ccb_from_dsa(np, dsa);
printf("%s: SCSI parity error detected: SCR1=%d DBC=%x SBCL=%x\n",
sym_name(np), hsts, dbc, sbcl);
/*
* Check that the chip is connected to the SCSI BUS.
*/
if (!(INB (nc_scntl1) & ISCON)) {
sym_recover_scsi_int(np, HS_UNEXPECTED);
return;
}
/*
* If the nexus is not clearly identified, reset the bus.
* We will try to do better later.
*/
if (!cp)
goto reset_all;
/*
* Check instruction was a MOV, direction was INPUT and
* ATN is asserted.
*/
if ((cmd & 0xc0) || !(phase & 1) || !(sbcl & 0x8))
goto reset_all;
/*
* Keep track of the parity error.
*/
OUTONB (HF_PRT, HF_EXT_ERR);
cp->xerr_status |= XE_PARITY_ERR;
/*
* Prepare the message to send to the device.
*/
np->msgout[0] = (phase == 7) ? M_PARITY : M_ID_ERROR;
/*
* If the old phase was DATA IN phase, we have to deal with
* the 3 situations described above.
* For other input phases (MSG IN and STATUS), the device
* must resend the whole thing that failed parity checking
* or signal error. So, jumping to dispatcher should be OK.
*/
if (phase == 1 || phase == 5) {
/* Phase mismatch handled by SCRIPTS */
if (dsp == SCRIPTB_BA (np, pm_handle))
OUTL_DSP (dsp);
/* Phase mismatch handled by the C code */
else if (sist & MA)
sym_int_ma (np);
/* No phase mismatch occurred */
else {
OUTL (nc_temp, dsp);
OUTL_DSP (SCRIPTA_BA (np, dispatch));
}
}
else
OUTL_DSP (SCRIPTA_BA (np, clrack));
return;
reset_all:
sym_start_reset(np);
}
/*
* chip exception handler for phase errors.
*
* We have to construct a new transfer descriptor,
* to transfer the rest of the current block.
*/
static void sym_int_ma (hcb_p np)
{
u32 dbc;
u32 rest;
u32 dsp;
u32 dsa;
u32 nxtdsp;
u32 *vdsp;
u32 oadr, olen;
u32 *tblp;
u32 newcmd;
u_int delta;
u_char cmd;
u_char hflags, hflags0;
struct sym_pmc *pm;
ccb_p cp;
dsp = INL (nc_dsp);
dbc = INL (nc_dbc);
dsa = INL (nc_dsa);
cmd = dbc >> 24;
rest = dbc & 0xffffff;
delta = 0;
/*
* locate matching cp if any.
*/
cp = sym_ccb_from_dsa(np, dsa);
/*
* Donnot take into account dma fifo and various buffers in
* INPUT phase since the chip flushes everything before
* raising the MA interrupt for interrupted INPUT phases.
* For DATA IN phase, we will check for the SWIDE later.
*/
if ((cmd & 7) != 1 && (cmd & 7) != 5) {
u_char ss0, ss2;
if (np->features & FE_DFBC)
delta = INW (nc_dfbc);
else {
u32 dfifo;
/*
* Read DFIFO, CTEST[4-6] using 1 PCI bus ownership.
*/
dfifo = INL(nc_dfifo);
/*
* Calculate remaining bytes in DMA fifo.
* (CTEST5 = dfifo >> 16)
*/
if (dfifo & (DFS << 16))
delta = ((((dfifo >> 8) & 0x300) |
(dfifo & 0xff)) - rest) & 0x3ff;
else
delta = ((dfifo & 0xff) - rest) & 0x7f;
}
/*
* The data in the dma fifo has not been transferred to
* the target -> add the amount to the rest
* and clear the data.
* Check the sstat2 register in case of wide transfer.
*/
rest += delta;
ss0 = INB (nc_sstat0);
if (ss0 & OLF) rest++;
if (!(np->features & FE_C10))
if (ss0 & ORF) rest++;
if (cp && (cp->phys.select.sel_scntl3 & EWS)) {
ss2 = INB (nc_sstat2);
if (ss2 & OLF1) rest++;
if (!(np->features & FE_C10))
if (ss2 & ORF1) rest++;
}
/*
* Clear fifos.
*/
OUTB (nc_ctest3, np->rv_ctest3 | CLF); /* dma fifo */
OUTB (nc_stest3, TE|CSF); /* scsi fifo */
}
/*
* log the information
*/
if (DEBUG_FLAGS & (DEBUG_TINY|DEBUG_PHASE))
printf ("P%x%x RL=%d D=%d ", cmd&7, INB(nc_sbcl)&7,
(unsigned) rest, (unsigned) delta);
/*
* try to find the interrupted script command,
* and the address at which to continue.
*/
vdsp = 0;
nxtdsp = 0;
if (dsp > np->scripta_ba &&
dsp <= np->scripta_ba + np->scripta_sz) {
vdsp = (u32 *)((char*)np->scripta0 + (dsp-np->scripta_ba-8));
nxtdsp = dsp;
}
else if (dsp > np->scriptb_ba &&
dsp <= np->scriptb_ba + np->scriptb_sz) {
vdsp = (u32 *)((char*)np->scriptb0 + (dsp-np->scriptb_ba-8));
nxtdsp = dsp;
}
/*
* log the information
*/
if (DEBUG_FLAGS & DEBUG_PHASE) {
printf ("\nCP=%p DSP=%x NXT=%x VDSP=%p CMD=%x ",
cp, (unsigned)dsp, (unsigned)nxtdsp, vdsp, cmd);
}
if (!vdsp) {
printf ("%s: interrupted SCRIPT address not found.\n",
sym_name (np));
goto reset_all;
}
if (!cp) {
printf ("%s: SCSI phase error fixup: CCB already dequeued.\n",
sym_name (np));
goto reset_all;
}
/*
* get old startaddress and old length.
*/
oadr = scr_to_cpu(vdsp[1]);
if (cmd & 0x10) { /* Table indirect */
tblp = (u32 *) ((char*) &cp->phys + oadr);
olen = scr_to_cpu(tblp[0]);
oadr = scr_to_cpu(tblp[1]);
} else {
tblp = (u32 *) 0;
olen = scr_to_cpu(vdsp[0]) & 0xffffff;
}
if (DEBUG_FLAGS & DEBUG_PHASE) {
printf ("OCMD=%x\nTBLP=%p OLEN=%x OADR=%x\n",
(unsigned) (scr_to_cpu(vdsp[0]) >> 24),
tblp,
(unsigned) olen,
(unsigned) oadr);
}
/*
* check cmd against assumed interrupted script command.
* If dt data phase, the MOVE instruction hasn't bit 4 of
* the phase.
*/
if (((cmd & 2) ? cmd : (cmd & ~4)) != (scr_to_cpu(vdsp[0]) >> 24)) {
PRINT_ADDR(cp);
printf ("internal error: cmd=%02x != %02x=(vdsp[0] >> 24)\n",
(unsigned)cmd, (unsigned)scr_to_cpu(vdsp[0]) >> 24);
goto reset_all;
}
/*
* if old phase not dataphase, leave here.
*/
if (cmd & 2) {
PRINT_ADDR(cp);
printf ("phase change %x-%x %d@%08x resid=%d.\n",
cmd&7, INB(nc_sbcl)&7, (unsigned)olen,
(unsigned)oadr, (unsigned)rest);
goto unexpected_phase;
}
/*
* Choose the correct PM save area.
*
* Look at the PM_SAVE SCRIPT if you want to understand
* this stuff. The equivalent code is implemented in
* SCRIPTS for the 895A, 896 and 1010 that are able to
* handle PM from the SCRIPTS processor.
*/
hflags0 = INB (HF_PRT);
hflags = hflags0;
if (hflags & (HF_IN_PM0 | HF_IN_PM1 | HF_DP_SAVED)) {
if (hflags & HF_IN_PM0)
nxtdsp = scr_to_cpu(cp->phys.pm0.ret);
else if (hflags & HF_IN_PM1)
nxtdsp = scr_to_cpu(cp->phys.pm1.ret);
if (hflags & HF_DP_SAVED)
hflags ^= HF_ACT_PM;
}
if (!(hflags & HF_ACT_PM)) {
pm = &cp->phys.pm0;
newcmd = SCRIPTA_BA (np, pm0_data);
}
else {
pm = &cp->phys.pm1;
newcmd = SCRIPTA_BA (np, pm1_data);
}
hflags &= ~(HF_IN_PM0 | HF_IN_PM1 | HF_DP_SAVED);
if (hflags != hflags0)
OUTB (HF_PRT, hflags);
/*
* fillin the phase mismatch context
*/
pm->sg.addr = cpu_to_scr(oadr + olen - rest);
pm->sg.size = cpu_to_scr(rest);
pm->ret = cpu_to_scr(nxtdsp);
/*
* If we have a SWIDE,
* - prepare the address to write the SWIDE from SCRIPTS,
* - compute the SCRIPTS address to restart from,
* - move current data pointer context by one byte.
*/
nxtdsp = SCRIPTA_BA (np, dispatch);
if ((cmd & 7) == 1 && cp && (cp->phys.select.sel_scntl3 & EWS) &&
(INB (nc_scntl2) & WSR)) {
u32 tmp;
/*
* Set up the table indirect for the MOVE
* of the residual byte and adjust the data
* pointer context.
*/
tmp = scr_to_cpu(pm->sg.addr);
cp->phys.wresid.addr = cpu_to_scr(tmp);
pm->sg.addr = cpu_to_scr(tmp + 1);
tmp = scr_to_cpu(pm->sg.size);
cp->phys.wresid.size = cpu_to_scr((tmp&0xff000000) | 1);
pm->sg.size = cpu_to_scr(tmp - 1);
/*
* If only the residual byte is to be moved,
* no PM context is needed.
*/
if ((tmp&0xffffff) == 1)
newcmd = pm->ret;
/*
* Prepare the address of SCRIPTS that will
* move the residual byte to memory.
*/
nxtdsp = SCRIPTB_BA (np, wsr_ma_helper);
}
if (DEBUG_FLAGS & DEBUG_PHASE) {
PRINT_ADDR(cp);
printf ("PM %x %x %x / %x %x %x.\n",
hflags0, hflags, newcmd,
(unsigned)scr_to_cpu(pm->sg.addr),
(unsigned)scr_to_cpu(pm->sg.size),
(unsigned)scr_to_cpu(pm->ret));
}
/*
* Restart the SCRIPTS processor.
*/
OUTL (nc_temp, newcmd);
OUTL_DSP (nxtdsp);
return;
/*
* Unexpected phase changes that occurs when the current phase
* is not a DATA IN or DATA OUT phase are due to error conditions.
* Such event may only happen when the SCRIPTS is using a
* multibyte SCSI MOVE.
*
* Phase change Some possible cause
*
* COMMAND --> MSG IN SCSI parity error detected by target.
* COMMAND --> STATUS Bad command or refused by target.
* MSG OUT --> MSG IN Message rejected by target.
* MSG OUT --> COMMAND Bogus target that discards extended
* negotiation messages.
*
* The code below does not care of the new phase and so
* trusts the target. Why to annoy it ?
* If the interrupted phase is COMMAND phase, we restart at
* dispatcher.
* If a target does not get all the messages after selection,
* the code assumes blindly that the target discards extended
* messages and clears the negotiation status.
* If the target does not want all our response to negotiation,
* we force a SIR_NEGO_PROTO interrupt (it is a hack that avoids
* bloat for such a should_not_happen situation).
* In all other situation, we reset the BUS.
* Are these assumptions reasonnable ? (Wait and see ...)
*/
unexpected_phase:
dsp -= 8;
nxtdsp = 0;
switch (cmd & 7) {
case 2: /* COMMAND phase */
nxtdsp = SCRIPTA_BA (np, dispatch);
break;
#if 0
case 3: /* STATUS phase */
nxtdsp = SCRIPTA_BA (np, dispatch);
break;
#endif
case 6: /* MSG OUT phase */
/*
* If the device may want to use untagged when we want
* tagged, we prepare an IDENTIFY without disc. granted,
* since we will not be able to handle reselect.
* Otherwise, we just don't care.
*/
if (dsp == SCRIPTA_BA (np, send_ident)) {
if (cp->tag != NO_TAG && olen - rest <= 3) {
cp->host_status = HS_BUSY;
np->msgout[0] = M_IDENTIFY | cp->lun;
nxtdsp = SCRIPTB_BA (np, ident_break_atn);
}
else
nxtdsp = SCRIPTB_BA (np, ident_break);
}
else if (dsp == SCRIPTB_BA (np, send_wdtr) ||
dsp == SCRIPTB_BA (np, send_sdtr) ||
dsp == SCRIPTB_BA (np, send_ppr)) {
nxtdsp = SCRIPTB_BA (np, nego_bad_phase);
}
break;
#if 0
case 7: /* MSG IN phase */
nxtdsp = SCRIPTA_BA (np, clrack);
break;
#endif
}
if (nxtdsp) {
OUTL_DSP (nxtdsp);
return;
}
reset_all:
sym_start_reset(np);
}
/*
* Dequeue from the START queue all CCBs that match
* a given target/lun/task condition (-1 means all),
* and move them from the BUSY queue to the COMP queue
* with CAM_REQUEUE_REQ status condition.
* This function is used during error handling/recovery.
* It is called with SCRIPTS not running.
*/
static int
sym_dequeue_from_squeue(hcb_p np, int i, int target, int lun, int task)
{
int j;
ccb_p cp;
/*
* Make sure the starting index is within range.
*/
assert((i >= 0) && (i < 2*MAX_QUEUE));
/*
* Walk until end of START queue and dequeue every job
* that matches the target/lun/task condition.
*/
j = i;
while (i != np->squeueput) {
cp = sym_ccb_from_dsa(np, scr_to_cpu(np->squeue[i]));
assert(cp);
#ifdef SYM_CONF_IARB_SUPPORT
/* Forget hints for IARB, they may be no longer relevant */
cp->host_flags &= ~HF_HINT_IARB;
#endif
if ((target == -1 || cp->target == target) &&
(lun == -1 || cp->lun == lun) &&
(task == -1 || cp->tag == task)) {
sym_set_cam_status(cp->cam_ccb, CAM_REQUEUE_REQ);
sym_remque(&cp->link_ccbq);
sym_insque_tail(&cp->link_ccbq, &np->comp_ccbq);
}
else {
if (i != j)
np->squeue[j] = np->squeue[i];
if ((j += 2) >= MAX_QUEUE*2) j = 0;
}
if ((i += 2) >= MAX_QUEUE*2) i = 0;
}
if (i != j) /* Copy back the idle task if needed */
np->squeue[j] = np->squeue[i];
np->squeueput = j; /* Update our current start queue pointer */
return (i - j) / 2;
}
/*
* Complete all CCBs queued to the COMP queue.
*
* These CCBs are assumed:
* - Not to be referenced either by devices or
* SCRIPTS-related queues and datas.
* - To have to be completed with an error condition
* or requeued.
*
* The device queue freeze count is incremented
* for each CCB that does not prevent this.
* This function is called when all CCBs involved
* in error handling/recovery have been reaped.
*/
static void
sym_flush_comp_queue(hcb_p np, int cam_status)
{
SYM_QUEHEAD *qp;
ccb_p cp;
while ((qp = sym_remque_head(&np->comp_ccbq)) != NULL) {
union ccb *ccb;
cp = sym_que_entry(qp, struct sym_ccb, link_ccbq);
sym_insque_tail(&cp->link_ccbq, &np->busy_ccbq);
/* Leave quiet CCBs waiting for resources */
if (cp->host_status == HS_WAIT)
continue;
ccb = cp->cam_ccb;
if (cam_status)
sym_set_cam_status(ccb, cam_status);
sym_freeze_cam_ccb(ccb);
sym_xpt_done(np, ccb, cp);
sym_free_ccb(np, cp);
}
}
/*
* chip handler for bad SCSI status condition
*
* In case of bad SCSI status, we unqueue all the tasks
* currently queued to the controller but not yet started
* and then restart the SCRIPTS processor immediately.
*
* QUEUE FULL and BUSY conditions are handled the same way.
* Basically all the not yet started tasks are requeued in
* device queue and the queue is frozen until a completion.
*
* For CHECK CONDITION and COMMAND TERMINATED status, we use
* the CCB of the failed command to prepare a REQUEST SENSE
* SCSI command and queue it to the controller queue.
*
* SCRATCHA is assumed to have been loaded with STARTPOS
* before the SCRIPTS called the C code.
*/
static void sym_sir_bad_scsi_status(hcb_p np, ccb_p cp)
{
tcb_p tp = &np->target[cp->target];
u32 startp;
u_char s_status = cp->ssss_status;
u_char h_flags = cp->host_flags;
int msglen;
int nego;
int i;
SYM_LOCK_ASSERT(MA_OWNED);
/*
* Compute the index of the next job to start from SCRIPTS.
*/
i = (INL (nc_scratcha) - np->squeue_ba) / 4;
/*
* The last CCB queued used for IARB hint may be
* no longer relevant. Forget it.
*/
#ifdef SYM_CONF_IARB_SUPPORT
if (np->last_cp)
np->last_cp = NULL;
#endif
/*
* Now deal with the SCSI status.
*/
switch(s_status) {
case S_BUSY:
case S_QUEUE_FULL:
if (sym_verbose >= 2) {
PRINT_ADDR(cp);
printf (s_status == S_BUSY ? "BUSY" : "QUEUE FULL\n");
}
default: /* S_INT, S_INT_COND_MET, S_CONFLICT */
sym_complete_error (np, cp);
break;
case S_TERMINATED:
case S_CHECK_COND:
/*
* If we get an SCSI error when requesting sense, give up.
*/
if (h_flags & HF_SENSE) {
sym_complete_error (np, cp);
break;
}
/*
* Dequeue all queued CCBs for that device not yet started,
* and restart the SCRIPTS processor immediately.
*/
(void) sym_dequeue_from_squeue(np, i, cp->target, cp->lun, -1);
OUTL_DSP (SCRIPTA_BA (np, start));
/*
* Save some info of the actual IO.
* Compute the data residual.
*/
cp->sv_scsi_status = cp->ssss_status;
cp->sv_xerr_status = cp->xerr_status;
cp->sv_resid = sym_compute_residual(np, cp);
/*
* Prepare all needed data structures for
* requesting sense data.
*/
/*
* identify message
*/
cp->scsi_smsg2[0] = M_IDENTIFY | cp->lun;
msglen = 1;
/*
* If we are currently using anything different from
* async. 8 bit data transfers with that target,
* start a negotiation, since the device may want
* to report us a UNIT ATTENTION condition due to
* a cause we currently ignore, and we donnot want
* to be stuck with WIDE and/or SYNC data transfer.
*
* cp->nego_status is filled by sym_prepare_nego().
*/
cp->nego_status = 0;
nego = 0;
if (tp->tinfo.current.options & PPR_OPT_MASK)
nego = NS_PPR;
else if (tp->tinfo.current.width != BUS_8_BIT)
nego = NS_WIDE;
else if (tp->tinfo.current.offset != 0)
nego = NS_SYNC;
if (nego)
msglen +=
sym_prepare_nego (np,cp, nego, &cp->scsi_smsg2[msglen]);
/*
* Message table indirect structure.
*/
cp->phys.smsg.addr = cpu_to_scr(CCB_BA (cp, scsi_smsg2));
cp->phys.smsg.size = cpu_to_scr(msglen);
/*
* sense command
*/
cp->phys.cmd.addr = cpu_to_scr(CCB_BA (cp, sensecmd));
cp->phys.cmd.size = cpu_to_scr(6);
/*
* patch requested size into sense command
*/
cp->sensecmd[0] = 0x03;
cp->sensecmd[1] = cp->lun << 5;
if (tp->tinfo.current.scsi_version > 2 || cp->lun > 7)
cp->sensecmd[1] = 0;
cp->sensecmd[4] = SYM_SNS_BBUF_LEN;
cp->data_len = SYM_SNS_BBUF_LEN;
/*
* sense data
*/
bzero(cp->sns_bbuf, SYM_SNS_BBUF_LEN);
cp->phys.sense.addr = cpu_to_scr(vtobus(cp->sns_bbuf));
cp->phys.sense.size = cpu_to_scr(SYM_SNS_BBUF_LEN);
/*
* requeue the command.
*/
startp = SCRIPTB_BA (np, sdata_in);
cp->phys.head.savep = cpu_to_scr(startp);
cp->phys.head.goalp = cpu_to_scr(startp + 16);
cp->phys.head.lastp = cpu_to_scr(startp);
cp->startp = cpu_to_scr(startp);
cp->actualquirks = SYM_QUIRK_AUTOSAVE;
cp->host_status = cp->nego_status ? HS_NEGOTIATE : HS_BUSY;
cp->ssss_status = S_ILLEGAL;
cp->host_flags = (HF_SENSE|HF_DATA_IN);
cp->xerr_status = 0;
cp->extra_bytes = 0;
cp->phys.head.go.start = cpu_to_scr(SCRIPTA_BA (np, select));
/*
* Requeue the command.
*/
sym_put_start_queue(np, cp);
/*
* Give back to upper layer everything we have dequeued.
*/
sym_flush_comp_queue(np, 0);
break;
}
}
/*
* After a device has accepted some management message
* as BUS DEVICE RESET, ABORT TASK, etc ..., or when
* a device signals a UNIT ATTENTION condition, some
* tasks are thrown away by the device. We are required
* to reflect that on our tasks list since the device
* will never complete these tasks.
*
* This function move from the BUSY queue to the COMP
* queue all disconnected CCBs for a given target that
* match the following criteria:
* - lun=-1 means any logical UNIT otherwise a given one.
* - task=-1 means any task, otherwise a given one.
*/
static int
sym_clear_tasks(hcb_p np, int cam_status, int target, int lun, int task)
{
SYM_QUEHEAD qtmp, *qp;
int i = 0;
ccb_p cp;
/*
* Move the entire BUSY queue to our temporary queue.
*/
sym_que_init(&qtmp);
sym_que_splice(&np->busy_ccbq, &qtmp);
sym_que_init(&np->busy_ccbq);
/*
* Put all CCBs that matches our criteria into
* the COMP queue and put back other ones into
* the BUSY queue.
*/
while ((qp = sym_remque_head(&qtmp)) != NULL) {
union ccb *ccb;
cp = sym_que_entry(qp, struct sym_ccb, link_ccbq);
ccb = cp->cam_ccb;
if (cp->host_status != HS_DISCONNECT ||
cp->target != target ||
(lun != -1 && cp->lun != lun) ||
(task != -1 &&
(cp->tag != NO_TAG && cp->scsi_smsg[2] != task))) {
sym_insque_tail(&cp->link_ccbq, &np->busy_ccbq);
continue;
}
sym_insque_tail(&cp->link_ccbq, &np->comp_ccbq);
/* Preserve the software timeout condition */
if (sym_get_cam_status(ccb) != CAM_CMD_TIMEOUT)
sym_set_cam_status(ccb, cam_status);
++i;
#if 0
printf("XXXX TASK @%p CLEARED\n", cp);
#endif
}
return i;
}
/*
* chip handler for TASKS recovery
*
* We cannot safely abort a command, while the SCRIPTS
* processor is running, since we just would be in race
* with it.
*
* As long as we have tasks to abort, we keep the SEM
* bit set in the ISTAT. When this bit is set, the
* SCRIPTS processor interrupts (SIR_SCRIPT_STOPPED)
* each time it enters the scheduler.
*
* If we have to reset a target, clear tasks of a unit,
* or to perform the abort of a disconnected job, we
* restart the SCRIPTS for selecting the target. Once
* selected, the SCRIPTS interrupts (SIR_TARGET_SELECTED).
* If it loses arbitration, the SCRIPTS will interrupt again
* the next time it will enter its scheduler, and so on ...
*
* On SIR_TARGET_SELECTED, we scan for the more
* appropriate thing to do:
*
* - If nothing, we just sent a M_ABORT message to the
* target to get rid of the useless SCSI bus ownership.
* According to the specs, no tasks shall be affected.
* - If the target is to be reset, we send it a M_RESET
* message.
* - If a logical UNIT is to be cleared , we send the
* IDENTIFY(lun) + M_ABORT.
* - If an untagged task is to be aborted, we send the
* IDENTIFY(lun) + M_ABORT.
* - If a tagged task is to be aborted, we send the
* IDENTIFY(lun) + task attributes + M_ABORT_TAG.
*
* Once our 'kiss of death' :) message has been accepted
* by the target, the SCRIPTS interrupts again
* (SIR_ABORT_SENT). On this interrupt, we complete
* all the CCBs that should have been aborted by the
* target according to our message.
*/
static void sym_sir_task_recovery(hcb_p np, int num)
{
SYM_QUEHEAD *qp;
ccb_p cp;
tcb_p tp;
int target=-1, lun=-1, task;
int i, k;
switch(num) {
/*
* The SCRIPTS processor stopped before starting
* the next command in order to allow us to perform
* some task recovery.
*/
case SIR_SCRIPT_STOPPED:
/*
* Do we have any target to reset or unit to clear ?
*/
for (i = 0 ; i < SYM_CONF_MAX_TARGET ; i++) {
tp = &np->target[i];
if (tp->to_reset ||
(tp->lun0p && tp->lun0p->to_clear)) {
target = i;
break;
}
if (!tp->lunmp)
continue;
for (k = 1 ; k < SYM_CONF_MAX_LUN ; k++) {
if (tp->lunmp[k] && tp->lunmp[k]->to_clear) {
target = i;
break;
}
}
if (target != -1)
break;
}
/*
* If not, walk the busy queue for any
* disconnected CCB to be aborted.
*/
if (target == -1) {
FOR_EACH_QUEUED_ELEMENT(&np->busy_ccbq, qp) {
cp = sym_que_entry(qp,struct sym_ccb,link_ccbq);
if (cp->host_status != HS_DISCONNECT)
continue;
if (cp->to_abort) {
target = cp->target;
break;
}
}
}
/*
* If some target is to be selected,
* prepare and start the selection.
*/
if (target != -1) {
tp = &np->target[target];
np->abrt_sel.sel_id = target;
np->abrt_sel.sel_scntl3 = tp->head.wval;
np->abrt_sel.sel_sxfer = tp->head.sval;
OUTL(nc_dsa, np->hcb_ba);
OUTL_DSP (SCRIPTB_BA (np, sel_for_abort));
return;
}
/*
* Now look for a CCB to abort that haven't started yet.
* Btw, the SCRIPTS processor is still stopped, so
* we are not in race.
*/
i = 0;
cp = NULL;
FOR_EACH_QUEUED_ELEMENT(&np->busy_ccbq, qp) {
cp = sym_que_entry(qp, struct sym_ccb, link_ccbq);
if (cp->host_status != HS_BUSY &&
cp->host_status != HS_NEGOTIATE)
continue;
if (!cp->to_abort)
continue;
#ifdef SYM_CONF_IARB_SUPPORT
/*
* If we are using IMMEDIATE ARBITRATION, we donnot
* want to cancel the last queued CCB, since the
* SCRIPTS may have anticipated the selection.
*/
if (cp == np->last_cp) {
cp->to_abort = 0;
continue;
}
#endif
i = 1; /* Means we have found some */
break;
}
if (!i) {
/*
* We are done, so we donnot need
* to synchronize with the SCRIPTS anylonger.
* Remove the SEM flag from the ISTAT.
*/
np->istat_sem = 0;
OUTB (nc_istat, SIGP);
break;
}
/*
* Compute index of next position in the start
* queue the SCRIPTS intends to start and dequeue
* all CCBs for that device that haven't been started.
*/
i = (INL (nc_scratcha) - np->squeue_ba) / 4;
i = sym_dequeue_from_squeue(np, i, cp->target, cp->lun, -1);
/*
* Make sure at least our IO to abort has been dequeued.
*/
assert(i && sym_get_cam_status(cp->cam_ccb) == CAM_REQUEUE_REQ);
/*
* Keep track in cam status of the reason of the abort.
*/
if (cp->to_abort == 2)
sym_set_cam_status(cp->cam_ccb, CAM_CMD_TIMEOUT);
else
sym_set_cam_status(cp->cam_ccb, CAM_REQ_ABORTED);
/*
* Complete with error everything that we have dequeued.
*/
sym_flush_comp_queue(np, 0);
break;
/*
* The SCRIPTS processor has selected a target
* we may have some manual recovery to perform for.
*/
case SIR_TARGET_SELECTED:
target = (INB (nc_sdid) & 0xf);
tp = &np->target[target];
np->abrt_tbl.addr = cpu_to_scr(vtobus(np->abrt_msg));
/*
* If the target is to be reset, prepare a
* M_RESET message and clear the to_reset flag
* since we donnot expect this operation to fail.
*/
if (tp->to_reset) {
np->abrt_msg[0] = M_RESET;
np->abrt_tbl.size = 1;
tp->to_reset = 0;
break;
}
/*
* Otherwise, look for some logical unit to be cleared.
*/
if (tp->lun0p && tp->lun0p->to_clear)
lun = 0;
else if (tp->lunmp) {
for (k = 1 ; k < SYM_CONF_MAX_LUN ; k++) {
if (tp->lunmp[k] && tp->lunmp[k]->to_clear) {
lun = k;
break;
}
}
}
/*
* If a logical unit is to be cleared, prepare
* an IDENTIFY(lun) + ABORT MESSAGE.
*/
if (lun != -1) {
lcb_p lp = sym_lp(tp, lun);
lp->to_clear = 0; /* We donnot expect to fail here */
np->abrt_msg[0] = M_IDENTIFY | lun;
np->abrt_msg[1] = M_ABORT;
np->abrt_tbl.size = 2;
break;
}
/*
* Otherwise, look for some disconnected job to
* abort for this target.
*/
i = 0;
cp = NULL;
FOR_EACH_QUEUED_ELEMENT(&np->busy_ccbq, qp) {
cp = sym_que_entry(qp, struct sym_ccb, link_ccbq);
if (cp->host_status != HS_DISCONNECT)
continue;
if (cp->target != target)
continue;
if (!cp->to_abort)
continue;
i = 1; /* Means we have some */
break;
}
/*
* If we have none, probably since the device has
* completed the command before we won abitration,
* send a M_ABORT message without IDENTIFY.
* According to the specs, the device must just
* disconnect the BUS and not abort any task.
*/
if (!i) {
np->abrt_msg[0] = M_ABORT;
np->abrt_tbl.size = 1;
break;
}
/*
* We have some task to abort.
* Set the IDENTIFY(lun)
*/
np->abrt_msg[0] = M_IDENTIFY | cp->lun;
/*
* If we want to abort an untagged command, we
* will send an IDENTIFY + M_ABORT.
* Otherwise (tagged command), we will send
* an IDENTIFY + task attributes + ABORT TAG.
*/
if (cp->tag == NO_TAG) {
np->abrt_msg[1] = M_ABORT;
np->abrt_tbl.size = 2;
}
else {
np->abrt_msg[1] = cp->scsi_smsg[1];
np->abrt_msg[2] = cp->scsi_smsg[2];
np->abrt_msg[3] = M_ABORT_TAG;
np->abrt_tbl.size = 4;
}
/*
* Keep track of software timeout condition, since the
* peripheral driver may not count retries on abort
* conditions not due to timeout.
*/
if (cp->to_abort == 2)
sym_set_cam_status(cp->cam_ccb, CAM_CMD_TIMEOUT);
cp->to_abort = 0; /* We donnot expect to fail here */
break;
/*
* The target has accepted our message and switched
* to BUS FREE phase as we expected.
*/
case SIR_ABORT_SENT:
target = (INB (nc_sdid) & 0xf);
tp = &np->target[target];
/*
** If we didn't abort anything, leave here.
*/
if (np->abrt_msg[0] == M_ABORT)
break;
/*
* If we sent a M_RESET, then a hardware reset has
* been performed by the target.
* - Reset everything to async 8 bit
* - Tell ourself to negotiate next time :-)
* - Prepare to clear all disconnected CCBs for
* this target from our task list (lun=task=-1)
*/
lun = -1;
task = -1;
if (np->abrt_msg[0] == M_RESET) {
tp->head.sval = 0;
tp->head.wval = np->rv_scntl3;
tp->head.uval = 0;
tp->tinfo.current.period = 0;
tp->tinfo.current.offset = 0;
tp->tinfo.current.width = BUS_8_BIT;
tp->tinfo.current.options = 0;
}
/*
* Otherwise, check for the LUN and TASK(s)
* concerned by the cancellation.
* If it is not ABORT_TAG then it is CLEAR_QUEUE
* or an ABORT message :-)
*/
else {
lun = np->abrt_msg[0] & 0x3f;
if (np->abrt_msg[1] == M_ABORT_TAG)
task = np->abrt_msg[2];
}
/*
* Complete all the CCBs the device should have
* aborted due to our 'kiss of death' message.
*/
i = (INL (nc_scratcha) - np->squeue_ba) / 4;
(void) sym_dequeue_from_squeue(np, i, target, lun, -1);
(void) sym_clear_tasks(np, CAM_REQ_ABORTED, target, lun, task);
sym_flush_comp_queue(np, 0);
/*
* If we sent a BDR, make uper layer aware of that.
*/
if (np->abrt_msg[0] == M_RESET)
xpt_async(AC_SENT_BDR, np->path, NULL);
break;
}
/*
* Print to the log the message we intend to send.
*/
if (num == SIR_TARGET_SELECTED) {
PRINT_TARGET(np, target);
sym_printl_hex("control msgout:", np->abrt_msg,
np->abrt_tbl.size);
np->abrt_tbl.size = cpu_to_scr(np->abrt_tbl.size);
}
/*
* Let the SCRIPTS processor continue.
*/
OUTONB_STD ();
}
/*
* Gerard's alchemy:) that deals with with the data
* pointer for both MDP and the residual calculation.
*
* I didn't want to bloat the code by more than 200
* lignes for the handling of both MDP and the residual.
* This has been achieved by using a data pointer
* representation consisting in an index in the data
* array (dp_sg) and a negative offset (dp_ofs) that
* have the following meaning:
*
* - dp_sg = SYM_CONF_MAX_SG
* we are at the end of the data script.
* - dp_sg < SYM_CONF_MAX_SG
* dp_sg points to the next entry of the scatter array
* we want to transfer.
* - dp_ofs < 0
* dp_ofs represents the residual of bytes of the
* previous entry scatter entry we will send first.
* - dp_ofs = 0
* no residual to send first.
*
* The function sym_evaluate_dp() accepts an arbitray
* offset (basically from the MDP message) and returns
* the corresponding values of dp_sg and dp_ofs.
*/
static int sym_evaluate_dp(hcb_p np, ccb_p cp, u32 scr, int *ofs)
{
u32 dp_scr;
int dp_ofs, dp_sg, dp_sgmin;
int tmp;
struct sym_pmc *pm;
/*
* Compute the resulted data pointer in term of a script
* address within some DATA script and a signed byte offset.
*/
dp_scr = scr;
dp_ofs = *ofs;
if (dp_scr == SCRIPTA_BA (np, pm0_data))
pm = &cp->phys.pm0;
else if (dp_scr == SCRIPTA_BA (np, pm1_data))
pm = &cp->phys.pm1;
else
pm = NULL;
if (pm) {
dp_scr = scr_to_cpu(pm->ret);
dp_ofs -= scr_to_cpu(pm->sg.size);
}
/*
* If we are auto-sensing, then we are done.
*/
if (cp->host_flags & HF_SENSE) {
*ofs = dp_ofs;
return 0;
}
/*
* Deduce the index of the sg entry.
* Keep track of the index of the first valid entry.
* If result is dp_sg = SYM_CONF_MAX_SG, then we are at the
* end of the data.
*/
tmp = scr_to_cpu(cp->phys.head.goalp);
dp_sg = SYM_CONF_MAX_SG;
if (dp_scr != tmp)
dp_sg -= (tmp - 8 - (int)dp_scr) / (2*4);
dp_sgmin = SYM_CONF_MAX_SG - cp->segments;
/*
* Move to the sg entry the data pointer belongs to.
*
* If we are inside the data area, we expect result to be:
*
* Either,
* dp_ofs = 0 and dp_sg is the index of the sg entry
* the data pointer belongs to (or the end of the data)
* Or,
* dp_ofs < 0 and dp_sg is the index of the sg entry
* the data pointer belongs to + 1.
*/
if (dp_ofs < 0) {
int n;
while (dp_sg > dp_sgmin) {
--dp_sg;
tmp = scr_to_cpu(cp->phys.data[dp_sg].size);
n = dp_ofs + (tmp & 0xffffff);
if (n > 0) {
++dp_sg;
break;
}
dp_ofs = n;
}
}
else if (dp_ofs > 0) {
while (dp_sg < SYM_CONF_MAX_SG) {
tmp = scr_to_cpu(cp->phys.data[dp_sg].size);
dp_ofs -= (tmp & 0xffffff);
++dp_sg;
if (dp_ofs <= 0)
break;
}
}
/*
* Make sure the data pointer is inside the data area.
* If not, return some error.
*/
if (dp_sg < dp_sgmin || (dp_sg == dp_sgmin && dp_ofs < 0))
goto out_err;
else if (dp_sg > SYM_CONF_MAX_SG ||
(dp_sg == SYM_CONF_MAX_SG && dp_ofs > 0))
goto out_err;
/*
* Save the extreme pointer if needed.
*/
if (dp_sg > cp->ext_sg ||
(dp_sg == cp->ext_sg && dp_ofs > cp->ext_ofs)) {
cp->ext_sg = dp_sg;
cp->ext_ofs = dp_ofs;
}
/*
* Return data.
*/
*ofs = dp_ofs;
return dp_sg;
out_err:
return -1;
}
/*
* chip handler for MODIFY DATA POINTER MESSAGE
*
* We also call this function on IGNORE WIDE RESIDUE
* messages that do not match a SWIDE full condition.
* Btw, we assume in that situation that such a message
* is equivalent to a MODIFY DATA POINTER (offset=-1).
*/
static void sym_modify_dp(hcb_p np, ccb_p cp, int ofs)
{
int dp_ofs = ofs;
u32 dp_scr = INL (nc_temp);
u32 dp_ret;
u32 tmp;
u_char hflags;
int dp_sg;
struct sym_pmc *pm;
/*
* Not supported for auto-sense.
*/
if (cp->host_flags & HF_SENSE)
goto out_reject;
/*
* Apply our alchemy:) (see comments in sym_evaluate_dp()),
* to the resulted data pointer.
*/
dp_sg = sym_evaluate_dp(np, cp, dp_scr, &dp_ofs);
if (dp_sg < 0)
goto out_reject;
/*
* And our alchemy:) allows to easily calculate the data
* script address we want to return for the next data phase.
*/
dp_ret = cpu_to_scr(cp->phys.head.goalp);
dp_ret = dp_ret - 8 - (SYM_CONF_MAX_SG - dp_sg) * (2*4);
/*
* If offset / scatter entry is zero we donnot need
* a context for the new current data pointer.
*/
if (dp_ofs == 0) {
dp_scr = dp_ret;
goto out_ok;
}
/*
* Get a context for the new current data pointer.
*/
hflags = INB (HF_PRT);
if (hflags & HF_DP_SAVED)
hflags ^= HF_ACT_PM;
if (!(hflags & HF_ACT_PM)) {
pm = &cp->phys.pm0;
dp_scr = SCRIPTA_BA (np, pm0_data);
}
else {
pm = &cp->phys.pm1;
dp_scr = SCRIPTA_BA (np, pm1_data);
}
hflags &= ~(HF_DP_SAVED);
OUTB (HF_PRT, hflags);
/*
* Set up the new current data pointer.
* ofs < 0 there, and for the next data phase, we
* want to transfer part of the data of the sg entry
* corresponding to index dp_sg-1 prior to returning
* to the main data script.
*/
pm->ret = cpu_to_scr(dp_ret);
tmp = scr_to_cpu(cp->phys.data[dp_sg-1].addr);
tmp += scr_to_cpu(cp->phys.data[dp_sg-1].size) + dp_ofs;
pm->sg.addr = cpu_to_scr(tmp);
pm->sg.size = cpu_to_scr(-dp_ofs);
out_ok:
OUTL (nc_temp, dp_scr);
OUTL_DSP (SCRIPTA_BA (np, clrack));
return;
out_reject:
OUTL_DSP (SCRIPTB_BA (np, msg_bad));
}
/*
* chip calculation of the data residual.
*
* As I used to say, the requirement of data residual
* in SCSI is broken, useless and cannot be achieved
* without huge complexity.
* But most OSes and even the official CAM require it.
* When stupidity happens to be so widely spread inside
* a community, it gets hard to convince.
*
* Anyway, I don't care, since I am not going to use
* any software that considers this data residual as
* a relevant information. :)
*/
static int sym_compute_residual(hcb_p np, ccb_p cp)
{
int dp_sg, dp_sgmin, resid = 0;
int dp_ofs = 0;
/*
* Check for some data lost or just thrown away.
* We are not required to be quite accurate in this
* situation. Btw, if we are odd for output and the
* device claims some more data, it may well happen
* than our residual be zero. :-)
*/
if (cp->xerr_status & (XE_EXTRA_DATA|XE_SODL_UNRUN|XE_SWIDE_OVRUN)) {
if (cp->xerr_status & XE_EXTRA_DATA)
resid -= cp->extra_bytes;
if (cp->xerr_status & XE_SODL_UNRUN)
++resid;
if (cp->xerr_status & XE_SWIDE_OVRUN)
--resid;
}
/*
* If all data has been transferred,
* there is no residual.
*/
if (cp->phys.head.lastp == cp->phys.head.goalp)
return resid;
/*
* If no data transfer occurs, or if the data
* pointer is weird, return full residual.
*/
if (cp->startp == cp->phys.head.lastp ||
sym_evaluate_dp(np, cp, scr_to_cpu(cp->phys.head.lastp),
&dp_ofs) < 0) {
return cp->data_len;
}
/*
* If we were auto-sensing, then we are done.
*/
if (cp->host_flags & HF_SENSE) {
return -dp_ofs;
}
/*
* We are now full comfortable in the computation
* of the data residual (2's complement).
*/
dp_sgmin = SYM_CONF_MAX_SG - cp->segments;
resid = -cp->ext_ofs;
for (dp_sg = cp->ext_sg; dp_sg < SYM_CONF_MAX_SG; ++dp_sg) {
u_int tmp = scr_to_cpu(cp->phys.data[dp_sg].size);
resid += (tmp & 0xffffff);
}
/*
* Hopefully, the result is not too wrong.
*/
return resid;
}
/*
* Print out the content of a SCSI message.
*/
static int sym_show_msg (u_char * msg)
{
u_char i;
printf ("%x",*msg);
if (*msg==M_EXTENDED) {
for (i=1;i<8;i++) {
if (i-1>msg[1]) break;
printf ("-%x",msg[i]);
}
return (i+1);
} else if ((*msg & 0xf0) == 0x20) {
printf ("-%x",msg[1]);
return (2);
}
return (1);
}
static void sym_print_msg (ccb_p cp, char *label, u_char *msg)
{
PRINT_ADDR(cp);
if (label)
printf ("%s: ", label);
(void) sym_show_msg (msg);
printf (".\n");
}
/*
* Negotiation for WIDE and SYNCHRONOUS DATA TRANSFER.
*
* When we try to negotiate, we append the negotiation message
* to the identify and (maybe) simple tag message.
* The host status field is set to HS_NEGOTIATE to mark this
* situation.
*
* If the target doesn't answer this message immediately
* (as required by the standard), the SIR_NEGO_FAILED interrupt
* will be raised eventually.
* The handler removes the HS_NEGOTIATE status, and sets the
* negotiated value to the default (async / nowide).
*
* If we receive a matching answer immediately, we check it
* for validity, and set the values.
*
* If we receive a Reject message immediately, we assume the
* negotiation has failed, and fall back to standard values.
*
* If we receive a negotiation message while not in HS_NEGOTIATE
* state, it's a target initiated negotiation. We prepare a
* (hopefully) valid answer, set our parameters, and send back
* this answer to the target.
*
* If the target doesn't fetch the answer (no message out phase),
* we assume the negotiation has failed, and fall back to default
* settings (SIR_NEGO_PROTO interrupt).
*
* When we set the values, we adjust them in all ccbs belonging
* to this target, in the controller's register, and in the "phys"
* field of the controller's struct sym_hcb.
*/
/*
* chip handler for SYNCHRONOUS DATA TRANSFER REQUEST (SDTR) message.
*/
static void sym_sync_nego(hcb_p np, tcb_p tp, ccb_p cp)
{
u_char chg, ofs, per, fak, div;
int req = 1;
/*
* Synchronous request message received.
*/
if (DEBUG_FLAGS & DEBUG_NEGO) {
sym_print_msg(cp, "sync msgin", np->msgin);
}
/*
* request or answer ?
*/
if (INB (HS_PRT) == HS_NEGOTIATE) {
OUTB (HS_PRT, HS_BUSY);
if (cp->nego_status && cp->nego_status != NS_SYNC)
goto reject_it;
req = 0;
}
/*
* get requested values.
*/
chg = 0;
per = np->msgin[3];
ofs = np->msgin[4];
/*
* check values against our limits.
*/
if (ofs) {
if (ofs > np->maxoffs)
{chg = 1; ofs = np->maxoffs;}
if (req) {
if (ofs > tp->tinfo.user.offset)
{chg = 1; ofs = tp->tinfo.user.offset;}
}
}
if (ofs) {
if (per < np->minsync)
{chg = 1; per = np->minsync;}
if (req) {
if (per < tp->tinfo.user.period)
{chg = 1; per = tp->tinfo.user.period;}
}
}
div = fak = 0;
if (ofs && sym_getsync(np, 0, per, &div, &fak) < 0)
goto reject_it;
if (DEBUG_FLAGS & DEBUG_NEGO) {
PRINT_ADDR(cp);
printf ("sdtr: ofs=%d per=%d div=%d fak=%d chg=%d.\n",
ofs, per, div, fak, chg);
}
/*
* This was an answer message
*/
if (req == 0) {
if (chg) /* Answer wasn't acceptable. */
goto reject_it;
sym_setsync (np, cp, ofs, per, div, fak);
OUTL_DSP (SCRIPTA_BA (np, clrack));
return;
}
/*
* It was a request. Set value and
* prepare an answer message
*/
sym_setsync (np, cp, ofs, per, div, fak);
np->msgout[0] = M_EXTENDED;
np->msgout[1] = 3;
np->msgout[2] = M_X_SYNC_REQ;
np->msgout[3] = per;
np->msgout[4] = ofs;
cp->nego_status = NS_SYNC;
if (DEBUG_FLAGS & DEBUG_NEGO) {
sym_print_msg(cp, "sync msgout", np->msgout);
}
np->msgin [0] = M_NOOP;
OUTL_DSP (SCRIPTB_BA (np, sdtr_resp));
return;
reject_it:
sym_setsync (np, cp, 0, 0, 0, 0);
OUTL_DSP (SCRIPTB_BA (np, msg_bad));
}
/*
* chip handler for PARALLEL PROTOCOL REQUEST (PPR) message.
*/
static void sym_ppr_nego(hcb_p np, tcb_p tp, ccb_p cp)
{
u_char chg, ofs, per, fak, dt, div, wide;
int req = 1;
/*
* Synchronous request message received.
*/
if (DEBUG_FLAGS & DEBUG_NEGO) {
sym_print_msg(cp, "ppr msgin", np->msgin);
}
/*
* get requested values.
*/
chg = 0;
per = np->msgin[3];
ofs = np->msgin[5];
wide = np->msgin[6];
dt = np->msgin[7] & PPR_OPT_DT;
/*
* request or answer ?
*/
if (INB (HS_PRT) == HS_NEGOTIATE) {
OUTB (HS_PRT, HS_BUSY);
if (cp->nego_status && cp->nego_status != NS_PPR)
goto reject_it;
req = 0;
}
/*
* check values against our limits.
*/
if (wide > np->maxwide)
{chg = 1; wide = np->maxwide;}
if (!wide || !(np->features & FE_ULTRA3))
dt &= ~PPR_OPT_DT;
if (req) {
if (wide > tp->tinfo.user.width)
{chg = 1; wide = tp->tinfo.user.width;}
}
if (!(np->features & FE_U3EN)) /* Broken U3EN bit not supported */
dt &= ~PPR_OPT_DT;
if (dt != (np->msgin[7] & PPR_OPT_MASK)) chg = 1;
if (ofs) {
if (dt) {
if (ofs > np->maxoffs_dt)
{chg = 1; ofs = np->maxoffs_dt;}
}
else if (ofs > np->maxoffs)
{chg = 1; ofs = np->maxoffs;}
if (req) {
if (ofs > tp->tinfo.user.offset)
{chg = 1; ofs = tp->tinfo.user.offset;}
}
}
if (ofs) {
if (dt) {
if (per < np->minsync_dt)
{chg = 1; per = np->minsync_dt;}
}
else if (per < np->minsync)
{chg = 1; per = np->minsync;}
if (req) {
if (per < tp->tinfo.user.period)
{chg = 1; per = tp->tinfo.user.period;}
}
}
div = fak = 0;
if (ofs && sym_getsync(np, dt, per, &div, &fak) < 0)
goto reject_it;
if (DEBUG_FLAGS & DEBUG_NEGO) {
PRINT_ADDR(cp);
printf ("ppr: "
"dt=%x ofs=%d per=%d wide=%d div=%d fak=%d chg=%d.\n",
dt, ofs, per, wide, div, fak, chg);
}
/*
* It was an answer.
*/
if (req == 0) {
if (chg) /* Answer wasn't acceptable */
goto reject_it;
sym_setpprot (np, cp, dt, ofs, per, wide, div, fak);
OUTL_DSP (SCRIPTA_BA (np, clrack));
return;
}
/*
* It was a request. Set value and
* prepare an answer message
*/
sym_setpprot (np, cp, dt, ofs, per, wide, div, fak);
np->msgout[0] = M_EXTENDED;
np->msgout[1] = 6;
np->msgout[2] = M_X_PPR_REQ;
np->msgout[3] = per;
np->msgout[4] = 0;
np->msgout[5] = ofs;
np->msgout[6] = wide;
np->msgout[7] = dt;
cp->nego_status = NS_PPR;
if (DEBUG_FLAGS & DEBUG_NEGO) {
sym_print_msg(cp, "ppr msgout", np->msgout);
}
np->msgin [0] = M_NOOP;
OUTL_DSP (SCRIPTB_BA (np, ppr_resp));
return;
reject_it:
sym_setpprot (np, cp, 0, 0, 0, 0, 0, 0);
OUTL_DSP (SCRIPTB_BA (np, msg_bad));
/*
* If it was a device response that should result in
* ST, we may want to try a legacy negotiation later.
*/
if (!req && !dt) {
tp->tinfo.goal.options = 0;
tp->tinfo.goal.width = wide;
tp->tinfo.goal.period = per;
tp->tinfo.goal.offset = ofs;
}
}
/*
* chip handler for WIDE DATA TRANSFER REQUEST (WDTR) message.
*/
static void sym_wide_nego(hcb_p np, tcb_p tp, ccb_p cp)
{
u_char chg, wide;
int req = 1;
/*
* Wide request message received.
*/
if (DEBUG_FLAGS & DEBUG_NEGO) {
sym_print_msg(cp, "wide msgin", np->msgin);
}
/*
* Is it a request from the device?
*/
if (INB (HS_PRT) == HS_NEGOTIATE) {
OUTB (HS_PRT, HS_BUSY);
if (cp->nego_status && cp->nego_status != NS_WIDE)
goto reject_it;
req = 0;
}
/*
* get requested values.
*/
chg = 0;
wide = np->msgin[3];
/*
* check values against driver limits.
*/
if (wide > np->maxwide)
{chg = 1; wide = np->maxwide;}
if (req) {
if (wide > tp->tinfo.user.width)
{chg = 1; wide = tp->tinfo.user.width;}
}
if (DEBUG_FLAGS & DEBUG_NEGO) {
PRINT_ADDR(cp);
printf ("wdtr: wide=%d chg=%d.\n", wide, chg);
}
/*
* This was an answer message
*/
if (req == 0) {
if (chg) /* Answer wasn't acceptable. */
goto reject_it;
sym_setwide (np, cp, wide);
/*
* Negotiate for SYNC immediately after WIDE response.
* This allows to negotiate for both WIDE and SYNC on
* a single SCSI command (Suggested by Justin Gibbs).
*/
if (tp->tinfo.goal.offset) {
np->msgout[0] = M_EXTENDED;
np->msgout[1] = 3;
np->msgout[2] = M_X_SYNC_REQ;
np->msgout[3] = tp->tinfo.goal.period;
np->msgout[4] = tp->tinfo.goal.offset;
if (DEBUG_FLAGS & DEBUG_NEGO) {
sym_print_msg(cp, "sync msgout", np->msgout);
}
cp->nego_status = NS_SYNC;
OUTB (HS_PRT, HS_NEGOTIATE);
OUTL_DSP (SCRIPTB_BA (np, sdtr_resp));
return;
}
OUTL_DSP (SCRIPTA_BA (np, clrack));
return;
}
/*
* It was a request, set value and
* prepare an answer message
*/
sym_setwide (np, cp, wide);
np->msgout[0] = M_EXTENDED;
np->msgout[1] = 2;
np->msgout[2] = M_X_WIDE_REQ;
np->msgout[3] = wide;
np->msgin [0] = M_NOOP;
cp->nego_status = NS_WIDE;
if (DEBUG_FLAGS & DEBUG_NEGO) {
sym_print_msg(cp, "wide msgout", np->msgout);
}
OUTL_DSP (SCRIPTB_BA (np, wdtr_resp));
return;
reject_it:
OUTL_DSP (SCRIPTB_BA (np, msg_bad));
}
/*
* Reset SYNC or WIDE to default settings.
*
* Called when a negotiation does not succeed either
* on rejection or on protocol error.
*
* If it was a PPR that made problems, we may want to
* try a legacy negotiation later.
*/
static void sym_nego_default(hcb_p np, tcb_p tp, ccb_p cp)
{
/*
* any error in negotiation:
* fall back to default mode.
*/
switch (cp->nego_status) {
case NS_PPR:
#if 0
sym_setpprot (np, cp, 0, 0, 0, 0, 0, 0);
#else
tp->tinfo.goal.options = 0;
if (tp->tinfo.goal.period < np->minsync)
tp->tinfo.goal.period = np->minsync;
if (tp->tinfo.goal.offset > np->maxoffs)
tp->tinfo.goal.offset = np->maxoffs;
#endif
break;
case NS_SYNC:
sym_setsync (np, cp, 0, 0, 0, 0);
break;
case NS_WIDE:
sym_setwide (np, cp, 0);
break;
}
np->msgin [0] = M_NOOP;
np->msgout[0] = M_NOOP;
cp->nego_status = 0;
}
/*
* chip handler for MESSAGE REJECT received in response to
* a WIDE or SYNCHRONOUS negotiation.
*/
static void sym_nego_rejected(hcb_p np, tcb_p tp, ccb_p cp)
{
sym_nego_default(np, tp, cp);
OUTB (HS_PRT, HS_BUSY);
}
/*
* chip exception handler for programmed interrupts.
*/
static void sym_int_sir (hcb_p np)
{
u_char num = INB (nc_dsps);
u32 dsa = INL (nc_dsa);
ccb_p cp = sym_ccb_from_dsa(np, dsa);
u_char target = INB (nc_sdid) & 0x0f;
tcb_p tp = &np->target[target];
int tmp;
SYM_LOCK_ASSERT(MA_OWNED);
if (DEBUG_FLAGS & DEBUG_TINY) printf ("I#%d", num);
switch (num) {
/*
* Command has been completed with error condition
* or has been auto-sensed.
*/
case SIR_COMPLETE_ERROR:
sym_complete_error(np, cp);
return;
/*
* The C code is currently trying to recover from something.
* Typically, user want to abort some command.
*/
case SIR_SCRIPT_STOPPED:
case SIR_TARGET_SELECTED:
case SIR_ABORT_SENT:
sym_sir_task_recovery(np, num);
return;
/*
* The device didn't go to MSG OUT phase after having
* been selected with ATN. We donnot want to handle
* that.
*/
case SIR_SEL_ATN_NO_MSG_OUT:
printf ("%s:%d: No MSG OUT phase after selection with ATN.\n",
sym_name (np), target);
goto out_stuck;
/*
* The device didn't switch to MSG IN phase after
* having reseleted the initiator.
*/
case SIR_RESEL_NO_MSG_IN:
printf ("%s:%d: No MSG IN phase after reselection.\n",
sym_name (np), target);
goto out_stuck;
/*
* After reselection, the device sent a message that wasn't
* an IDENTIFY.
*/
case SIR_RESEL_NO_IDENTIFY:
printf ("%s:%d: No IDENTIFY after reselection.\n",
sym_name (np), target);
goto out_stuck;
/*
* The device reselected a LUN we donnot know about.
*/
case SIR_RESEL_BAD_LUN:
np->msgout[0] = M_RESET;
goto out;
/*
* The device reselected for an untagged nexus and we
* haven't any.
*/
case SIR_RESEL_BAD_I_T_L:
np->msgout[0] = M_ABORT;
goto out;
/*
* The device reselected for a tagged nexus that we donnot
* have.
*/
case SIR_RESEL_BAD_I_T_L_Q:
np->msgout[0] = M_ABORT_TAG;
goto out;
/*
* The SCRIPTS let us know that the device has grabbed
* our message and will abort the job.
*/
case SIR_RESEL_ABORTED:
np->lastmsg = np->msgout[0];
np->msgout[0] = M_NOOP;
printf ("%s:%d: message %x sent on bad reselection.\n",
sym_name (np), target, np->lastmsg);
goto out;
/*
* The SCRIPTS let us know that a message has been
* successfully sent to the device.
*/
case SIR_MSG_OUT_DONE:
np->lastmsg = np->msgout[0];
np->msgout[0] = M_NOOP;
/* Should we really care of that */
if (np->lastmsg == M_PARITY || np->lastmsg == M_ID_ERROR) {
if (cp) {
cp->xerr_status &= ~XE_PARITY_ERR;
if (!cp->xerr_status)
OUTOFFB (HF_PRT, HF_EXT_ERR);
}
}
goto out;
/*
* The device didn't send a GOOD SCSI status.
* We may have some work to do prior to allow
* the SCRIPTS processor to continue.
*/
case SIR_BAD_SCSI_STATUS:
if (!cp)
goto out;
sym_sir_bad_scsi_status(np, cp);
return;
/*
* We are asked by the SCRIPTS to prepare a
* REJECT message.
*/
case SIR_REJECT_TO_SEND:
sym_print_msg(cp, "M_REJECT to send for ", np->msgin);
np->msgout[0] = M_REJECT;
goto out;
/*
* We have been ODD at the end of a DATA IN
* transfer and the device didn't send a
* IGNORE WIDE RESIDUE message.
* It is a data overrun condition.
*/
case SIR_SWIDE_OVERRUN:
if (cp) {
OUTONB (HF_PRT, HF_EXT_ERR);
cp->xerr_status |= XE_SWIDE_OVRUN;
}
goto out;
/*
* We have been ODD at the end of a DATA OUT
* transfer.
* It is a data underrun condition.
*/
case SIR_SODL_UNDERRUN:
if (cp) {
OUTONB (HF_PRT, HF_EXT_ERR);
cp->xerr_status |= XE_SODL_UNRUN;
}
goto out;
/*
* The device wants us to transfer more data than
* expected or in the wrong direction.
* The number of extra bytes is in scratcha.
* It is a data overrun condition.
*/
case SIR_DATA_OVERRUN:
if (cp) {
OUTONB (HF_PRT, HF_EXT_ERR);
cp->xerr_status |= XE_EXTRA_DATA;
cp->extra_bytes += INL (nc_scratcha);
}
goto out;
/*
* The device switched to an illegal phase (4/5).
*/
case SIR_BAD_PHASE:
if (cp) {
OUTONB (HF_PRT, HF_EXT_ERR);
cp->xerr_status |= XE_BAD_PHASE;
}
goto out;
/*
* We received a message.
*/
case SIR_MSG_RECEIVED:
if (!cp)
goto out_stuck;
switch (np->msgin [0]) {
/*
* We received an extended message.
* We handle MODIFY DATA POINTER, SDTR, WDTR
* and reject all other extended messages.
*/
case M_EXTENDED:
switch (np->msgin [2]) {
case M_X_MODIFY_DP:
if (DEBUG_FLAGS & DEBUG_POINTER)
sym_print_msg(cp,"modify DP",np->msgin);
tmp = (np->msgin[3]<<24) + (np->msgin[4]<<16) +
(np->msgin[5]<<8) + (np->msgin[6]);
sym_modify_dp(np, cp, tmp);
return;
case M_X_SYNC_REQ:
sym_sync_nego(np, tp, cp);
return;
case M_X_PPR_REQ:
sym_ppr_nego(np, tp, cp);
return;
case M_X_WIDE_REQ:
sym_wide_nego(np, tp, cp);
return;
default:
goto out_reject;
}
break;
/*
* We received a 1/2 byte message not handled from SCRIPTS.
* We are only expecting MESSAGE REJECT and IGNORE WIDE
* RESIDUE messages that haven't been anticipated by
* SCRIPTS on SWIDE full condition. Unanticipated IGNORE
* WIDE RESIDUE messages are aliased as MODIFY DP (-1).
*/
case M_IGN_RESIDUE:
if (DEBUG_FLAGS & DEBUG_POINTER)
sym_print_msg(cp,"ign wide residue", np->msgin);
sym_modify_dp(np, cp, -1);
return;
case M_REJECT:
if (INB (HS_PRT) == HS_NEGOTIATE)
sym_nego_rejected(np, tp, cp);
else {
PRINT_ADDR(cp);
printf ("M_REJECT received (%x:%x).\n",
scr_to_cpu(np->lastmsg), np->msgout[0]);
}
goto out_clrack;
break;
default:
goto out_reject;
}
break;
/*
* We received an unknown message.
* Ignore all MSG IN phases and reject it.
*/
case SIR_MSG_WEIRD:
sym_print_msg(cp, "WEIRD message received", np->msgin);
OUTL_DSP (SCRIPTB_BA (np, msg_weird));
return;
/*
* Negotiation failed.
* Target does not send us the reply.
* Remove the HS_NEGOTIATE status.
*/
case SIR_NEGO_FAILED:
OUTB (HS_PRT, HS_BUSY);
/*
* Negotiation failed.
* Target does not want answer message.
*/
case SIR_NEGO_PROTO:
sym_nego_default(np, tp, cp);
goto out;
}
out:
OUTONB_STD ();
return;
out_reject:
OUTL_DSP (SCRIPTB_BA (np, msg_bad));
return;
out_clrack:
OUTL_DSP (SCRIPTA_BA (np, clrack));
return;
out_stuck:
return;
}
/*
* Acquire a control block
*/
static ccb_p sym_get_ccb (hcb_p np, u_char tn, u_char ln, u_char tag_order)
{
tcb_p tp = &np->target[tn];
lcb_p lp = sym_lp(tp, ln);
u_short tag = NO_TAG;
SYM_QUEHEAD *qp;
ccb_p cp = (ccb_p) NULL;
/*
* Look for a free CCB
*/
if (sym_que_empty(&np->free_ccbq))
goto out;
qp = sym_remque_head(&np->free_ccbq);
if (!qp)
goto out;
cp = sym_que_entry(qp, struct sym_ccb, link_ccbq);
/*
* If the LCB is not yet available and the LUN
* has been probed ok, try to allocate the LCB.
*/
if (!lp && sym_is_bit(tp->lun_map, ln)) {
lp = sym_alloc_lcb(np, tn, ln);
if (!lp)
goto out_free;
}
/*
* If the LCB is not available here, then the
* logical unit is not yet discovered. For those
* ones only accept 1 SCSI IO per logical unit,
* since we cannot allow disconnections.
*/
if (!lp) {
if (!sym_is_bit(tp->busy0_map, ln))
sym_set_bit(tp->busy0_map, ln);
else
goto out_free;
} else {
/*
* If we have been asked for a tagged command.
*/
if (tag_order) {
/*
* Debugging purpose.
*/
assert(lp->busy_itl == 0);
/*
* Allocate resources for tags if not yet.
*/
if (!lp->cb_tags) {
sym_alloc_lcb_tags(np, tn, ln);
if (!lp->cb_tags)
goto out_free;
}
/*
* Get a tag for this SCSI IO and set up
* the CCB bus address for reselection,
* and count it for this LUN.
* Toggle reselect path to tagged.
*/
if (lp->busy_itlq < SYM_CONF_MAX_TASK) {
tag = lp->cb_tags[lp->ia_tag];
if (++lp->ia_tag == SYM_CONF_MAX_TASK)
lp->ia_tag = 0;
lp->itlq_tbl[tag] = cpu_to_scr(cp->ccb_ba);
++lp->busy_itlq;
lp->head.resel_sa =
cpu_to_scr(SCRIPTA_BA (np, resel_tag));
}
else
goto out_free;
}
/*
* This command will not be tagged.
* If we already have either a tagged or untagged
* one, refuse to overlap this untagged one.
*/
else {
/*
* Debugging purpose.
*/
assert(lp->busy_itl == 0 && lp->busy_itlq == 0);
/*
* Count this nexus for this LUN.
* Set up the CCB bus address for reselection.
* Toggle reselect path to untagged.
*/
if (++lp->busy_itl == 1) {
lp->head.itl_task_sa = cpu_to_scr(cp->ccb_ba);
lp->head.resel_sa =
cpu_to_scr(SCRIPTA_BA (np, resel_no_tag));
}
else
goto out_free;
}
}
/*
* Put the CCB into the busy queue.
*/
sym_insque_tail(&cp->link_ccbq, &np->busy_ccbq);
/*
* Remember all informations needed to free this CCB.
*/
cp->to_abort = 0;
cp->tag = tag;
cp->target = tn;
cp->lun = ln;
if (DEBUG_FLAGS & DEBUG_TAGS) {
PRINT_LUN(np, tn, ln);
printf ("ccb @%p using tag %d.\n", cp, tag);
}
out:
return cp;
out_free:
sym_insque_head(&cp->link_ccbq, &np->free_ccbq);
return NULL;
}
/*
* Release one control block
*/
static void sym_free_ccb(hcb_p np, ccb_p cp)
{
tcb_p tp = &np->target[cp->target];
lcb_p lp = sym_lp(tp, cp->lun);
if (DEBUG_FLAGS & DEBUG_TAGS) {
PRINT_LUN(np, cp->target, cp->lun);
printf ("ccb @%p freeing tag %d.\n", cp, cp->tag);
}
/*
* If LCB available,
*/
if (lp) {
/*
* If tagged, release the tag, set the relect path
*/
if (cp->tag != NO_TAG) {
/*
* Free the tag value.
*/
lp->cb_tags[lp->if_tag] = cp->tag;
if (++lp->if_tag == SYM_CONF_MAX_TASK)
lp->if_tag = 0;
/*
* Make the reselect path invalid,
* and uncount this CCB.
*/
lp->itlq_tbl[cp->tag] = cpu_to_scr(np->bad_itlq_ba);
--lp->busy_itlq;
} else { /* Untagged */
/*
* Make the reselect path invalid,
* and uncount this CCB.
*/
lp->head.itl_task_sa = cpu_to_scr(np->bad_itl_ba);
--lp->busy_itl;
}
/*
* If no JOB active, make the LUN reselect path invalid.
*/
if (lp->busy_itlq == 0 && lp->busy_itl == 0)
lp->head.resel_sa =
cpu_to_scr(SCRIPTB_BA (np, resel_bad_lun));
}
/*
* Otherwise, we only accept 1 IO per LUN.
* Clear the bit that keeps track of this IO.
*/
else
sym_clr_bit(tp->busy0_map, cp->lun);
/*
* We donnot queue more than 1 ccb per target
* with negotiation at any time. If this ccb was
* used for negotiation, clear this info in the tcb.
*/
if (cp == tp->nego_cp)
tp->nego_cp = NULL;
#ifdef SYM_CONF_IARB_SUPPORT
/*
* If we just complete the last queued CCB,
* clear this info that is no longer relevant.
*/
if (cp == np->last_cp)
np->last_cp = NULL;
#endif
/*
* Unmap user data from DMA map if needed.
*/
if (cp->dmamapped) {
bus_dmamap_unload(np->data_dmat, cp->dmamap);
cp->dmamapped = 0;
}
/*
* Make this CCB available.
*/
cp->cam_ccb = NULL;
cp->host_status = HS_IDLE;
sym_remque(&cp->link_ccbq);
sym_insque_head(&cp->link_ccbq, &np->free_ccbq);
}
/*
* Allocate a CCB from memory and initialize its fixed part.
*/
static ccb_p sym_alloc_ccb(hcb_p np)
{
ccb_p cp = NULL;
int hcode;
SYM_LOCK_ASSERT(MA_NOTOWNED);
/*
* Prevent from allocating more CCBs than we can
* queue to the controller.
*/
if (np->actccbs >= SYM_CONF_MAX_START)
return NULL;
/*
* Allocate memory for this CCB.
*/
cp = sym_calloc_dma(sizeof(struct sym_ccb), "CCB");
if (!cp)
return NULL;
/*
* Allocate a bounce buffer for sense data.
*/
cp->sns_bbuf = sym_calloc_dma(SYM_SNS_BBUF_LEN, "SNS_BBUF");
if (!cp->sns_bbuf)
goto out_free;
/*
* Allocate a map for the DMA of user data.
*/
if (bus_dmamap_create(np->data_dmat, 0, &cp->dmamap))
goto out_free;
/*
* Count it.
*/
np->actccbs++;
/*
* Initialize the callout.
*/
callout_init(&cp->ch, 1);
/*
* Compute the bus address of this ccb.
*/
cp->ccb_ba = vtobus(cp);
/*
* Insert this ccb into the hashed list.
*/
hcode = CCB_HASH_CODE(cp->ccb_ba);
cp->link_ccbh = np->ccbh[hcode];
np->ccbh[hcode] = cp;
/*
* Initialize the start and restart actions.
*/
cp->phys.head.go.start = cpu_to_scr(SCRIPTA_BA (np, idle));
cp->phys.head.go.restart = cpu_to_scr(SCRIPTB_BA (np, bad_i_t_l));
/*
* Initilialyze some other fields.
*/
cp->phys.smsg_ext.addr = cpu_to_scr(HCB_BA(np, msgin[2]));
/*
* Chain into free ccb queue.
*/
sym_insque_head(&cp->link_ccbq, &np->free_ccbq);
return cp;
out_free:
if (cp->sns_bbuf)
sym_mfree_dma(cp->sns_bbuf, SYM_SNS_BBUF_LEN, "SNS_BBUF");
sym_mfree_dma(cp, sizeof(*cp), "CCB");
return NULL;
}
/*
* Look up a CCB from a DSA value.
*/
static ccb_p sym_ccb_from_dsa(hcb_p np, u32 dsa)
{
int hcode;
ccb_p cp;
hcode = CCB_HASH_CODE(dsa);
cp = np->ccbh[hcode];
while (cp) {
if (cp->ccb_ba == dsa)
break;
cp = cp->link_ccbh;
}
return cp;
}
/*
* Lun control block allocation and initialization.
*/
static lcb_p sym_alloc_lcb (hcb_p np, u_char tn, u_char ln)
{
tcb_p tp = &np->target[tn];
lcb_p lp = sym_lp(tp, ln);
/*
* Already done, just return.
*/
if (lp)
return lp;
/*
* Check against some race.
*/
assert(!sym_is_bit(tp->busy0_map, ln));
/*
* Allocate the LCB bus address array.
* Compute the bus address of this table.
*/
if (ln && !tp->luntbl) {
int i;
tp->luntbl = sym_calloc_dma(256, "LUNTBL");
if (!tp->luntbl)
goto fail;
for (i = 0 ; i < 64 ; i++)
tp->luntbl[i] = cpu_to_scr(vtobus(&np->badlun_sa));
tp->head.luntbl_sa = cpu_to_scr(vtobus(tp->luntbl));
}
/*
* Allocate the table of pointers for LUN(s) > 0, if needed.
*/
if (ln && !tp->lunmp) {
tp->lunmp = sym_calloc(SYM_CONF_MAX_LUN * sizeof(lcb_p),
"LUNMP");
if (!tp->lunmp)
goto fail;
}
/*
* Allocate the lcb.
* Make it available to the chip.
*/
lp = sym_calloc_dma(sizeof(struct sym_lcb), "LCB");
if (!lp)
goto fail;
if (ln) {
tp->lunmp[ln] = lp;
tp->luntbl[ln] = cpu_to_scr(vtobus(lp));
}
else {
tp->lun0p = lp;
tp->head.lun0_sa = cpu_to_scr(vtobus(lp));
}
/*
* Let the itl task point to error handling.
*/
lp->head.itl_task_sa = cpu_to_scr(np->bad_itl_ba);
/*
* Set the reselect pattern to our default. :)
*/
lp->head.resel_sa = cpu_to_scr(SCRIPTB_BA (np, resel_bad_lun));
/*
* Set user capabilities.
*/
lp->user_flags = tp->usrflags & (SYM_DISC_ENABLED | SYM_TAGS_ENABLED);
fail:
return lp;
}
/*
* Allocate LCB resources for tagged command queuing.
*/
static void sym_alloc_lcb_tags (hcb_p np, u_char tn, u_char ln)
{
tcb_p tp = &np->target[tn];
lcb_p lp = sym_lp(tp, ln);
int i;
/*
* If LCB not available, try to allocate it.
*/
if (!lp && !(lp = sym_alloc_lcb(np, tn, ln)))
return;
/*
* Allocate the task table and and the tag allocation
* circular buffer. We want both or none.
*/
lp->itlq_tbl = sym_calloc_dma(SYM_CONF_MAX_TASK*4, "ITLQ_TBL");
if (!lp->itlq_tbl)
return;
lp->cb_tags = sym_calloc(SYM_CONF_MAX_TASK, "CB_TAGS");
if (!lp->cb_tags) {
sym_mfree_dma(lp->itlq_tbl, SYM_CONF_MAX_TASK*4, "ITLQ_TBL");
lp->itlq_tbl = 0;
return;
}
/*
* Initialize the task table with invalid entries.
*/
for (i = 0 ; i < SYM_CONF_MAX_TASK ; i++)
lp->itlq_tbl[i] = cpu_to_scr(np->notask_ba);
/*
* Fill up the tag buffer with tag numbers.
*/
for (i = 0 ; i < SYM_CONF_MAX_TASK ; i++)
lp->cb_tags[i] = i;
/*
* Make the task table available to SCRIPTS,
* And accept tagged commands now.
*/
lp->head.itlq_tbl_sa = cpu_to_scr(vtobus(lp->itlq_tbl));
}
/*
* Test the pci bus snoop logic :-(
*
* Has to be called with interrupts disabled.
*/
#ifndef SYM_CONF_IOMAPPED
static int sym_regtest (hcb_p np)
{
register volatile u32 data;
/*
* chip registers may NOT be cached.
* write 0xffffffff to a read only register area,
* and try to read it back.
*/
data = 0xffffffff;
OUTL_OFF(offsetof(struct sym_reg, nc_dstat), data);
data = INL_OFF(offsetof(struct sym_reg, nc_dstat));
#if 1
if (data == 0xffffffff) {
#else
if ((data & 0xe2f0fffd) != 0x02000080) {
#endif
printf ("CACHE TEST FAILED: reg dstat-sstat2 readback %x.\n",
(unsigned) data);
return (0x10);
}
return (0);
}
#endif
static int sym_snooptest (hcb_p np)
{
u32 sym_rd, sym_wr, sym_bk, host_rd, host_wr, pc, dstat;
int i, err=0;
#ifndef SYM_CONF_IOMAPPED
err |= sym_regtest (np);
if (err) return (err);
#endif
restart_test:
/*
* Enable Master Parity Checking as we intend
* to enable it for normal operations.
*/
OUTB (nc_ctest4, (np->rv_ctest4 & MPEE));
/*
* init
*/
pc = SCRIPTB0_BA (np, snooptest);
host_wr = 1;
sym_wr = 2;
/*
* Set memory and register.
*/
np->cache = cpu_to_scr(host_wr);
OUTL (nc_temp, sym_wr);
/*
* Start script (exchange values)
*/
OUTL (nc_dsa, np->hcb_ba);
OUTL_DSP (pc);
/*
* Wait 'til done (with timeout)
*/
for (i=0; i<SYM_SNOOP_TIMEOUT; i++)
if (INB(nc_istat) & (INTF|SIP|DIP))
break;
if (i>=SYM_SNOOP_TIMEOUT) {
printf ("CACHE TEST FAILED: timeout.\n");
return (0x20);
}
/*
* Check for fatal DMA errors.
*/
dstat = INB (nc_dstat);
#if 1 /* Band aiding for broken hardwares that fail PCI parity */
if ((dstat & MDPE) && (np->rv_ctest4 & MPEE)) {
printf ("%s: PCI DATA PARITY ERROR DETECTED - "
"DISABLING MASTER DATA PARITY CHECKING.\n",
sym_name(np));
np->rv_ctest4 &= ~MPEE;
goto restart_test;
}
#endif
if (dstat & (MDPE|BF|IID)) {
printf ("CACHE TEST FAILED: DMA error (dstat=0x%02x).", dstat);
return (0x80);
}
/*
* Save termination position.
*/
pc = INL (nc_dsp);
/*
* Read memory and register.
*/
host_rd = scr_to_cpu(np->cache);
sym_rd = INL (nc_scratcha);
sym_bk = INL (nc_temp);
/*
* Check termination position.
*/
if (pc != SCRIPTB0_BA (np, snoopend)+8) {
printf ("CACHE TEST FAILED: script execution failed.\n");
printf ("start=%08lx, pc=%08lx, end=%08lx\n",
(u_long) SCRIPTB0_BA (np, snooptest), (u_long) pc,
(u_long) SCRIPTB0_BA (np, snoopend) +8);
return (0x40);
}
/*
* Show results.
*/
if (host_wr != sym_rd) {
printf ("CACHE TEST FAILED: host wrote %d, chip read %d.\n",
(int) host_wr, (int) sym_rd);
err |= 1;
}
if (host_rd != sym_wr) {
printf ("CACHE TEST FAILED: chip wrote %d, host read %d.\n",
(int) sym_wr, (int) host_rd);
err |= 2;
}
if (sym_bk != sym_wr) {
printf ("CACHE TEST FAILED: chip wrote %d, read back %d.\n",
(int) sym_wr, (int) sym_bk);
err |= 4;
}
return (err);
}
/*
* Determine the chip's clock frequency.
*
* This is essential for the negotiation of the synchronous
* transfer rate.
*
* Note: we have to return the correct value.
* THERE IS NO SAFE DEFAULT VALUE.
*
* Most NCR/SYMBIOS boards are delivered with a 40 Mhz clock.
* 53C860 and 53C875 rev. 1 support fast20 transfers but
* do not have a clock doubler and so are provided with a
* 80 MHz clock. All other fast20 boards incorporate a doubler
* and so should be delivered with a 40 MHz clock.
* The recent fast40 chips (895/896/895A/1010) use a 40 Mhz base
* clock and provide a clock quadrupler (160 Mhz).
*/
/*
* Select SCSI clock frequency
*/
static void sym_selectclock(hcb_p np, u_char scntl3)
{
/*
* If multiplier not present or not selected, leave here.
*/
if (np->multiplier <= 1) {
OUTB(nc_scntl3, scntl3);
return;
}
if (sym_verbose >= 2)
printf ("%s: enabling clock multiplier\n", sym_name(np));
OUTB(nc_stest1, DBLEN); /* Enable clock multiplier */
/*
* Wait for the LCKFRQ bit to be set if supported by the chip.
* Otherwise wait 20 micro-seconds.
*/
if (np->features & FE_LCKFRQ) {
int i = 20;
while (!(INB(nc_stest4) & LCKFRQ) && --i > 0)
UDELAY (20);
if (!i)
printf("%s: the chip cannot lock the frequency\n",
sym_name(np));
} else
UDELAY (20);
OUTB(nc_stest3, HSC); /* Halt the scsi clock */
OUTB(nc_scntl3, scntl3);
OUTB(nc_stest1, (DBLEN|DBLSEL));/* Select clock multiplier */
OUTB(nc_stest3, 0x00); /* Restart scsi clock */
}
/*
* calculate SCSI clock frequency (in KHz)
*/
static unsigned getfreq (hcb_p np, int gen)
{
unsigned int ms = 0;
unsigned int f;
/*
* Measure GEN timer delay in order
* to calculate SCSI clock frequency
*
* This code will never execute too
* many loop iterations (if DELAY is
* reasonably correct). It could get
* too low a delay (too high a freq.)
* if the CPU is slow executing the
* loop for some reason (an NMI, for
* example). For this reason we will
* if multiple measurements are to be
* performed trust the higher delay
* (lower frequency returned).
*/
OUTW (nc_sien , 0); /* mask all scsi interrupts */
(void) INW (nc_sist); /* clear pending scsi interrupt */
OUTB (nc_dien , 0); /* mask all dma interrupts */
(void) INW (nc_sist); /* another one, just to be sure :) */
OUTB (nc_scntl3, 4); /* set pre-scaler to divide by 3 */
OUTB (nc_stime1, 0); /* disable general purpose timer */
OUTB (nc_stime1, gen); /* set to nominal delay of 1<<gen * 125us */
while (!(INW(nc_sist) & GEN) && ms++ < 100000)
UDELAY (1000); /* count ms */
OUTB (nc_stime1, 0); /* disable general purpose timer */
/*
* set prescaler to divide by whatever 0 means
* 0 ought to choose divide by 2, but appears
* to set divide by 3.5 mode in my 53c810 ...
*/
OUTB (nc_scntl3, 0);
/*
* adjust for prescaler, and convert into KHz
*/
f = ms ? ((1 << gen) * 4340) / ms : 0;
if (sym_verbose >= 2)
printf ("%s: Delay (GEN=%d): %u msec, %u KHz\n",
sym_name(np), gen, ms, f);
return f;
}
static unsigned sym_getfreq (hcb_p np)
{
u_int f1, f2;
int gen = 11;
(void) getfreq (np, gen); /* throw away first result */
f1 = getfreq (np, gen);
f2 = getfreq (np, gen);
if (f1 > f2) f1 = f2; /* trust lower result */
return f1;
}
/*
* Get/probe chip SCSI clock frequency
*/
static void sym_getclock (hcb_p np, int mult)
{
unsigned char scntl3 = np->sv_scntl3;
unsigned char stest1 = np->sv_stest1;
unsigned f1;
/*
* For the C10 core, assume 40 MHz.
*/
if (np->features & FE_C10) {
np->multiplier = mult;
np->clock_khz = 40000 * mult;
return;
}
np->multiplier = 1;
f1 = 40000;
/*
* True with 875/895/896/895A with clock multiplier selected
*/
if (mult > 1 && (stest1 & (DBLEN+DBLSEL)) == DBLEN+DBLSEL) {
if (sym_verbose >= 2)
printf ("%s: clock multiplier found\n", sym_name(np));
np->multiplier = mult;
}
/*
* If multiplier not found or scntl3 not 7,5,3,
* reset chip and get frequency from general purpose timer.
* Otherwise trust scntl3 BIOS setting.
*/
if (np->multiplier != mult || (scntl3 & 7) < 3 || !(scntl3 & 1)) {
OUTB (nc_stest1, 0); /* make sure doubler is OFF */
f1 = sym_getfreq (np);
if (sym_verbose)
printf ("%s: chip clock is %uKHz\n", sym_name(np), f1);
if (f1 < 45000) f1 = 40000;
else if (f1 < 55000) f1 = 50000;
else f1 = 80000;
if (f1 < 80000 && mult > 1) {
if (sym_verbose >= 2)
printf ("%s: clock multiplier assumed\n",
sym_name(np));
np->multiplier = mult;
}
} else {
if ((scntl3 & 7) == 3) f1 = 40000;
else if ((scntl3 & 7) == 5) f1 = 80000;
else f1 = 160000;
f1 /= np->multiplier;
}
/*
* Compute controller synchronous parameters.
*/
f1 *= np->multiplier;
np->clock_khz = f1;
}
/*
* Get/probe PCI clock frequency
*/
static int sym_getpciclock (hcb_p np)
{
int f = 0;
/*
* For the C1010-33, this doesn't work.
* For the C1010-66, this will be tested when I'll have
* such a beast to play with.
*/
if (!(np->features & FE_C10)) {
OUTB (nc_stest1, SCLK); /* Use the PCI clock as SCSI clock */
f = (int) sym_getfreq (np);
OUTB (nc_stest1, 0);
}
np->pciclk_khz = f;
return f;
}
/*============= DRIVER ACTION/COMPLETION ====================*/
/*
* Print something that tells about extended errors.
*/
static void sym_print_xerr(ccb_p cp, int x_status)
{
if (x_status & XE_PARITY_ERR) {
PRINT_ADDR(cp);
printf ("unrecovered SCSI parity error.\n");
}
if (x_status & XE_EXTRA_DATA) {
PRINT_ADDR(cp);
printf ("extraneous data discarded.\n");
}
if (x_status & XE_BAD_PHASE) {
PRINT_ADDR(cp);
printf ("illegal scsi phase (4/5).\n");
}
if (x_status & XE_SODL_UNRUN) {
PRINT_ADDR(cp);
printf ("ODD transfer in DATA OUT phase.\n");
}
if (x_status & XE_SWIDE_OVRUN) {
PRINT_ADDR(cp);
printf ("ODD transfer in DATA IN phase.\n");
}
}
/*
* Choose the more appropriate CAM status if
* the IO encountered an extended error.
*/
static int sym_xerr_cam_status(int cam_status, int x_status)
{
if (x_status) {
if (x_status & XE_PARITY_ERR)
cam_status = CAM_UNCOR_PARITY;
else if (x_status &(XE_EXTRA_DATA|XE_SODL_UNRUN|XE_SWIDE_OVRUN))
cam_status = CAM_DATA_RUN_ERR;
else if (x_status & XE_BAD_PHASE)
cam_status = CAM_REQ_CMP_ERR;
else
cam_status = CAM_REQ_CMP_ERR;
}
return cam_status;
}
/*
* Complete execution of a SCSI command with extented
* error, SCSI status error, or having been auto-sensed.
*
* The SCRIPTS processor is not running there, so we
* can safely access IO registers and remove JOBs from
* the START queue.
* SCRATCHA is assumed to have been loaded with STARTPOS
* before the SCRIPTS called the C code.
*/
static void sym_complete_error (hcb_p np, ccb_p cp)
{
struct ccb_scsiio *csio;
u_int cam_status;
int i, sense_returned;
SYM_LOCK_ASSERT(MA_OWNED);
/*
* Paranoid check. :)
*/
if (!cp || !cp->cam_ccb)
return;
if (DEBUG_FLAGS & (DEBUG_TINY|DEBUG_RESULT)) {
printf ("CCB=%lx STAT=%x/%x/%x DEV=%d/%d\n", (unsigned long)cp,
cp->host_status, cp->ssss_status, cp->host_flags,
cp->target, cp->lun);
MDELAY(100);
}
/*
* Get CAM command pointer.
*/
csio = &cp->cam_ccb->csio;
/*
* Check for extended errors.
*/
if (cp->xerr_status) {
if (sym_verbose)
sym_print_xerr(cp, cp->xerr_status);
if (cp->host_status == HS_COMPLETE)
cp->host_status = HS_COMP_ERR;
}
/*
* Calculate the residual.
*/
csio->sense_resid = 0;
csio->resid = sym_compute_residual(np, cp);
if (!SYM_CONF_RESIDUAL_SUPPORT) {/* If user does not want residuals */
csio->resid = 0; /* throw them away. :) */
cp->sv_resid = 0;
}
if (cp->host_flags & HF_SENSE) { /* Auto sense */
csio->scsi_status = cp->sv_scsi_status; /* Restore status */
csio->sense_resid = csio->resid; /* Swap residuals */
csio->resid = cp->sv_resid;
cp->sv_resid = 0;
if (sym_verbose && cp->sv_xerr_status)
sym_print_xerr(cp, cp->sv_xerr_status);
if (cp->host_status == HS_COMPLETE &&
cp->ssss_status == S_GOOD &&
cp->xerr_status == 0) {
cam_status = sym_xerr_cam_status(CAM_SCSI_STATUS_ERROR,
cp->sv_xerr_status);
cam_status |= CAM_AUTOSNS_VALID;
/*
* Bounce back the sense data to user and
* fix the residual.
*/
bzero(&csio->sense_data, sizeof(csio->sense_data));
sense_returned = SYM_SNS_BBUF_LEN - csio->sense_resid;
if (sense_returned < csio->sense_len)
csio->sense_resid = csio->sense_len -
sense_returned;
else
csio->sense_resid = 0;
bcopy(cp->sns_bbuf, &csio->sense_data,
MIN(csio->sense_len, sense_returned));
#if 0
/*
* If the device reports a UNIT ATTENTION condition
* due to a RESET condition, we should consider all
* disconnect CCBs for this unit as aborted.
*/
if (1) {
u_char *p;
p = (u_char *) csio->sense_data;
if (p[0]==0x70 && p[2]==0x6 && p[12]==0x29)
sym_clear_tasks(np, CAM_REQ_ABORTED,
cp->target,cp->lun, -1);
}
#endif
}
else
cam_status = CAM_AUTOSENSE_FAIL;
}
else if (cp->host_status == HS_COMPLETE) { /* Bad SCSI status */
csio->scsi_status = cp->ssss_status;
cam_status = CAM_SCSI_STATUS_ERROR;
}
else if (cp->host_status == HS_SEL_TIMEOUT) /* Selection timeout */
cam_status = CAM_SEL_TIMEOUT;
else if (cp->host_status == HS_UNEXPECTED) /* Unexpected BUS FREE*/
cam_status = CAM_UNEXP_BUSFREE;
else { /* Extended error */
if (sym_verbose) {
PRINT_ADDR(cp);
printf ("COMMAND FAILED (%x %x %x).\n",
cp->host_status, cp->ssss_status,
cp->xerr_status);
}
csio->scsi_status = cp->ssss_status;
/*
* Set the most appropriate value for CAM status.
*/
cam_status = sym_xerr_cam_status(CAM_REQ_CMP_ERR,
cp->xerr_status);
}
/*
* Dequeue all queued CCBs for that device
* not yet started by SCRIPTS.
*/
i = (INL (nc_scratcha) - np->squeue_ba) / 4;
(void) sym_dequeue_from_squeue(np, i, cp->target, cp->lun, -1);
/*
* Restart the SCRIPTS processor.
*/
OUTL_DSP (SCRIPTA_BA (np, start));
/*
* Synchronize DMA map if needed.
*/
if (cp->dmamapped) {
bus_dmamap_sync(np->data_dmat, cp->dmamap,
(cp->dmamapped == SYM_DMA_READ ?
BUS_DMASYNC_POSTREAD : BUS_DMASYNC_POSTWRITE));
}
/*
* Add this one to the COMP queue.
* Complete all those commands with either error
* or requeue condition.
*/
sym_set_cam_status((union ccb *) csio, cam_status);
sym_remque(&cp->link_ccbq);
sym_insque_head(&cp->link_ccbq, &np->comp_ccbq);
sym_flush_comp_queue(np, 0);
}
/*
* Complete execution of a successful SCSI command.
*
* Only successful commands go to the DONE queue,
* since we need to have the SCRIPTS processor
* stopped on any error condition.
* The SCRIPTS processor is running while we are
* completing successful commands.
*/
static void sym_complete_ok (hcb_p np, ccb_p cp)
{
struct ccb_scsiio *csio;
tcb_p tp;
lcb_p lp;
SYM_LOCK_ASSERT(MA_OWNED);
/*
* Paranoid check. :)
*/
if (!cp || !cp->cam_ccb)
return;
assert (cp->host_status == HS_COMPLETE);
/*
* Get command, target and lun pointers.
*/
csio = &cp->cam_ccb->csio;
tp = &np->target[cp->target];
lp = sym_lp(tp, cp->lun);
/*
* Assume device discovered on first success.
*/
if (!lp)
sym_set_bit(tp->lun_map, cp->lun);
/*
* If all data have been transferred, given than no
* extended error did occur, there is no residual.
*/
csio->resid = 0;
if (cp->phys.head.lastp != cp->phys.head.goalp)
csio->resid = sym_compute_residual(np, cp);
/*
* Wrong transfer residuals may be worse than just always
* returning zero. User can disable this feature from
* sym_conf.h. Residual support is enabled by default.
*/
if (!SYM_CONF_RESIDUAL_SUPPORT)
csio->resid = 0;
/*
* Synchronize DMA map if needed.
*/
if (cp->dmamapped) {
bus_dmamap_sync(np->data_dmat, cp->dmamap,
(cp->dmamapped == SYM_DMA_READ ?
BUS_DMASYNC_POSTREAD : BUS_DMASYNC_POSTWRITE));
}
/*
* Set status and complete the command.
*/
csio->scsi_status = cp->ssss_status;
sym_set_cam_status((union ccb *) csio, CAM_REQ_CMP);
sym_xpt_done(np, (union ccb *) csio, cp);
sym_free_ccb(np, cp);
}
/*
* Our callout handler
*/
static void sym_callout(void *arg)
{
union ccb *ccb = (union ccb *) arg;
hcb_p np = ccb->ccb_h.sym_hcb_ptr;
/*
* Check that the CAM CCB is still queued.
*/
if (!np)
return;
SYM_LOCK();
switch(ccb->ccb_h.func_code) {
case XPT_SCSI_IO:
(void) sym_abort_scsiio(np, ccb, 1);
break;
default:
break;
}
SYM_UNLOCK();
}
/*
* Abort an SCSI IO.
*/
static int sym_abort_scsiio(hcb_p np, union ccb *ccb, int timed_out)
{
ccb_p cp;
SYM_QUEHEAD *qp;
SYM_LOCK_ASSERT(MA_OWNED);
/*
* Look up our CCB control block.
*/
cp = NULL;
FOR_EACH_QUEUED_ELEMENT(&np->busy_ccbq, qp) {
ccb_p cp2 = sym_que_entry(qp, struct sym_ccb, link_ccbq);
if (cp2->cam_ccb == ccb) {
cp = cp2;
break;
}
}
if (!cp || cp->host_status == HS_WAIT)
return -1;
/*
* If a previous abort didn't succeed in time,
* perform a BUS reset.
*/
if (cp->to_abort) {
sym_reset_scsi_bus(np, 1);
return 0;
}
/*
* Mark the CCB for abort and allow time for.
*/
cp->to_abort = timed_out ? 2 : 1;
callout_reset(&cp->ch, 10 * hz, sym_callout, (caddr_t) ccb);
/*
* Tell the SCRIPTS processor to stop and synchronize with us.
*/
np->istat_sem = SEM;
OUTB (nc_istat, SIGP|SEM);
return 0;
}
/*
* Reset a SCSI device (all LUNs of a target).
*/
static void sym_reset_dev(hcb_p np, union ccb *ccb)
{
tcb_p tp;
struct ccb_hdr *ccb_h = &ccb->ccb_h;
SYM_LOCK_ASSERT(MA_OWNED);
if (ccb_h->target_id == np->myaddr ||
ccb_h->target_id >= SYM_CONF_MAX_TARGET ||
ccb_h->target_lun >= SYM_CONF_MAX_LUN) {
sym_xpt_done2(np, ccb, CAM_DEV_NOT_THERE);
return;
}
tp = &np->target[ccb_h->target_id];
tp->to_reset = 1;
sym_xpt_done2(np, ccb, CAM_REQ_CMP);
np->istat_sem = SEM;
OUTB (nc_istat, SIGP|SEM);
}
/*
* SIM action entry point.
*/
static void sym_action(struct cam_sim *sim, union ccb *ccb)
{
hcb_p np;
tcb_p tp;
lcb_p lp;
ccb_p cp;
int tmp;
u_char idmsg, *msgptr;
u_int msglen;
struct ccb_scsiio *csio;
struct ccb_hdr *ccb_h;
CAM_DEBUG(ccb->ccb_h.path, CAM_DEBUG_TRACE, ("sym_action\n"));
/*
* Retrieve our controller data structure.
*/
np = (hcb_p) cam_sim_softc(sim);
SYM_LOCK_ASSERT(MA_OWNED);
/*
* The common case is SCSI IO.
* We deal with other ones elsewhere.
*/
if (ccb->ccb_h.func_code != XPT_SCSI_IO) {
sym_action2(sim, ccb);
return;
}
csio = &ccb->csio;
ccb_h = &csio->ccb_h;
/*
* Work around races.
*/
if ((ccb_h->status & CAM_STATUS_MASK) != CAM_REQ_INPROG) {
xpt_done(ccb);
return;
}
/*
* Minimal checkings, so that we will not
* go outside our tables.
*/
if (ccb_h->target_id == np->myaddr ||
ccb_h->target_id >= SYM_CONF_MAX_TARGET ||
ccb_h->target_lun >= SYM_CONF_MAX_LUN) {
sym_xpt_done2(np, ccb, CAM_DEV_NOT_THERE);
return;
}
/*
* Retrieve the target and lun descriptors.
*/
tp = &np->target[ccb_h->target_id];
lp = sym_lp(tp, ccb_h->target_lun);
/*
* Complete the 1st INQUIRY command with error
* condition if the device is flagged NOSCAN
* at BOOT in the NVRAM. This may speed up
* the boot and maintain coherency with BIOS
* device numbering. Clearing the flag allows
* user to rescan skipped devices later.
* We also return error for devices not flagged
* for SCAN LUNS in the NVRAM since some mono-lun
* devices behave badly when asked for some non
* zero LUN. Btw, this is an absolute hack.:-)
*/
if (!(ccb_h->flags & CAM_CDB_PHYS) &&
(0x12 == ((ccb_h->flags & CAM_CDB_POINTER) ?
csio->cdb_io.cdb_ptr[0] : csio->cdb_io.cdb_bytes[0]))) {
if ((tp->usrflags & SYM_SCAN_BOOT_DISABLED) ||
((tp->usrflags & SYM_SCAN_LUNS_DISABLED) &&
ccb_h->target_lun != 0)) {
tp->usrflags &= ~SYM_SCAN_BOOT_DISABLED;
sym_xpt_done2(np, ccb, CAM_DEV_NOT_THERE);
return;
}
}
/*
* Get a control block for this IO.
*/
tmp = ((ccb_h->flags & CAM_TAG_ACTION_VALID) != 0);
cp = sym_get_ccb(np, ccb_h->target_id, ccb_h->target_lun, tmp);
if (!cp) {
sym_xpt_done2(np, ccb, CAM_RESRC_UNAVAIL);
return;
}
/*
* Keep track of the IO in our CCB.
*/
cp->cam_ccb = ccb;
/*
* Build the IDENTIFY message.
*/
idmsg = M_IDENTIFY | cp->lun;
if (cp->tag != NO_TAG || (lp && (lp->current_flags & SYM_DISC_ENABLED)))
idmsg |= 0x40;
msgptr = cp->scsi_smsg;
msglen = 0;
msgptr[msglen++] = idmsg;
/*
* Build the tag message if present.
*/
if (cp->tag != NO_TAG) {
u_char order = csio->tag_action;
switch(order) {
case M_ORDERED_TAG:
break;
case M_HEAD_TAG:
break;
default:
order = M_SIMPLE_TAG;
}
msgptr[msglen++] = order;
/*
* For less than 128 tags, actual tags are numbered
* 1,3,5,..2*MAXTAGS+1,since we may have to deal
* with devices that have problems with #TAG 0 or too
* great #TAG numbers. For more tags (up to 256),
* we use directly our tag number.
*/
#if SYM_CONF_MAX_TASK > (512/4)
msgptr[msglen++] = cp->tag;
#else
msgptr[msglen++] = (cp->tag << 1) + 1;
#endif
}
/*
* Build a negotiation message if needed.
* (nego_status is filled by sym_prepare_nego())
*/
cp->nego_status = 0;
if (tp->tinfo.current.width != tp->tinfo.goal.width ||
tp->tinfo.current.period != tp->tinfo.goal.period ||
tp->tinfo.current.offset != tp->tinfo.goal.offset ||
tp->tinfo.current.options != tp->tinfo.goal.options) {
if (!tp->nego_cp && lp)
msglen += sym_prepare_nego(np, cp, 0, msgptr + msglen);
}
/*
* Fill in our ccb
*/
/*
* Startqueue
*/
cp->phys.head.go.start = cpu_to_scr(SCRIPTA_BA (np, select));
cp->phys.head.go.restart = cpu_to_scr(SCRIPTA_BA (np, resel_dsa));
/*
* select
*/
cp->phys.select.sel_id = cp->target;
cp->phys.select.sel_scntl3 = tp->head.wval;
cp->phys.select.sel_sxfer = tp->head.sval;
cp->phys.select.sel_scntl4 = tp->head.uval;
/*
* message
*/
cp->phys.smsg.addr = cpu_to_scr(CCB_BA (cp, scsi_smsg));
cp->phys.smsg.size = cpu_to_scr(msglen);
/*
* command
*/
if (sym_setup_cdb(np, csio, cp) < 0) {
sym_xpt_done(np, ccb, cp);
sym_free_ccb(np, cp);
return;
}
/*
* status
*/
#if 0 /* Provision */
cp->actualquirks = tp->quirks;
#endif
cp->actualquirks = SYM_QUIRK_AUTOSAVE;
cp->host_status = cp->nego_status ? HS_NEGOTIATE : HS_BUSY;
cp->ssss_status = S_ILLEGAL;
cp->xerr_status = 0;
cp->host_flags = 0;
cp->extra_bytes = 0;
/*
* extreme data pointer.
* shall be positive, so -1 is lower than lowest.:)
*/
cp->ext_sg = -1;
cp->ext_ofs = 0;
/*
* Build the data descriptor block
* and start the IO.
*/
sym_setup_data_and_start(np, csio, cp);
}
/*
* Setup buffers and pointers that address the CDB.
* I bet, physical CDBs will never be used on the planet,
* since they can be bounced without significant overhead.
*/
static int sym_setup_cdb(hcb_p np, struct ccb_scsiio *csio, ccb_p cp)
{
struct ccb_hdr *ccb_h;
u32 cmd_ba;
int cmd_len;
SYM_LOCK_ASSERT(MA_OWNED);
ccb_h = &csio->ccb_h;
/*
* CDB is 16 bytes max.
*/
if (csio->cdb_len > sizeof(cp->cdb_buf)) {
sym_set_cam_status(cp->cam_ccb, CAM_REQ_INVALID);
return -1;
}
cmd_len = csio->cdb_len;
if (ccb_h->flags & CAM_CDB_POINTER) {
/* CDB is a pointer */
if (!(ccb_h->flags & CAM_CDB_PHYS)) {
/* CDB pointer is virtual */
bcopy(csio->cdb_io.cdb_ptr, cp->cdb_buf, cmd_len);
cmd_ba = CCB_BA (cp, cdb_buf[0]);
} else {
/* CDB pointer is physical */
#if 0
cmd_ba = ((u32)csio->cdb_io.cdb_ptr) & 0xffffffff;
#else
sym_set_cam_status(cp->cam_ccb, CAM_REQ_INVALID);
return -1;
#endif
}
} else {
/* CDB is in the CAM ccb (buffer) */
bcopy(csio->cdb_io.cdb_bytes, cp->cdb_buf, cmd_len);
cmd_ba = CCB_BA (cp, cdb_buf[0]);
}
cp->phys.cmd.addr = cpu_to_scr(cmd_ba);
cp->phys.cmd.size = cpu_to_scr(cmd_len);
return 0;
}
/*
* Set up data pointers used by SCRIPTS.
*/
static void __inline
sym_setup_data_pointers(hcb_p np, ccb_p cp, int dir)
{
u32 lastp, goalp;
SYM_LOCK_ASSERT(MA_OWNED);
/*
* No segments means no data.
*/
if (!cp->segments)
dir = CAM_DIR_NONE;
/*
* Set the data pointer.
*/
switch(dir) {
case CAM_DIR_OUT:
goalp = SCRIPTA_BA (np, data_out2) + 8;
lastp = goalp - 8 - (cp->segments * (2*4));
break;
case CAM_DIR_IN:
cp->host_flags |= HF_DATA_IN;
goalp = SCRIPTA_BA (np, data_in2) + 8;
lastp = goalp - 8 - (cp->segments * (2*4));
break;
case CAM_DIR_NONE:
default:
lastp = goalp = SCRIPTB_BA (np, no_data);
break;
}
cp->phys.head.lastp = cpu_to_scr(lastp);
cp->phys.head.goalp = cpu_to_scr(goalp);
cp->phys.head.savep = cpu_to_scr(lastp);
cp->startp = cp->phys.head.savep;
}
/*
* Call back routine for the DMA map service.
* If bounce buffers are used (why ?), we may sleep and then
* be called there in another context.
*/
static void
sym_execute_ccb(void *arg, bus_dma_segment_t *psegs, int nsegs, int error)
{
ccb_p cp;
hcb_p np;
union ccb *ccb;
cp = (ccb_p) arg;
ccb = cp->cam_ccb;
np = (hcb_p) cp->arg;
SYM_LOCK_ASSERT(MA_OWNED);
/*
* Deal with weird races.
*/
if (sym_get_cam_status(ccb) != CAM_REQ_INPROG)
goto out_abort;
/*
* Deal with weird errors.
*/
if (error) {
cp->dmamapped = 0;
sym_set_cam_status(cp->cam_ccb, CAM_REQ_ABORTED);
goto out_abort;
}
/*
* Build the data descriptor for the chip.
*/
if (nsegs) {
int retv;
/* 896 rev 1 requires to be careful about boundaries */
if (np->device_id == PCI_ID_SYM53C896 && np->revision_id <= 1)
retv = sym_scatter_sg_physical(np, cp, psegs, nsegs);
else
retv = sym_fast_scatter_sg_physical(np,cp, psegs,nsegs);
if (retv < 0) {
sym_set_cam_status(cp->cam_ccb, CAM_REQ_TOO_BIG);
goto out_abort;
}
}
/*
* Synchronize the DMA map only if we have
* actually mapped the data.
*/
if (cp->dmamapped) {
bus_dmamap_sync(np->data_dmat, cp->dmamap,
(cp->dmamapped == SYM_DMA_READ ?
BUS_DMASYNC_PREREAD : BUS_DMASYNC_PREWRITE));
}
/*
* Set host status to busy state.
* May have been set back to HS_WAIT to avoid a race.
*/
cp->host_status = cp->nego_status ? HS_NEGOTIATE : HS_BUSY;
/*
* Set data pointers.
*/
sym_setup_data_pointers(np, cp, (ccb->ccb_h.flags & CAM_DIR_MASK));
/*
* Enqueue this IO in our pending queue.
*/
sym_enqueue_cam_ccb(cp);
/*
* When `#ifed 1', the code below makes the driver
* panic on the first attempt to write to a SCSI device.
* It is the first test we want to do after a driver
* change that does not seem obviously safe. :)
*/
#if 0
switch (cp->cdb_buf[0]) {
case 0x0A: case 0x2A: case 0xAA:
panic("XXXXXXXXXXXXX WRITE NOT YET ALLOWED XXXXXXXXXXXXXX\n");
MDELAY(10000);
break;
default:
break;
}
#endif
/*
* Activate this job.
*/
sym_put_start_queue(np, cp);
return;
out_abort:
sym_xpt_done(np, ccb, cp);
sym_free_ccb(np, cp);
}
/*
* How complex it gets to deal with the data in CAM.
* The Bus Dma stuff makes things still more complex.
*/
static void
sym_setup_data_and_start(hcb_p np, struct ccb_scsiio *csio, ccb_p cp)
{
struct ccb_hdr *ccb_h;
int dir, retv;
SYM_LOCK_ASSERT(MA_OWNED);
ccb_h = &csio->ccb_h;
/*
* Now deal with the data.
*/
cp->data_len = csio->dxfer_len;
cp->arg = np;
/*
* No direction means no data.
*/
dir = (ccb_h->flags & CAM_DIR_MASK);
if (dir == CAM_DIR_NONE) {
sym_execute_ccb(cp, NULL, 0, 0);
return;
}
cp->dmamapped = (dir == CAM_DIR_IN) ? SYM_DMA_READ : SYM_DMA_WRITE;
retv = bus_dmamap_load_ccb(np->data_dmat, cp->dmamap,
(union ccb *)csio, sym_execute_ccb, cp, 0);
if (retv == EINPROGRESS) {
cp->host_status = HS_WAIT;
xpt_freeze_simq(np->sim, 1);
csio->ccb_h.status |= CAM_RELEASE_SIMQ;
}
}
/*
* Move the scatter list to our data block.
*/
static int
sym_fast_scatter_sg_physical(hcb_p np, ccb_p cp,
bus_dma_segment_t *psegs, int nsegs)
{
struct sym_tblmove *data;
bus_dma_segment_t *psegs2;
SYM_LOCK_ASSERT(MA_OWNED);
if (nsegs > SYM_CONF_MAX_SG)
return -1;
data = &cp->phys.data[SYM_CONF_MAX_SG-1];
psegs2 = &psegs[nsegs-1];
cp->segments = nsegs;
while (1) {
data->addr = cpu_to_scr(psegs2->ds_addr);
data->size = cpu_to_scr(psegs2->ds_len);
if (DEBUG_FLAGS & DEBUG_SCATTER) {
printf ("%s scatter: paddr=%lx len=%ld\n",
sym_name(np), (long) psegs2->ds_addr,
(long) psegs2->ds_len);
}
if (psegs2 != psegs) {
--data;
--psegs2;
continue;
}
break;
}
return 0;
}
/*
* Scatter a SG list with physical addresses into bus addressable chunks.
*/
static int
sym_scatter_sg_physical(hcb_p np, ccb_p cp, bus_dma_segment_t *psegs, int nsegs)
{
u_long ps, pe, pn;
u_long k;
int s, t;
SYM_LOCK_ASSERT(MA_OWNED);
s = SYM_CONF_MAX_SG - 1;
t = nsegs - 1;
ps = psegs[t].ds_addr;
pe = ps + psegs[t].ds_len;
while (s >= 0) {
pn = rounddown2(pe - 1, SYM_CONF_DMA_BOUNDARY);
if (pn <= ps)
pn = ps;
k = pe - pn;
if (DEBUG_FLAGS & DEBUG_SCATTER) {
printf ("%s scatter: paddr=%lx len=%ld\n",
sym_name(np), pn, k);
}
cp->phys.data[s].addr = cpu_to_scr(pn);
cp->phys.data[s].size = cpu_to_scr(k);
--s;
if (pn == ps) {
if (--t < 0)
break;
ps = psegs[t].ds_addr;
pe = ps + psegs[t].ds_len;
}
else
pe = pn;
}
cp->segments = SYM_CONF_MAX_SG - 1 - s;
return t >= 0 ? -1 : 0;
}
/*
* SIM action for non performance critical stuff.
*/
static void sym_action2(struct cam_sim *sim, union ccb *ccb)
{
union ccb *abort_ccb;
struct ccb_hdr *ccb_h;
struct ccb_pathinq *cpi;
struct ccb_trans_settings *cts;
struct sym_trans *tip;
hcb_p np;
tcb_p tp;
lcb_p lp;
u_char dflags;
/*
* Retrieve our controller data structure.
*/
np = (hcb_p) cam_sim_softc(sim);
SYM_LOCK_ASSERT(MA_OWNED);
ccb_h = &ccb->ccb_h;
switch (ccb_h->func_code) {
case XPT_SET_TRAN_SETTINGS:
cts = &ccb->cts;
tp = &np->target[ccb_h->target_id];
/*
* Update SPI transport settings in TARGET control block.
* Update SCSI device settings in LUN control block.
*/
lp = sym_lp(tp, ccb_h->target_lun);
if (cts->type == CTS_TYPE_CURRENT_SETTINGS) {
sym_update_trans(np, &tp->tinfo.goal, cts);
if (lp)
sym_update_dflags(np, &lp->current_flags, cts);
}
if (cts->type == CTS_TYPE_USER_SETTINGS) {
sym_update_trans(np, &tp->tinfo.user, cts);
if (lp)
sym_update_dflags(np, &lp->user_flags, cts);
}
sym_xpt_done2(np, ccb, CAM_REQ_CMP);
break;
case XPT_GET_TRAN_SETTINGS:
cts = &ccb->cts;
tp = &np->target[ccb_h->target_id];
lp = sym_lp(tp, ccb_h->target_lun);
#define cts__scsi (&cts->proto_specific.scsi)
#define cts__spi (&cts->xport_specific.spi)
if (cts->type == CTS_TYPE_CURRENT_SETTINGS) {
tip = &tp->tinfo.current;
dflags = lp ? lp->current_flags : 0;
}
else {
tip = &tp->tinfo.user;
dflags = lp ? lp->user_flags : tp->usrflags;
}
cts->protocol = PROTO_SCSI;
cts->transport = XPORT_SPI;
cts->protocol_version = tip->scsi_version;
cts->transport_version = tip->spi_version;
cts__spi->sync_period = tip->period;
cts__spi->sync_offset = tip->offset;
cts__spi->bus_width = tip->width;
cts__spi->ppr_options = tip->options;
cts__spi->valid = CTS_SPI_VALID_SYNC_RATE
| CTS_SPI_VALID_SYNC_OFFSET
| CTS_SPI_VALID_BUS_WIDTH
| CTS_SPI_VALID_PPR_OPTIONS;
cts__spi->flags &= ~CTS_SPI_FLAGS_DISC_ENB;
if (dflags & SYM_DISC_ENABLED)
cts__spi->flags |= CTS_SPI_FLAGS_DISC_ENB;
cts__spi->valid |= CTS_SPI_VALID_DISC;
cts__scsi->flags &= ~CTS_SCSI_FLAGS_TAG_ENB;
if (dflags & SYM_TAGS_ENABLED)
cts__scsi->flags |= CTS_SCSI_FLAGS_TAG_ENB;
cts__scsi->valid |= CTS_SCSI_VALID_TQ;
#undef cts__spi
#undef cts__scsi
sym_xpt_done2(np, ccb, CAM_REQ_CMP);
break;
case XPT_CALC_GEOMETRY:
cam_calc_geometry(&ccb->ccg, /*extended*/1);
sym_xpt_done2(np, ccb, CAM_REQ_CMP);
break;
case XPT_PATH_INQ:
cpi = &ccb->cpi;
cpi->version_num = 1;
cpi->hba_inquiry = PI_MDP_ABLE|PI_SDTR_ABLE|PI_TAG_ABLE;
if ((np->features & FE_WIDE) != 0)
cpi->hba_inquiry |= PI_WIDE_16;
cpi->target_sprt = 0;
cpi->hba_misc = PIM_UNMAPPED;
if (np->usrflags & SYM_SCAN_TARGETS_HILO)
cpi->hba_misc |= PIM_SCANHILO;
if (np->usrflags & SYM_AVOID_BUS_RESET)
cpi->hba_misc |= PIM_NOBUSRESET;
cpi->hba_eng_cnt = 0;
cpi->max_target = (np->features & FE_WIDE) ? 15 : 7;
/* Semantic problem:)LUN number max = max number of LUNs - 1 */
cpi->max_lun = SYM_CONF_MAX_LUN-1;
if (SYM_SETUP_MAX_LUN < SYM_CONF_MAX_LUN)
cpi->max_lun = SYM_SETUP_MAX_LUN-1;
cpi->bus_id = cam_sim_bus(sim);
cpi->initiator_id = np->myaddr;
cpi->base_transfer_speed = 3300;
strncpy(cpi->sim_vid, "FreeBSD", SIM_IDLEN);
strncpy(cpi->hba_vid, "Symbios", HBA_IDLEN);
strncpy(cpi->dev_name, cam_sim_name(sim), DEV_IDLEN);
cpi->unit_number = cam_sim_unit(sim);
cpi->protocol = PROTO_SCSI;
cpi->protocol_version = SCSI_REV_2;
cpi->transport = XPORT_SPI;
cpi->transport_version = 2;
cpi->xport_specific.spi.ppr_options = SID_SPI_CLOCK_ST;
if (np->features & FE_ULTRA3) {
cpi->transport_version = 3;
cpi->xport_specific.spi.ppr_options =
SID_SPI_CLOCK_DT_ST;
}
cpi->maxio = SYM_CONF_MAX_SG * PAGE_SIZE;
sym_xpt_done2(np, ccb, CAM_REQ_CMP);
break;
case XPT_ABORT:
abort_ccb = ccb->cab.abort_ccb;
switch(abort_ccb->ccb_h.func_code) {
case XPT_SCSI_IO:
if (sym_abort_scsiio(np, abort_ccb, 0) == 0) {
sym_xpt_done2(np, ccb, CAM_REQ_CMP);
break;
}
default:
sym_xpt_done2(np, ccb, CAM_UA_ABORT);
break;
}
break;
case XPT_RESET_DEV:
sym_reset_dev(np, ccb);
break;
case XPT_RESET_BUS:
sym_reset_scsi_bus(np, 0);
if (sym_verbose) {
xpt_print_path(np->path);
printf("SCSI BUS reset delivered.\n");
}
sym_init (np, 1);
sym_xpt_done2(np, ccb, CAM_REQ_CMP);
break;
case XPT_ACCEPT_TARGET_IO:
case XPT_CONT_TARGET_IO:
case XPT_EN_LUN:
case XPT_NOTIFY_ACK:
case XPT_IMMED_NOTIFY:
case XPT_TERM_IO:
default:
sym_xpt_done2(np, ccb, CAM_REQ_INVALID);
break;
}
}
/*
* Asynchronous notification handler.
*/
static void
sym_async(void *cb_arg, u32 code, struct cam_path *path, void *args __unused)
{
hcb_p np;
struct cam_sim *sim;
u_int tn;
tcb_p tp;
sim = (struct cam_sim *) cb_arg;
np = (hcb_p) cam_sim_softc(sim);
SYM_LOCK_ASSERT(MA_OWNED);
switch (code) {
case AC_LOST_DEVICE:
tn = xpt_path_target_id(path);
if (tn >= SYM_CONF_MAX_TARGET)
break;
tp = &np->target[tn];
tp->to_reset = 0;
tp->head.sval = 0;
tp->head.wval = np->rv_scntl3;
tp->head.uval = 0;
tp->tinfo.current.period = tp->tinfo.goal.period = 0;
tp->tinfo.current.offset = tp->tinfo.goal.offset = 0;
tp->tinfo.current.width = tp->tinfo.goal.width = BUS_8_BIT;
tp->tinfo.current.options = tp->tinfo.goal.options = 0;
break;
default:
break;
}
}
/*
* Update transfer settings of a target.
*/
static void sym_update_trans(hcb_p np, struct sym_trans *tip,
struct ccb_trans_settings *cts)
{
SYM_LOCK_ASSERT(MA_OWNED);
/*
* Update the infos.
*/
#define cts__spi (&cts->xport_specific.spi)
if ((cts__spi->valid & CTS_SPI_VALID_BUS_WIDTH) != 0)
tip->width = cts__spi->bus_width;
if ((cts__spi->valid & CTS_SPI_VALID_SYNC_OFFSET) != 0)
tip->offset = cts__spi->sync_offset;
if ((cts__spi->valid & CTS_SPI_VALID_SYNC_RATE) != 0)
tip->period = cts__spi->sync_period;
if ((cts__spi->valid & CTS_SPI_VALID_PPR_OPTIONS) != 0)
tip->options = (cts__spi->ppr_options & PPR_OPT_DT);
if (cts->protocol_version != PROTO_VERSION_UNSPECIFIED &&
cts->protocol_version != PROTO_VERSION_UNKNOWN)
tip->scsi_version = cts->protocol_version;
if (cts->transport_version != XPORT_VERSION_UNSPECIFIED &&
cts->transport_version != XPORT_VERSION_UNKNOWN)
tip->spi_version = cts->transport_version;
#undef cts__spi
/*
* Scale against driver configuration limits.
*/
if (tip->width > SYM_SETUP_MAX_WIDE) tip->width = SYM_SETUP_MAX_WIDE;
if (tip->period && tip->offset) {
if (tip->offset > SYM_SETUP_MAX_OFFS) tip->offset = SYM_SETUP_MAX_OFFS;
if (tip->period < SYM_SETUP_MIN_SYNC) tip->period = SYM_SETUP_MIN_SYNC;
} else {
tip->offset = 0;
tip->period = 0;
}
/*
* Scale against actual controller BUS width.
*/
if (tip->width > np->maxwide)
tip->width = np->maxwide;
/*
* Only accept DT if controller supports and SYNC/WIDE asked.
*/
if (!((np->features & (FE_C10|FE_ULTRA3)) == (FE_C10|FE_ULTRA3)) ||
!(tip->width == BUS_16_BIT && tip->offset)) {
tip->options &= ~PPR_OPT_DT;
}
/*
* Scale period factor and offset against controller limits.
*/
if (tip->offset && tip->period) {
if (tip->options & PPR_OPT_DT) {
if (tip->period < np->minsync_dt)
tip->period = np->minsync_dt;
if (tip->period > np->maxsync_dt)
tip->period = np->maxsync_dt;
if (tip->offset > np->maxoffs_dt)
tip->offset = np->maxoffs_dt;
}
else {
if (tip->period < np->minsync)
tip->period = np->minsync;
if (tip->period > np->maxsync)
tip->period = np->maxsync;
if (tip->offset > np->maxoffs)
tip->offset = np->maxoffs;
}
}
}
/*
* Update flags for a device (logical unit).
*/
static void
sym_update_dflags(hcb_p np, u_char *flags, struct ccb_trans_settings *cts)
{
SYM_LOCK_ASSERT(MA_OWNED);
#define cts__scsi (&cts->proto_specific.scsi)
#define cts__spi (&cts->xport_specific.spi)
if ((cts__spi->valid & CTS_SPI_VALID_DISC) != 0) {
if ((cts__spi->flags & CTS_SPI_FLAGS_DISC_ENB) != 0)
*flags |= SYM_DISC_ENABLED;
else
*flags &= ~SYM_DISC_ENABLED;
}
if ((cts__scsi->valid & CTS_SCSI_VALID_TQ) != 0) {
if ((cts__scsi->flags & CTS_SCSI_FLAGS_TAG_ENB) != 0)
*flags |= SYM_TAGS_ENABLED;
else
*flags &= ~SYM_TAGS_ENABLED;
}
#undef cts__spi
#undef cts__scsi
}
/*============= DRIVER INITIALISATION ==================*/
static device_method_t sym_pci_methods[] = {
DEVMETHOD(device_probe, sym_pci_probe),
DEVMETHOD(device_attach, sym_pci_attach),
DEVMETHOD_END
};
static driver_t sym_pci_driver = {
"sym",
sym_pci_methods,
1 /* no softc */
};
static devclass_t sym_devclass;
DRIVER_MODULE(sym, pci, sym_pci_driver, sym_devclass, NULL, NULL);
MODULE_DEPEND(sym, cam, 1, 1, 1);
MODULE_DEPEND(sym, pci, 1, 1, 1);
static const struct sym_pci_chip sym_pci_dev_table[] = {
{PCI_ID_SYM53C810, 0x0f, "810", 4, 8, 4, 64,
FE_ERL}
,
#ifdef SYM_DEBUG_GENERIC_SUPPORT
{PCI_ID_SYM53C810, 0xff, "810a", 4, 8, 4, 1,
FE_BOF}
,
#else
{PCI_ID_SYM53C810, 0xff, "810a", 4, 8, 4, 1,
FE_CACHE_SET|FE_LDSTR|FE_PFEN|FE_BOF}
,
#endif
{PCI_ID_SYM53C815, 0xff, "815", 4, 8, 4, 64,
FE_BOF|FE_ERL}
,
{PCI_ID_SYM53C825, 0x0f, "825", 6, 8, 4, 64,
FE_WIDE|FE_BOF|FE_ERL|FE_DIFF}
,
{PCI_ID_SYM53C825, 0xff, "825a", 6, 8, 4, 2,
FE_WIDE|FE_CACHE0_SET|FE_BOF|FE_DFS|FE_LDSTR|FE_PFEN|FE_RAM|FE_DIFF}
,
{PCI_ID_SYM53C860, 0xff, "860", 4, 8, 5, 1,
FE_ULTRA|FE_CLK80|FE_CACHE_SET|FE_BOF|FE_LDSTR|FE_PFEN}
,
{PCI_ID_SYM53C875, 0x01, "875", 6, 16, 5, 2,
FE_WIDE|FE_ULTRA|FE_CLK80|FE_CACHE0_SET|FE_BOF|FE_DFS|FE_LDSTR|FE_PFEN|
FE_RAM|FE_DIFF}
,
{PCI_ID_SYM53C875, 0xff, "875", 6, 16, 5, 2,
FE_WIDE|FE_ULTRA|FE_DBLR|FE_CACHE0_SET|FE_BOF|FE_DFS|FE_LDSTR|FE_PFEN|
FE_RAM|FE_DIFF}
,
{PCI_ID_SYM53C875_2, 0xff, "875", 6, 16, 5, 2,
FE_WIDE|FE_ULTRA|FE_DBLR|FE_CACHE0_SET|FE_BOF|FE_DFS|FE_LDSTR|FE_PFEN|
FE_RAM|FE_DIFF}
,
{PCI_ID_SYM53C885, 0xff, "885", 6, 16, 5, 2,
FE_WIDE|FE_ULTRA|FE_DBLR|FE_CACHE0_SET|FE_BOF|FE_DFS|FE_LDSTR|FE_PFEN|
FE_RAM|FE_DIFF}
,
#ifdef SYM_DEBUG_GENERIC_SUPPORT
{PCI_ID_SYM53C895, 0xff, "895", 6, 31, 7, 2,
FE_WIDE|FE_ULTRA2|FE_QUAD|FE_CACHE_SET|FE_BOF|FE_DFS|
FE_RAM|FE_LCKFRQ}
,
#else
{PCI_ID_SYM53C895, 0xff, "895", 6, 31, 7, 2,
FE_WIDE|FE_ULTRA2|FE_QUAD|FE_CACHE_SET|FE_BOF|FE_DFS|FE_LDSTR|FE_PFEN|
FE_RAM|FE_LCKFRQ}
,
#endif
{PCI_ID_SYM53C896, 0xff, "896", 6, 31, 7, 4,
FE_WIDE|FE_ULTRA2|FE_QUAD|FE_CACHE_SET|FE_BOF|FE_DFS|FE_LDSTR|FE_PFEN|
FE_RAM|FE_RAM8K|FE_64BIT|FE_DAC|FE_IO256|FE_NOPM|FE_LEDC|FE_LCKFRQ}
,
{PCI_ID_SYM53C895A, 0xff, "895a", 6, 31, 7, 4,
FE_WIDE|FE_ULTRA2|FE_QUAD|FE_CACHE_SET|FE_BOF|FE_DFS|FE_LDSTR|FE_PFEN|
FE_RAM|FE_RAM8K|FE_DAC|FE_IO256|FE_NOPM|FE_LEDC|FE_LCKFRQ}
,
{PCI_ID_LSI53C1010, 0x00, "1010-33", 6, 31, 7, 8,
FE_WIDE|FE_ULTRA3|FE_QUAD|FE_CACHE_SET|FE_BOF|FE_DFBC|FE_LDSTR|FE_PFEN|
FE_RAM|FE_RAM8K|FE_64BIT|FE_DAC|FE_IO256|FE_NOPM|FE_LEDC|FE_CRC|
FE_C10}
,
{PCI_ID_LSI53C1010, 0xff, "1010-33", 6, 31, 7, 8,
FE_WIDE|FE_ULTRA3|FE_QUAD|FE_CACHE_SET|FE_BOF|FE_DFBC|FE_LDSTR|FE_PFEN|
FE_RAM|FE_RAM8K|FE_64BIT|FE_DAC|FE_IO256|FE_NOPM|FE_LEDC|FE_CRC|
FE_C10|FE_U3EN}
,
{PCI_ID_LSI53C1010_2, 0xff, "1010-66", 6, 31, 7, 8,
FE_WIDE|FE_ULTRA3|FE_QUAD|FE_CACHE_SET|FE_BOF|FE_DFBC|FE_LDSTR|FE_PFEN|
FE_RAM|FE_RAM8K|FE_64BIT|FE_DAC|FE_IO256|FE_NOPM|FE_LEDC|FE_66MHZ|FE_CRC|
FE_C10|FE_U3EN}
,
{PCI_ID_LSI53C1510D, 0xff, "1510d", 6, 31, 7, 4,
FE_WIDE|FE_ULTRA2|FE_QUAD|FE_CACHE_SET|FE_BOF|FE_DFS|FE_LDSTR|FE_PFEN|
FE_RAM|FE_IO256|FE_LEDC}
};
/*
* Look up the chip table.
*
* Return a pointer to the chip entry if found,
* zero otherwise.
*/
static const struct sym_pci_chip *
sym_find_pci_chip(device_t dev)
{
const struct sym_pci_chip *chip;
int i;
u_short device_id;
u_char revision;
if (pci_get_vendor(dev) != PCI_VENDOR_NCR)
return NULL;
device_id = pci_get_device(dev);
revision = pci_get_revid(dev);
for (i = 0; i < nitems(sym_pci_dev_table); i++) {
chip = &sym_pci_dev_table[i];
if (device_id != chip->device_id)
continue;
if (revision > chip->revision_id)
continue;
return chip;
}
return NULL;
}
/*
* Tell upper layer if the chip is supported.
*/
static int
sym_pci_probe(device_t dev)
{
const struct sym_pci_chip *chip;
chip = sym_find_pci_chip(dev);
if (chip && sym_find_firmware(chip)) {
device_set_desc(dev, chip->name);
return (chip->lp_probe_bit & SYM_SETUP_LP_PROBE_MAP)?
BUS_PROBE_LOW_PRIORITY : BUS_PROBE_DEFAULT;
}
return ENXIO;
}
/*
* Attach a sym53c8xx device.
*/
static int
sym_pci_attach(device_t dev)
{
const struct sym_pci_chip *chip;
u_short command;
u_char cachelnsz;
struct sym_hcb *np = NULL;
struct sym_nvram nvram;
const struct sym_fw *fw = NULL;
int i;
bus_dma_tag_t bus_dmat;
bus_dmat = bus_get_dma_tag(dev);
/*
* Only probed devices should be attached.
* We just enjoy being paranoid. :)
*/
chip = sym_find_pci_chip(dev);
if (chip == NULL || (fw = sym_find_firmware(chip)) == NULL)
return (ENXIO);
/*
* Allocate immediately the host control block,
* since we are only expecting to succeed. :)
* We keep track in the HCB of all the resources that
* are to be released on error.
*/
np = __sym_calloc_dma(bus_dmat, sizeof(*np), "HCB");
if (np)
np->bus_dmat = bus_dmat;
else
return (ENXIO);
device_set_softc(dev, np);
SYM_LOCK_INIT();
/*
* Copy some useful infos to the HCB.
*/
np->hcb_ba = vtobus(np);
np->verbose = bootverbose;
np->device = dev;
np->device_id = pci_get_device(dev);
np->revision_id = pci_get_revid(dev);
np->features = chip->features;
np->clock_divn = chip->nr_divisor;
np->maxoffs = chip->offset_max;
np->maxburst = chip->burst_max;
np->scripta_sz = fw->a_size;
np->scriptb_sz = fw->b_size;
np->fw_setup = fw->setup;
np->fw_patch = fw->patch;
np->fw_name = fw->name;
#ifdef __amd64__
np->target = sym_calloc_dma(SYM_CONF_MAX_TARGET * sizeof(*(np->target)),
"TARGET");
if (!np->target)
goto attach_failed;
#endif
/*
* Initialize the CCB free and busy queues.
*/
sym_que_init(&np->free_ccbq);
sym_que_init(&np->busy_ccbq);
sym_que_init(&np->comp_ccbq);
sym_que_init(&np->cam_ccbq);
/*
* Allocate a tag for the DMA of user data.
*/
if (bus_dma_tag_create(np->bus_dmat, 1, SYM_CONF_DMA_BOUNDARY,
BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL,
BUS_SPACE_MAXSIZE_32BIT, SYM_CONF_MAX_SG, SYM_CONF_DMA_BOUNDARY,
0, busdma_lock_mutex, &np->mtx, &np->data_dmat)) {
device_printf(dev, "failed to create DMA tag.\n");
goto attach_failed;
}
/*
* Read and apply some fix-ups to the PCI COMMAND
* register. We want the chip to be enabled for:
* - BUS mastering
* - PCI parity checking (reporting would also be fine)
* - Write And Invalidate.
*/
command = pci_read_config(dev, PCIR_COMMAND, 2);
command |= PCIM_CMD_BUSMASTEREN | PCIM_CMD_PERRESPEN |
PCIM_CMD_MWRICEN;
pci_write_config(dev, PCIR_COMMAND, command, 2);
/*
* Let the device know about the cache line size,
* if it doesn't yet.
*/
cachelnsz = pci_read_config(dev, PCIR_CACHELNSZ, 1);
if (!cachelnsz) {
cachelnsz = 8;
pci_write_config(dev, PCIR_CACHELNSZ, cachelnsz, 1);
}
/*
* Alloc/get/map/retrieve everything that deals with MMIO.
*/
i = SYM_PCI_MMIO;
np->mmio_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &i,
RF_ACTIVE);
if (!np->mmio_res) {
device_printf(dev, "failed to allocate MMIO resources\n");
goto attach_failed;
}
np->mmio_ba = rman_get_start(np->mmio_res);
/*
* Allocate the IRQ.
*/
i = 0;
np->irq_res = bus_alloc_resource_any(dev, SYS_RES_IRQ, &i,
RF_ACTIVE | RF_SHAREABLE);
if (!np->irq_res) {
device_printf(dev, "failed to allocate IRQ resource\n");
goto attach_failed;
}
#ifdef SYM_CONF_IOMAPPED
/*
* User want us to use normal IO with PCI.
* Alloc/get/map/retrieve everything that deals with IO.
*/
i = SYM_PCI_IO;
np->io_res = bus_alloc_resource_any(dev, SYS_RES_IOPORT, &i, RF_ACTIVE);
if (!np->io_res) {
device_printf(dev, "failed to allocate IO resources\n");
goto attach_failed;
}
#endif /* SYM_CONF_IOMAPPED */
/*
* If the chip has RAM.
* Alloc/get/map/retrieve the corresponding resources.
*/
if (np->features & (FE_RAM|FE_RAM8K)) {
int regs_id = SYM_PCI_RAM;
if (np->features & FE_64BIT)
regs_id = SYM_PCI_RAM64;
np->ram_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY,
&regs_id, RF_ACTIVE);
if (!np->ram_res) {
device_printf(dev,"failed to allocate RAM resources\n");
goto attach_failed;
}
np->ram_id = regs_id;
np->ram_ba = rman_get_start(np->ram_res);
}
/*
* Save setting of some IO registers, so we will
* be able to probe specific implementations.
*/
sym_save_initial_setting (np);
/*
* Reset the chip now, since it has been reported
* that SCSI clock calibration may not work properly
* if the chip is currently active.
*/
sym_chip_reset (np);
/*
* Try to read the user set-up.
*/
(void) sym_read_nvram(np, &nvram);
/*
* Prepare controller and devices settings, according
* to chip features, user set-up and driver set-up.
*/
(void) sym_prepare_setting(np, &nvram);
/*
* Check the PCI clock frequency.
* Must be performed after prepare_setting since it destroys
* STEST1 that is used to probe for the clock doubler.
*/
i = sym_getpciclock(np);
if (i > 37000)
device_printf(dev, "PCI BUS clock seems too high: %u KHz.\n",i);
/*
* Allocate the start queue.
*/
np->squeue = (u32 *) sym_calloc_dma(sizeof(u32)*(MAX_QUEUE*2),"SQUEUE");
if (!np->squeue)
goto attach_failed;
np->squeue_ba = vtobus(np->squeue);
/*
* Allocate the done queue.
*/
np->dqueue = (u32 *) sym_calloc_dma(sizeof(u32)*(MAX_QUEUE*2),"DQUEUE");
if (!np->dqueue)
goto attach_failed;
np->dqueue_ba = vtobus(np->dqueue);
/*
* Allocate the target bus address array.
*/
np->targtbl = (u32 *) sym_calloc_dma(256, "TARGTBL");
if (!np->targtbl)
goto attach_failed;
np->targtbl_ba = vtobus(np->targtbl);
/*
* Allocate SCRIPTS areas.
*/
np->scripta0 = sym_calloc_dma(np->scripta_sz, "SCRIPTA0");
np->scriptb0 = sym_calloc_dma(np->scriptb_sz, "SCRIPTB0");
if (!np->scripta0 || !np->scriptb0)
goto attach_failed;
/*
* Allocate the CCBs. We need at least ONE.
*/
for (i = 0; sym_alloc_ccb(np) != NULL; i++)
;
if (i < 1)
goto attach_failed;
/*
* Calculate BUS addresses where we are going
* to load the SCRIPTS.
*/
np->scripta_ba = vtobus(np->scripta0);
np->scriptb_ba = vtobus(np->scriptb0);
np->scriptb0_ba = np->scriptb_ba;
if (np->ram_ba) {
np->scripta_ba = np->ram_ba;
if (np->features & FE_RAM8K) {
np->ram_ws = 8192;
np->scriptb_ba = np->scripta_ba + 4096;
#ifdef __LP64__
np->scr_ram_seg = cpu_to_scr(np->scripta_ba >> 32);
#endif
}
else
np->ram_ws = 4096;
}
/*
* Copy scripts to controller instance.
*/
bcopy(fw->a_base, np->scripta0, np->scripta_sz);
bcopy(fw->b_base, np->scriptb0, np->scriptb_sz);
/*
* Setup variable parts in scripts and compute
* scripts bus addresses used from the C code.
*/
np->fw_setup(np, fw);
/*
* Bind SCRIPTS with physical addresses usable by the
* SCRIPTS processor (as seen from the BUS = BUS addresses).
*/
sym_fw_bind_script(np, (u32 *) np->scripta0, np->scripta_sz);
sym_fw_bind_script(np, (u32 *) np->scriptb0, np->scriptb_sz);
#ifdef SYM_CONF_IARB_SUPPORT
/*
* If user wants IARB to be set when we win arbitration
* and have other jobs, compute the max number of consecutive
* settings of IARB hints before we leave devices a chance to
* arbitrate for reselection.
*/
#ifdef SYM_SETUP_IARB_MAX
np->iarb_max = SYM_SETUP_IARB_MAX;
#else
np->iarb_max = 4;
#endif
#endif
/*
* Prepare the idle and invalid task actions.
*/
np->idletask.start = cpu_to_scr(SCRIPTA_BA (np, idle));
np->idletask.restart = cpu_to_scr(SCRIPTB_BA (np, bad_i_t_l));
np->idletask_ba = vtobus(&np->idletask);
np->notask.start = cpu_to_scr(SCRIPTA_BA (np, idle));
np->notask.restart = cpu_to_scr(SCRIPTB_BA (np, bad_i_t_l));
np->notask_ba = vtobus(&np->notask);
np->bad_itl.start = cpu_to_scr(SCRIPTA_BA (np, idle));
np->bad_itl.restart = cpu_to_scr(SCRIPTB_BA (np, bad_i_t_l));
np->bad_itl_ba = vtobus(&np->bad_itl);
np->bad_itlq.start = cpu_to_scr(SCRIPTA_BA (np, idle));
np->bad_itlq.restart = cpu_to_scr(SCRIPTB_BA (np,bad_i_t_l_q));
np->bad_itlq_ba = vtobus(&np->bad_itlq);
/*
* Allocate and prepare the lun JUMP table that is used
* for a target prior the probing of devices (bad lun table).
* A private table will be allocated for the target on the
* first INQUIRY response received.
*/
np->badluntbl = sym_calloc_dma(256, "BADLUNTBL");
if (!np->badluntbl)
goto attach_failed;
np->badlun_sa = cpu_to_scr(SCRIPTB_BA (np, resel_bad_lun));
for (i = 0 ; i < 64 ; i++) /* 64 luns/target, no less */
np->badluntbl[i] = cpu_to_scr(vtobus(&np->badlun_sa));
/*
* Prepare the bus address array that contains the bus
* address of each target control block.
* For now, assume all logical units are wrong. :)
*/
for (i = 0 ; i < SYM_CONF_MAX_TARGET ; i++) {
np->targtbl[i] = cpu_to_scr(vtobus(&np->target[i]));
np->target[i].head.luntbl_sa =
cpu_to_scr(vtobus(np->badluntbl));
np->target[i].head.lun0_sa =
cpu_to_scr(vtobus(&np->badlun_sa));
}
/*
* Now check the cache handling of the pci chipset.
*/
if (sym_snooptest (np)) {
device_printf(dev, "CACHE INCORRECTLY CONFIGURED.\n");
goto attach_failed;
}
/*
* Now deal with CAM.
* Hopefully, we will succeed with that one.:)
*/
if (!sym_cam_attach(np))
goto attach_failed;
/*
* Sigh! we are done.
*/
return 0;
/*
* We have failed.
* We will try to free all the resources we have
* allocated, but if we are a boot device, this
* will not help that much.;)
*/
attach_failed:
if (np)
sym_pci_free(np);
return ENXIO;
}
/*
* Free everything that have been allocated for this device.
*/
static void sym_pci_free(hcb_p np)
{
SYM_QUEHEAD *qp;
ccb_p cp;
tcb_p tp;
lcb_p lp;
int target, lun;
/*
* First free CAM resources.
*/
sym_cam_free(np);
/*
* Now every should be quiet for us to
* free other resources.
*/
if (np->ram_res)
bus_release_resource(np->device, SYS_RES_MEMORY,
np->ram_id, np->ram_res);
if (np->mmio_res)
bus_release_resource(np->device, SYS_RES_MEMORY,
SYM_PCI_MMIO, np->mmio_res);
if (np->io_res)
bus_release_resource(np->device, SYS_RES_IOPORT,
SYM_PCI_IO, np->io_res);
if (np->irq_res)
bus_release_resource(np->device, SYS_RES_IRQ,
0, np->irq_res);
if (np->scriptb0)
sym_mfree_dma(np->scriptb0, np->scriptb_sz, "SCRIPTB0");
if (np->scripta0)
sym_mfree_dma(np->scripta0, np->scripta_sz, "SCRIPTA0");
if (np->squeue)
sym_mfree_dma(np->squeue, sizeof(u32)*(MAX_QUEUE*2), "SQUEUE");
if (np->dqueue)
sym_mfree_dma(np->dqueue, sizeof(u32)*(MAX_QUEUE*2), "DQUEUE");
while ((qp = sym_remque_head(&np->free_ccbq)) != NULL) {
cp = sym_que_entry(qp, struct sym_ccb, link_ccbq);
bus_dmamap_destroy(np->data_dmat, cp->dmamap);
sym_mfree_dma(cp->sns_bbuf, SYM_SNS_BBUF_LEN, "SNS_BBUF");
sym_mfree_dma(cp, sizeof(*cp), "CCB");
}
if (np->badluntbl)
sym_mfree_dma(np->badluntbl, 256,"BADLUNTBL");
for (target = 0; target < SYM_CONF_MAX_TARGET ; target++) {
tp = &np->target[target];
for (lun = 0 ; lun < SYM_CONF_MAX_LUN ; lun++) {
lp = sym_lp(tp, lun);
if (!lp)
continue;
if (lp->itlq_tbl)
sym_mfree_dma(lp->itlq_tbl, SYM_CONF_MAX_TASK*4,
"ITLQ_TBL");
if (lp->cb_tags)
sym_mfree(lp->cb_tags, SYM_CONF_MAX_TASK,
"CB_TAGS");
sym_mfree_dma(lp, sizeof(*lp), "LCB");
}
#if SYM_CONF_MAX_LUN > 1
if (tp->lunmp)
sym_mfree(tp->lunmp, SYM_CONF_MAX_LUN*sizeof(lcb_p),
"LUNMP");
#endif
}
#ifdef __amd64__
if (np->target)
sym_mfree_dma(np->target,
SYM_CONF_MAX_TARGET * sizeof(*(np->target)), "TARGET");
#endif
if (np->targtbl)
sym_mfree_dma(np->targtbl, 256, "TARGTBL");
if (np->data_dmat)
bus_dma_tag_destroy(np->data_dmat);
if (SYM_LOCK_INITIALIZED() != 0)
SYM_LOCK_DESTROY();
device_set_softc(np->device, NULL);
sym_mfree_dma(np, sizeof(*np), "HCB");
}
/*
* Allocate CAM resources and register a bus to CAM.
*/
static int sym_cam_attach(hcb_p np)
{
struct cam_devq *devq = NULL;
struct cam_sim *sim = NULL;
struct cam_path *path = NULL;
int err;
/*
* Establish our interrupt handler.
*/
err = bus_setup_intr(np->device, np->irq_res,
INTR_ENTROPY | INTR_MPSAFE | INTR_TYPE_CAM,
NULL, sym_intr, np, &np->intr);
if (err) {
device_printf(np->device, "bus_setup_intr() failed: %d\n",
err);
goto fail;
}
/*
* Create the device queue for our sym SIM.
*/
devq = cam_simq_alloc(SYM_CONF_MAX_START);
if (!devq)
goto fail;
/*
* Construct our SIM entry.
*/
sim = cam_sim_alloc(sym_action, sym_poll, "sym", np,
device_get_unit(np->device),
&np->mtx, 1, SYM_SETUP_MAX_TAG, devq);
if (!sim)
goto fail;
SYM_LOCK();
if (xpt_bus_register(sim, np->device, 0) != CAM_SUCCESS)
goto fail;
np->sim = sim;
sim = NULL;
if (xpt_create_path(&path, NULL,
cam_sim_path(np->sim), CAM_TARGET_WILDCARD,
CAM_LUN_WILDCARD) != CAM_REQ_CMP) {
goto fail;
}
np->path = path;
/*
* Establish our async notification handler.
*/
- if (xpt_register_async(AC_LOST_DEVICE, sym_async, sim, path) !=
+ if (xpt_register_async(AC_LOST_DEVICE, sym_async, np->sim, path) !=
CAM_REQ_CMP)
goto fail;
/*
* Start the chip now, without resetting the BUS, since
* it seems that this must stay under control of CAM.
* With LVD/SE capable chips and BUS in SE mode, we may
* get a spurious SMBC interrupt.
*/
sym_init (np, 0);
SYM_UNLOCK();
return 1;
fail:
if (sim)
cam_sim_free(sim, FALSE);
if (devq)
cam_simq_free(devq);
SYM_UNLOCK();
sym_cam_free(np);
return 0;
}
/*
* Free everything that deals with CAM.
*/
static void sym_cam_free(hcb_p np)
{
SYM_LOCK_ASSERT(MA_NOTOWNED);
if (np->intr) {
bus_teardown_intr(np->device, np->irq_res, np->intr);
np->intr = NULL;
}
SYM_LOCK();
if (np->sim) {
xpt_bus_deregister(cam_sim_path(np->sim));
cam_sim_free(np->sim, /*free_devq*/ TRUE);
np->sim = NULL;
}
if (np->path) {
xpt_free_path(np->path);
np->path = NULL;
}
SYM_UNLOCK();
}
/*============ OPTIONNAL NVRAM SUPPORT =================*/
/*
* Get host setup from NVRAM.
*/
static void sym_nvram_setup_host (hcb_p np, struct sym_nvram *nvram)
{
#ifdef SYM_CONF_NVRAM_SUPPORT
/*
* Get parity checking, host ID, verbose mode
* and miscellaneous host flags from NVRAM.
*/
switch(nvram->type) {
case SYM_SYMBIOS_NVRAM:
if (!(nvram->data.Symbios.flags & SYMBIOS_PARITY_ENABLE))
np->rv_scntl0 &= ~0x0a;
np->myaddr = nvram->data.Symbios.host_id & 0x0f;
if (nvram->data.Symbios.flags & SYMBIOS_VERBOSE_MSGS)
np->verbose += 1;
if (nvram->data.Symbios.flags1 & SYMBIOS_SCAN_HI_LO)
np->usrflags |= SYM_SCAN_TARGETS_HILO;
if (nvram->data.Symbios.flags2 & SYMBIOS_AVOID_BUS_RESET)
np->usrflags |= SYM_AVOID_BUS_RESET;
break;
case SYM_TEKRAM_NVRAM:
np->myaddr = nvram->data.Tekram.host_id & 0x0f;
break;
default:
break;
}
#endif
}
/*
* Get target setup from NVRAM.
*/
#ifdef SYM_CONF_NVRAM_SUPPORT
static void sym_Symbios_setup_target(hcb_p np,int target, Symbios_nvram *nvram);
static void sym_Tekram_setup_target(hcb_p np,int target, Tekram_nvram *nvram);
#endif
static void
sym_nvram_setup_target (hcb_p np, int target, struct sym_nvram *nvp)
{
#ifdef SYM_CONF_NVRAM_SUPPORT
switch(nvp->type) {
case SYM_SYMBIOS_NVRAM:
sym_Symbios_setup_target (np, target, &nvp->data.Symbios);
break;
case SYM_TEKRAM_NVRAM:
sym_Tekram_setup_target (np, target, &nvp->data.Tekram);
break;
default:
break;
}
#endif
}
#ifdef SYM_CONF_NVRAM_SUPPORT
/*
* Get target set-up from Symbios format NVRAM.
*/
static void
sym_Symbios_setup_target(hcb_p np, int target, Symbios_nvram *nvram)
{
tcb_p tp = &np->target[target];
Symbios_target *tn = &nvram->target[target];
tp->tinfo.user.period = tn->sync_period ? (tn->sync_period + 3) / 4 : 0;
tp->tinfo.user.width = tn->bus_width == 0x10 ? BUS_16_BIT : BUS_8_BIT;
tp->usrtags =
(tn->flags & SYMBIOS_QUEUE_TAGS_ENABLED)? SYM_SETUP_MAX_TAG : 0;
if (!(tn->flags & SYMBIOS_DISCONNECT_ENABLE))
tp->usrflags &= ~SYM_DISC_ENABLED;
if (!(tn->flags & SYMBIOS_SCAN_AT_BOOT_TIME))
tp->usrflags |= SYM_SCAN_BOOT_DISABLED;
if (!(tn->flags & SYMBIOS_SCAN_LUNS))
tp->usrflags |= SYM_SCAN_LUNS_DISABLED;
}
/*
* Get target set-up from Tekram format NVRAM.
*/
static void
sym_Tekram_setup_target(hcb_p np, int target, Tekram_nvram *nvram)
{
tcb_p tp = &np->target[target];
struct Tekram_target *tn = &nvram->target[target];
int i;
if (tn->flags & TEKRAM_SYNC_NEGO) {
i = tn->sync_index & 0xf;
tp->tinfo.user.period = Tekram_sync[i];
}
tp->tinfo.user.width =
(tn->flags & TEKRAM_WIDE_NEGO) ? BUS_16_BIT : BUS_8_BIT;
if (tn->flags & TEKRAM_TAGGED_COMMANDS) {
tp->usrtags = 2 << nvram->max_tags_index;
}
if (tn->flags & TEKRAM_DISCONNECT_ENABLE)
tp->usrflags |= SYM_DISC_ENABLED;
/* If any device does not support parity, we will not use this option */
if (!(tn->flags & TEKRAM_PARITY_CHECK))
np->rv_scntl0 &= ~0x0a; /* SCSI parity checking disabled */
}
#ifdef SYM_CONF_DEBUG_NVRAM
/*
* Dump Symbios format NVRAM for debugging purpose.
*/
static void sym_display_Symbios_nvram(hcb_p np, Symbios_nvram *nvram)
{
int i;
/* display Symbios nvram host data */
printf("%s: HOST ID=%d%s%s%s%s%s%s\n",
sym_name(np), nvram->host_id & 0x0f,
(nvram->flags & SYMBIOS_SCAM_ENABLE) ? " SCAM" :"",
(nvram->flags & SYMBIOS_PARITY_ENABLE) ? " PARITY" :"",
(nvram->flags & SYMBIOS_VERBOSE_MSGS) ? " VERBOSE" :"",
(nvram->flags & SYMBIOS_CHS_MAPPING) ? " CHS_ALT" :"",
(nvram->flags2 & SYMBIOS_AVOID_BUS_RESET)?" NO_RESET" :"",
(nvram->flags1 & SYMBIOS_SCAN_HI_LO) ? " HI_LO" :"");
/* display Symbios nvram drive data */
for (i = 0 ; i < 15 ; i++) {
struct Symbios_target *tn = &nvram->target[i];
printf("%s-%d:%s%s%s%s WIDTH=%d SYNC=%d TMO=%d\n",
sym_name(np), i,
(tn->flags & SYMBIOS_DISCONNECT_ENABLE) ? " DISC" : "",
(tn->flags & SYMBIOS_SCAN_AT_BOOT_TIME) ? " SCAN_BOOT" : "",
(tn->flags & SYMBIOS_SCAN_LUNS) ? " SCAN_LUNS" : "",
(tn->flags & SYMBIOS_QUEUE_TAGS_ENABLED)? " TCQ" : "",
tn->bus_width,
tn->sync_period / 4,
tn->timeout);
}
}
/*
* Dump TEKRAM format NVRAM for debugging purpose.
*/
static const u_char Tekram_boot_delay[7] = {3, 5, 10, 20, 30, 60, 120};
static void sym_display_Tekram_nvram(hcb_p np, Tekram_nvram *nvram)
{
int i, tags, boot_delay;
char *rem;
/* display Tekram nvram host data */
tags = 2 << nvram->max_tags_index;
boot_delay = 0;
if (nvram->boot_delay_index < 6)
boot_delay = Tekram_boot_delay[nvram->boot_delay_index];
switch((nvram->flags & TEKRAM_REMOVABLE_FLAGS) >> 6) {
default:
case 0: rem = ""; break;
case 1: rem = " REMOVABLE=boot device"; break;
case 2: rem = " REMOVABLE=all"; break;
}
printf("%s: HOST ID=%d%s%s%s%s%s%s%s%s%s BOOT DELAY=%d tags=%d\n",
sym_name(np), nvram->host_id & 0x0f,
(nvram->flags1 & SYMBIOS_SCAM_ENABLE) ? " SCAM" :"",
(nvram->flags & TEKRAM_MORE_THAN_2_DRIVES) ? " >2DRIVES" :"",
(nvram->flags & TEKRAM_DRIVES_SUP_1GB) ? " >1GB" :"",
(nvram->flags & TEKRAM_RESET_ON_POWER_ON) ? " RESET" :"",
(nvram->flags & TEKRAM_ACTIVE_NEGATION) ? " ACT_NEG" :"",
(nvram->flags & TEKRAM_IMMEDIATE_SEEK) ? " IMM_SEEK" :"",
(nvram->flags & TEKRAM_SCAN_LUNS) ? " SCAN_LUNS" :"",
(nvram->flags1 & TEKRAM_F2_F6_ENABLED) ? " F2_F6" :"",
rem, boot_delay, tags);
/* display Tekram nvram drive data */
for (i = 0; i <= 15; i++) {
int sync, j;
struct Tekram_target *tn = &nvram->target[i];
j = tn->sync_index & 0xf;
sync = Tekram_sync[j];
printf("%s-%d:%s%s%s%s%s%s PERIOD=%d\n",
sym_name(np), i,
(tn->flags & TEKRAM_PARITY_CHECK) ? " PARITY" : "",
(tn->flags & TEKRAM_SYNC_NEGO) ? " SYNC" : "",
(tn->flags & TEKRAM_DISCONNECT_ENABLE) ? " DISC" : "",
(tn->flags & TEKRAM_START_CMD) ? " START" : "",
(tn->flags & TEKRAM_TAGGED_COMMANDS) ? " TCQ" : "",
(tn->flags & TEKRAM_WIDE_NEGO) ? " WIDE" : "",
sync);
}
}
#endif /* SYM_CONF_DEBUG_NVRAM */
#endif /* SYM_CONF_NVRAM_SUPPORT */
/*
* Try reading Symbios or Tekram NVRAM
*/
#ifdef SYM_CONF_NVRAM_SUPPORT
static int sym_read_Symbios_nvram (hcb_p np, Symbios_nvram *nvram);
static int sym_read_Tekram_nvram (hcb_p np, Tekram_nvram *nvram);
#endif
static int sym_read_nvram(hcb_p np, struct sym_nvram *nvp)
{
#ifdef SYM_CONF_NVRAM_SUPPORT
/*
* Try to read SYMBIOS nvram.
* Try to read TEKRAM nvram if Symbios nvram not found.
*/
if (SYM_SETUP_SYMBIOS_NVRAM &&
!sym_read_Symbios_nvram (np, &nvp->data.Symbios)) {
nvp->type = SYM_SYMBIOS_NVRAM;
#ifdef SYM_CONF_DEBUG_NVRAM
sym_display_Symbios_nvram(np, &nvp->data.Symbios);
#endif
}
else if (SYM_SETUP_TEKRAM_NVRAM &&
!sym_read_Tekram_nvram (np, &nvp->data.Tekram)) {
nvp->type = SYM_TEKRAM_NVRAM;
#ifdef SYM_CONF_DEBUG_NVRAM
sym_display_Tekram_nvram(np, &nvp->data.Tekram);
#endif
}
else
nvp->type = 0;
#else
nvp->type = 0;
#endif
return nvp->type;
}
#ifdef SYM_CONF_NVRAM_SUPPORT
/*
* 24C16 EEPROM reading.
*
* GPOI0 - data in/data out
* GPIO1 - clock
* Symbios NVRAM wiring now also used by Tekram.
*/
#define SET_BIT 0
#define CLR_BIT 1
#define SET_CLK 2
#define CLR_CLK 3
/*
* Set/clear data/clock bit in GPIO0
*/
static void S24C16_set_bit(hcb_p np, u_char write_bit, u_char *gpreg,
int bit_mode)
{
UDELAY (5);
switch (bit_mode){
case SET_BIT:
*gpreg |= write_bit;
break;
case CLR_BIT:
*gpreg &= 0xfe;
break;
case SET_CLK:
*gpreg |= 0x02;
break;
case CLR_CLK:
*gpreg &= 0xfd;
break;
}
OUTB (nc_gpreg, *gpreg);
UDELAY (5);
}
/*
* Send START condition to NVRAM to wake it up.
*/
static void S24C16_start(hcb_p np, u_char *gpreg)
{
S24C16_set_bit(np, 1, gpreg, SET_BIT);
S24C16_set_bit(np, 0, gpreg, SET_CLK);
S24C16_set_bit(np, 0, gpreg, CLR_BIT);
S24C16_set_bit(np, 0, gpreg, CLR_CLK);
}
/*
* Send STOP condition to NVRAM - puts NVRAM to sleep... ZZzzzz!!
*/
static void S24C16_stop(hcb_p np, u_char *gpreg)
{
S24C16_set_bit(np, 0, gpreg, SET_CLK);
S24C16_set_bit(np, 1, gpreg, SET_BIT);
}
/*
* Read or write a bit to the NVRAM,
* read if GPIO0 input else write if GPIO0 output
*/
static void S24C16_do_bit(hcb_p np, u_char *read_bit, u_char write_bit,
u_char *gpreg)
{
S24C16_set_bit(np, write_bit, gpreg, SET_BIT);
S24C16_set_bit(np, 0, gpreg, SET_CLK);
if (read_bit)
*read_bit = INB (nc_gpreg);
S24C16_set_bit(np, 0, gpreg, CLR_CLK);
S24C16_set_bit(np, 0, gpreg, CLR_BIT);
}
/*
* Output an ACK to the NVRAM after reading,
* change GPIO0 to output and when done back to an input
*/
static void S24C16_write_ack(hcb_p np, u_char write_bit, u_char *gpreg,
u_char *gpcntl)
{
OUTB (nc_gpcntl, *gpcntl & 0xfe);
S24C16_do_bit(np, 0, write_bit, gpreg);
OUTB (nc_gpcntl, *gpcntl);
}
/*
* Input an ACK from NVRAM after writing,
* change GPIO0 to input and when done back to an output
*/
static void S24C16_read_ack(hcb_p np, u_char *read_bit, u_char *gpreg,
u_char *gpcntl)
{
OUTB (nc_gpcntl, *gpcntl | 0x01);
S24C16_do_bit(np, read_bit, 1, gpreg);
OUTB (nc_gpcntl, *gpcntl);
}
/*
* WRITE a byte to the NVRAM and then get an ACK to see it was accepted OK,
* GPIO0 must already be set as an output
*/
static void S24C16_write_byte(hcb_p np, u_char *ack_data, u_char write_data,
u_char *gpreg, u_char *gpcntl)
{
int x;
for (x = 0; x < 8; x++)
S24C16_do_bit(np, 0, (write_data >> (7 - x)) & 0x01, gpreg);
S24C16_read_ack(np, ack_data, gpreg, gpcntl);
}
/*
* READ a byte from the NVRAM and then send an ACK to say we have got it,
* GPIO0 must already be set as an input
*/
static void S24C16_read_byte(hcb_p np, u_char *read_data, u_char ack_data,
u_char *gpreg, u_char *gpcntl)
{
int x;
u_char read_bit;
*read_data = 0;
for (x = 0; x < 8; x++) {
S24C16_do_bit(np, &read_bit, 1, gpreg);
*read_data |= ((read_bit & 0x01) << (7 - x));
}
S24C16_write_ack(np, ack_data, gpreg, gpcntl);
}
/*
* Read 'len' bytes starting at 'offset'.
*/
static int sym_read_S24C16_nvram (hcb_p np, int offset, u_char *data, int len)
{
u_char gpcntl, gpreg;
u_char old_gpcntl, old_gpreg;
u_char ack_data;
int retv = 1;
int x;
/* save current state of GPCNTL and GPREG */
old_gpreg = INB (nc_gpreg);
old_gpcntl = INB (nc_gpcntl);
gpcntl = old_gpcntl & 0x1c;
/* set up GPREG & GPCNTL to set GPIO0 and GPIO1 in to known state */
OUTB (nc_gpreg, old_gpreg);
OUTB (nc_gpcntl, gpcntl);
/* this is to set NVRAM into a known state with GPIO0/1 both low */
gpreg = old_gpreg;
S24C16_set_bit(np, 0, &gpreg, CLR_CLK);
S24C16_set_bit(np, 0, &gpreg, CLR_BIT);
/* now set NVRAM inactive with GPIO0/1 both high */
S24C16_stop(np, &gpreg);
/* activate NVRAM */
S24C16_start(np, &gpreg);
/* write device code and random address MSB */
S24C16_write_byte(np, &ack_data,
0xa0 | ((offset >> 7) & 0x0e), &gpreg, &gpcntl);
if (ack_data & 0x01)
goto out;
/* write random address LSB */
S24C16_write_byte(np, &ack_data,
offset & 0xff, &gpreg, &gpcntl);
if (ack_data & 0x01)
goto out;
/* regenerate START state to set up for reading */
S24C16_start(np, &gpreg);
/* rewrite device code and address MSB with read bit set (lsb = 0x01) */
S24C16_write_byte(np, &ack_data,
0xa1 | ((offset >> 7) & 0x0e), &gpreg, &gpcntl);
if (ack_data & 0x01)
goto out;
/* now set up GPIO0 for inputting data */
gpcntl |= 0x01;
OUTB (nc_gpcntl, gpcntl);
/* input all requested data - only part of total NVRAM */
for (x = 0; x < len; x++)
S24C16_read_byte(np, &data[x], (x == (len-1)), &gpreg, &gpcntl);
/* finally put NVRAM back in inactive mode */
gpcntl &= 0xfe;
OUTB (nc_gpcntl, gpcntl);
S24C16_stop(np, &gpreg);
retv = 0;
out:
/* return GPIO0/1 to original states after having accessed NVRAM */
OUTB (nc_gpcntl, old_gpcntl);
OUTB (nc_gpreg, old_gpreg);
return retv;
}
#undef SET_BIT /* 0 */
#undef CLR_BIT /* 1 */
#undef SET_CLK /* 2 */
#undef CLR_CLK /* 3 */
/*
* Try reading Symbios NVRAM.
* Return 0 if OK.
*/
static int sym_read_Symbios_nvram (hcb_p np, Symbios_nvram *nvram)
{
static u_char Symbios_trailer[6] = {0xfe, 0xfe, 0, 0, 0, 0};
u_char *data = (u_char *) nvram;
int len = sizeof(*nvram);
u_short csum;
int x;
/* probe the 24c16 and read the SYMBIOS 24c16 area */
if (sym_read_S24C16_nvram (np, SYMBIOS_NVRAM_ADDRESS, data, len))
return 1;
/* check valid NVRAM signature, verify byte count and checksum */
if (nvram->type != 0 ||
bcmp(nvram->trailer, Symbios_trailer, 6) ||
nvram->byte_count != len - 12)
return 1;
/* verify checksum */
for (x = 6, csum = 0; x < len - 6; x++)
csum += data[x];
if (csum != nvram->checksum)
return 1;
return 0;
}
/*
* 93C46 EEPROM reading.
*
* GPOI0 - data in
* GPIO1 - data out
* GPIO2 - clock
* GPIO4 - chip select
*
* Used by Tekram.
*/
/*
* Pulse clock bit in GPIO0
*/
static void T93C46_Clk(hcb_p np, u_char *gpreg)
{
OUTB (nc_gpreg, *gpreg | 0x04);
UDELAY (2);
OUTB (nc_gpreg, *gpreg);
}
/*
* Read bit from NVRAM
*/
static void T93C46_Read_Bit(hcb_p np, u_char *read_bit, u_char *gpreg)
{
UDELAY (2);
T93C46_Clk(np, gpreg);
*read_bit = INB (nc_gpreg);
}
/*
* Write bit to GPIO0
*/
static void T93C46_Write_Bit(hcb_p np, u_char write_bit, u_char *gpreg)
{
if (write_bit & 0x01)
*gpreg |= 0x02;
else
*gpreg &= 0xfd;
*gpreg |= 0x10;
OUTB (nc_gpreg, *gpreg);
UDELAY (2);
T93C46_Clk(np, gpreg);
}
/*
* Send STOP condition to NVRAM - puts NVRAM to sleep... ZZZzzz!!
*/
static void T93C46_Stop(hcb_p np, u_char *gpreg)
{
*gpreg &= 0xef;
OUTB (nc_gpreg, *gpreg);
UDELAY (2);
T93C46_Clk(np, gpreg);
}
/*
* Send read command and address to NVRAM
*/
static void T93C46_Send_Command(hcb_p np, u_short write_data,
u_char *read_bit, u_char *gpreg)
{
int x;
/* send 9 bits, start bit (1), command (2), address (6) */
for (x = 0; x < 9; x++)
T93C46_Write_Bit(np, (u_char) (write_data >> (8 - x)), gpreg);
*read_bit = INB (nc_gpreg);
}
/*
* READ 2 bytes from the NVRAM
*/
static void T93C46_Read_Word(hcb_p np, u_short *nvram_data, u_char *gpreg)
{
int x;
u_char read_bit;
*nvram_data = 0;
for (x = 0; x < 16; x++) {
T93C46_Read_Bit(np, &read_bit, gpreg);
if (read_bit & 0x01)
*nvram_data |= (0x01 << (15 - x));
else
*nvram_data &= ~(0x01 << (15 - x));
}
}
/*
* Read Tekram NvRAM data.
*/
static int T93C46_Read_Data(hcb_p np, u_short *data,int len,u_char *gpreg)
{
u_char read_bit;
int x;
for (x = 0; x < len; x++) {
/* output read command and address */
T93C46_Send_Command(np, 0x180 | x, &read_bit, gpreg);
if (read_bit & 0x01)
return 1; /* Bad */
T93C46_Read_Word(np, &data[x], gpreg);
T93C46_Stop(np, gpreg);
}
return 0;
}
/*
* Try reading 93C46 Tekram NVRAM.
*/
static int sym_read_T93C46_nvram (hcb_p np, Tekram_nvram *nvram)
{
u_char gpcntl, gpreg;
u_char old_gpcntl, old_gpreg;
int retv = 1;
/* save current state of GPCNTL and GPREG */
old_gpreg = INB (nc_gpreg);
old_gpcntl = INB (nc_gpcntl);
/* set up GPREG & GPCNTL to set GPIO0/1/2/4 in to known state, 0 in,
1/2/4 out */
gpreg = old_gpreg & 0xe9;
OUTB (nc_gpreg, gpreg);
gpcntl = (old_gpcntl & 0xe9) | 0x09;
OUTB (nc_gpcntl, gpcntl);
/* input all of NVRAM, 64 words */
retv = T93C46_Read_Data(np, (u_short *) nvram,
sizeof(*nvram) / sizeof(short), &gpreg);
/* return GPIO0/1/2/4 to original states after having accessed NVRAM */
OUTB (nc_gpcntl, old_gpcntl);
OUTB (nc_gpreg, old_gpreg);
return retv;
}
/*
* Try reading Tekram NVRAM.
* Return 0 if OK.
*/
static int sym_read_Tekram_nvram (hcb_p np, Tekram_nvram *nvram)
{
u_char *data = (u_char *) nvram;
int len = sizeof(*nvram);
u_short csum;
int x;
switch (np->device_id) {
case PCI_ID_SYM53C885:
case PCI_ID_SYM53C895:
case PCI_ID_SYM53C896:
x = sym_read_S24C16_nvram(np, TEKRAM_24C16_NVRAM_ADDRESS,
data, len);
break;
case PCI_ID_SYM53C875:
x = sym_read_S24C16_nvram(np, TEKRAM_24C16_NVRAM_ADDRESS,
data, len);
if (!x)
break;
default:
x = sym_read_T93C46_nvram(np, nvram);
break;
}
if (x)
return 1;
/* verify checksum */
for (x = 0, csum = 0; x < len - 1; x += 2)
csum += data[x] + (data[x+1] << 8);
if (csum != 0x1234)
return 1;
return 0;
}
#endif /* SYM_CONF_NVRAM_SUPPORT */
Index: user/ngie/bsnmp_cleanup/sys/modules/cxgbe/t4_firmware/Makefile
===================================================================
--- user/ngie/bsnmp_cleanup/sys/modules/cxgbe/t4_firmware/Makefile (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/modules/cxgbe/t4_firmware/Makefile (revision 299697)
@@ -1,27 +1,27 @@
#
# $FreeBSD$
#
T4FW= ${.CURDIR}/../../../dev/cxgbe/firmware
.PATH: ${T4FW}
KMOD= t4fw_cfg
FIRMWS= ${KMOD}.txt:${KMOD}:1.0.0.0
# You can have additional configuration files in the ${T4FW} directory.
# t4fw_cfg_<name>.txt
CFG_FILES != cd ${T4FW} && echo ${KMOD}_*.txt
.for F in ${CFG_FILES}
.if exists(${F})
FIRMWS+= ${F}:${F:C/.txt//}:1.0.0.0
.endif
.endfor
-T4FW_VER= 1.15.28.0
+T4FW_VER= 1.15.37.0
FIRMWS+= t4fw.fw:t4fw:${T4FW_VER}
CLEANFILES+= t4fw.fw
t4fw.fw: t4fw-${T4FW_VER}.bin.uu
uudecode -o ${.TARGET} ${.ALLSRC}
.include <bsd.kmod.mk>
Index: user/ngie/bsnmp_cleanup/sys/modules/cxgbe/t5_firmware/Makefile
===================================================================
--- user/ngie/bsnmp_cleanup/sys/modules/cxgbe/t5_firmware/Makefile (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/modules/cxgbe/t5_firmware/Makefile (revision 299697)
@@ -1,27 +1,27 @@
#
# $FreeBSD$
#
T5FW= ${.CURDIR}/../../../dev/cxgbe/firmware
.PATH: ${T5FW}
KMOD= t5fw_cfg
FIRMWS= ${KMOD}.txt:${KMOD}:1.0.0.0
# You can have additional configuration files in the ${T5FW} directory.
# t5fw_cfg_<name>.txt
CFG_FILES != cd ${T5FW} && echo ${KMOD}_*.txt
.for F in ${CFG_FILES}
.if exists(${F})
FIRMWS+= ${F}:${F:C/.txt//}:1.0.0.0
.endif
.endfor
-T5FW_VER= 1.15.28.0
+T5FW_VER= 1.15.37.0
FIRMWS+= t5fw.fw:t5fw:${T5FW_VER}
CLEANFILES+= t5fw.fw
t5fw.fw: t5fw-${T5FW_VER}.bin.uu
uudecode -o ${.TARGET} ${.ALLSRC}
.include <bsd.kmod.mk>
Index: user/ngie/bsnmp_cleanup/sys/riscv/riscv/pmap.c
===================================================================
--- user/ngie/bsnmp_cleanup/sys/riscv/riscv/pmap.c (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/riscv/riscv/pmap.c (revision 299697)
@@ -1,3279 +1,3278 @@
/*-
* Copyright (c) 1991 Regents of the University of California.
* All rights reserved.
* Copyright (c) 1994 John S. Dyson
* All rights reserved.
* Copyright (c) 1994 David Greenman
* All rights reserved.
* Copyright (c) 2003 Peter Wemm
* All rights reserved.
* Copyright (c) 2005-2010 Alan L. Cox <alc@cs.rice.edu>
* All rights reserved.
* Copyright (c) 2014 Andrew Turner
* All rights reserved.
* Copyright (c) 2014 The FreeBSD Foundation
* All rights reserved.
* Copyright (c) 2015-2016 Ruslan Bukin <br@bsdpad.com>
* All rights reserved.
*
* This code is derived from software contributed to Berkeley by
* the Systems Programming Group of the University of Utah Computer
* Science Department and William Jolitz of UUNET Technologies Inc.
*
* Portions of this software were developed by Andrew Turner under
* sponsorship from The FreeBSD Foundation.
*
* Portions of this software were 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.
*
* Portions of this software were developed by the University of Cambridge
* Computer Laboratory as part of the CTSRD Project, with support from the
* UK Higher Education Innovation Fund (HEIF).
*
* 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.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
*
* from: @(#)pmap.c 7.7 (Berkeley) 5/12/91
*/
/*-
* Copyright (c) 2003 Networks Associates Technology, Inc.
* All rights reserved.
*
* This software was developed for the FreeBSD Project by Jake Burkholder,
* Safeport Network Services, and Network Associates Laboratories, the
* Security Research Division of Network Associates, Inc. under
* DARPA/SPAWAR contract N66001-01-C-8035 ("CBOSS"), as part of the DARPA
* CHATS research program.
*
* 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$");
/*
* Manages physical address maps.
*
* Since the information managed by this module is
* also stored by the logical address mapping module,
* this module may throw away valid virtual-to-physical
* mappings at almost any time. However, invalidations
* of virtual-to-physical mappings must be done as
* requested.
*
* In order to cope with hardware architectures which
* make virtual-to-physical map invalidates expensive,
* this module may delay invalidate or reduced protection
* operations until such time as they are actually
* necessary. This module is given full information as
* to which processors are currently using which maps,
* and to when physical maps must be made correct.
*/
#include <sys/param.h>
#include <sys/bus.h>
#include <sys/systm.h>
#include <sys/kernel.h>
#include <sys/ktr.h>
#include <sys/lock.h>
#include <sys/malloc.h>
#include <sys/mman.h>
#include <sys/msgbuf.h>
#include <sys/mutex.h>
#include <sys/proc.h>
#include <sys/rwlock.h>
#include <sys/sx.h>
#include <sys/vmem.h>
#include <sys/vmmeter.h>
#include <sys/sched.h>
#include <sys/sysctl.h>
-#include <sys/_unrhdr.h>
#include <sys/smp.h>
#include <vm/vm.h>
#include <vm/vm_param.h>
#include <vm/vm_kern.h>
#include <vm/vm_page.h>
#include <vm/vm_map.h>
#include <vm/vm_object.h>
#include <vm/vm_extern.h>
#include <vm/vm_pageout.h>
#include <vm/vm_pager.h>
#include <vm/vm_radix.h>
#include <vm/vm_reserv.h>
#include <vm/uma.h>
#include <machine/machdep.h>
#include <machine/md_var.h>
#include <machine/pcb.h>
#define NPDEPG (PAGE_SIZE/(sizeof (pd_entry_t)))
#define NUPDE (NPDEPG * NPDEPG)
#define NUSERPGTBLS (NUPDE + NPDEPG)
#if !defined(DIAGNOSTIC)
#ifdef __GNUC_GNU_INLINE__
#define PMAP_INLINE __attribute__((__gnu_inline__)) inline
#else
#define PMAP_INLINE extern inline
#endif
#else
#define PMAP_INLINE
#endif
#ifdef PV_STATS
#define PV_STAT(x) do { x ; } while (0)
#else
#define PV_STAT(x) do { } while (0)
#endif
#define pmap_l2_pindex(v) ((v) >> L2_SHIFT)
#define NPV_LIST_LOCKS MAXCPU
#define PHYS_TO_PV_LIST_LOCK(pa) \
(&pv_list_locks[pa_index(pa) % NPV_LIST_LOCKS])
#define CHANGE_PV_LIST_LOCK_TO_PHYS(lockp, pa) do { \
struct rwlock **_lockp = (lockp); \
struct rwlock *_new_lock; \
\
_new_lock = PHYS_TO_PV_LIST_LOCK(pa); \
if (_new_lock != *_lockp) { \
if (*_lockp != NULL) \
rw_wunlock(*_lockp); \
*_lockp = _new_lock; \
rw_wlock(*_lockp); \
} \
} while (0)
#define CHANGE_PV_LIST_LOCK_TO_VM_PAGE(lockp, m) \
CHANGE_PV_LIST_LOCK_TO_PHYS(lockp, VM_PAGE_TO_PHYS(m))
#define RELEASE_PV_LIST_LOCK(lockp) do { \
struct rwlock **_lockp = (lockp); \
\
if (*_lockp != NULL) { \
rw_wunlock(*_lockp); \
*_lockp = NULL; \
} \
} while (0)
#define VM_PAGE_TO_PV_LIST_LOCK(m) \
PHYS_TO_PV_LIST_LOCK(VM_PAGE_TO_PHYS(m))
/* The list of all the user pmaps */
LIST_HEAD(pmaplist, pmap);
static struct pmaplist allpmaps;
static MALLOC_DEFINE(M_VMPMAP, "pmap", "PMAP L1");
struct pmap kernel_pmap_store;
vm_offset_t virtual_avail; /* VA of first avail page (after kernel bss) */
vm_offset_t virtual_end; /* VA of last avail page (end of kernel AS) */
vm_offset_t kernel_vm_end = 0;
struct msgbuf *msgbufp = NULL;
static struct rwlock_padalign pvh_global_lock;
/*
* Data for the pv entry allocation mechanism
*/
static TAILQ_HEAD(pch, pv_chunk) pv_chunks = TAILQ_HEAD_INITIALIZER(pv_chunks);
static struct mtx pv_chunks_mutex;
static struct rwlock pv_list_locks[NPV_LIST_LOCKS];
static void free_pv_chunk(struct pv_chunk *pc);
static void free_pv_entry(pmap_t pmap, pv_entry_t pv);
static pv_entry_t get_pv_entry(pmap_t pmap, struct rwlock **lockp);
static vm_page_t reclaim_pv_chunk(pmap_t locked_pmap, struct rwlock **lockp);
static void pmap_pvh_free(struct md_page *pvh, pmap_t pmap, vm_offset_t va);
static pv_entry_t pmap_pvh_remove(struct md_page *pvh, pmap_t pmap,
vm_offset_t va);
static vm_page_t pmap_enter_quick_locked(pmap_t pmap, vm_offset_t va,
vm_page_t m, vm_prot_t prot, vm_page_t mpte, struct rwlock **lockp);
static int pmap_remove_l3(pmap_t pmap, pt_entry_t *l3, vm_offset_t sva,
pd_entry_t ptepde, struct spglist *free, struct rwlock **lockp);
static boolean_t pmap_try_insert_pv_entry(pmap_t pmap, vm_offset_t va,
vm_page_t m, struct rwlock **lockp);
static vm_page_t _pmap_alloc_l3(pmap_t pmap, vm_pindex_t ptepindex,
struct rwlock **lockp);
static void _pmap_unwire_l3(pmap_t pmap, vm_offset_t va, vm_page_t m,
struct spglist *free);
static int pmap_unuse_l3(pmap_t, vm_offset_t, pd_entry_t, struct spglist *);
/*
* These load the old table data and store the new value.
* They need to be atomic as the System MMU may write to the table at
* the same time as the CPU.
*/
#define pmap_load_store(table, entry) atomic_swap_64(table, entry)
#define pmap_set(table, mask) atomic_set_64(table, mask)
#define pmap_load_clear(table) atomic_swap_64(table, 0)
#define pmap_load(table) (*table)
/********************/
/* Inline functions */
/********************/
static __inline void
pagecopy(void *s, void *d)
{
memcpy(d, s, PAGE_SIZE);
}
static __inline void
pagezero(void *p)
{
bzero(p, PAGE_SIZE);
}
#define pmap_l1_index(va) (((va) >> L1_SHIFT) & Ln_ADDR_MASK)
#define pmap_l2_index(va) (((va) >> L2_SHIFT) & Ln_ADDR_MASK)
#define pmap_l3_index(va) (((va) >> L3_SHIFT) & Ln_ADDR_MASK)
#define PTE_TO_PHYS(pte) ((pte >> PTE_PPN0_S) * PAGE_SIZE)
static __inline pd_entry_t *
pmap_l1(pmap_t pmap, vm_offset_t va)
{
return (&pmap->pm_l1[pmap_l1_index(va)]);
}
static __inline pd_entry_t *
pmap_l1_to_l2(pd_entry_t *l1, vm_offset_t va)
{
vm_paddr_t phys;
pd_entry_t *l2;
phys = PTE_TO_PHYS(pmap_load(l1));
l2 = (pd_entry_t *)PHYS_TO_DMAP(phys);
return (&l2[pmap_l2_index(va)]);
}
static __inline pd_entry_t *
pmap_l2(pmap_t pmap, vm_offset_t va)
{
pd_entry_t *l1;
l1 = pmap_l1(pmap, va);
if (l1 == NULL)
return (NULL);
if ((pmap_load(l1) & PTE_VALID) == 0)
return (NULL);
if ((pmap_load(l1) & PTE_TYPE_M) != (PTE_TYPE_PTR << PTE_TYPE_S))
return (NULL);
return (pmap_l1_to_l2(l1, va));
}
static __inline pt_entry_t *
pmap_l2_to_l3(pd_entry_t *l2, vm_offset_t va)
{
vm_paddr_t phys;
pt_entry_t *l3;
phys = PTE_TO_PHYS(pmap_load(l2));
l3 = (pd_entry_t *)PHYS_TO_DMAP(phys);
return (&l3[pmap_l3_index(va)]);
}
static __inline pt_entry_t *
pmap_l3(pmap_t pmap, vm_offset_t va)
{
pd_entry_t *l2;
l2 = pmap_l2(pmap, va);
if (l2 == NULL)
return (NULL);
if ((pmap_load(l2) & PTE_VALID) == 0)
return (NULL);
if ((pmap_load(l2) & PTE_TYPE_M) != (PTE_TYPE_PTR << PTE_TYPE_S))
return (NULL);
return (pmap_l2_to_l3(l2, va));
}
static __inline int
pmap_is_write(pt_entry_t entry)
{
if (entry & (1 << PTE_TYPE_S))
return (1);
return (0);
}
static __inline int
pmap_is_current(pmap_t pmap)
{
return ((pmap == pmap_kernel()) ||
(pmap == curthread->td_proc->p_vmspace->vm_map.pmap));
}
static __inline int
pmap_l3_valid(pt_entry_t l3)
{
return (l3 & PTE_VALID);
}
static __inline int
pmap_l3_valid_cacheable(pt_entry_t l3)
{
/* TODO */
return (0);
}
#define PTE_SYNC(pte) cpu_dcache_wb_range((vm_offset_t)pte, sizeof(*pte))
/* Checks if the page is dirty. */
static inline int
pmap_page_dirty(pt_entry_t pte)
{
return (pte & PTE_DIRTY);
}
static __inline void
pmap_resident_count_inc(pmap_t pmap, int count)
{
PMAP_LOCK_ASSERT(pmap, MA_OWNED);
pmap->pm_stats.resident_count += count;
}
static __inline void
pmap_resident_count_dec(pmap_t pmap, int count)
{
PMAP_LOCK_ASSERT(pmap, MA_OWNED);
KASSERT(pmap->pm_stats.resident_count >= count,
("pmap %p resident count underflow %ld %d", pmap,
pmap->pm_stats.resident_count, count));
pmap->pm_stats.resident_count -= count;
}
static void
pmap_distribute_l1(struct pmap *pmap, vm_pindex_t l1index,
pt_entry_t entry)
{
struct pmap *user_pmap;
pd_entry_t *l1;
/* Distribute new kernel L1 entry to all the user pmaps */
if (pmap != kernel_pmap)
return;
LIST_FOREACH(user_pmap, &allpmaps, pm_list) {
l1 = &user_pmap->pm_l1[l1index];
if (entry)
pmap_load_store(l1, entry);
else
pmap_load_clear(l1);
}
}
static pt_entry_t *
pmap_early_page_idx(vm_offset_t l1pt, vm_offset_t va, u_int *l1_slot,
u_int *l2_slot)
{
pt_entry_t *l2;
pd_entry_t *l1;
l1 = (pd_entry_t *)l1pt;
*l1_slot = (va >> L1_SHIFT) & Ln_ADDR_MASK;
/* Check locore has used a table L1 map */
KASSERT((l1[*l1_slot] & PTE_TYPE_M) == (PTE_TYPE_PTR << PTE_TYPE_S),
("Invalid bootstrap L1 table"));
/* Find the address of the L2 table */
l2 = (pt_entry_t *)init_pt_va;
*l2_slot = pmap_l2_index(va);
return (l2);
}
static vm_paddr_t
pmap_early_vtophys(vm_offset_t l1pt, vm_offset_t va)
{
u_int l1_slot, l2_slot;
pt_entry_t *l2;
u_int ret;
l2 = pmap_early_page_idx(l1pt, va, &l1_slot, &l2_slot);
/* L2 is superpages */
ret = (l2[l2_slot] >> PTE_PPN1_S) << L2_SHIFT;
ret += (va & L2_OFFSET);
return (ret);
}
static void
pmap_bootstrap_dmap(vm_offset_t l1pt, vm_paddr_t kernstart)
{
vm_offset_t va;
vm_paddr_t pa;
pd_entry_t *l1;
u_int l1_slot;
pt_entry_t entry;
pn_t pn;
pa = kernstart & ~L1_OFFSET;
va = DMAP_MIN_ADDRESS;
l1 = (pd_entry_t *)l1pt;
l1_slot = pmap_l1_index(DMAP_MIN_ADDRESS);
for (; va < DMAP_MAX_ADDRESS;
pa += L1_SIZE, va += L1_SIZE, l1_slot++) {
KASSERT(l1_slot < Ln_ENTRIES, ("Invalid L1 index"));
/* superpages */
pn = (pa / PAGE_SIZE);
entry = (PTE_VALID | (PTE_TYPE_SRWX << PTE_TYPE_S));
entry |= (pn << PTE_PPN0_S);
pmap_load_store(&l1[l1_slot], entry);
}
cpu_dcache_wb_range((vm_offset_t)l1, PAGE_SIZE);
cpu_tlb_flushID();
}
static vm_offset_t
pmap_bootstrap_l3(vm_offset_t l1pt, vm_offset_t va, vm_offset_t l3_start)
{
vm_offset_t l2pt, l3pt;
pt_entry_t entry;
pd_entry_t *l2;
vm_paddr_t pa;
u_int l2_slot;
pn_t pn;
KASSERT((va & L2_OFFSET) == 0, ("Invalid virtual address"));
l2 = pmap_l2(kernel_pmap, va);
l2 = (pd_entry_t *)((uintptr_t)l2 & ~(PAGE_SIZE - 1));
l2pt = (vm_offset_t)l2;
l2_slot = pmap_l2_index(va);
l3pt = l3_start;
for (; va < VM_MAX_KERNEL_ADDRESS; l2_slot++, va += L2_SIZE) {
KASSERT(l2_slot < Ln_ENTRIES, ("Invalid L2 index"));
pa = pmap_early_vtophys(l1pt, l3pt);
pn = (pa / PAGE_SIZE);
entry = (PTE_VALID | (PTE_TYPE_PTR << PTE_TYPE_S));
entry |= (pn << PTE_PPN0_S);
pmap_load_store(&l2[l2_slot], entry);
l3pt += PAGE_SIZE;
}
/* Clean the L2 page table */
memset((void *)l3_start, 0, l3pt - l3_start);
cpu_dcache_wb_range(l3_start, l3pt - l3_start);
cpu_dcache_wb_range((vm_offset_t)l2, PAGE_SIZE);
return l3pt;
}
/*
* Bootstrap the system enough to run with virtual memory.
*/
void
pmap_bootstrap(vm_offset_t l1pt, vm_paddr_t kernstart, vm_size_t kernlen)
{
u_int l1_slot, l2_slot, avail_slot, map_slot, used_map_slot;
uint64_t kern_delta;
pt_entry_t *l2;
vm_offset_t va, freemempos;
vm_offset_t dpcpu, msgbufpv;
vm_paddr_t pa, min_pa;
int i;
kern_delta = KERNBASE - kernstart;
physmem = 0;
printf("pmap_bootstrap %lx %lx %lx\n", l1pt, kernstart, kernlen);
printf("%lx\n", l1pt);
printf("%lx\n", (KERNBASE >> L1_SHIFT) & Ln_ADDR_MASK);
/* Set this early so we can use the pagetable walking functions */
kernel_pmap_store.pm_l1 = (pd_entry_t *)l1pt;
PMAP_LOCK_INIT(kernel_pmap);
/*
* Initialize the global pv list lock.
*/
rw_init(&pvh_global_lock, "pmap pv global");
LIST_INIT(&allpmaps);
/* Assume the address we were loaded to is a valid physical address */
min_pa = KERNBASE - kern_delta;
/*
* Find the minimum physical address. physmap is sorted,
* but may contain empty ranges.
*/
for (i = 0; i < (physmap_idx * 2); i += 2) {
if (physmap[i] == physmap[i + 1])
continue;
if (physmap[i] <= min_pa)
min_pa = physmap[i];
break;
}
/* Create a direct map region early so we can use it for pa -> va */
pmap_bootstrap_dmap(l1pt, min_pa);
va = KERNBASE;
pa = KERNBASE - kern_delta;
/*
* Start to initialize phys_avail by copying from physmap
* up to the physical address KERNBASE points at.
*/
map_slot = avail_slot = 0;
for (; map_slot < (physmap_idx * 2); map_slot += 2) {
if (physmap[map_slot] == physmap[map_slot + 1])
continue;
phys_avail[avail_slot] = physmap[map_slot];
phys_avail[avail_slot + 1] = physmap[map_slot + 1];
physmem += (phys_avail[avail_slot + 1] -
phys_avail[avail_slot]) >> PAGE_SHIFT;
avail_slot += 2;
}
/* Add the memory before the kernel */
if (physmap[avail_slot] < pa) {
phys_avail[avail_slot] = physmap[map_slot];
phys_avail[avail_slot + 1] = pa;
physmem += (phys_avail[avail_slot + 1] -
phys_avail[avail_slot]) >> PAGE_SHIFT;
avail_slot += 2;
}
used_map_slot = map_slot;
/*
* Read the page table to find out what is already mapped.
* This assumes we have mapped a block of memory from KERNBASE
* using a single L1 entry.
*/
l2 = pmap_early_page_idx(l1pt, KERNBASE, &l1_slot, &l2_slot);
/* Sanity check the index, KERNBASE should be the first VA */
KASSERT(l2_slot == 0, ("The L2 index is non-zero"));
/* Find how many pages we have mapped */
for (; l2_slot < Ln_ENTRIES; l2_slot++) {
if ((l2[l2_slot] & PTE_VALID) == 0)
break;
/* Check locore used L2 superpages */
KASSERT((l2[l2_slot] & PTE_TYPE_M) != (PTE_TYPE_PTR << PTE_TYPE_S),
("Invalid bootstrap L2 table"));
va += L2_SIZE;
pa += L2_SIZE;
}
va = roundup2(va, L2_SIZE);
freemempos = KERNBASE + kernlen;
freemempos = roundup2(freemempos, PAGE_SIZE);
/* Create the l3 tables for the early devmap */
freemempos = pmap_bootstrap_l3(l1pt,
VM_MAX_KERNEL_ADDRESS - L2_SIZE, freemempos);
cpu_tlb_flushID();
#define alloc_pages(var, np) \
(var) = freemempos; \
freemempos += (np * PAGE_SIZE); \
memset((char *)(var), 0, ((np) * PAGE_SIZE));
/* Allocate dynamic per-cpu area. */
alloc_pages(dpcpu, DPCPU_SIZE / PAGE_SIZE);
dpcpu_init((void *)dpcpu, 0);
/* Allocate memory for the msgbuf, e.g. for /sbin/dmesg */
alloc_pages(msgbufpv, round_page(msgbufsize) / PAGE_SIZE);
msgbufp = (void *)msgbufpv;
virtual_avail = roundup2(freemempos, L2_SIZE);
virtual_end = VM_MAX_KERNEL_ADDRESS - L2_SIZE;
kernel_vm_end = virtual_avail;
pa = pmap_early_vtophys(l1pt, freemempos);
/* Finish initialising physmap */
map_slot = used_map_slot;
for (; avail_slot < (PHYS_AVAIL_SIZE - 2) &&
map_slot < (physmap_idx * 2); map_slot += 2) {
if (physmap[map_slot] == physmap[map_slot + 1])
continue;
/* Have we used the current range? */
if (physmap[map_slot + 1] <= pa)
continue;
/* Do we need to split the entry? */
if (physmap[map_slot] < pa) {
phys_avail[avail_slot] = pa;
phys_avail[avail_slot + 1] = physmap[map_slot + 1];
} else {
phys_avail[avail_slot] = physmap[map_slot];
phys_avail[avail_slot + 1] = physmap[map_slot + 1];
}
physmem += (phys_avail[avail_slot + 1] -
phys_avail[avail_slot]) >> PAGE_SHIFT;
avail_slot += 2;
}
phys_avail[avail_slot] = 0;
phys_avail[avail_slot + 1] = 0;
/*
* Maxmem isn't the "maximum memory", it's one larger than the
* highest page of the physical address space. It should be
* called something like "Maxphyspage".
*/
Maxmem = atop(phys_avail[avail_slot - 1]);
cpu_tlb_flushID();
}
/*
* Initialize a vm_page's machine-dependent fields.
*/
void
pmap_page_init(vm_page_t m)
{
TAILQ_INIT(&m->md.pv_list);
m->md.pv_memattr = VM_MEMATTR_WRITE_BACK;
}
/*
* Initialize the pmap module.
* Called by vm_init, to initialize any structures that the pmap
* system needs to map virtual memory.
*/
void
pmap_init(void)
{
int i;
/*
* Initialize the pv chunk list mutex.
*/
mtx_init(&pv_chunks_mutex, "pmap pv chunk list", NULL, MTX_DEF);
/*
* Initialize the pool of pv list locks.
*/
for (i = 0; i < NPV_LIST_LOCKS; i++)
rw_init(&pv_list_locks[i], "pmap pv list");
}
/*
* Normal, non-SMP, invalidation functions.
* We inline these within pmap.c for speed.
*/
PMAP_INLINE void
pmap_invalidate_page(pmap_t pmap, vm_offset_t va)
{
/* TODO */
sched_pin();
__asm __volatile("sfence.vm");
sched_unpin();
}
PMAP_INLINE void
pmap_invalidate_range(pmap_t pmap, vm_offset_t sva, vm_offset_t eva)
{
/* TODO */
sched_pin();
__asm __volatile("sfence.vm");
sched_unpin();
}
PMAP_INLINE void
pmap_invalidate_all(pmap_t pmap)
{
/* TODO */
sched_pin();
__asm __volatile("sfence.vm");
sched_unpin();
}
/*
* Routine: pmap_extract
* Function:
* Extract the physical page address associated
* with the given map/virtual_address pair.
*/
vm_paddr_t
pmap_extract(pmap_t pmap, vm_offset_t va)
{
pd_entry_t *l2p, l2;
pt_entry_t *l3p, l3;
vm_paddr_t pa;
pa = 0;
PMAP_LOCK(pmap);
/*
* Start with the l2 tabel. We are unable to allocate
* pages in the l1 table.
*/
l2p = pmap_l2(pmap, va);
if (l2p != NULL) {
l2 = pmap_load(l2p);
if ((l2 & PTE_TYPE_M) == (PTE_TYPE_PTR << PTE_TYPE_S)) {
l3p = pmap_l2_to_l3(l2p, va);
if (l3p != NULL) {
l3 = pmap_load(l3p);
pa = PTE_TO_PHYS(l3);
pa |= (va & L3_OFFSET);
}
} else {
/* L2 is superpages */
pa = (l2 >> PTE_PPN1_S) << L2_SHIFT;
pa |= (va & L2_OFFSET);
}
}
PMAP_UNLOCK(pmap);
return (pa);
}
/*
* Routine: pmap_extract_and_hold
* Function:
* Atomically extract and hold the physical page
* with the given pmap and virtual address pair
* if that mapping permits the given protection.
*/
vm_page_t
pmap_extract_and_hold(pmap_t pmap, vm_offset_t va, vm_prot_t prot)
{
pt_entry_t *l3p, l3;
vm_paddr_t phys;
vm_paddr_t pa;
vm_page_t m;
pa = 0;
m = NULL;
PMAP_LOCK(pmap);
retry:
l3p = pmap_l3(pmap, va);
if (l3p != NULL && (l3 = pmap_load(l3p)) != 0) {
if ((pmap_is_write(l3)) || ((prot & VM_PROT_WRITE) == 0)) {
phys = PTE_TO_PHYS(l3);
if (vm_page_pa_tryrelock(pmap, phys, &pa))
goto retry;
m = PHYS_TO_VM_PAGE(phys);
vm_page_hold(m);
}
}
PA_UNLOCK_COND(pa);
PMAP_UNLOCK(pmap);
return (m);
}
vm_paddr_t
pmap_kextract(vm_offset_t va)
{
pd_entry_t *l2;
pt_entry_t *l3;
vm_paddr_t pa;
if (va >= DMAP_MIN_ADDRESS && va < DMAP_MAX_ADDRESS) {
pa = DMAP_TO_PHYS(va);
} else {
l2 = pmap_l2(kernel_pmap, va);
if (l2 == NULL)
panic("pmap_kextract: No l2");
if ((pmap_load(l2) & PTE_TYPE_M) != (PTE_TYPE_PTR << PTE_TYPE_S)) {
/* superpages */
pa = (pmap_load(l2) >> PTE_PPN1_S) << L2_SHIFT;
pa |= (va & L2_OFFSET);
return (pa);
}
l3 = pmap_l2_to_l3(l2, va);
if (l3 == NULL)
panic("pmap_kextract: No l3...");
pa = PTE_TO_PHYS(pmap_load(l3));
pa |= (va & PAGE_MASK);
}
return (pa);
}
/***************************************************
* Low level mapping routines.....
***************************************************/
void
pmap_kenter_device(vm_offset_t sva, vm_size_t size, vm_paddr_t pa)
{
pt_entry_t entry;
pt_entry_t *l3;
vm_offset_t va;
pn_t pn;
KASSERT((pa & L3_OFFSET) == 0,
("pmap_kenter_device: Invalid physical address"));
KASSERT((sva & L3_OFFSET) == 0,
("pmap_kenter_device: Invalid virtual address"));
KASSERT((size & PAGE_MASK) == 0,
("pmap_kenter_device: Mapping is not page-sized"));
va = sva;
while (size != 0) {
l3 = pmap_l3(kernel_pmap, va);
KASSERT(l3 != NULL, ("Invalid page table, va: 0x%lx", va));
pn = (pa / PAGE_SIZE);
entry = (PTE_VALID | (PTE_TYPE_SRWX << PTE_TYPE_S));
entry |= (pn << PTE_PPN0_S);
pmap_load_store(l3, entry);
PTE_SYNC(l3);
va += PAGE_SIZE;
pa += PAGE_SIZE;
size -= PAGE_SIZE;
}
pmap_invalidate_range(kernel_pmap, sva, va);
}
/*
* Remove a page from the kernel pagetables.
* Note: not SMP coherent.
*/
PMAP_INLINE void
pmap_kremove(vm_offset_t va)
{
pt_entry_t *l3;
l3 = pmap_l3(kernel_pmap, va);
KASSERT(l3 != NULL, ("pmap_kremove: Invalid address"));
if (pmap_l3_valid_cacheable(pmap_load(l3)))
cpu_dcache_wb_range(va, L3_SIZE);
pmap_load_clear(l3);
PTE_SYNC(l3);
pmap_invalidate_page(kernel_pmap, va);
}
void
pmap_kremove_device(vm_offset_t sva, vm_size_t size)
{
pt_entry_t *l3;
vm_offset_t va;
KASSERT((sva & L3_OFFSET) == 0,
("pmap_kremove_device: Invalid virtual address"));
KASSERT((size & PAGE_MASK) == 0,
("pmap_kremove_device: Mapping is not page-sized"));
va = sva;
while (size != 0) {
l3 = pmap_l3(kernel_pmap, va);
KASSERT(l3 != NULL, ("Invalid page table, va: 0x%lx", va));
pmap_load_clear(l3);
PTE_SYNC(l3);
va += PAGE_SIZE;
size -= PAGE_SIZE;
}
pmap_invalidate_range(kernel_pmap, sva, va);
}
/*
* Used to map a range of physical addresses into kernel
* virtual address space.
*
* The value passed in '*virt' is a suggested virtual address for
* the mapping. Architectures which can support a direct-mapped
* physical to virtual region can return the appropriate address
* within that region, leaving '*virt' unchanged. Other
* architectures should map the pages starting at '*virt' and
* update '*virt' with the first usable address after the mapped
* region.
*/
vm_offset_t
pmap_map(vm_offset_t *virt, vm_paddr_t start, vm_paddr_t end, int prot)
{
return PHYS_TO_DMAP(start);
}
/*
* Add a list of wired pages to the kva
* this routine is only used for temporary
* kernel mappings that do not need to have
* page modification or references recorded.
* Note that old mappings are simply written
* over. The page *must* be wired.
* Note: SMP coherent. Uses a ranged shootdown IPI.
*/
void
pmap_qenter(vm_offset_t sva, vm_page_t *ma, int count)
{
pt_entry_t *l3, pa;
vm_offset_t va;
vm_page_t m;
pt_entry_t entry;
pn_t pn;
int i;
va = sva;
for (i = 0; i < count; i++) {
m = ma[i];
pa = VM_PAGE_TO_PHYS(m);
pn = (pa / PAGE_SIZE);
l3 = pmap_l3(kernel_pmap, va);
entry = (PTE_VALID | (PTE_TYPE_SRWX << PTE_TYPE_S));
entry |= (pn << PTE_PPN0_S);
pmap_load_store(l3, entry);
PTE_SYNC(l3);
va += L3_SIZE;
}
pmap_invalidate_range(kernel_pmap, sva, va);
}
/*
* This routine tears out page mappings from the
* kernel -- it is meant only for temporary mappings.
* Note: SMP coherent. Uses a ranged shootdown IPI.
*/
void
pmap_qremove(vm_offset_t sva, int count)
{
pt_entry_t *l3;
vm_offset_t va;
KASSERT(sva >= VM_MIN_KERNEL_ADDRESS, ("usermode va %lx", sva));
va = sva;
while (count-- > 0) {
l3 = pmap_l3(kernel_pmap, va);
KASSERT(l3 != NULL, ("pmap_kremove: Invalid address"));
if (pmap_l3_valid_cacheable(pmap_load(l3)))
cpu_dcache_wb_range(va, L3_SIZE);
pmap_load_clear(l3);
PTE_SYNC(l3);
va += PAGE_SIZE;
}
pmap_invalidate_range(kernel_pmap, sva, va);
}
/***************************************************
* Page table page management routines.....
***************************************************/
static __inline void
pmap_free_zero_pages(struct spglist *free)
{
vm_page_t m;
while ((m = SLIST_FIRST(free)) != NULL) {
SLIST_REMOVE_HEAD(free, plinks.s.ss);
/* Preserve the page's PG_ZERO setting. */
vm_page_free_toq(m);
}
}
/*
* Schedule the specified unused page table page to be freed. Specifically,
* add the page to the specified list of pages that will be released to the
* physical memory manager after the TLB has been updated.
*/
static __inline void
pmap_add_delayed_free_list(vm_page_t m, struct spglist *free,
boolean_t set_PG_ZERO)
{
if (set_PG_ZERO)
m->flags |= PG_ZERO;
else
m->flags &= ~PG_ZERO;
SLIST_INSERT_HEAD(free, m, plinks.s.ss);
}
/*
* Decrements a page table page's wire count, which is used to record the
* number of valid page table entries within the page. If the wire count
* drops to zero, then the page table page is unmapped. Returns TRUE if the
* page table page was unmapped and FALSE otherwise.
*/
static inline boolean_t
pmap_unwire_l3(pmap_t pmap, vm_offset_t va, vm_page_t m, struct spglist *free)
{
--m->wire_count;
if (m->wire_count == 0) {
_pmap_unwire_l3(pmap, va, m, free);
return (TRUE);
} else {
return (FALSE);
}
}
static void
_pmap_unwire_l3(pmap_t pmap, vm_offset_t va, vm_page_t m, struct spglist *free)
{
vm_paddr_t phys;
PMAP_LOCK_ASSERT(pmap, MA_OWNED);
/*
* unmap the page table page
*/
if (m->pindex >= NUPDE) {
/* PD page */
pd_entry_t *l1;
l1 = pmap_l1(pmap, va);
pmap_load_clear(l1);
pmap_distribute_l1(pmap, pmap_l1_index(va), 0);
PTE_SYNC(l1);
} else {
/* PTE page */
pd_entry_t *l2;
l2 = pmap_l2(pmap, va);
pmap_load_clear(l2);
PTE_SYNC(l2);
}
pmap_resident_count_dec(pmap, 1);
if (m->pindex < NUPDE) {
pd_entry_t *l1;
/* We just released a PT, unhold the matching PD */
vm_page_t pdpg;
l1 = pmap_l1(pmap, va);
phys = PTE_TO_PHYS(pmap_load(l1));
pdpg = PHYS_TO_VM_PAGE(phys);
pmap_unwire_l3(pmap, va, pdpg, free);
}
pmap_invalidate_page(pmap, va);
/*
* This is a release store so that the ordinary store unmapping
* the page table page is globally performed before TLB shoot-
* down is begun.
*/
atomic_subtract_rel_int(&vm_cnt.v_wire_count, 1);
/*
* Put page on a list so that it is released after
* *ALL* TLB shootdown is done
*/
pmap_add_delayed_free_list(m, free, TRUE);
}
/*
* After removing an l3 entry, this routine is used to
* conditionally free the page, and manage the hold/wire counts.
*/
static int
pmap_unuse_l3(pmap_t pmap, vm_offset_t va, pd_entry_t ptepde,
struct spglist *free)
{
vm_paddr_t phys;
vm_page_t mpte;
if (va >= VM_MAXUSER_ADDRESS)
return (0);
KASSERT(ptepde != 0, ("pmap_unuse_pt: ptepde != 0"));
phys = PTE_TO_PHYS(ptepde);
mpte = PHYS_TO_VM_PAGE(phys);
return (pmap_unwire_l3(pmap, va, mpte, free));
}
void
pmap_pinit0(pmap_t pmap)
{
PMAP_LOCK_INIT(pmap);
bzero(&pmap->pm_stats, sizeof(pmap->pm_stats));
pmap->pm_l1 = kernel_pmap->pm_l1;
}
int
pmap_pinit(pmap_t pmap)
{
vm_paddr_t l1phys;
vm_page_t l1pt;
/*
* allocate the l1 page
*/
while ((l1pt = vm_page_alloc(NULL, 0xdeadbeef, VM_ALLOC_NORMAL |
VM_ALLOC_NOOBJ | VM_ALLOC_WIRED | VM_ALLOC_ZERO)) == NULL)
VM_WAIT;
l1phys = VM_PAGE_TO_PHYS(l1pt);
pmap->pm_l1 = (pd_entry_t *)PHYS_TO_DMAP(l1phys);
if ((l1pt->flags & PG_ZERO) == 0)
pagezero(pmap->pm_l1);
bzero(&pmap->pm_stats, sizeof(pmap->pm_stats));
/* Install kernel pagetables */
memcpy(pmap->pm_l1, kernel_pmap->pm_l1, PAGE_SIZE);
/* Add to the list of all user pmaps */
LIST_INSERT_HEAD(&allpmaps, pmap, pm_list);
return (1);
}
/*
* This routine is called if the desired page table page does not exist.
*
* If page table page allocation fails, this routine may sleep before
* returning NULL. It sleeps only if a lock pointer was given.
*
* Note: If a page allocation fails at page table level two or three,
* one or two pages may be held during the wait, only to be released
* afterwards. This conservative approach is easily argued to avoid
* race conditions.
*/
static vm_page_t
_pmap_alloc_l3(pmap_t pmap, vm_pindex_t ptepindex, struct rwlock **lockp)
{
vm_page_t m, /*pdppg, */pdpg;
pt_entry_t entry;
vm_paddr_t phys;
pn_t pn;
PMAP_LOCK_ASSERT(pmap, MA_OWNED);
/*
* Allocate a page table page.
*/
if ((m = vm_page_alloc(NULL, ptepindex, VM_ALLOC_NOOBJ |
VM_ALLOC_WIRED | VM_ALLOC_ZERO)) == NULL) {
if (lockp != NULL) {
RELEASE_PV_LIST_LOCK(lockp);
PMAP_UNLOCK(pmap);
rw_runlock(&pvh_global_lock);
VM_WAIT;
rw_rlock(&pvh_global_lock);
PMAP_LOCK(pmap);
}
/*
* Indicate the need to retry. While waiting, the page table
* page may have been allocated.
*/
return (NULL);
}
if ((m->flags & PG_ZERO) == 0)
pmap_zero_page(m);
/*
* Map the pagetable page into the process address space, if
* it isn't already there.
*/
if (ptepindex >= NUPDE) {
pd_entry_t *l1;
vm_pindex_t l1index;
l1index = ptepindex - NUPDE;
l1 = &pmap->pm_l1[l1index];
pn = (VM_PAGE_TO_PHYS(m) / PAGE_SIZE);
entry = (PTE_VALID | (PTE_TYPE_PTR << PTE_TYPE_S));
entry |= (pn << PTE_PPN0_S);
pmap_load_store(l1, entry);
pmap_distribute_l1(pmap, l1index, entry);
PTE_SYNC(l1);
} else {
vm_pindex_t l1index;
pd_entry_t *l1, *l2;
l1index = ptepindex >> (L1_SHIFT - L2_SHIFT);
l1 = &pmap->pm_l1[l1index];
if (pmap_load(l1) == 0) {
/* recurse for allocating page dir */
if (_pmap_alloc_l3(pmap, NUPDE + l1index,
lockp) == NULL) {
--m->wire_count;
atomic_subtract_int(&vm_cnt.v_wire_count, 1);
vm_page_free_zero(m);
return (NULL);
}
} else {
phys = PTE_TO_PHYS(pmap_load(l1));
pdpg = PHYS_TO_VM_PAGE(phys);
pdpg->wire_count++;
}
phys = PTE_TO_PHYS(pmap_load(l1));
l2 = (pd_entry_t *)PHYS_TO_DMAP(phys);
l2 = &l2[ptepindex & Ln_ADDR_MASK];
pn = (VM_PAGE_TO_PHYS(m) / PAGE_SIZE);
entry = (PTE_VALID | (PTE_TYPE_PTR << PTE_TYPE_S));
entry |= (pn << PTE_PPN0_S);
pmap_load_store(l2, entry);
PTE_SYNC(l2);
}
pmap_resident_count_inc(pmap, 1);
return (m);
}
static vm_page_t
pmap_alloc_l3(pmap_t pmap, vm_offset_t va, struct rwlock **lockp)
{
vm_pindex_t ptepindex;
pd_entry_t *l2;
vm_paddr_t phys;
vm_page_t m;
/*
* Calculate pagetable page index
*/
ptepindex = pmap_l2_pindex(va);
retry:
/*
* Get the page directory entry
*/
l2 = pmap_l2(pmap, va);
/*
* If the page table page is mapped, we just increment the
* hold count, and activate it.
*/
if (l2 != NULL && pmap_load(l2) != 0) {
phys = PTE_TO_PHYS(pmap_load(l2));
m = PHYS_TO_VM_PAGE(phys);
m->wire_count++;
} else {
/*
* Here if the pte page isn't mapped, or if it has been
* deallocated.
*/
m = _pmap_alloc_l3(pmap, ptepindex, lockp);
if (m == NULL && lockp != NULL)
goto retry;
}
return (m);
}
/***************************************************
* Pmap allocation/deallocation routines.
***************************************************/
/*
* Release any resources held by the given physical map.
* Called when a pmap initialized by pmap_pinit is being released.
* Should only be called if the map contains no valid mappings.
*/
void
pmap_release(pmap_t pmap)
{
vm_page_t m;
KASSERT(pmap->pm_stats.resident_count == 0,
("pmap_release: pmap resident count %ld != 0",
pmap->pm_stats.resident_count));
m = PHYS_TO_VM_PAGE(DMAP_TO_PHYS((vm_offset_t)pmap->pm_l1));
m->wire_count--;
atomic_subtract_int(&vm_cnt.v_wire_count, 1);
vm_page_free_zero(m);
/* Remove pmap from the allpmaps list */
LIST_REMOVE(pmap, pm_list);
/* Remove kernel pagetables */
bzero(pmap->pm_l1, PAGE_SIZE);
}
#if 0
static int
kvm_size(SYSCTL_HANDLER_ARGS)
{
unsigned long ksize = VM_MAX_KERNEL_ADDRESS - VM_MIN_KERNEL_ADDRESS;
return sysctl_handle_long(oidp, &ksize, 0, req);
}
SYSCTL_PROC(_vm, OID_AUTO, kvm_size, CTLTYPE_LONG|CTLFLAG_RD,
0, 0, kvm_size, "LU", "Size of KVM");
static int
kvm_free(SYSCTL_HANDLER_ARGS)
{
unsigned long kfree = VM_MAX_KERNEL_ADDRESS - kernel_vm_end;
return sysctl_handle_long(oidp, &kfree, 0, req);
}
SYSCTL_PROC(_vm, OID_AUTO, kvm_free, CTLTYPE_LONG|CTLFLAG_RD,
0, 0, kvm_free, "LU", "Amount of KVM free");
#endif /* 0 */
/*
* grow the number of kernel page table entries, if needed
*/
void
pmap_growkernel(vm_offset_t addr)
{
vm_paddr_t paddr;
vm_page_t nkpg;
pd_entry_t *l1, *l2;
pt_entry_t entry;
pn_t pn;
mtx_assert(&kernel_map->system_mtx, MA_OWNED);
addr = roundup2(addr, L2_SIZE);
if (addr - 1 >= kernel_map->max_offset)
addr = kernel_map->max_offset;
while (kernel_vm_end < addr) {
l1 = pmap_l1(kernel_pmap, kernel_vm_end);
if (pmap_load(l1) == 0) {
/* We need a new PDP entry */
nkpg = vm_page_alloc(NULL, kernel_vm_end >> L1_SHIFT,
VM_ALLOC_INTERRUPT | VM_ALLOC_NOOBJ |
VM_ALLOC_WIRED | VM_ALLOC_ZERO);
if (nkpg == NULL)
panic("pmap_growkernel: no memory to grow kernel");
if ((nkpg->flags & PG_ZERO) == 0)
pmap_zero_page(nkpg);
paddr = VM_PAGE_TO_PHYS(nkpg);
pn = (paddr / PAGE_SIZE);
entry = (PTE_VALID | (PTE_TYPE_PTR << PTE_TYPE_S));
entry |= (pn << PTE_PPN0_S);
pmap_load_store(l1, entry);
pmap_distribute_l1(kernel_pmap,
pmap_l1_index(kernel_vm_end), entry);
PTE_SYNC(l1);
continue; /* try again */
}
l2 = pmap_l1_to_l2(l1, kernel_vm_end);
if ((pmap_load(l2) & PTE_REF) != 0) {
kernel_vm_end = (kernel_vm_end + L2_SIZE) & ~L2_OFFSET;
if (kernel_vm_end - 1 >= kernel_map->max_offset) {
kernel_vm_end = kernel_map->max_offset;
break;
}
continue;
}
nkpg = vm_page_alloc(NULL, kernel_vm_end >> L2_SHIFT,
VM_ALLOC_INTERRUPT | VM_ALLOC_NOOBJ | VM_ALLOC_WIRED |
VM_ALLOC_ZERO);
if (nkpg == NULL)
panic("pmap_growkernel: no memory to grow kernel");
if ((nkpg->flags & PG_ZERO) == 0)
pmap_zero_page(nkpg);
paddr = VM_PAGE_TO_PHYS(nkpg);
pn = (paddr / PAGE_SIZE);
entry = (PTE_VALID | (PTE_TYPE_PTR << PTE_TYPE_S));
entry |= (pn << PTE_PPN0_S);
pmap_load_store(l2, entry);
PTE_SYNC(l2);
pmap_invalidate_page(kernel_pmap, kernel_vm_end);
kernel_vm_end = (kernel_vm_end + L2_SIZE) & ~L2_OFFSET;
if (kernel_vm_end - 1 >= kernel_map->max_offset) {
kernel_vm_end = kernel_map->max_offset;
break;
}
}
}
/***************************************************
* page management routines.
***************************************************/
CTASSERT(sizeof(struct pv_chunk) == PAGE_SIZE);
CTASSERT(_NPCM == 3);
CTASSERT(_NPCPV == 168);
static __inline struct pv_chunk *
pv_to_chunk(pv_entry_t pv)
{
return ((struct pv_chunk *)((uintptr_t)pv & ~(uintptr_t)PAGE_MASK));
}
#define PV_PMAP(pv) (pv_to_chunk(pv)->pc_pmap)
#define PC_FREE0 0xfffffffffffffffful
#define PC_FREE1 0xfffffffffffffffful
#define PC_FREE2 0x000000fffffffffful
static const uint64_t pc_freemask[_NPCM] = { PC_FREE0, PC_FREE1, PC_FREE2 };
#if 0
#ifdef PV_STATS
static int pc_chunk_count, pc_chunk_allocs, pc_chunk_frees, pc_chunk_tryfail;
SYSCTL_INT(_vm_pmap, OID_AUTO, pc_chunk_count, CTLFLAG_RD, &pc_chunk_count, 0,
"Current number of pv entry chunks");
SYSCTL_INT(_vm_pmap, OID_AUTO, pc_chunk_allocs, CTLFLAG_RD, &pc_chunk_allocs, 0,
"Current number of pv entry chunks allocated");
SYSCTL_INT(_vm_pmap, OID_AUTO, pc_chunk_frees, CTLFLAG_RD, &pc_chunk_frees, 0,
"Current number of pv entry chunks frees");
SYSCTL_INT(_vm_pmap, OID_AUTO, pc_chunk_tryfail, CTLFLAG_RD, &pc_chunk_tryfail, 0,
"Number of times tried to get a chunk page but failed.");
static long pv_entry_frees, pv_entry_allocs, pv_entry_count;
static int pv_entry_spare;
SYSCTL_LONG(_vm_pmap, OID_AUTO, pv_entry_frees, CTLFLAG_RD, &pv_entry_frees, 0,
"Current number of pv entry frees");
SYSCTL_LONG(_vm_pmap, OID_AUTO, pv_entry_allocs, CTLFLAG_RD, &pv_entry_allocs, 0,
"Current number of pv entry allocs");
SYSCTL_LONG(_vm_pmap, OID_AUTO, pv_entry_count, CTLFLAG_RD, &pv_entry_count, 0,
"Current number of pv entries");
SYSCTL_INT(_vm_pmap, OID_AUTO, pv_entry_spare, CTLFLAG_RD, &pv_entry_spare, 0,
"Current number of spare pv entries");
#endif
#endif /* 0 */
/*
* We are in a serious low memory condition. Resort to
* drastic measures to free some pages so we can allocate
* another pv entry chunk.
*
* Returns NULL if PV entries were reclaimed from the specified pmap.
*
* We do not, however, unmap 2mpages because subsequent accesses will
* allocate per-page pv entries until repromotion occurs, thereby
* exacerbating the shortage of free pv entries.
*/
static vm_page_t
reclaim_pv_chunk(pmap_t locked_pmap, struct rwlock **lockp)
{
panic("RISCVTODO: reclaim_pv_chunk");
}
/*
* free the pv_entry back to the free list
*/
static void
free_pv_entry(pmap_t pmap, pv_entry_t pv)
{
struct pv_chunk *pc;
int idx, field, bit;
rw_assert(&pvh_global_lock, RA_LOCKED);
PMAP_LOCK_ASSERT(pmap, MA_OWNED);
PV_STAT(atomic_add_long(&pv_entry_frees, 1));
PV_STAT(atomic_add_int(&pv_entry_spare, 1));
PV_STAT(atomic_subtract_long(&pv_entry_count, 1));
pc = pv_to_chunk(pv);
idx = pv - &pc->pc_pventry[0];
field = idx / 64;
bit = idx % 64;
pc->pc_map[field] |= 1ul << bit;
if (pc->pc_map[0] != PC_FREE0 || pc->pc_map[1] != PC_FREE1 ||
pc->pc_map[2] != PC_FREE2) {
/* 98% of the time, pc is already at the head of the list. */
if (__predict_false(pc != TAILQ_FIRST(&pmap->pm_pvchunk))) {
TAILQ_REMOVE(&pmap->pm_pvchunk, pc, pc_list);
TAILQ_INSERT_HEAD(&pmap->pm_pvchunk, pc, pc_list);
}
return;
}
TAILQ_REMOVE(&pmap->pm_pvchunk, pc, pc_list);
free_pv_chunk(pc);
}
static void
free_pv_chunk(struct pv_chunk *pc)
{
vm_page_t m;
mtx_lock(&pv_chunks_mutex);
TAILQ_REMOVE(&pv_chunks, pc, pc_lru);
mtx_unlock(&pv_chunks_mutex);
PV_STAT(atomic_subtract_int(&pv_entry_spare, _NPCPV));
PV_STAT(atomic_subtract_int(&pc_chunk_count, 1));
PV_STAT(atomic_add_int(&pc_chunk_frees, 1));
/* entire chunk is free, return it */
m = PHYS_TO_VM_PAGE(DMAP_TO_PHYS((vm_offset_t)pc));
#if 0 /* TODO: For minidump */
dump_drop_page(m->phys_addr);
#endif
vm_page_unwire(m, PQ_INACTIVE);
vm_page_free(m);
}
/*
* Returns a new PV entry, allocating a new PV chunk from the system when
* needed. If this PV chunk allocation fails and a PV list lock pointer was
* given, a PV chunk is reclaimed from an arbitrary pmap. Otherwise, NULL is
* returned.
*
* The given PV list lock may be released.
*/
static pv_entry_t
get_pv_entry(pmap_t pmap, struct rwlock **lockp)
{
int bit, field;
pv_entry_t pv;
struct pv_chunk *pc;
vm_page_t m;
rw_assert(&pvh_global_lock, RA_LOCKED);
PMAP_LOCK_ASSERT(pmap, MA_OWNED);
PV_STAT(atomic_add_long(&pv_entry_allocs, 1));
retry:
pc = TAILQ_FIRST(&pmap->pm_pvchunk);
if (pc != NULL) {
for (field = 0; field < _NPCM; field++) {
if (pc->pc_map[field]) {
bit = ffsl(pc->pc_map[field]) - 1;
break;
}
}
if (field < _NPCM) {
pv = &pc->pc_pventry[field * 64 + bit];
pc->pc_map[field] &= ~(1ul << bit);
/* If this was the last item, move it to tail */
if (pc->pc_map[0] == 0 && pc->pc_map[1] == 0 &&
pc->pc_map[2] == 0) {
TAILQ_REMOVE(&pmap->pm_pvchunk, pc, pc_list);
TAILQ_INSERT_TAIL(&pmap->pm_pvchunk, pc,
pc_list);
}
PV_STAT(atomic_add_long(&pv_entry_count, 1));
PV_STAT(atomic_subtract_int(&pv_entry_spare, 1));
return (pv);
}
}
/* No free items, allocate another chunk */
m = vm_page_alloc(NULL, 0, VM_ALLOC_NORMAL | VM_ALLOC_NOOBJ |
VM_ALLOC_WIRED);
if (m == NULL) {
if (lockp == NULL) {
PV_STAT(pc_chunk_tryfail++);
return (NULL);
}
m = reclaim_pv_chunk(pmap, lockp);
if (m == NULL)
goto retry;
}
PV_STAT(atomic_add_int(&pc_chunk_count, 1));
PV_STAT(atomic_add_int(&pc_chunk_allocs, 1));
#if 0 /* TODO: This is for minidump */
dump_add_page(m->phys_addr);
#endif
pc = (void *)PHYS_TO_DMAP(m->phys_addr);
pc->pc_pmap = pmap;
pc->pc_map[0] = PC_FREE0 & ~1ul; /* preallocated bit 0 */
pc->pc_map[1] = PC_FREE1;
pc->pc_map[2] = PC_FREE2;
mtx_lock(&pv_chunks_mutex);
TAILQ_INSERT_TAIL(&pv_chunks, pc, pc_lru);
mtx_unlock(&pv_chunks_mutex);
pv = &pc->pc_pventry[0];
TAILQ_INSERT_HEAD(&pmap->pm_pvchunk, pc, pc_list);
PV_STAT(atomic_add_long(&pv_entry_count, 1));
PV_STAT(atomic_add_int(&pv_entry_spare, _NPCPV - 1));
return (pv);
}
/*
* First find and then remove the pv entry for the specified pmap and virtual
* address from the specified pv list. Returns the pv entry if found and NULL
* otherwise. This operation can be performed on pv lists for either 4KB or
* 2MB page mappings.
*/
static __inline pv_entry_t
pmap_pvh_remove(struct md_page *pvh, pmap_t pmap, vm_offset_t va)
{
pv_entry_t pv;
rw_assert(&pvh_global_lock, RA_LOCKED);
TAILQ_FOREACH(pv, &pvh->pv_list, pv_next) {
if (pmap == PV_PMAP(pv) && va == pv->pv_va) {
TAILQ_REMOVE(&pvh->pv_list, pv, pv_next);
pvh->pv_gen++;
break;
}
}
return (pv);
}
/*
* First find and then destroy the pv entry for the specified pmap and virtual
* address. This operation can be performed on pv lists for either 4KB or 2MB
* page mappings.
*/
static void
pmap_pvh_free(struct md_page *pvh, pmap_t pmap, vm_offset_t va)
{
pv_entry_t pv;
pv = pmap_pvh_remove(pvh, pmap, va);
KASSERT(pv != NULL, ("pmap_pvh_free: pv not found"));
free_pv_entry(pmap, pv);
}
/*
* Conditionally create the PV entry for a 4KB page mapping if the required
* memory can be allocated without resorting to reclamation.
*/
static boolean_t
pmap_try_insert_pv_entry(pmap_t pmap, vm_offset_t va, vm_page_t m,
struct rwlock **lockp)
{
pv_entry_t pv;
rw_assert(&pvh_global_lock, RA_LOCKED);
PMAP_LOCK_ASSERT(pmap, MA_OWNED);
/* Pass NULL instead of the lock pointer to disable reclamation. */
if ((pv = get_pv_entry(pmap, NULL)) != NULL) {
pv->pv_va = va;
CHANGE_PV_LIST_LOCK_TO_VM_PAGE(lockp, m);
TAILQ_INSERT_TAIL(&m->md.pv_list, pv, pv_next);
m->md.pv_gen++;
return (TRUE);
} else
return (FALSE);
}
/*
* pmap_remove_l3: do the things to unmap a page in a process
*/
static int
pmap_remove_l3(pmap_t pmap, pt_entry_t *l3, vm_offset_t va,
pd_entry_t l2e, struct spglist *free, struct rwlock **lockp)
{
pt_entry_t old_l3;
vm_paddr_t phys;
vm_page_t m;
PMAP_LOCK_ASSERT(pmap, MA_OWNED);
if (pmap_is_current(pmap) && pmap_l3_valid_cacheable(pmap_load(l3)))
cpu_dcache_wb_range(va, L3_SIZE);
old_l3 = pmap_load_clear(l3);
PTE_SYNC(l3);
pmap_invalidate_page(pmap, va);
if (old_l3 & PTE_SW_WIRED)
pmap->pm_stats.wired_count -= 1;
pmap_resident_count_dec(pmap, 1);
if (old_l3 & PTE_SW_MANAGED) {
phys = PTE_TO_PHYS(old_l3);
m = PHYS_TO_VM_PAGE(phys);
if (pmap_page_dirty(old_l3))
vm_page_dirty(m);
if (old_l3 & PTE_REF)
vm_page_aflag_set(m, PGA_REFERENCED);
CHANGE_PV_LIST_LOCK_TO_VM_PAGE(lockp, m);
pmap_pvh_free(&m->md, pmap, va);
}
return (pmap_unuse_l3(pmap, va, l2e, free));
}
/*
* Remove the given range of addresses from the specified map.
*
* It is assumed that the start and end are properly
* rounded to the page size.
*/
void
pmap_remove(pmap_t pmap, vm_offset_t sva, vm_offset_t eva)
{
struct rwlock *lock;
vm_offset_t va, va_next;
pd_entry_t *l1, *l2;
pt_entry_t l3_pte, *l3;
struct spglist free;
int anyvalid;
/*
* Perform an unsynchronized read. This is, however, safe.
*/
if (pmap->pm_stats.resident_count == 0)
return;
anyvalid = 0;
SLIST_INIT(&free);
rw_rlock(&pvh_global_lock);
PMAP_LOCK(pmap);
lock = NULL;
for (; sva < eva; sva = va_next) {
if (pmap->pm_stats.resident_count == 0)
break;
l1 = pmap_l1(pmap, sva);
if (pmap_load(l1) == 0) {
va_next = (sva + L1_SIZE) & ~L1_OFFSET;
if (va_next < sva)
va_next = eva;
continue;
}
/*
* Calculate index for next page table.
*/
va_next = (sva + L2_SIZE) & ~L2_OFFSET;
if (va_next < sva)
va_next = eva;
l2 = pmap_l1_to_l2(l1, sva);
if (l2 == NULL)
continue;
l3_pte = pmap_load(l2);
/*
* Weed out invalid mappings.
*/
if (l3_pte == 0)
continue;
if ((pmap_load(l2) & PTE_TYPE_M) != (PTE_TYPE_PTR << PTE_TYPE_S))
continue;
/*
* Limit our scan to either the end of the va represented
* by the current page table page, or to the end of the
* range being removed.
*/
if (va_next > eva)
va_next = eva;
va = va_next;
for (l3 = pmap_l2_to_l3(l2, sva); sva != va_next; l3++,
sva += L3_SIZE) {
if (l3 == NULL)
panic("l3 == NULL");
if (pmap_load(l3) == 0) {
if (va != va_next) {
pmap_invalidate_range(pmap, va, sva);
va = va_next;
}
continue;
}
if (va == va_next)
va = sva;
if (pmap_remove_l3(pmap, l3, sva, l3_pte, &free,
&lock)) {
sva += L3_SIZE;
break;
}
}
if (va != va_next)
pmap_invalidate_range(pmap, va, sva);
}
if (lock != NULL)
rw_wunlock(lock);
if (anyvalid)
pmap_invalidate_all(pmap);
rw_runlock(&pvh_global_lock);
PMAP_UNLOCK(pmap);
pmap_free_zero_pages(&free);
}
/*
* Routine: pmap_remove_all
* Function:
* Removes this physical page from
* all physical maps in which it resides.
* Reflects back modify bits to the pager.
*
* Notes:
* Original versions of this routine were very
* inefficient because they iteratively called
* pmap_remove (slow...)
*/
void
pmap_remove_all(vm_page_t m)
{
pv_entry_t pv;
pmap_t pmap;
pt_entry_t *l3, tl3;
pd_entry_t *l2, tl2;
struct spglist free;
KASSERT((m->oflags & VPO_UNMANAGED) == 0,
("pmap_remove_all: page %p is not managed", m));
SLIST_INIT(&free);
rw_wlock(&pvh_global_lock);
while ((pv = TAILQ_FIRST(&m->md.pv_list)) != NULL) {
pmap = PV_PMAP(pv);
PMAP_LOCK(pmap);
pmap_resident_count_dec(pmap, 1);
l2 = pmap_l2(pmap, pv->pv_va);
KASSERT(l2 != NULL, ("pmap_remove_all: no l2 table found"));
tl2 = pmap_load(l2);
KASSERT((tl2 & PTE_TYPE_M) == (PTE_TYPE_PTR << PTE_TYPE_S),
("pmap_remove_all: found a table when expecting "
"a block in %p's pv list", m));
l3 = pmap_l2_to_l3(l2, pv->pv_va);
if (pmap_is_current(pmap) &&
pmap_l3_valid_cacheable(pmap_load(l3)))
cpu_dcache_wb_range(pv->pv_va, L3_SIZE);
tl3 = pmap_load_clear(l3);
PTE_SYNC(l3);
pmap_invalidate_page(pmap, pv->pv_va);
if (tl3 & PTE_SW_WIRED)
pmap->pm_stats.wired_count--;
if ((tl3 & PTE_REF) != 0)
vm_page_aflag_set(m, PGA_REFERENCED);
/*
* Update the vm_page_t clean and reference bits.
*/
if (pmap_page_dirty(tl3))
vm_page_dirty(m);
pmap_unuse_l3(pmap, pv->pv_va, pmap_load(l2), &free);
TAILQ_REMOVE(&m->md.pv_list, pv, pv_next);
m->md.pv_gen++;
free_pv_entry(pmap, pv);
PMAP_UNLOCK(pmap);
}
vm_page_aflag_clear(m, PGA_WRITEABLE);
rw_wunlock(&pvh_global_lock);
pmap_free_zero_pages(&free);
}
/*
* Set the physical protection on the
* specified range of this map as requested.
*/
void
pmap_protect(pmap_t pmap, vm_offset_t sva, vm_offset_t eva, vm_prot_t prot)
{
vm_offset_t va, va_next;
pd_entry_t *l1, *l2;
pt_entry_t *l3p, l3;
pt_entry_t entry;
if ((prot & VM_PROT_READ) == VM_PROT_NONE) {
pmap_remove(pmap, sva, eva);
return;
}
if ((prot & VM_PROT_WRITE) == VM_PROT_WRITE)
return;
PMAP_LOCK(pmap);
for (; sva < eva; sva = va_next) {
l1 = pmap_l1(pmap, sva);
if (pmap_load(l1) == 0) {
va_next = (sva + L1_SIZE) & ~L1_OFFSET;
if (va_next < sva)
va_next = eva;
continue;
}
va_next = (sva + L2_SIZE) & ~L2_OFFSET;
if (va_next < sva)
va_next = eva;
l2 = pmap_l1_to_l2(l1, sva);
if (l2 == NULL)
continue;
if ((pmap_load(l2) & PTE_TYPE_M) != (PTE_TYPE_PTR << PTE_TYPE_S))
continue;
if (va_next > eva)
va_next = eva;
va = va_next;
for (l3p = pmap_l2_to_l3(l2, sva); sva != va_next; l3p++,
sva += L3_SIZE) {
l3 = pmap_load(l3p);
if (pmap_l3_valid(l3)) {
entry = pmap_load(l3p);
entry &= ~(1 << PTE_TYPE_S);
pmap_load_store(l3p, entry);
PTE_SYNC(l3p);
/* XXX: Use pmap_invalidate_range */
pmap_invalidate_page(pmap, va);
}
}
}
PMAP_UNLOCK(pmap);
/* TODO: Only invalidate entries we are touching */
pmap_invalidate_all(pmap);
}
/*
* Insert the given physical page (p) at
* the specified virtual address (v) in the
* target physical map with the protection requested.
*
* If specified, the page will be wired down, meaning
* that the related pte can not be reclaimed.
*
* NB: This is the only routine which MAY NOT lazy-evaluate
* or lose information. That is, this routine must actually
* insert this page into the given map NOW.
*/
int
pmap_enter(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_prot_t prot,
u_int flags, int8_t psind __unused)
{
struct rwlock *lock;
pd_entry_t *l1, *l2;
pt_entry_t new_l3, orig_l3;
pt_entry_t *l3;
pv_entry_t pv;
vm_paddr_t opa, pa, l2_pa, l3_pa;
vm_page_t mpte, om, l2_m, l3_m;
boolean_t nosleep;
pt_entry_t entry;
pn_t l2_pn;
pn_t l3_pn;
pn_t pn;
va = trunc_page(va);
if ((m->oflags & VPO_UNMANAGED) == 0 && !vm_page_xbusied(m))
VM_OBJECT_ASSERT_LOCKED(m->object);
pa = VM_PAGE_TO_PHYS(m);
pn = (pa / PAGE_SIZE);
new_l3 = PTE_VALID;
if ((prot & VM_PROT_WRITE) == 0) { /* Read-only */
if ((va >> 63) == 0) /* USER */
new_l3 |= (PTE_TYPE_SURX << PTE_TYPE_S);
else /* KERNEL */
new_l3 |= (PTE_TYPE_SRX << PTE_TYPE_S);
} else {
if ((va >> 63) == 0) /* USER */
new_l3 |= (PTE_TYPE_SURWX << PTE_TYPE_S);
else /* KERNEL */
new_l3 |= (PTE_TYPE_SRWX << PTE_TYPE_S);
}
new_l3 |= (pn << PTE_PPN0_S);
if ((flags & PMAP_ENTER_WIRED) != 0)
new_l3 |= PTE_SW_WIRED;
CTR2(KTR_PMAP, "pmap_enter: %.16lx -> %.16lx", va, pa);
mpte = NULL;
lock = NULL;
rw_rlock(&pvh_global_lock);
PMAP_LOCK(pmap);
if (va < VM_MAXUSER_ADDRESS) {
nosleep = (flags & PMAP_ENTER_NOSLEEP) != 0;
mpte = pmap_alloc_l3(pmap, va, nosleep ? NULL : &lock);
if (mpte == NULL && nosleep) {
CTR0(KTR_PMAP, "pmap_enter: mpte == NULL");
if (lock != NULL)
rw_wunlock(lock);
rw_runlock(&pvh_global_lock);
PMAP_UNLOCK(pmap);
return (KERN_RESOURCE_SHORTAGE);
}
l3 = pmap_l3(pmap, va);
} else {
l3 = pmap_l3(pmap, va);
/* TODO: This is not optimal, but should mostly work */
if (l3 == NULL) {
l2 = pmap_l2(pmap, va);
if (l2 == NULL) {
l2_m = vm_page_alloc(NULL, 0, VM_ALLOC_NORMAL |
VM_ALLOC_NOOBJ | VM_ALLOC_WIRED |
VM_ALLOC_ZERO);
if (l2_m == NULL)
panic("pmap_enter: l2 pte_m == NULL");
if ((l2_m->flags & PG_ZERO) == 0)
pmap_zero_page(l2_m);
l2_pa = VM_PAGE_TO_PHYS(l2_m);
l2_pn = (l2_pa / PAGE_SIZE);
l1 = pmap_l1(pmap, va);
entry = (PTE_VALID | (PTE_TYPE_PTR << PTE_TYPE_S));
entry |= (l2_pn << PTE_PPN0_S);
pmap_load_store(l1, entry);
pmap_distribute_l1(pmap, pmap_l1_index(va), entry);
PTE_SYNC(l1);
l2 = pmap_l1_to_l2(l1, va);
}
KASSERT(l2 != NULL,
("No l2 table after allocating one"));
l3_m = vm_page_alloc(NULL, 0, VM_ALLOC_NORMAL |
VM_ALLOC_NOOBJ | VM_ALLOC_WIRED | VM_ALLOC_ZERO);
if (l3_m == NULL)
panic("pmap_enter: l3 pte_m == NULL");
if ((l3_m->flags & PG_ZERO) == 0)
pmap_zero_page(l3_m);
l3_pa = VM_PAGE_TO_PHYS(l3_m);
l3_pn = (l3_pa / PAGE_SIZE);
entry = (PTE_VALID | (PTE_TYPE_PTR << PTE_TYPE_S));
entry |= (l3_pn << PTE_PPN0_S);
pmap_load_store(l2, entry);
PTE_SYNC(l2);
l3 = pmap_l2_to_l3(l2, va);
}
pmap_invalidate_page(pmap, va);
}
om = NULL;
orig_l3 = pmap_load(l3);
opa = PTE_TO_PHYS(orig_l3);
/*
* Is the specified virtual address already mapped?
*/
if (pmap_l3_valid(orig_l3)) {
/*
* Wiring change, just update stats. We don't worry about
* wiring PT pages as they remain resident as long as there
* are valid mappings in them. Hence, if a user page is wired,
* the PT page will be also.
*/
if ((flags & PMAP_ENTER_WIRED) != 0 &&
(orig_l3 & PTE_SW_WIRED) == 0)
pmap->pm_stats.wired_count++;
else if ((flags & PMAP_ENTER_WIRED) == 0 &&
(orig_l3 & PTE_SW_WIRED) != 0)
pmap->pm_stats.wired_count--;
/*
* Remove the extra PT page reference.
*/
if (mpte != NULL) {
mpte->wire_count--;
KASSERT(mpte->wire_count > 0,
("pmap_enter: missing reference to page table page,"
" va: 0x%lx", va));
}
/*
* Has the physical page changed?
*/
if (opa == pa) {
/*
* No, might be a protection or wiring change.
*/
if ((orig_l3 & PTE_SW_MANAGED) != 0) {
new_l3 |= PTE_SW_MANAGED;
if (pmap_is_write(new_l3))
vm_page_aflag_set(m, PGA_WRITEABLE);
}
goto validate;
}
/* Flush the cache, there might be uncommitted data in it */
if (pmap_is_current(pmap) && pmap_l3_valid_cacheable(orig_l3))
cpu_dcache_wb_range(va, L3_SIZE);
} else {
/*
* Increment the counters.
*/
if ((new_l3 & PTE_SW_WIRED) != 0)
pmap->pm_stats.wired_count++;
pmap_resident_count_inc(pmap, 1);
}
/*
* Enter on the PV list if part of our managed memory.
*/
if ((m->oflags & VPO_UNMANAGED) == 0) {
new_l3 |= PTE_SW_MANAGED;
pv = get_pv_entry(pmap, &lock);
pv->pv_va = va;
CHANGE_PV_LIST_LOCK_TO_PHYS(&lock, pa);
TAILQ_INSERT_TAIL(&m->md.pv_list, pv, pv_next);
m->md.pv_gen++;
if (pmap_is_write(new_l3))
vm_page_aflag_set(m, PGA_WRITEABLE);
}
/*
* Update the L3 entry.
*/
if (orig_l3 != 0) {
validate:
orig_l3 = pmap_load_store(l3, new_l3);
PTE_SYNC(l3);
opa = PTE_TO_PHYS(orig_l3);
if (opa != pa) {
if ((orig_l3 & PTE_SW_MANAGED) != 0) {
om = PHYS_TO_VM_PAGE(opa);
if (pmap_page_dirty(orig_l3))
vm_page_dirty(om);
if ((orig_l3 & PTE_REF) != 0)
vm_page_aflag_set(om, PGA_REFERENCED);
CHANGE_PV_LIST_LOCK_TO_PHYS(&lock, opa);
pmap_pvh_free(&om->md, pmap, va);
}
} else if (pmap_page_dirty(orig_l3)) {
if ((orig_l3 & PTE_SW_MANAGED) != 0)
vm_page_dirty(m);
}
} else {
pmap_load_store(l3, new_l3);
PTE_SYNC(l3);
}
pmap_invalidate_page(pmap, va);
if ((pmap != pmap_kernel()) && (pmap == &curproc->p_vmspace->vm_pmap))
cpu_icache_sync_range(va, PAGE_SIZE);
if (lock != NULL)
rw_wunlock(lock);
rw_runlock(&pvh_global_lock);
PMAP_UNLOCK(pmap);
return (KERN_SUCCESS);
}
/*
* Maps a sequence of resident pages belonging to the same object.
* The sequence begins with the given page m_start. This page is
* mapped at the given virtual address start. Each subsequent page is
* mapped at a virtual address that is offset from start by the same
* amount as the page is offset from m_start within the object. The
* last page in the sequence is the page with the largest offset from
* m_start that can be mapped at a virtual address less than the given
* virtual address end. Not every virtual page between start and end
* is mapped; only those for which a resident page exists with the
* corresponding offset from m_start are mapped.
*/
void
pmap_enter_object(pmap_t pmap, vm_offset_t start, vm_offset_t end,
vm_page_t m_start, vm_prot_t prot)
{
struct rwlock *lock;
vm_offset_t va;
vm_page_t m, mpte;
vm_pindex_t diff, psize;
VM_OBJECT_ASSERT_LOCKED(m_start->object);
psize = atop(end - start);
mpte = NULL;
m = m_start;
lock = NULL;
rw_rlock(&pvh_global_lock);
PMAP_LOCK(pmap);
while (m != NULL && (diff = m->pindex - m_start->pindex) < psize) {
va = start + ptoa(diff);
mpte = pmap_enter_quick_locked(pmap, va, m, prot, mpte, &lock);
m = TAILQ_NEXT(m, listq);
}
if (lock != NULL)
rw_wunlock(lock);
rw_runlock(&pvh_global_lock);
PMAP_UNLOCK(pmap);
}
/*
* this code makes some *MAJOR* assumptions:
* 1. Current pmap & pmap exists.
* 2. Not wired.
* 3. Read access.
* 4. No page table pages.
* but is *MUCH* faster than pmap_enter...
*/
void
pmap_enter_quick(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_prot_t prot)
{
struct rwlock *lock;
lock = NULL;
rw_rlock(&pvh_global_lock);
PMAP_LOCK(pmap);
(void)pmap_enter_quick_locked(pmap, va, m, prot, NULL, &lock);
if (lock != NULL)
rw_wunlock(lock);
rw_runlock(&pvh_global_lock);
PMAP_UNLOCK(pmap);
}
static vm_page_t
pmap_enter_quick_locked(pmap_t pmap, vm_offset_t va, vm_page_t m,
vm_prot_t prot, vm_page_t mpte, struct rwlock **lockp)
{
struct spglist free;
vm_paddr_t phys;
pd_entry_t *l2;
pt_entry_t *l3;
vm_paddr_t pa;
pt_entry_t entry;
pn_t pn;
KASSERT(va < kmi.clean_sva || va >= kmi.clean_eva ||
(m->oflags & VPO_UNMANAGED) != 0,
("pmap_enter_quick_locked: managed mapping within the clean submap"));
rw_assert(&pvh_global_lock, RA_LOCKED);
PMAP_LOCK_ASSERT(pmap, MA_OWNED);
CTR2(KTR_PMAP, "pmap_enter_quick_locked: %p %lx", pmap, va);
/*
* In the case that a page table page is not
* resident, we are creating it here.
*/
if (va < VM_MAXUSER_ADDRESS) {
vm_pindex_t l2pindex;
/*
* Calculate pagetable page index
*/
l2pindex = pmap_l2_pindex(va);
if (mpte && (mpte->pindex == l2pindex)) {
mpte->wire_count++;
} else {
/*
* Get the l2 entry
*/
l2 = pmap_l2(pmap, va);
/*
* If the page table page is mapped, we just increment
* the hold count, and activate it. Otherwise, we
* attempt to allocate a page table page. If this
* attempt fails, we don't retry. Instead, we give up.
*/
if (l2 != NULL && pmap_load(l2) != 0) {
phys = PTE_TO_PHYS(pmap_load(l2));
mpte = PHYS_TO_VM_PAGE(phys);
mpte->wire_count++;
} else {
/*
* Pass NULL instead of the PV list lock
* pointer, because we don't intend to sleep.
*/
mpte = _pmap_alloc_l3(pmap, l2pindex, NULL);
if (mpte == NULL)
return (mpte);
}
}
l3 = (pt_entry_t *)PHYS_TO_DMAP(VM_PAGE_TO_PHYS(mpte));
l3 = &l3[pmap_l3_index(va)];
} else {
mpte = NULL;
l3 = pmap_l3(kernel_pmap, va);
}
if (l3 == NULL)
panic("pmap_enter_quick_locked: No l3");
if (pmap_load(l3) != 0) {
if (mpte != NULL) {
mpte->wire_count--;
mpte = NULL;
}
return (mpte);
}
/*
* Enter on the PV list if part of our managed memory.
*/
if ((m->oflags & VPO_UNMANAGED) == 0 &&
!pmap_try_insert_pv_entry(pmap, va, m, lockp)) {
if (mpte != NULL) {
SLIST_INIT(&free);
if (pmap_unwire_l3(pmap, va, mpte, &free)) {
pmap_invalidate_page(pmap, va);
pmap_free_zero_pages(&free);
}
mpte = NULL;
}
return (mpte);
}
/*
* Increment counters
*/
pmap_resident_count_inc(pmap, 1);
pa = VM_PAGE_TO_PHYS(m);
pn = (pa / PAGE_SIZE);
/* RISCVTODO: check permissions */
entry = (PTE_VALID | (PTE_TYPE_SRWX << PTE_TYPE_S));
entry |= (pn << PTE_PPN0_S);
/*
* Now validate mapping with RO protection
*/
if ((m->oflags & VPO_UNMANAGED) == 0)
entry |= PTE_SW_MANAGED;
pmap_load_store(l3, entry);
PTE_SYNC(l3);
pmap_invalidate_page(pmap, va);
return (mpte);
}
/*
* This code maps large physical mmap regions into the
* processor address space. Note that some shortcuts
* are taken, but the code works.
*/
void
pmap_object_init_pt(pmap_t pmap, vm_offset_t addr, vm_object_t object,
vm_pindex_t pindex, vm_size_t size)
{
VM_OBJECT_ASSERT_WLOCKED(object);
KASSERT(object->type == OBJT_DEVICE || object->type == OBJT_SG,
("pmap_object_init_pt: non-device object"));
}
/*
* Clear the wired attribute from the mappings for the specified range of
* addresses in the given pmap. Every valid mapping within that range
* must have the wired attribute set. In contrast, invalid mappings
* cannot have the wired attribute set, so they are ignored.
*
* The wired attribute of the page table entry is not a hardware feature,
* so there is no need to invalidate any TLB entries.
*/
void
pmap_unwire(pmap_t pmap, vm_offset_t sva, vm_offset_t eva)
{
vm_offset_t va_next;
pd_entry_t *l1, *l2;
pt_entry_t *l3;
boolean_t pv_lists_locked;
pv_lists_locked = FALSE;
PMAP_LOCK(pmap);
for (; sva < eva; sva = va_next) {
l1 = pmap_l1(pmap, sva);
if (pmap_load(l1) == 0) {
va_next = (sva + L1_SIZE) & ~L1_OFFSET;
if (va_next < sva)
va_next = eva;
continue;
}
va_next = (sva + L2_SIZE) & ~L2_OFFSET;
if (va_next < sva)
va_next = eva;
l2 = pmap_l1_to_l2(l1, sva);
if (pmap_load(l2) == 0)
continue;
if (va_next > eva)
va_next = eva;
for (l3 = pmap_l2_to_l3(l2, sva); sva != va_next; l3++,
sva += L3_SIZE) {
if (pmap_load(l3) == 0)
continue;
if ((pmap_load(l3) & PTE_SW_WIRED) == 0)
panic("pmap_unwire: l3 %#jx is missing "
"PTE_SW_WIRED", (uintmax_t)*l3);
/*
* PG_W must be cleared atomically. Although the pmap
* lock synchronizes access to PG_W, another processor
* could be setting PG_M and/or PG_A concurrently.
*/
atomic_clear_long(l3, PTE_SW_WIRED);
pmap->pm_stats.wired_count--;
}
}
if (pv_lists_locked)
rw_runlock(&pvh_global_lock);
PMAP_UNLOCK(pmap);
}
/*
* Copy the range specified by src_addr/len
* from the source map to the range dst_addr/len
* in the destination map.
*
* This routine is only advisory and need not do anything.
*/
void
pmap_copy(pmap_t dst_pmap, pmap_t src_pmap, vm_offset_t dst_addr, vm_size_t len,
vm_offset_t src_addr)
{
}
/*
* pmap_zero_page zeros the specified hardware page by mapping
* the page into KVM and using bzero to clear its contents.
*/
void
pmap_zero_page(vm_page_t m)
{
vm_offset_t va = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(m));
pagezero((void *)va);
}
/*
* pmap_zero_page_area zeros the specified hardware page by mapping
* the page into KVM and using bzero to clear its contents.
*
* off and size may not cover an area beyond a single hardware page.
*/
void
pmap_zero_page_area(vm_page_t m, int off, int size)
{
vm_offset_t va = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(m));
if (off == 0 && size == PAGE_SIZE)
pagezero((void *)va);
else
bzero((char *)va + off, size);
}
/*
* pmap_zero_page_idle zeros the specified hardware page by mapping
* the page into KVM and using bzero to clear its contents. This
* is intended to be called from the vm_pagezero process only and
* outside of Giant.
*/
void
pmap_zero_page_idle(vm_page_t m)
{
vm_offset_t va = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(m));
pagezero((void *)va);
}
/*
* pmap_copy_page copies the specified (machine independent)
* page by mapping the page into virtual memory and using
* bcopy to copy the page, one machine dependent page at a
* time.
*/
void
pmap_copy_page(vm_page_t msrc, vm_page_t mdst)
{
vm_offset_t src = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(msrc));
vm_offset_t dst = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(mdst));
pagecopy((void *)src, (void *)dst);
}
int unmapped_buf_allowed = 1;
void
pmap_copy_pages(vm_page_t ma[], vm_offset_t a_offset, vm_page_t mb[],
vm_offset_t b_offset, int xfersize)
{
void *a_cp, *b_cp;
vm_page_t m_a, m_b;
vm_paddr_t p_a, p_b;
vm_offset_t a_pg_offset, b_pg_offset;
int cnt;
while (xfersize > 0) {
a_pg_offset = a_offset & PAGE_MASK;
m_a = ma[a_offset >> PAGE_SHIFT];
p_a = m_a->phys_addr;
b_pg_offset = b_offset & PAGE_MASK;
m_b = mb[b_offset >> PAGE_SHIFT];
p_b = m_b->phys_addr;
cnt = min(xfersize, PAGE_SIZE - a_pg_offset);
cnt = min(cnt, PAGE_SIZE - b_pg_offset);
if (__predict_false(!PHYS_IN_DMAP(p_a))) {
panic("!DMAP a %lx", p_a);
} else {
a_cp = (char *)PHYS_TO_DMAP(p_a) + a_pg_offset;
}
if (__predict_false(!PHYS_IN_DMAP(p_b))) {
panic("!DMAP b %lx", p_b);
} else {
b_cp = (char *)PHYS_TO_DMAP(p_b) + b_pg_offset;
}
bcopy(a_cp, b_cp, cnt);
a_offset += cnt;
b_offset += cnt;
xfersize -= cnt;
}
}
vm_offset_t
pmap_quick_enter_page(vm_page_t m)
{
return (PHYS_TO_DMAP(VM_PAGE_TO_PHYS(m)));
}
void
pmap_quick_remove_page(vm_offset_t addr)
{
}
/*
* Returns true if the pmap's pv is one of the first
* 16 pvs linked to from this page. This count may
* be changed upwards or downwards in the future; it
* is only necessary that true be returned for a small
* subset of pmaps for proper page aging.
*/
boolean_t
pmap_page_exists_quick(pmap_t pmap, vm_page_t m)
{
struct rwlock *lock;
pv_entry_t pv;
int loops = 0;
boolean_t rv;
KASSERT((m->oflags & VPO_UNMANAGED) == 0,
("pmap_page_exists_quick: page %p is not managed", m));
rv = FALSE;
rw_rlock(&pvh_global_lock);
lock = VM_PAGE_TO_PV_LIST_LOCK(m);
rw_rlock(lock);
TAILQ_FOREACH(pv, &m->md.pv_list, pv_next) {
if (PV_PMAP(pv) == pmap) {
rv = TRUE;
break;
}
loops++;
if (loops >= 16)
break;
}
rw_runlock(lock);
rw_runlock(&pvh_global_lock);
return (rv);
}
/*
* pmap_page_wired_mappings:
*
* Return the number of managed mappings to the given physical page
* that are wired.
*/
int
pmap_page_wired_mappings(vm_page_t m)
{
struct rwlock *lock;
pmap_t pmap;
pt_entry_t *l3;
pv_entry_t pv;
int count, md_gen;
if ((m->oflags & VPO_UNMANAGED) != 0)
return (0);
rw_rlock(&pvh_global_lock);
lock = VM_PAGE_TO_PV_LIST_LOCK(m);
rw_rlock(lock);
restart:
count = 0;
TAILQ_FOREACH(pv, &m->md.pv_list, pv_next) {
pmap = PV_PMAP(pv);
if (!PMAP_TRYLOCK(pmap)) {
md_gen = m->md.pv_gen;
rw_runlock(lock);
PMAP_LOCK(pmap);
rw_rlock(lock);
if (md_gen != m->md.pv_gen) {
PMAP_UNLOCK(pmap);
goto restart;
}
}
l3 = pmap_l3(pmap, pv->pv_va);
if (l3 != NULL && (pmap_load(l3) & PTE_SW_WIRED) != 0)
count++;
PMAP_UNLOCK(pmap);
}
rw_runlock(lock);
rw_runlock(&pvh_global_lock);
return (count);
}
/*
* Destroy all managed, non-wired mappings in the given user-space
* pmap. This pmap cannot be active on any processor besides the
* caller.
*
* This function cannot be applied to the kernel pmap. Moreover, it
* is not intended for general use. It is only to be used during
* process termination. Consequently, it can be implemented in ways
* that make it faster than pmap_remove(). First, it can more quickly
* destroy mappings by iterating over the pmap's collection of PV
* entries, rather than searching the page table. Second, it doesn't
* have to test and clear the page table entries atomically, because
* no processor is currently accessing the user address space. In
* particular, a page table entry's dirty bit won't change state once
* this function starts.
*/
void
pmap_remove_pages(pmap_t pmap)
{
pd_entry_t ptepde, *l2;
pt_entry_t *l3, tl3;
struct spglist free;
vm_page_t m;
pv_entry_t pv;
struct pv_chunk *pc, *npc;
struct rwlock *lock;
int64_t bit;
uint64_t inuse, bitmask;
int allfree, field, freed, idx;
vm_paddr_t pa;
lock = NULL;
SLIST_INIT(&free);
rw_rlock(&pvh_global_lock);
PMAP_LOCK(pmap);
TAILQ_FOREACH_SAFE(pc, &pmap->pm_pvchunk, pc_list, npc) {
allfree = 1;
freed = 0;
for (field = 0; field < _NPCM; field++) {
inuse = ~pc->pc_map[field] & pc_freemask[field];
while (inuse != 0) {
bit = ffsl(inuse) - 1;
bitmask = 1UL << bit;
idx = field * 64 + bit;
pv = &pc->pc_pventry[idx];
inuse &= ~bitmask;
l2 = pmap_l2(pmap, pv->pv_va);
ptepde = pmap_load(l2);
l3 = pmap_l2_to_l3(l2, pv->pv_va);
tl3 = pmap_load(l3);
/*
* We cannot remove wired pages from a process' mapping at this time
*/
if (tl3 & PTE_SW_WIRED) {
allfree = 0;
continue;
}
pa = PTE_TO_PHYS(tl3);
m = PHYS_TO_VM_PAGE(pa);
KASSERT(m->phys_addr == pa,
("vm_page_t %p phys_addr mismatch %016jx %016jx",
m, (uintmax_t)m->phys_addr,
(uintmax_t)tl3));
KASSERT((m->flags & PG_FICTITIOUS) != 0 ||
m < &vm_page_array[vm_page_array_size],
("pmap_remove_pages: bad l3 %#jx",
(uintmax_t)tl3));
if (pmap_is_current(pmap) &&
pmap_l3_valid_cacheable(pmap_load(l3)))
cpu_dcache_wb_range(pv->pv_va, L3_SIZE);
pmap_load_clear(l3);
PTE_SYNC(l3);
pmap_invalidate_page(pmap, pv->pv_va);
/*
* Update the vm_page_t clean/reference bits.
*/
if (pmap_page_dirty(tl3))
vm_page_dirty(m);
CHANGE_PV_LIST_LOCK_TO_VM_PAGE(&lock, m);
/* Mark free */
pc->pc_map[field] |= bitmask;
pmap_resident_count_dec(pmap, 1);
TAILQ_REMOVE(&m->md.pv_list, pv, pv_next);
m->md.pv_gen++;
pmap_unuse_l3(pmap, pv->pv_va, ptepde, &free);
freed++;
}
}
PV_STAT(atomic_add_long(&pv_entry_frees, freed));
PV_STAT(atomic_add_int(&pv_entry_spare, freed));
PV_STAT(atomic_subtract_long(&pv_entry_count, freed));
if (allfree) {
TAILQ_REMOVE(&pmap->pm_pvchunk, pc, pc_list);
free_pv_chunk(pc);
}
}
pmap_invalidate_all(pmap);
if (lock != NULL)
rw_wunlock(lock);
rw_runlock(&pvh_global_lock);
PMAP_UNLOCK(pmap);
pmap_free_zero_pages(&free);
}
/*
* This is used to check if a page has been accessed or modified. As we
* don't have a bit to see if it has been modified we have to assume it
* has been if the page is read/write.
*/
static boolean_t
pmap_page_test_mappings(vm_page_t m, boolean_t accessed, boolean_t modified)
{
struct rwlock *lock;
pv_entry_t pv;
pt_entry_t *l3, mask, value;
pmap_t pmap;
int md_gen;
boolean_t rv;
rv = FALSE;
rw_rlock(&pvh_global_lock);
lock = VM_PAGE_TO_PV_LIST_LOCK(m);
rw_rlock(lock);
restart:
TAILQ_FOREACH(pv, &m->md.pv_list, pv_next) {
pmap = PV_PMAP(pv);
if (!PMAP_TRYLOCK(pmap)) {
md_gen = m->md.pv_gen;
rw_runlock(lock);
PMAP_LOCK(pmap);
rw_rlock(lock);
if (md_gen != m->md.pv_gen) {
PMAP_UNLOCK(pmap);
goto restart;
}
}
l3 = pmap_l3(pmap, pv->pv_va);
mask = 0;
value = 0;
if (modified) {
mask |= PTE_DIRTY;
value |= PTE_DIRTY;
}
if (accessed) {
mask |= PTE_REF;
value |= PTE_REF;
}
#if 0
if (modified) {
mask |= ATTR_AP_RW_BIT;
value |= ATTR_AP(ATTR_AP_RW);
}
if (accessed) {
mask |= ATTR_AF | ATTR_DESCR_MASK;
value |= ATTR_AF | L3_PAGE;
}
#endif
rv = (pmap_load(l3) & mask) == value;
PMAP_UNLOCK(pmap);
if (rv)
goto out;
}
out:
rw_runlock(lock);
rw_runlock(&pvh_global_lock);
return (rv);
}
/*
* pmap_is_modified:
*
* Return whether or not the specified physical page was modified
* in any physical maps.
*/
boolean_t
pmap_is_modified(vm_page_t m)
{
KASSERT((m->oflags & VPO_UNMANAGED) == 0,
("pmap_is_modified: page %p is not managed", m));
/*
* If the page is not exclusive busied, then PGA_WRITEABLE cannot be
* concurrently set while the object is locked. Thus, if PGA_WRITEABLE
* is clear, no PTEs can have PG_M set.
*/
VM_OBJECT_ASSERT_WLOCKED(m->object);
if (!vm_page_xbusied(m) && (m->aflags & PGA_WRITEABLE) == 0)
return (FALSE);
return (pmap_page_test_mappings(m, FALSE, TRUE));
}
/*
* pmap_is_prefaultable:
*
* Return whether or not the specified virtual address is eligible
* for prefault.
*/
boolean_t
pmap_is_prefaultable(pmap_t pmap, vm_offset_t addr)
{
pt_entry_t *l3;
boolean_t rv;
rv = FALSE;
PMAP_LOCK(pmap);
l3 = pmap_l3(pmap, addr);
if (l3 != NULL && pmap_load(l3) != 0) {
rv = TRUE;
}
PMAP_UNLOCK(pmap);
return (rv);
}
/*
* pmap_is_referenced:
*
* Return whether or not the specified physical page was referenced
* in any physical maps.
*/
boolean_t
pmap_is_referenced(vm_page_t m)
{
KASSERT((m->oflags & VPO_UNMANAGED) == 0,
("pmap_is_referenced: page %p is not managed", m));
return (pmap_page_test_mappings(m, TRUE, FALSE));
}
/*
* Clear the write and modified bits in each of the given page's mappings.
*/
void
pmap_remove_write(vm_page_t m)
{
pmap_t pmap;
struct rwlock *lock;
pv_entry_t pv;
pt_entry_t *l3, oldl3;
pt_entry_t newl3;
int md_gen;
KASSERT((m->oflags & VPO_UNMANAGED) == 0,
("pmap_remove_write: page %p is not managed", m));
/*
* If the page is not exclusive busied, then PGA_WRITEABLE cannot be
* set by another thread while the object is locked. Thus,
* if PGA_WRITEABLE is clear, no page table entries need updating.
*/
VM_OBJECT_ASSERT_WLOCKED(m->object);
if (!vm_page_xbusied(m) && (m->aflags & PGA_WRITEABLE) == 0)
return;
rw_rlock(&pvh_global_lock);
lock = VM_PAGE_TO_PV_LIST_LOCK(m);
retry_pv_loop:
rw_wlock(lock);
TAILQ_FOREACH(pv, &m->md.pv_list, pv_next) {
pmap = PV_PMAP(pv);
if (!PMAP_TRYLOCK(pmap)) {
md_gen = m->md.pv_gen;
rw_wunlock(lock);
PMAP_LOCK(pmap);
rw_wlock(lock);
if (md_gen != m->md.pv_gen) {
PMAP_UNLOCK(pmap);
rw_wunlock(lock);
goto retry_pv_loop;
}
}
l3 = pmap_l3(pmap, pv->pv_va);
retry:
oldl3 = pmap_load(l3);
if (pmap_is_write(oldl3)) {
newl3 = oldl3 & ~(1 << PTE_TYPE_S);
if (!atomic_cmpset_long(l3, oldl3, newl3))
goto retry;
/* TODO: use pmap_page_dirty(oldl3) ? */
if ((oldl3 & PTE_REF) != 0)
vm_page_dirty(m);
pmap_invalidate_page(pmap, pv->pv_va);
}
PMAP_UNLOCK(pmap);
}
rw_wunlock(lock);
vm_page_aflag_clear(m, PGA_WRITEABLE);
rw_runlock(&pvh_global_lock);
}
static __inline boolean_t
safe_to_clear_referenced(pmap_t pmap, pt_entry_t pte)
{
return (FALSE);
}
#define PMAP_TS_REFERENCED_MAX 5
/*
* pmap_ts_referenced:
*
* Return a count of reference bits for a page, clearing those bits.
* It is not necessary for every reference bit to be cleared, but it
* is necessary that 0 only be returned when there are truly no
* reference bits set.
*
* XXX: The exact number of bits to check and clear is a matter that
* should be tested and standardized at some point in the future for
* optimal aging of shared pages.
*/
int
pmap_ts_referenced(vm_page_t m)
{
pv_entry_t pv, pvf;
pmap_t pmap;
struct rwlock *lock;
pd_entry_t *l2;
pt_entry_t *l3;
vm_paddr_t pa;
int cleared, md_gen, not_cleared;
struct spglist free;
KASSERT((m->oflags & VPO_UNMANAGED) == 0,
("pmap_ts_referenced: page %p is not managed", m));
SLIST_INIT(&free);
cleared = 0;
pa = VM_PAGE_TO_PHYS(m);
lock = PHYS_TO_PV_LIST_LOCK(pa);
rw_rlock(&pvh_global_lock);
rw_wlock(lock);
retry:
not_cleared = 0;
if ((pvf = TAILQ_FIRST(&m->md.pv_list)) == NULL)
goto out;
pv = pvf;
do {
if (pvf == NULL)
pvf = pv;
pmap = PV_PMAP(pv);
if (!PMAP_TRYLOCK(pmap)) {
md_gen = m->md.pv_gen;
rw_wunlock(lock);
PMAP_LOCK(pmap);
rw_wlock(lock);
if (md_gen != m->md.pv_gen) {
PMAP_UNLOCK(pmap);
goto retry;
}
}
l2 = pmap_l2(pmap, pv->pv_va);
KASSERT((pmap_load(l2) & PTE_TYPE_M) == (PTE_TYPE_PTR << PTE_TYPE_S),
("pmap_ts_referenced: found an invalid l2 table"));
l3 = pmap_l2_to_l3(l2, pv->pv_va);
if ((pmap_load(l3) & PTE_REF) != 0) {
if (safe_to_clear_referenced(pmap, pmap_load(l3))) {
/*
* TODO: We don't handle the access flag
* at all. We need to be able to set it in
* the exception handler.
*/
panic("RISCVTODO: safe_to_clear_referenced\n");
} else if ((pmap_load(l3) & PTE_SW_WIRED) == 0) {
/*
* Wired pages cannot be paged out so
* doing accessed bit emulation for
* them is wasted effort. We do the
* hard work for unwired pages only.
*/
pmap_remove_l3(pmap, l3, pv->pv_va,
pmap_load(l2), &free, &lock);
pmap_invalidate_page(pmap, pv->pv_va);
cleared++;
if (pvf == pv)
pvf = NULL;
pv = NULL;
KASSERT(lock == VM_PAGE_TO_PV_LIST_LOCK(m),
("inconsistent pv lock %p %p for page %p",
lock, VM_PAGE_TO_PV_LIST_LOCK(m), m));
} else
not_cleared++;
}
PMAP_UNLOCK(pmap);
/* Rotate the PV list if it has more than one entry. */
if (pv != NULL && TAILQ_NEXT(pv, pv_next) != NULL) {
TAILQ_REMOVE(&m->md.pv_list, pv, pv_next);
TAILQ_INSERT_TAIL(&m->md.pv_list, pv, pv_next);
m->md.pv_gen++;
}
} while ((pv = TAILQ_FIRST(&m->md.pv_list)) != pvf && cleared +
not_cleared < PMAP_TS_REFERENCED_MAX);
out:
rw_wunlock(lock);
rw_runlock(&pvh_global_lock);
pmap_free_zero_pages(&free);
return (cleared + not_cleared);
}
/*
* 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)
{
}
/*
* Clear the modify bits on the specified physical page.
*/
void
pmap_clear_modify(vm_page_t m)
{
KASSERT((m->oflags & VPO_UNMANAGED) == 0,
("pmap_clear_modify: page %p is not managed", m));
VM_OBJECT_ASSERT_WLOCKED(m->object);
KASSERT(!vm_page_xbusied(m),
("pmap_clear_modify: page %p is exclusive busied", m));
/*
* If the page is not PGA_WRITEABLE, then no PTEs can have PG_M set.
* If the object containing the page is locked and the page is not
* exclusive busied, then PGA_WRITEABLE cannot be concurrently set.
*/
if ((m->aflags & PGA_WRITEABLE) == 0)
return;
/* RISCVTODO: We lack support for tracking if a page is modified */
}
void *
pmap_mapbios(vm_paddr_t pa, vm_size_t size)
{
return ((void *)PHYS_TO_DMAP(pa));
}
void
pmap_unmapbios(vm_paddr_t pa, vm_size_t size)
{
}
/*
* Sets the memory attribute for the specified page.
*/
void
pmap_page_set_memattr(vm_page_t m, vm_memattr_t ma)
{
m->md.pv_memattr = ma;
/*
* RISCVTODO: Implement the below (from the amd64 pmap)
* If "m" is a normal page, update its direct mapping. This update
* can be relied upon to perform any cache operations that are
* required for data coherence.
*/
if ((m->flags & PG_FICTITIOUS) == 0 &&
PHYS_IN_DMAP(VM_PAGE_TO_PHYS(m)))
panic("RISCVTODO: pmap_page_set_memattr");
}
/*
* perform the pmap work for mincore
*/
int
pmap_mincore(pmap_t pmap, vm_offset_t addr, vm_paddr_t *locked_pa)
{
panic("RISCVTODO: pmap_mincore");
}
void
pmap_activate(struct thread *td)
{
pmap_t pmap;
critical_enter();
pmap = vmspace_pmap(td->td_proc->p_vmspace);
td->td_pcb->pcb_l1addr = vtophys(pmap->pm_l1);
__asm __volatile("csrw sptbr, %0" :: "r"(td->td_pcb->pcb_l1addr));
pmap_invalidate_all(pmap);
critical_exit();
}
void
pmap_sync_icache(pmap_t pm, vm_offset_t va, vm_size_t sz)
{
panic("RISCVTODO: pmap_sync_icache");
}
/*
* Increase the starting virtual address of the given mapping if a
* different alignment might result in more superpage mappings.
*/
void
pmap_align_superpage(vm_object_t object, vm_ooffset_t offset,
vm_offset_t *addr, vm_size_t size)
{
}
/**
* Get the kernel virtual address of a set of physical pages. If there are
* physical addresses not covered by the DMAP perform a transient mapping
* that will be removed when calling pmap_unmap_io_transient.
*
* \param page The pages the caller wishes to obtain the virtual
* address on the kernel memory map.
* \param vaddr On return contains the kernel virtual memory address
* of the pages passed in the page parameter.
* \param count Number of pages passed in.
* \param can_fault TRUE if the thread using the mapped pages can take
* page faults, FALSE otherwise.
*
* \returns TRUE if the caller must call pmap_unmap_io_transient when
* finished or FALSE otherwise.
*
*/
boolean_t
pmap_map_io_transient(vm_page_t page[], vm_offset_t vaddr[], int count,
boolean_t can_fault)
{
vm_paddr_t paddr;
boolean_t needs_mapping;
int error, i;
/*
* Allocate any KVA space that we need, this is done in a separate
* loop to prevent calling vmem_alloc while pinned.
*/
needs_mapping = FALSE;
for (i = 0; i < count; i++) {
paddr = VM_PAGE_TO_PHYS(page[i]);
if (__predict_false(paddr >= DMAP_MAX_PHYSADDR)) {
error = vmem_alloc(kernel_arena, PAGE_SIZE,
M_BESTFIT | M_WAITOK, &vaddr[i]);
KASSERT(error == 0, ("vmem_alloc failed: %d", error));
needs_mapping = TRUE;
} else {
vaddr[i] = PHYS_TO_DMAP(paddr);
}
}
/* Exit early if everything is covered by the DMAP */
if (!needs_mapping)
return (FALSE);
if (!can_fault)
sched_pin();
for (i = 0; i < count; i++) {
paddr = VM_PAGE_TO_PHYS(page[i]);
if (paddr >= DMAP_MAX_PHYSADDR) {
panic(
"pmap_map_io_transient: TODO: Map out of DMAP data");
}
}
return (needs_mapping);
}
void
pmap_unmap_io_transient(vm_page_t page[], vm_offset_t vaddr[], int count,
boolean_t can_fault)
{
vm_paddr_t paddr;
int i;
if (!can_fault)
sched_unpin();
for (i = 0; i < count; i++) {
paddr = VM_PAGE_TO_PHYS(page[i]);
if (paddr >= DMAP_MAX_PHYSADDR) {
panic("RISCVTODO: pmap_unmap_io_transient: Unmap data");
}
}
}
Index: user/ngie/bsnmp_cleanup/sys/x86/x86/mca.c
===================================================================
--- user/ngie/bsnmp_cleanup/sys/x86/x86/mca.c (revision 299696)
+++ user/ngie/bsnmp_cleanup/sys/x86/x86/mca.c (revision 299697)
@@ -1,1040 +1,1041 @@
/*-
* Copyright (c) 2009 Hudson River Trading LLC
* Written by: John H. Baldwin <jhb@FreeBSD.org>
* 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.
*/
/*
* Support for x86 machine check architecture.
*/
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
#ifdef __amd64__
#define DEV_APIC
#else
#include "opt_apic.h"
#endif
#include <sys/param.h>
#include <sys/bus.h>
#include <sys/interrupt.h>
#include <sys/kernel.h>
#include <sys/lock.h>
#include <sys/malloc.h>
#include <sys/mutex.h>
#include <sys/proc.h>
#include <sys/sched.h>
#include <sys/smp.h>
#include <sys/sysctl.h>
#include <sys/systm.h>
#include <sys/taskqueue.h>
#include <machine/intr_machdep.h>
#include <x86/apicvar.h>
#include <machine/cpu.h>
#include <machine/cputypes.h>
#include <x86/mca.h>
#include <machine/md_var.h>
#include <machine/specialreg.h>
/* Modes for mca_scan() */
enum scan_mode {
POLLED,
MCE,
CMCI,
};
#ifdef DEV_APIC
/*
* State maintained for each monitored MCx bank to control the
* corrected machine check interrupt threshold.
*/
struct cmc_state {
int max_threshold;
int last_intr;
};
#endif
struct mca_internal {
struct mca_record rec;
int logged;
STAILQ_ENTRY(mca_internal) link;
};
static MALLOC_DEFINE(M_MCA, "MCA", "Machine Check Architecture");
static volatile int mca_count; /* Number of records stored. */
static int mca_banks; /* Number of per-CPU register banks. */
static SYSCTL_NODE(_hw, OID_AUTO, mca, CTLFLAG_RD, NULL,
"Machine Check Architecture");
static int mca_enabled = 1;
SYSCTL_INT(_hw_mca, OID_AUTO, enabled, CTLFLAG_RDTUN, &mca_enabled, 0,
"Administrative toggle for machine check support");
static int amd10h_L1TP = 1;
SYSCTL_INT(_hw_mca, OID_AUTO, amd10h_L1TP, CTLFLAG_RDTUN, &amd10h_L1TP, 0,
"Administrative toggle for logging of level one TLB parity (L1TP) errors");
static int intel6h_HSD131;
SYSCTL_INT(_hw_mca, OID_AUTO, intel6h_HSD131, CTLFLAG_RDTUN, &intel6h_HSD131, 0,
"Administrative toggle for logging of spurious corrected errors");
int workaround_erratum383;
-SYSCTL_INT(_hw_mca, OID_AUTO, erratum383, CTLFLAG_RD, &workaround_erratum383, 0,
+SYSCTL_INT(_hw_mca, OID_AUTO, erratum383, CTLFLAG_RDTUN,
+ &workaround_erratum383, 0,
"Is the workaround for Erratum 383 on AMD Family 10h processors enabled?");
static STAILQ_HEAD(, mca_internal) mca_freelist;
static int mca_freecount;
static STAILQ_HEAD(, mca_internal) mca_records;
static struct callout mca_timer;
static int mca_ticks = 3600; /* Check hourly by default. */
static struct taskqueue *mca_tq;
static struct task mca_refill_task, mca_scan_task;
static struct mtx mca_lock;
#ifdef DEV_APIC
static struct cmc_state **cmc_state; /* Indexed by cpuid, bank */
static int cmc_throttle = 60; /* Time in seconds to throttle CMCI. */
#endif
static int
sysctl_positive_int(SYSCTL_HANDLER_ARGS)
{
int error, value;
value = *(int *)arg1;
error = sysctl_handle_int(oidp, &value, 0, req);
if (error || req->newptr == NULL)
return (error);
if (value <= 0)
return (EINVAL);
*(int *)arg1 = value;
return (0);
}
static int
sysctl_mca_records(SYSCTL_HANDLER_ARGS)
{
int *name = (int *)arg1;
u_int namelen = arg2;
struct mca_record record;
struct mca_internal *rec;
int i;
if (namelen != 1)
return (EINVAL);
if (name[0] < 0 || name[0] >= mca_count)
return (EINVAL);
mtx_lock_spin(&mca_lock);
if (name[0] >= mca_count) {
mtx_unlock_spin(&mca_lock);
return (EINVAL);
}
i = 0;
STAILQ_FOREACH(rec, &mca_records, link) {
if (i == name[0]) {
record = rec->rec;
break;
}
i++;
}
mtx_unlock_spin(&mca_lock);
return (SYSCTL_OUT(req, &record, sizeof(record)));
}
static const char *
mca_error_ttype(uint16_t mca_error)
{
switch ((mca_error & 0x000c) >> 2) {
case 0:
return ("I");
case 1:
return ("D");
case 2:
return ("G");
}
return ("?");
}
static const char *
mca_error_level(uint16_t mca_error)
{
switch (mca_error & 0x0003) {
case 0:
return ("L0");
case 1:
return ("L1");
case 2:
return ("L2");
case 3:
return ("LG");
}
return ("L?");
}
static const char *
mca_error_request(uint16_t mca_error)
{
switch ((mca_error & 0x00f0) >> 4) {
case 0x0:
return ("ERR");
case 0x1:
return ("RD");
case 0x2:
return ("WR");
case 0x3:
return ("DRD");
case 0x4:
return ("DWR");
case 0x5:
return ("IRD");
case 0x6:
return ("PREFETCH");
case 0x7:
return ("EVICT");
case 0x8:
return ("SNOOP");
}
return ("???");
}
static const char *
mca_error_mmtype(uint16_t mca_error)
{
switch ((mca_error & 0x70) >> 4) {
case 0x0:
return ("GEN");
case 0x1:
return ("RD");
case 0x2:
return ("WR");
case 0x3:
return ("AC");
case 0x4:
return ("MS");
}
return ("???");
}
static int __nonnull(1)
mca_mute(const struct mca_record *rec)
{
/*
* Skip spurious corrected parity errors generated by Intel Haswell-
* and Broadwell-based CPUs (see HSD131, HSM142, HSW131 and BDM48
* erratum respectively), unless reporting is enabled.
* Note that these errors also have been observed with the D0-stepping
* of Haswell, while at least initially the CPU specification updates
* suggested only the C0-stepping to be affected. Similarly, Celeron
* 2955U with a CPU ID of 0x45 apparently are also concerned with the
* same problem, with HSM142 only referring to 0x3c and 0x46.
*/
if (cpu_vendor_id == CPU_VENDOR_INTEL &&
CPUID_TO_FAMILY(cpu_id) == 0x6 &&
(CPUID_TO_MODEL(cpu_id) == 0x3c || /* HSD131, HSM142, HSW131 */
CPUID_TO_MODEL(cpu_id) == 0x3d || /* BDM48 */
CPUID_TO_MODEL(cpu_id) == 0x45 ||
CPUID_TO_MODEL(cpu_id) == 0x46) && /* HSM142 */
rec->mr_bank == 0 &&
(rec->mr_status & 0xa0000000ffffffff) == 0x80000000000f0005 &&
!intel6h_HSD131)
return (1);
return (0);
}
/* Dump details about a single machine check. */
static void __nonnull(1)
mca_log(const struct mca_record *rec)
{
uint16_t mca_error;
if (mca_mute(rec))
return;
printf("MCA: Bank %d, Status 0x%016llx\n", rec->mr_bank,
(long long)rec->mr_status);
printf("MCA: Global Cap 0x%016llx, Status 0x%016llx\n",
(long long)rec->mr_mcg_cap, (long long)rec->mr_mcg_status);
printf("MCA: Vendor \"%s\", ID 0x%x, APIC ID %d\n", cpu_vendor,
rec->mr_cpu_id, rec->mr_apic_id);
printf("MCA: CPU %d ", rec->mr_cpu);
if (rec->mr_status & MC_STATUS_UC)
printf("UNCOR ");
else {
printf("COR ");
if (rec->mr_mcg_cap & MCG_CAP_CMCI_P)
printf("(%lld) ", ((long long)rec->mr_status &
MC_STATUS_COR_COUNT) >> 38);
}
if (rec->mr_status & MC_STATUS_PCC)
printf("PCC ");
if (rec->mr_status & MC_STATUS_OVER)
printf("OVER ");
mca_error = rec->mr_status & MC_STATUS_MCA_ERROR;
switch (mca_error) {
/* Simple error codes. */
case 0x0000:
printf("no error");
break;
case 0x0001:
printf("unclassified error");
break;
case 0x0002:
printf("ucode ROM parity error");
break;
case 0x0003:
printf("external error");
break;
case 0x0004:
printf("FRC error");
break;
case 0x0005:
printf("internal parity error");
break;
case 0x0400:
printf("internal timer error");
break;
default:
if ((mca_error & 0xfc00) == 0x0400) {
printf("internal error %x", mca_error & 0x03ff);
break;
}
/* Compound error codes. */
/* Memory hierarchy error. */
if ((mca_error & 0xeffc) == 0x000c) {
printf("%s memory error", mca_error_level(mca_error));
break;
}
/* TLB error. */
if ((mca_error & 0xeff0) == 0x0010) {
printf("%sTLB %s error", mca_error_ttype(mca_error),
mca_error_level(mca_error));
break;
}
/* Memory controller error. */
if ((mca_error & 0xef80) == 0x0080) {
printf("%s channel ", mca_error_mmtype(mca_error));
if ((mca_error & 0x000f) != 0x000f)
printf("%d", mca_error & 0x000f);
else
printf("??");
printf(" memory error");
break;
}
/* Cache error. */
if ((mca_error & 0xef00) == 0x0100) {
printf("%sCACHE %s %s error",
mca_error_ttype(mca_error),
mca_error_level(mca_error),
mca_error_request(mca_error));
break;
}
/* Bus and/or Interconnect error. */
if ((mca_error & 0xe800) == 0x0800) {
printf("BUS%s ", mca_error_level(mca_error));
switch ((mca_error & 0x0600) >> 9) {
case 0:
printf("Source");
break;
case 1:
printf("Responder");
break;
case 2:
printf("Observer");
break;
default:
printf("???");
break;
}
printf(" %s ", mca_error_request(mca_error));
switch ((mca_error & 0x000c) >> 2) {
case 0:
printf("Memory");
break;
case 2:
printf("I/O");
break;
case 3:
printf("Other");
break;
default:
printf("???");
break;
}
if (mca_error & 0x0100)
printf(" timed out");
break;
}
printf("unknown error %x", mca_error);
break;
}
printf("\n");
if (rec->mr_status & MC_STATUS_ADDRV)
printf("MCA: Address 0x%llx\n", (long long)rec->mr_addr);
if (rec->mr_status & MC_STATUS_MISCV)
printf("MCA: Misc 0x%llx\n", (long long)rec->mr_misc);
}
static int __nonnull(2)
mca_check_status(int bank, struct mca_record *rec)
{
uint64_t status;
u_int p[4];
status = rdmsr(MSR_MC_STATUS(bank));
if (!(status & MC_STATUS_VAL))
return (0);
/* Save exception information. */
rec->mr_status = status;
rec->mr_bank = bank;
rec->mr_addr = 0;
if (status & MC_STATUS_ADDRV)
rec->mr_addr = rdmsr(MSR_MC_ADDR(bank));
rec->mr_misc = 0;
if (status & MC_STATUS_MISCV)
rec->mr_misc = rdmsr(MSR_MC_MISC(bank));
rec->mr_tsc = rdtsc();
rec->mr_apic_id = PCPU_GET(apic_id);
rec->mr_mcg_cap = rdmsr(MSR_MCG_CAP);
rec->mr_mcg_status = rdmsr(MSR_MCG_STATUS);
rec->mr_cpu_id = cpu_id;
rec->mr_cpu_vendor_id = cpu_vendor_id;
rec->mr_cpu = PCPU_GET(cpuid);
/*
* Clear machine check. Don't do this for uncorrectable
* errors so that the BIOS can see them.
*/
if (!(rec->mr_status & (MC_STATUS_PCC | MC_STATUS_UC))) {
wrmsr(MSR_MC_STATUS(bank), 0);
do_cpuid(0, p);
}
return (1);
}
static void
mca_fill_freelist(void)
{
struct mca_internal *rec;
int desired;
/*
* Ensure we have at least one record for each bank and one
* record per CPU.
*/
desired = imax(mp_ncpus, mca_banks);
mtx_lock_spin(&mca_lock);
while (mca_freecount < desired) {
mtx_unlock_spin(&mca_lock);
rec = malloc(sizeof(*rec), M_MCA, M_WAITOK);
mtx_lock_spin(&mca_lock);
STAILQ_INSERT_TAIL(&mca_freelist, rec, link);
mca_freecount++;
}
mtx_unlock_spin(&mca_lock);
}
static void
mca_refill(void *context, int pending)
{
mca_fill_freelist();
}
static void __nonnull(2)
mca_record_entry(enum scan_mode mode, const struct mca_record *record)
{
struct mca_internal *rec;
if (mode == POLLED) {
rec = malloc(sizeof(*rec), M_MCA, M_WAITOK);
mtx_lock_spin(&mca_lock);
} else {
mtx_lock_spin(&mca_lock);
rec = STAILQ_FIRST(&mca_freelist);
if (rec == NULL) {
printf("MCA: Unable to allocate space for an event.\n");
mca_log(record);
mtx_unlock_spin(&mca_lock);
return;
}
STAILQ_REMOVE_HEAD(&mca_freelist, link);
mca_freecount--;
}
rec->rec = *record;
rec->logged = 0;
STAILQ_INSERT_TAIL(&mca_records, rec, link);
mca_count++;
mtx_unlock_spin(&mca_lock);
if (mode == CMCI)
taskqueue_enqueue(mca_tq, &mca_refill_task);
}
#ifdef DEV_APIC
/*
* Update the interrupt threshold for a CMCI. The strategy is to use
* a low trigger that interrupts as soon as the first event occurs.
* However, if a steady stream of events arrive, the threshold is
* increased until the interrupts are throttled to once every
* cmc_throttle seconds or the periodic scan. If a periodic scan
* finds that the threshold is too high, it is lowered.
*/
static void
cmci_update(enum scan_mode mode, int bank, int valid, struct mca_record *rec)
{
struct cmc_state *cc;
uint64_t ctl;
u_int delta;
int count, limit;
/* Fetch the current limit for this bank. */
cc = &cmc_state[PCPU_GET(cpuid)][bank];
ctl = rdmsr(MSR_MC_CTL2(bank));
count = (rec->mr_status & MC_STATUS_COR_COUNT) >> 38;
delta = (u_int)(ticks - cc->last_intr);
/*
* If an interrupt was received less than cmc_throttle seconds
* since the previous interrupt and the count from the current
* event is greater than or equal to the current threshold,
* double the threshold up to the max.
*/
if (mode == CMCI && valid) {
limit = ctl & MC_CTL2_THRESHOLD;
if (delta < cmc_throttle && count >= limit &&
limit < cc->max_threshold) {
limit = min(limit << 1, cc->max_threshold);
ctl &= ~MC_CTL2_THRESHOLD;
ctl |= limit;
wrmsr(MSR_MC_CTL2(bank), limit);
}
cc->last_intr = ticks;
return;
}
/*
* When the banks are polled, check to see if the threshold
* should be lowered.
*/
if (mode != POLLED)
return;
/* If a CMCI occured recently, do nothing for now. */
if (delta < cmc_throttle)
return;
/*
* Compute a new limit based on the average rate of events per
* cmc_throttle seconds since the last interrupt.
*/
if (valid) {
count = (rec->mr_status & MC_STATUS_COR_COUNT) >> 38;
limit = count * cmc_throttle / delta;
if (limit <= 0)
limit = 1;
else if (limit > cc->max_threshold)
limit = cc->max_threshold;
} else
limit = 1;
if ((ctl & MC_CTL2_THRESHOLD) != limit) {
ctl &= ~MC_CTL2_THRESHOLD;
ctl |= limit;
wrmsr(MSR_MC_CTL2(bank), limit);
}
}
#endif
/*
* This scans all the machine check banks of the current CPU to see if
* there are any machine checks. Any non-recoverable errors are
* reported immediately via mca_log(). The current thread must be
* pinned when this is called. The 'mode' parameter indicates if we
* are being called from the MC exception handler, the CMCI handler,
* or the periodic poller. In the MC exception case this function
* returns true if the system is restartable. Otherwise, it returns a
* count of the number of valid MC records found.
*/
static int
mca_scan(enum scan_mode mode)
{
struct mca_record rec;
uint64_t mcg_cap, ucmask;
int count, i, recoverable, valid;
count = 0;
recoverable = 1;
ucmask = MC_STATUS_UC | MC_STATUS_PCC;
/* When handling a MCE#, treat the OVER flag as non-restartable. */
if (mode == MCE)
ucmask |= MC_STATUS_OVER;
mcg_cap = rdmsr(MSR_MCG_CAP);
for (i = 0; i < (mcg_cap & MCG_CAP_COUNT); i++) {
#ifdef DEV_APIC
/*
* For a CMCI, only check banks this CPU is
* responsible for.
*/
if (mode == CMCI && !(PCPU_GET(cmci_mask) & 1 << i))
continue;
#endif
valid = mca_check_status(i, &rec);
if (valid) {
count++;
if (rec.mr_status & ucmask) {
recoverable = 0;
mtx_lock_spin(&mca_lock);
mca_log(&rec);
mtx_unlock_spin(&mca_lock);
}
mca_record_entry(mode, &rec);
}
#ifdef DEV_APIC
/*
* If this is a bank this CPU monitors via CMCI,
* update the threshold.
*/
if (PCPU_GET(cmci_mask) & 1 << i)
cmci_update(mode, i, valid, &rec);
#endif
}
if (mode == POLLED)
mca_fill_freelist();
return (mode == MCE ? recoverable : count);
}
/*
* Scan the machine check banks on all CPUs by binding to each CPU in
* turn. If any of the CPUs contained new machine check records, log
* them to the console.
*/
static void
mca_scan_cpus(void *context, int pending)
{
struct mca_internal *mca;
struct thread *td;
int count, cpu;
mca_fill_freelist();
td = curthread;
count = 0;
thread_lock(td);
CPU_FOREACH(cpu) {
sched_bind(td, cpu);
thread_unlock(td);
count += mca_scan(POLLED);
thread_lock(td);
sched_unbind(td);
}
thread_unlock(td);
if (count != 0) {
mtx_lock_spin(&mca_lock);
STAILQ_FOREACH(mca, &mca_records, link) {
if (!mca->logged) {
mca->logged = 1;
mca_log(&mca->rec);
}
}
mtx_unlock_spin(&mca_lock);
}
}
static void
mca_periodic_scan(void *arg)
{
taskqueue_enqueue(mca_tq, &mca_scan_task);
callout_reset(&mca_timer, mca_ticks * hz, mca_periodic_scan, NULL);
}
static int
sysctl_mca_scan(SYSCTL_HANDLER_ARGS)
{
int error, i;
i = 0;
error = sysctl_handle_int(oidp, &i, 0, req);
if (error)
return (error);
if (i)
taskqueue_enqueue(mca_tq, &mca_scan_task);
return (0);
}
static void
mca_createtq(void *dummy)
{
if (mca_banks <= 0)
return;
mca_tq = taskqueue_create_fast("mca", M_WAITOK,
taskqueue_thread_enqueue, &mca_tq);
taskqueue_start_threads(&mca_tq, 1, PI_SWI(SWI_TQ), "mca taskq");
}
SYSINIT(mca_createtq, SI_SUB_CONFIGURE, SI_ORDER_ANY, mca_createtq, NULL);
static void
mca_startup(void *dummy)
{
if (mca_banks <= 0)
return;
callout_reset(&mca_timer, mca_ticks * hz, mca_periodic_scan, NULL);
}
SYSINIT(mca_startup, SI_SUB_SMP, SI_ORDER_ANY, mca_startup, NULL);
#ifdef DEV_APIC
static void
cmci_setup(void)
{
int i;
cmc_state = malloc((mp_maxid + 1) * sizeof(struct cmc_state *), M_MCA,
M_WAITOK);
for (i = 0; i <= mp_maxid; i++)
cmc_state[i] = malloc(sizeof(struct cmc_state) * mca_banks,
M_MCA, M_WAITOK | M_ZERO);
SYSCTL_ADD_PROC(NULL, SYSCTL_STATIC_CHILDREN(_hw_mca), OID_AUTO,
"cmc_throttle", CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE,
&cmc_throttle, 0, sysctl_positive_int, "I",
"Interval in seconds to throttle corrected MC interrupts");
}
#endif
static void
mca_setup(uint64_t mcg_cap)
{
/*
* On AMD Family 10h processors, unless logging of level one TLB
* parity (L1TP) errors is disabled, enable the recommended workaround
* for Erratum 383.
*/
if (cpu_vendor_id == CPU_VENDOR_AMD &&
CPUID_TO_FAMILY(cpu_id) == 0x10 && amd10h_L1TP)
workaround_erratum383 = 1;
mca_banks = mcg_cap & MCG_CAP_COUNT;
mtx_init(&mca_lock, "mca", NULL, MTX_SPIN);
STAILQ_INIT(&mca_records);
TASK_INIT(&mca_scan_task, 0, mca_scan_cpus, NULL);
callout_init(&mca_timer, 1);
STAILQ_INIT(&mca_freelist);
TASK_INIT(&mca_refill_task, 0, mca_refill, NULL);
mca_fill_freelist();
SYSCTL_ADD_INT(NULL, SYSCTL_STATIC_CHILDREN(_hw_mca), OID_AUTO,
"count", CTLFLAG_RD, (int *)(uintptr_t)&mca_count, 0,
"Record count");
SYSCTL_ADD_PROC(NULL, SYSCTL_STATIC_CHILDREN(_hw_mca), OID_AUTO,
"interval", CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, &mca_ticks,
0, sysctl_positive_int, "I",
"Periodic interval in seconds to scan for machine checks");
SYSCTL_ADD_NODE(NULL, SYSCTL_STATIC_CHILDREN(_hw_mca), OID_AUTO,
"records", CTLFLAG_RD, sysctl_mca_records, "Machine check records");
SYSCTL_ADD_PROC(NULL, SYSCTL_STATIC_CHILDREN(_hw_mca), OID_AUTO,
"force_scan", CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, NULL, 0,
sysctl_mca_scan, "I", "Force an immediate scan for machine checks");
#ifdef DEV_APIC
if (mcg_cap & MCG_CAP_CMCI_P)
cmci_setup();
#endif
}
#ifdef DEV_APIC
/*
* See if we should monitor CMCI for this bank. If CMCI_EN is already
* set in MC_CTL2, then another CPU is responsible for this bank, so
* ignore it. If CMCI_EN returns zero after being set, then this bank
* does not support CMCI_EN. If this CPU sets CMCI_EN, then it should
* now monitor this bank.
*/
static void
cmci_monitor(int i)
{
struct cmc_state *cc;
uint64_t ctl;
KASSERT(i < mca_banks, ("CPU %d has more MC banks", PCPU_GET(cpuid)));
ctl = rdmsr(MSR_MC_CTL2(i));
if (ctl & MC_CTL2_CMCI_EN)
/* Already monitored by another CPU. */
return;
/* Set the threshold to one event for now. */
ctl &= ~MC_CTL2_THRESHOLD;
ctl |= MC_CTL2_CMCI_EN | 1;
wrmsr(MSR_MC_CTL2(i), ctl);
ctl = rdmsr(MSR_MC_CTL2(i));
if (!(ctl & MC_CTL2_CMCI_EN))
/* This bank does not support CMCI. */
return;
cc = &cmc_state[PCPU_GET(cpuid)][i];
/* Determine maximum threshold. */
ctl &= ~MC_CTL2_THRESHOLD;
ctl |= 0x7fff;
wrmsr(MSR_MC_CTL2(i), ctl);
ctl = rdmsr(MSR_MC_CTL2(i));
cc->max_threshold = ctl & MC_CTL2_THRESHOLD;
/* Start off with a threshold of 1. */
ctl &= ~MC_CTL2_THRESHOLD;
ctl |= 1;
wrmsr(MSR_MC_CTL2(i), ctl);
/* Mark this bank as monitored. */
PCPU_SET(cmci_mask, PCPU_GET(cmci_mask) | 1 << i);
}
/*
* For resume, reset the threshold for any banks we monitor back to
* one and throw away the timestamp of the last interrupt.
*/
static void
cmci_resume(int i)
{
struct cmc_state *cc;
uint64_t ctl;
KASSERT(i < mca_banks, ("CPU %d has more MC banks", PCPU_GET(cpuid)));
/* Ignore banks not monitored by this CPU. */
if (!(PCPU_GET(cmci_mask) & 1 << i))
return;
cc = &cmc_state[PCPU_GET(cpuid)][i];
cc->last_intr = -ticks;
ctl = rdmsr(MSR_MC_CTL2(i));
ctl &= ~MC_CTL2_THRESHOLD;
ctl |= MC_CTL2_CMCI_EN | 1;
wrmsr(MSR_MC_CTL2(i), ctl);
}
#endif
/*
* Initializes per-CPU machine check registers and enables corrected
* machine check interrupts.
*/
static void
_mca_init(int boot)
{
uint64_t mcg_cap;
uint64_t ctl, mask;
int i, skip;
/* MCE is required. */
if (!mca_enabled || !(cpu_feature & CPUID_MCE))
return;
if (cpu_feature & CPUID_MCA) {
if (boot)
PCPU_SET(cmci_mask, 0);
mcg_cap = rdmsr(MSR_MCG_CAP);
if (mcg_cap & MCG_CAP_CTL_P)
/* Enable MCA features. */
wrmsr(MSR_MCG_CTL, MCG_CTL_ENABLE);
if (PCPU_GET(cpuid) == 0 && boot)
mca_setup(mcg_cap);
/*
* Disable logging of level one TLB parity (L1TP) errors by
* the data cache as an alternative workaround for AMD Family
* 10h Erratum 383. Unlike the recommended workaround, there
* is no performance penalty to this workaround. However,
* L1TP errors will go unreported.
*/
if (cpu_vendor_id == CPU_VENDOR_AMD &&
CPUID_TO_FAMILY(cpu_id) == 0x10 && !amd10h_L1TP) {
mask = rdmsr(MSR_MC0_CTL_MASK);
if ((mask & (1UL << 5)) == 0)
wrmsr(MSR_MC0_CTL_MASK, mask | (1UL << 5));
}
for (i = 0; i < (mcg_cap & MCG_CAP_COUNT); i++) {
/* By default enable logging of all errors. */
ctl = 0xffffffffffffffffUL;
skip = 0;
if (cpu_vendor_id == CPU_VENDOR_INTEL) {
/*
* For P6 models before Nehalem MC0_CTL is
* always enabled and reserved.
*/
if (i == 0 && CPUID_TO_FAMILY(cpu_id) == 0x6
&& CPUID_TO_MODEL(cpu_id) < 0x1a)
skip = 1;
} else if (cpu_vendor_id == CPU_VENDOR_AMD) {
/* BKDG for Family 10h: unset GartTblWkEn. */
if (i == 4 && CPUID_TO_FAMILY(cpu_id) >= 0xf)
ctl &= ~(1UL << 10);
}
if (!skip)
wrmsr(MSR_MC_CTL(i), ctl);
#ifdef DEV_APIC
if (mcg_cap & MCG_CAP_CMCI_P) {
if (boot)
cmci_monitor(i);
else
cmci_resume(i);
}
#endif
/* Clear all errors. */
wrmsr(MSR_MC_STATUS(i), 0);
}
#ifdef DEV_APIC
if (PCPU_GET(cmci_mask) != 0 && boot)
lapic_enable_cmc();
#endif
}
load_cr4(rcr4() | CR4_MCE);
}
/* Must be executed on each CPU during boot. */
void
mca_init(void)
{
_mca_init(1);
}
/* Must be executed on each CPU during resume. */
void
mca_resume(void)
{
_mca_init(0);
}
/*
* The machine check registers for the BSP cannot be initialized until
* the local APIC is initialized. This happens at SI_SUB_CPU,
* SI_ORDER_SECOND.
*/
static void
mca_init_bsp(void *arg __unused)
{
mca_init();
}
SYSINIT(mca_init_bsp, SI_SUB_CPU, SI_ORDER_ANY, mca_init_bsp, NULL);
/* Called when a machine check exception fires. */
void
mca_intr(void)
{
uint64_t mcg_status;
int old_count, recoverable;
if (!(cpu_feature & CPUID_MCA)) {
/*
* Just print the values of the old Pentium registers
* and panic.
*/
printf("MC Type: 0x%jx Address: 0x%jx\n",
(uintmax_t)rdmsr(MSR_P5_MC_TYPE),
(uintmax_t)rdmsr(MSR_P5_MC_ADDR));
panic("Machine check");
}
/* Scan the banks and check for any non-recoverable errors. */
old_count = mca_count;
recoverable = mca_scan(MCE);
mcg_status = rdmsr(MSR_MCG_STATUS);
if (!(mcg_status & MCG_STATUS_RIPV))
recoverable = 0;
if (!recoverable) {
/*
* Wait for at least one error to be logged before
* panic'ing. Some errors will assert a machine check
* on all CPUs, but only certain CPUs will find a valid
* bank to log.
*/
while (mca_count == old_count)
cpu_spinwait();
panic("Unrecoverable machine check exception");
}
/* Clear MCIP. */
wrmsr(MSR_MCG_STATUS, mcg_status & ~MCG_STATUS_MCIP);
}
#ifdef DEV_APIC
/* Called for a CMCI (correctable machine check interrupt). */
void
cmc_intr(void)
{
struct mca_internal *mca;
int count;
/*
* Serialize MCA bank scanning to prevent collisions from
* sibling threads.
*/
count = mca_scan(CMCI);
/* If we found anything, log them to the console. */
if (count != 0) {
mtx_lock_spin(&mca_lock);
STAILQ_FOREACH(mca, &mca_records, link) {
if (!mca->logged) {
mca->logged = 1;
mca_log(&mca->rec);
}
}
mtx_unlock_spin(&mca_lock);
}
}
#endif
Index: user/ngie/bsnmp_cleanup/usr.sbin/bhyve/pci_emul.c
===================================================================
--- user/ngie/bsnmp_cleanup/usr.sbin/bhyve/pci_emul.c (revision 299696)
+++ user/ngie/bsnmp_cleanup/usr.sbin/bhyve/pci_emul.c (revision 299697)
@@ -1,2108 +1,2108 @@
/*-
* Copyright (c) 2011 NetApp, Inc.
* 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 NETAPP, INC ``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 NETAPP, INC 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/linker_set.h>
#include <sys/errno.h>
#include <ctype.h>
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <strings.h>
#include <assert.h>
#include <stdbool.h>
#include <machine/vmm.h>
#include <vmmapi.h>
#include "acpi.h"
#include "bhyverun.h"
#include "inout.h"
#include "ioapic.h"
#include "mem.h"
#include "pci_emul.h"
#include "pci_irq.h"
#include "pci_lpc.h"
#define CONF1_ADDR_PORT 0x0cf8
#define CONF1_DATA_PORT 0x0cfc
#define CONF1_ENABLE 0x80000000ul
#define MAXBUSES (PCI_BUSMAX + 1)
#define MAXSLOTS (PCI_SLOTMAX + 1)
#define MAXFUNCS (PCI_FUNCMAX + 1)
struct funcinfo {
char *fi_name;
char *fi_param;
struct pci_devinst *fi_devi;
};
struct intxinfo {
int ii_count;
int ii_pirq_pin;
int ii_ioapic_irq;
};
struct slotinfo {
struct intxinfo si_intpins[4];
struct funcinfo si_funcs[MAXFUNCS];
};
struct businfo {
uint16_t iobase, iolimit; /* I/O window */
uint32_t membase32, memlimit32; /* mmio window below 4GB */
uint64_t membase64, memlimit64; /* mmio window above 4GB */
struct slotinfo slotinfo[MAXSLOTS];
};
static struct businfo *pci_businfo[MAXBUSES];
SET_DECLARE(pci_devemu_set, struct pci_devemu);
static uint64_t pci_emul_iobase;
static uint64_t pci_emul_membase32;
static uint64_t pci_emul_membase64;
#define PCI_EMUL_IOBASE 0x2000
#define PCI_EMUL_IOLIMIT 0x10000
#define PCI_EMUL_ECFG_BASE 0xE0000000 /* 3.5GB */
#define PCI_EMUL_ECFG_SIZE (MAXBUSES * 1024 * 1024) /* 1MB per bus */
SYSRES_MEM(PCI_EMUL_ECFG_BASE, PCI_EMUL_ECFG_SIZE);
#define PCI_EMUL_MEMLIMIT32 PCI_EMUL_ECFG_BASE
#define PCI_EMUL_MEMBASE64 0xD000000000UL
#define PCI_EMUL_MEMLIMIT64 0xFD00000000UL
static struct pci_devemu *pci_emul_finddev(char *name);
static void pci_lintr_route(struct pci_devinst *pi);
static void pci_lintr_update(struct pci_devinst *pi);
static void pci_cfgrw(struct vmctx *ctx, int vcpu, int in, int bus, int slot,
int func, int coff, int bytes, uint32_t *val);
static __inline void
CFGWRITE(struct pci_devinst *pi, int coff, uint32_t val, int bytes)
{
if (bytes == 1)
pci_set_cfgdata8(pi, coff, val);
else if (bytes == 2)
pci_set_cfgdata16(pi, coff, val);
else
pci_set_cfgdata32(pi, coff, val);
}
static __inline uint32_t
CFGREAD(struct pci_devinst *pi, int coff, int bytes)
{
if (bytes == 1)
return (pci_get_cfgdata8(pi, coff));
else if (bytes == 2)
return (pci_get_cfgdata16(pi, coff));
else
return (pci_get_cfgdata32(pi, coff));
}
/*
* I/O access
*/
/*
* Slot options are in the form:
*
* <bus>:<slot>:<func>,<emul>[,<config>]
* <slot>[:<func>],<emul>[,<config>]
*
* slot is 0..31
* func is 0..7
* emul is a string describing the type of PCI device e.g. virtio-net
* config is an optional string, depending on the device, that can be
* used for configuration.
* Examples are:
* 1,virtio-net,tap0
* 3:0,dummy
*/
static void
pci_parse_slot_usage(char *aopt)
{
fprintf(stderr, "Invalid PCI slot info field \"%s\"\n", aopt);
}
int
pci_parse_slot(char *opt)
{
struct businfo *bi;
struct slotinfo *si;
char *emul, *config, *str, *cp;
int error, bnum, snum, fnum;
error = -1;
str = strdup(opt);
emul = config = NULL;
if ((cp = strchr(str, ',')) != NULL) {
*cp = '\0';
emul = cp + 1;
if ((cp = strchr(emul, ',')) != NULL) {
*cp = '\0';
config = cp + 1;
}
} else {
pci_parse_slot_usage(opt);
goto done;
}
/* <bus>:<slot>:<func> */
if (sscanf(str, "%d:%d:%d", &bnum, &snum, &fnum) != 3) {
bnum = 0;
/* <slot>:<func> */
if (sscanf(str, "%d:%d", &snum, &fnum) != 2) {
fnum = 0;
/* <slot> */
if (sscanf(str, "%d", &snum) != 1) {
snum = -1;
}
}
}
if (bnum < 0 || bnum >= MAXBUSES || snum < 0 || snum >= MAXSLOTS ||
fnum < 0 || fnum >= MAXFUNCS) {
pci_parse_slot_usage(opt);
goto done;
}
if (pci_businfo[bnum] == NULL)
pci_businfo[bnum] = calloc(1, sizeof(struct businfo));
bi = pci_businfo[bnum];
si = &bi->slotinfo[snum];
if (si->si_funcs[fnum].fi_name != NULL) {
fprintf(stderr, "pci slot %d:%d already occupied!\n",
snum, fnum);
goto done;
}
if (pci_emul_finddev(emul) == NULL) {
fprintf(stderr, "pci slot %d:%d: unknown device \"%s\"\n",
snum, fnum, emul);
goto done;
}
error = 0;
si->si_funcs[fnum].fi_name = emul;
si->si_funcs[fnum].fi_param = config;
done:
if (error)
free(str);
return (error);
}
static int
pci_valid_pba_offset(struct pci_devinst *pi, uint64_t offset)
{
if (offset < pi->pi_msix.pba_offset)
return (0);
if (offset >= pi->pi_msix.pba_offset + pi->pi_msix.pba_size) {
return (0);
}
return (1);
}
int
pci_emul_msix_twrite(struct pci_devinst *pi, uint64_t offset, int size,
uint64_t value)
{
int msix_entry_offset;
int tab_index;
char *dest;
/* support only 4 or 8 byte writes */
if (size != 4 && size != 8)
return (-1);
/*
* Return if table index is beyond what device supports
*/
tab_index = offset / MSIX_TABLE_ENTRY_SIZE;
if (tab_index >= pi->pi_msix.table_count)
return (-1);
msix_entry_offset = offset % MSIX_TABLE_ENTRY_SIZE;
/* support only aligned writes */
if ((msix_entry_offset % size) != 0)
return (-1);
dest = (char *)(pi->pi_msix.table + tab_index);
dest += msix_entry_offset;
if (size == 4)
*((uint32_t *)dest) = value;
else
*((uint64_t *)dest) = value;
return (0);
}
uint64_t
pci_emul_msix_tread(struct pci_devinst *pi, uint64_t offset, int size)
{
char *dest;
int msix_entry_offset;
int tab_index;
uint64_t retval = ~0;
/*
* The PCI standard only allows 4 and 8 byte accesses to the MSI-X
* table but we also allow 1 byte access to accommodate reads from
* ddb.
*/
if (size != 1 && size != 4 && size != 8)
return (retval);
msix_entry_offset = offset % MSIX_TABLE_ENTRY_SIZE;
/* support only aligned reads */
if ((msix_entry_offset % size) != 0) {
return (retval);
}
tab_index = offset / MSIX_TABLE_ENTRY_SIZE;
if (tab_index < pi->pi_msix.table_count) {
/* valid MSI-X Table access */
dest = (char *)(pi->pi_msix.table + tab_index);
dest += msix_entry_offset;
if (size == 1)
retval = *((uint8_t *)dest);
else if (size == 4)
retval = *((uint32_t *)dest);
else
retval = *((uint64_t *)dest);
} else if (pci_valid_pba_offset(pi, offset)) {
/* return 0 for PBA access */
retval = 0;
}
return (retval);
}
int
pci_msix_table_bar(struct pci_devinst *pi)
{
if (pi->pi_msix.table != NULL)
return (pi->pi_msix.table_bar);
else
return (-1);
}
int
pci_msix_pba_bar(struct pci_devinst *pi)
{
if (pi->pi_msix.table != NULL)
return (pi->pi_msix.pba_bar);
else
return (-1);
}
static int
pci_emul_io_handler(struct vmctx *ctx, int vcpu, int in, int port, int bytes,
uint32_t *eax, void *arg)
{
struct pci_devinst *pdi = arg;
struct pci_devemu *pe = pdi->pi_d;
uint64_t offset;
int i;
for (i = 0; i <= PCI_BARMAX; i++) {
if (pdi->pi_bar[i].type == PCIBAR_IO &&
port >= pdi->pi_bar[i].addr &&
port + bytes <= pdi->pi_bar[i].addr + pdi->pi_bar[i].size) {
offset = port - pdi->pi_bar[i].addr;
if (in)
*eax = (*pe->pe_barread)(ctx, vcpu, pdi, i,
offset, bytes);
else
(*pe->pe_barwrite)(ctx, vcpu, pdi, i, offset,
bytes, *eax);
return (0);
}
}
return (-1);
}
static int
pci_emul_mem_handler(struct vmctx *ctx, int vcpu, int dir, uint64_t addr,
int size, uint64_t *val, void *arg1, long arg2)
{
struct pci_devinst *pdi = arg1;
struct pci_devemu *pe = pdi->pi_d;
uint64_t offset;
int bidx = (int) arg2;
assert(bidx <= PCI_BARMAX);
assert(pdi->pi_bar[bidx].type == PCIBAR_MEM32 ||
pdi->pi_bar[bidx].type == PCIBAR_MEM64);
assert(addr >= pdi->pi_bar[bidx].addr &&
addr + size <= pdi->pi_bar[bidx].addr + pdi->pi_bar[bidx].size);
offset = addr - pdi->pi_bar[bidx].addr;
if (dir == MEM_F_WRITE) {
if (size == 8) {
(*pe->pe_barwrite)(ctx, vcpu, pdi, bidx, offset,
4, *val & 0xffffffff);
(*pe->pe_barwrite)(ctx, vcpu, pdi, bidx, offset + 4,
4, *val >> 32);
} else {
(*pe->pe_barwrite)(ctx, vcpu, pdi, bidx, offset,
size, *val);
}
} else {
if (size == 8) {
*val = (*pe->pe_barread)(ctx, vcpu, pdi, bidx,
offset, 4);
*val |= (*pe->pe_barread)(ctx, vcpu, pdi, bidx,
offset + 4, 4) << 32;
} else {
*val = (*pe->pe_barread)(ctx, vcpu, pdi, bidx,
offset, size);
}
}
return (0);
}
static int
pci_emul_alloc_resource(uint64_t *baseptr, uint64_t limit, uint64_t size,
uint64_t *addr)
{
uint64_t base;
assert((size & (size - 1)) == 0); /* must be a power of 2 */
base = roundup2(*baseptr, size);
if (base + size <= limit) {
*addr = base;
*baseptr = base + size;
return (0);
} else
return (-1);
}
int
pci_emul_alloc_bar(struct pci_devinst *pdi, int idx, enum pcibar_type type,
uint64_t size)
{
return (pci_emul_alloc_pbar(pdi, idx, 0, type, size));
}
/*
* Register (or unregister) the MMIO or I/O region associated with the BAR
* register 'idx' of an emulated pci device.
*/
static void
modify_bar_registration(struct pci_devinst *pi, int idx, int registration)
{
int error;
struct inout_port iop;
struct mem_range mr;
switch (pi->pi_bar[idx].type) {
case PCIBAR_IO:
bzero(&iop, sizeof(struct inout_port));
iop.name = pi->pi_name;
iop.port = pi->pi_bar[idx].addr;
iop.size = pi->pi_bar[idx].size;
if (registration) {
iop.flags = IOPORT_F_INOUT;
iop.handler = pci_emul_io_handler;
iop.arg = pi;
error = register_inout(&iop);
} else
error = unregister_inout(&iop);
break;
case PCIBAR_MEM32:
case PCIBAR_MEM64:
bzero(&mr, sizeof(struct mem_range));
mr.name = pi->pi_name;
mr.base = pi->pi_bar[idx].addr;
mr.size = pi->pi_bar[idx].size;
if (registration) {
mr.flags = MEM_F_RW;
mr.handler = pci_emul_mem_handler;
mr.arg1 = pi;
mr.arg2 = idx;
error = register_mem(&mr);
} else
error = unregister_mem(&mr);
break;
default:
error = EINVAL;
break;
}
assert(error == 0);
}
static void
unregister_bar(struct pci_devinst *pi, int idx)
{
modify_bar_registration(pi, idx, 0);
}
static void
register_bar(struct pci_devinst *pi, int idx)
{
modify_bar_registration(pi, idx, 1);
}
/* Are we decoding i/o port accesses for the emulated pci device? */
static int
porten(struct pci_devinst *pi)
{
uint16_t cmd;
cmd = pci_get_cfgdata16(pi, PCIR_COMMAND);
return (cmd & PCIM_CMD_PORTEN);
}
/* Are we decoding memory accesses for the emulated pci device? */
static int
memen(struct pci_devinst *pi)
{
uint16_t cmd;
cmd = pci_get_cfgdata16(pi, PCIR_COMMAND);
return (cmd & PCIM_CMD_MEMEN);
}
/*
* Update the MMIO or I/O address that is decoded by the BAR register.
*
* If the pci device has enabled the address space decoding then intercept
* the address range decoded by the BAR register.
*/
static void
update_bar_address(struct pci_devinst *pi, uint64_t addr, int idx, int type)
{
int decode;
if (pi->pi_bar[idx].type == PCIBAR_IO)
decode = porten(pi);
else
decode = memen(pi);
if (decode)
unregister_bar(pi, idx);
switch (type) {
case PCIBAR_IO:
case PCIBAR_MEM32:
pi->pi_bar[idx].addr = addr;
break;
case PCIBAR_MEM64:
pi->pi_bar[idx].addr &= ~0xffffffffUL;
pi->pi_bar[idx].addr |= addr;
break;
case PCIBAR_MEMHI64:
pi->pi_bar[idx].addr &= 0xffffffff;
pi->pi_bar[idx].addr |= addr;
break;
default:
assert(0);
}
if (decode)
register_bar(pi, idx);
}
int
pci_emul_alloc_pbar(struct pci_devinst *pdi, int idx, uint64_t hostbase,
enum pcibar_type type, uint64_t size)
{
int error;
uint64_t *baseptr, limit, addr, mask, lobits, bar;
assert(idx >= 0 && idx <= PCI_BARMAX);
if ((size & (size - 1)) != 0)
size = 1UL << flsl(size); /* round up to a power of 2 */
/* Enforce minimum BAR sizes required by the PCI standard */
if (type == PCIBAR_IO) {
if (size < 4)
size = 4;
} else {
if (size < 16)
size = 16;
}
switch (type) {
case PCIBAR_NONE:
baseptr = NULL;
addr = mask = lobits = 0;
break;
case PCIBAR_IO:
baseptr = &pci_emul_iobase;
limit = PCI_EMUL_IOLIMIT;
mask = PCIM_BAR_IO_BASE;
lobits = PCIM_BAR_IO_SPACE;
break;
case PCIBAR_MEM64:
/*
* XXX
* Some drivers do not work well if the 64-bit BAR is allocated
* above 4GB. Allow for this by allocating small requests under
* 4GB unless then allocation size is larger than some arbitrary
* number (32MB currently).
*/
if (size > 32 * 1024 * 1024) {
/*
* XXX special case for device requiring peer-peer DMA
*/
if (size == 0x100000000UL)
baseptr = &hostbase;
else
baseptr = &pci_emul_membase64;
limit = PCI_EMUL_MEMLIMIT64;
mask = PCIM_BAR_MEM_BASE;
lobits = PCIM_BAR_MEM_SPACE | PCIM_BAR_MEM_64 |
PCIM_BAR_MEM_PREFETCH;
break;
} else {
baseptr = &pci_emul_membase32;
limit = PCI_EMUL_MEMLIMIT32;
mask = PCIM_BAR_MEM_BASE;
lobits = PCIM_BAR_MEM_SPACE | PCIM_BAR_MEM_64;
}
break;
case PCIBAR_MEM32:
baseptr = &pci_emul_membase32;
limit = PCI_EMUL_MEMLIMIT32;
mask = PCIM_BAR_MEM_BASE;
lobits = PCIM_BAR_MEM_SPACE | PCIM_BAR_MEM_32;
break;
default:
printf("pci_emul_alloc_base: invalid bar type %d\n", type);
assert(0);
}
if (baseptr != NULL) {
error = pci_emul_alloc_resource(baseptr, limit, size, &addr);
if (error != 0)
return (error);
}
pdi->pi_bar[idx].type = type;
pdi->pi_bar[idx].addr = addr;
pdi->pi_bar[idx].size = size;
/* Initialize the BAR register in config space */
bar = (addr & mask) | lobits;
pci_set_cfgdata32(pdi, PCIR_BAR(idx), bar);
if (type == PCIBAR_MEM64) {
assert(idx + 1 <= PCI_BARMAX);
pdi->pi_bar[idx + 1].type = PCIBAR_MEMHI64;
pci_set_cfgdata32(pdi, PCIR_BAR(idx + 1), bar >> 32);
}
register_bar(pdi, idx);
return (0);
}
#define CAP_START_OFFSET 0x40
static int
pci_emul_add_capability(struct pci_devinst *pi, u_char *capdata, int caplen)
{
int i, capoff, reallen;
uint16_t sts;
assert(caplen > 0);
reallen = roundup2(caplen, 4); /* dword aligned */
sts = pci_get_cfgdata16(pi, PCIR_STATUS);
if ((sts & PCIM_STATUS_CAPPRESENT) == 0)
capoff = CAP_START_OFFSET;
else
capoff = pi->pi_capend + 1;
/* Check if we have enough space */
if (capoff + reallen > PCI_REGMAX + 1)
return (-1);
/* Set the previous capability pointer */
if ((sts & PCIM_STATUS_CAPPRESENT) == 0) {
pci_set_cfgdata8(pi, PCIR_CAP_PTR, capoff);
pci_set_cfgdata16(pi, PCIR_STATUS, sts|PCIM_STATUS_CAPPRESENT);
} else
pci_set_cfgdata8(pi, pi->pi_prevcap + 1, capoff);
/* Copy the capability */
for (i = 0; i < caplen; i++)
pci_set_cfgdata8(pi, capoff + i, capdata[i]);
/* Set the next capability pointer */
pci_set_cfgdata8(pi, capoff + 1, 0);
pi->pi_prevcap = capoff;
pi->pi_capend = capoff + reallen - 1;
return (0);
}
static struct pci_devemu *
pci_emul_finddev(char *name)
{
struct pci_devemu **pdpp, *pdp;
SET_FOREACH(pdpp, pci_devemu_set) {
pdp = *pdpp;
if (!strcmp(pdp->pe_emu, name)) {
return (pdp);
}
}
return (NULL);
}
static int
pci_emul_init(struct vmctx *ctx, struct pci_devemu *pde, int bus, int slot,
int func, struct funcinfo *fi)
{
struct pci_devinst *pdi;
int err;
pdi = calloc(1, sizeof(struct pci_devinst));
pdi->pi_vmctx = ctx;
pdi->pi_bus = bus;
pdi->pi_slot = slot;
pdi->pi_func = func;
pthread_mutex_init(&pdi->pi_lintr.lock, NULL);
pdi->pi_lintr.pin = 0;
pdi->pi_lintr.state = IDLE;
pdi->pi_lintr.pirq_pin = 0;
pdi->pi_lintr.ioapic_irq = 0;
pdi->pi_d = pde;
snprintf(pdi->pi_name, PI_NAMESZ, "%s-pci-%d", pde->pe_emu, slot);
/* Disable legacy interrupts */
pci_set_cfgdata8(pdi, PCIR_INTLINE, 255);
pci_set_cfgdata8(pdi, PCIR_INTPIN, 0);
pci_set_cfgdata8(pdi, PCIR_COMMAND,
PCIM_CMD_PORTEN | PCIM_CMD_MEMEN | PCIM_CMD_BUSMASTEREN);
err = (*pde->pe_init)(ctx, pdi, fi->fi_param);
if (err == 0)
fi->fi_devi = pdi;
else
free(pdi);
return (err);
}
void
pci_populate_msicap(struct msicap *msicap, int msgnum, int nextptr)
{
int mmc;
CTASSERT(sizeof(struct msicap) == 14);
/* Number of msi messages must be a power of 2 between 1 and 32 */
assert((msgnum & (msgnum - 1)) == 0 && msgnum >= 1 && msgnum <= 32);
mmc = ffs(msgnum) - 1;
bzero(msicap, sizeof(struct msicap));
msicap->capid = PCIY_MSI;
msicap->nextptr = nextptr;
msicap->msgctrl = PCIM_MSICTRL_64BIT | (mmc << 1);
}
int
pci_emul_add_msicap(struct pci_devinst *pi, int msgnum)
{
struct msicap msicap;
pci_populate_msicap(&msicap, msgnum, 0);
return (pci_emul_add_capability(pi, (u_char *)&msicap, sizeof(msicap)));
}
static void
pci_populate_msixcap(struct msixcap *msixcap, int msgnum, int barnum,
uint32_t msix_tab_size)
{
CTASSERT(sizeof(struct msixcap) == 12);
assert(msix_tab_size % 4096 == 0);
bzero(msixcap, sizeof(struct msixcap));
msixcap->capid = PCIY_MSIX;
/*
* Message Control Register, all fields set to
* zero except for the Table Size.
* Note: Table size N is encoded as N-1
*/
msixcap->msgctrl = msgnum - 1;
/*
* MSI-X BAR setup:
* - MSI-X table start at offset 0
* - PBA table starts at a 4K aligned offset after the MSI-X table
*/
msixcap->table_info = barnum & PCIM_MSIX_BIR_MASK;
msixcap->pba_info = msix_tab_size | (barnum & PCIM_MSIX_BIR_MASK);
}
static void
pci_msix_table_init(struct pci_devinst *pi, int table_entries)
{
int i, table_size;
assert(table_entries > 0);
assert(table_entries <= MAX_MSIX_TABLE_ENTRIES);
table_size = table_entries * MSIX_TABLE_ENTRY_SIZE;
pi->pi_msix.table = calloc(1, table_size);
/* set mask bit of vector control register */
for (i = 0; i < table_entries; i++)
pi->pi_msix.table[i].vector_control |= PCIM_MSIX_VCTRL_MASK;
}
int
pci_emul_add_msixcap(struct pci_devinst *pi, int msgnum, int barnum)
{
uint32_t tab_size;
struct msixcap msixcap;
assert(msgnum >= 1 && msgnum <= MAX_MSIX_TABLE_ENTRIES);
assert(barnum >= 0 && barnum <= PCIR_MAX_BAR_0);
tab_size = msgnum * MSIX_TABLE_ENTRY_SIZE;
/* Align table size to nearest 4K */
tab_size = roundup2(tab_size, 4096);
pi->pi_msix.table_bar = barnum;
pi->pi_msix.pba_bar = barnum;
pi->pi_msix.table_offset = 0;
pi->pi_msix.table_count = msgnum;
pi->pi_msix.pba_offset = tab_size;
pi->pi_msix.pba_size = PBA_SIZE(msgnum);
pci_msix_table_init(pi, msgnum);
pci_populate_msixcap(&msixcap, msgnum, barnum, tab_size);
/* allocate memory for MSI-X Table and PBA */
pci_emul_alloc_bar(pi, barnum, PCIBAR_MEM32,
tab_size + pi->pi_msix.pba_size);
return (pci_emul_add_capability(pi, (u_char *)&msixcap,
sizeof(msixcap)));
}
void
msixcap_cfgwrite(struct pci_devinst *pi, int capoff, int offset,
int bytes, uint32_t val)
{
uint16_t msgctrl, rwmask;
int off;
off = offset - capoff;
/* Message Control Register */
if (off == 2 && bytes == 2) {
rwmask = PCIM_MSIXCTRL_MSIX_ENABLE | PCIM_MSIXCTRL_FUNCTION_MASK;
msgctrl = pci_get_cfgdata16(pi, offset);
msgctrl &= ~rwmask;
msgctrl |= val & rwmask;
val = msgctrl;
pi->pi_msix.enabled = val & PCIM_MSIXCTRL_MSIX_ENABLE;
pi->pi_msix.function_mask = val & PCIM_MSIXCTRL_FUNCTION_MASK;
pci_lintr_update(pi);
}
CFGWRITE(pi, offset, val, bytes);
}
void
msicap_cfgwrite(struct pci_devinst *pi, int capoff, int offset,
int bytes, uint32_t val)
{
uint16_t msgctrl, rwmask, msgdata, mme;
uint32_t addrlo;
/*
* If guest is writing to the message control register make sure
* we do not overwrite read-only fields.
*/
if ((offset - capoff) == 2 && bytes == 2) {
rwmask = PCIM_MSICTRL_MME_MASK | PCIM_MSICTRL_MSI_ENABLE;
msgctrl = pci_get_cfgdata16(pi, offset);
msgctrl &= ~rwmask;
msgctrl |= val & rwmask;
val = msgctrl;
addrlo = pci_get_cfgdata32(pi, capoff + 4);
if (msgctrl & PCIM_MSICTRL_64BIT)
msgdata = pci_get_cfgdata16(pi, capoff + 12);
else
msgdata = pci_get_cfgdata16(pi, capoff + 8);
mme = msgctrl & PCIM_MSICTRL_MME_MASK;
pi->pi_msi.enabled = msgctrl & PCIM_MSICTRL_MSI_ENABLE ? 1 : 0;
if (pi->pi_msi.enabled) {
pi->pi_msi.addr = addrlo;
pi->pi_msi.msg_data = msgdata;
pi->pi_msi.maxmsgnum = 1 << (mme >> 4);
} else {
pi->pi_msi.maxmsgnum = 0;
}
pci_lintr_update(pi);
}
CFGWRITE(pi, offset, val, bytes);
}
void
pciecap_cfgwrite(struct pci_devinst *pi, int capoff, int offset,
int bytes, uint32_t val)
{
/* XXX don't write to the readonly parts */
CFGWRITE(pi, offset, val, bytes);
}
#define PCIECAP_VERSION 0x2
int
pci_emul_add_pciecap(struct pci_devinst *pi, int type)
{
int err;
struct pciecap pciecap;
CTASSERT(sizeof(struct pciecap) == 60);
if (type != PCIEM_TYPE_ROOT_PORT)
return (-1);
bzero(&pciecap, sizeof(pciecap));
pciecap.capid = PCIY_EXPRESS;
pciecap.pcie_capabilities = PCIECAP_VERSION | PCIEM_TYPE_ROOT_PORT;
pciecap.link_capabilities = 0x411; /* gen1, x1 */
pciecap.link_status = 0x11; /* gen1, x1 */
err = pci_emul_add_capability(pi, (u_char *)&pciecap, sizeof(pciecap));
return (err);
}
/*
* This function assumes that 'coff' is in the capabilities region of the
* config space.
*/
static void
pci_emul_capwrite(struct pci_devinst *pi, int offset, int bytes, uint32_t val)
{
int capid;
uint8_t capoff, nextoff;
/* Do not allow un-aligned writes */
if ((offset & (bytes - 1)) != 0)
return;
/* Find the capability that we want to update */
capoff = CAP_START_OFFSET;
while (1) {
nextoff = pci_get_cfgdata8(pi, capoff + 1);
if (nextoff == 0)
break;
if (offset >= capoff && offset < nextoff)
break;
capoff = nextoff;
}
assert(offset >= capoff);
/*
* Capability ID and Next Capability Pointer are readonly.
* However, some o/s's do 4-byte writes that include these.
* For this case, trim the write back to 2 bytes and adjust
* the data.
*/
if (offset == capoff || offset == capoff + 1) {
if (offset == capoff && bytes == 4) {
bytes = 2;
offset += 2;
val >>= 16;
} else
return;
}
capid = pci_get_cfgdata8(pi, capoff);
switch (capid) {
case PCIY_MSI:
msicap_cfgwrite(pi, capoff, offset, bytes, val);
break;
case PCIY_MSIX:
msixcap_cfgwrite(pi, capoff, offset, bytes, val);
break;
case PCIY_EXPRESS:
pciecap_cfgwrite(pi, capoff, offset, bytes, val);
break;
default:
break;
}
}
static int
pci_emul_iscap(struct pci_devinst *pi, int offset)
{
uint16_t sts;
sts = pci_get_cfgdata16(pi, PCIR_STATUS);
if ((sts & PCIM_STATUS_CAPPRESENT) != 0) {
if (offset >= CAP_START_OFFSET && offset <= pi->pi_capend)
return (1);
}
return (0);
}
static int
pci_emul_fallback_handler(struct vmctx *ctx, int vcpu, int dir, uint64_t addr,
int size, uint64_t *val, void *arg1, long arg2)
{
/*
* Ignore writes; return 0xff's for reads. The mem read code
* will take care of truncating to the correct size.
*/
if (dir == MEM_F_READ) {
*val = 0xffffffffffffffff;
}
return (0);
}
static int
pci_emul_ecfg_handler(struct vmctx *ctx, int vcpu, int dir, uint64_t addr,
int bytes, uint64_t *val, void *arg1, long arg2)
{
int bus, slot, func, coff, in;
coff = addr & 0xfff;
func = (addr >> 12) & 0x7;
slot = (addr >> 15) & 0x1f;
bus = (addr >> 20) & 0xff;
in = (dir == MEM_F_READ);
if (in)
*val = ~0UL;
pci_cfgrw(ctx, vcpu, in, bus, slot, func, coff, bytes, (uint32_t *)val);
return (0);
}
uint64_t
pci_ecfg_base(void)
{
return (PCI_EMUL_ECFG_BASE);
}
#define BUSIO_ROUNDUP 32
#define BUSMEM_ROUNDUP (1024 * 1024)
int
init_pci(struct vmctx *ctx)
{
struct mem_range mr;
struct pci_devemu *pde;
struct businfo *bi;
struct slotinfo *si;
struct funcinfo *fi;
size_t lowmem;
int bus, slot, func;
int error;
pci_emul_iobase = PCI_EMUL_IOBASE;
pci_emul_membase32 = vm_get_lowmem_limit(ctx);
pci_emul_membase64 = PCI_EMUL_MEMBASE64;
for (bus = 0; bus < MAXBUSES; bus++) {
if ((bi = pci_businfo[bus]) == NULL)
continue;
/*
* Keep track of the i/o and memory resources allocated to
* this bus.
*/
bi->iobase = pci_emul_iobase;
bi->membase32 = pci_emul_membase32;
bi->membase64 = pci_emul_membase64;
for (slot = 0; slot < MAXSLOTS; slot++) {
si = &bi->slotinfo[slot];
for (func = 0; func < MAXFUNCS; func++) {
fi = &si->si_funcs[func];
if (fi->fi_name == NULL)
continue;
pde = pci_emul_finddev(fi->fi_name);
assert(pde != NULL);
error = pci_emul_init(ctx, pde, bus, slot,
func, fi);
if (error)
return (error);
}
}
/*
* Add some slop to the I/O and memory resources decoded by
* this bus to give a guest some flexibility if it wants to
* reprogram the BARs.
*/
pci_emul_iobase += BUSIO_ROUNDUP;
pci_emul_iobase = roundup2(pci_emul_iobase, BUSIO_ROUNDUP);
bi->iolimit = pci_emul_iobase;
pci_emul_membase32 += BUSMEM_ROUNDUP;
pci_emul_membase32 = roundup2(pci_emul_membase32,
BUSMEM_ROUNDUP);
bi->memlimit32 = pci_emul_membase32;
pci_emul_membase64 += BUSMEM_ROUNDUP;
pci_emul_membase64 = roundup2(pci_emul_membase64,
BUSMEM_ROUNDUP);
bi->memlimit64 = pci_emul_membase64;
}
/*
* PCI backends are initialized before routing INTx interrupts
* so that LPC devices are able to reserve ISA IRQs before
* routing PIRQ pins.
*/
for (bus = 0; bus < MAXBUSES; bus++) {
if ((bi = pci_businfo[bus]) == NULL)
continue;
for (slot = 0; slot < MAXSLOTS; slot++) {
si = &bi->slotinfo[slot];
for (func = 0; func < MAXFUNCS; func++) {
fi = &si->si_funcs[func];
if (fi->fi_devi == NULL)
continue;
pci_lintr_route(fi->fi_devi);
}
}
}
lpc_pirq_routed();
/*
* The guest physical memory map looks like the following:
* [0, lowmem) guest system memory
* [lowmem, lowmem_limit) memory hole (may be absent)
* [lowmem_limit, 0xE0000000) PCI hole (32-bit BAR allocation)
* [0xE0000000, 0xF0000000) PCI extended config window
* [0xF0000000, 4GB) LAPIC, IOAPIC, HPET, firmware
* [4GB, 4GB + highmem)
*/
/*
* Accesses to memory addresses that are not allocated to system
* memory or PCI devices return 0xff's.
*/
lowmem = vm_get_lowmem_size(ctx);
bzero(&mr, sizeof(struct mem_range));
mr.name = "PCI hole";
mr.flags = MEM_F_RW | MEM_F_IMMUTABLE;
mr.base = lowmem;
mr.size = (4ULL * 1024 * 1024 * 1024) - lowmem;
mr.handler = pci_emul_fallback_handler;
error = register_mem_fallback(&mr);
assert(error == 0);
/* PCI extended config space */
bzero(&mr, sizeof(struct mem_range));
mr.name = "PCI ECFG";
mr.flags = MEM_F_RW | MEM_F_IMMUTABLE;
mr.base = PCI_EMUL_ECFG_BASE;
mr.size = PCI_EMUL_ECFG_SIZE;
mr.handler = pci_emul_ecfg_handler;
error = register_mem(&mr);
assert(error == 0);
return (0);
}
static void
pci_apic_prt_entry(int bus, int slot, int pin, int pirq_pin, int ioapic_irq,
void *arg)
{
dsdt_line(" Package ()");
dsdt_line(" {");
dsdt_line(" 0x%X,", slot << 16 | 0xffff);
dsdt_line(" 0x%02X,", pin - 1);
dsdt_line(" Zero,");
dsdt_line(" 0x%X", ioapic_irq);
dsdt_line(" },");
}
static void
pci_pirq_prt_entry(int bus, int slot, int pin, int pirq_pin, int ioapic_irq,
void *arg)
{
char *name;
name = lpc_pirq_name(pirq_pin);
if (name == NULL)
return;
dsdt_line(" Package ()");
dsdt_line(" {");
dsdt_line(" 0x%X,", slot << 16 | 0xffff);
dsdt_line(" 0x%02X,", pin - 1);
dsdt_line(" %s,", name);
dsdt_line(" 0x00");
dsdt_line(" },");
free(name);
}
/*
* A bhyve virtual machine has a flat PCI hierarchy with a root port
* corresponding to each PCI bus.
*/
static void
pci_bus_write_dsdt(int bus)
{
struct businfo *bi;
struct slotinfo *si;
struct pci_devinst *pi;
int count, func, slot;
/*
* If there are no devices on this 'bus' then just return.
*/
if ((bi = pci_businfo[bus]) == NULL) {
/*
* Bus 0 is special because it decodes the I/O ports used
* for PCI config space access even if there are no devices
* on it.
*/
if (bus != 0)
return;
}
dsdt_line(" Device (PC%02X)", bus);
dsdt_line(" {");
dsdt_line(" Name (_HID, EisaId (\"PNP0A03\"))");
dsdt_line(" Name (_ADR, Zero)");
dsdt_line(" Method (_BBN, 0, NotSerialized)");
dsdt_line(" {");
dsdt_line(" Return (0x%08X)", bus);
dsdt_line(" }");
dsdt_line(" Name (_CRS, ResourceTemplate ()");
dsdt_line(" {");
dsdt_line(" WordBusNumber (ResourceProducer, MinFixed, "
"MaxFixed, PosDecode,");
dsdt_line(" 0x0000, // Granularity");
dsdt_line(" 0x%04X, // Range Minimum", bus);
dsdt_line(" 0x%04X, // Range Maximum", bus);
dsdt_line(" 0x0000, // Translation Offset");
dsdt_line(" 0x0001, // Length");
dsdt_line(" ,, )");
if (bus == 0) {
dsdt_indent(3);
dsdt_fixed_ioport(0xCF8, 8);
dsdt_unindent(3);
dsdt_line(" WordIO (ResourceProducer, MinFixed, MaxFixed, "
"PosDecode, EntireRange,");
dsdt_line(" 0x0000, // Granularity");
dsdt_line(" 0x0000, // Range Minimum");
dsdt_line(" 0x0CF7, // Range Maximum");
dsdt_line(" 0x0000, // Translation Offset");
dsdt_line(" 0x0CF8, // Length");
dsdt_line(" ,, , TypeStatic)");
dsdt_line(" WordIO (ResourceProducer, MinFixed, MaxFixed, "
"PosDecode, EntireRange,");
dsdt_line(" 0x0000, // Granularity");
dsdt_line(" 0x0D00, // Range Minimum");
dsdt_line(" 0x%04X, // Range Maximum",
PCI_EMUL_IOBASE - 1);
dsdt_line(" 0x0000, // Translation Offset");
dsdt_line(" 0x%04X, // Length",
PCI_EMUL_IOBASE - 0x0D00);
dsdt_line(" ,, , TypeStatic)");
if (bi == NULL) {
dsdt_line(" })");
goto done;
}
}
assert(bi != NULL);
/* i/o window */
dsdt_line(" WordIO (ResourceProducer, MinFixed, MaxFixed, "
"PosDecode, EntireRange,");
dsdt_line(" 0x0000, // Granularity");
dsdt_line(" 0x%04X, // Range Minimum", bi->iobase);
dsdt_line(" 0x%04X, // Range Maximum",
bi->iolimit - 1);
dsdt_line(" 0x0000, // Translation Offset");
dsdt_line(" 0x%04X, // Length",
bi->iolimit - bi->iobase);
dsdt_line(" ,, , TypeStatic)");
/* mmio window (32-bit) */
dsdt_line(" DWordMemory (ResourceProducer, PosDecode, "
"MinFixed, MaxFixed, NonCacheable, ReadWrite,");
dsdt_line(" 0x00000000, // Granularity");
dsdt_line(" 0x%08X, // Range Minimum\n", bi->membase32);
dsdt_line(" 0x%08X, // Range Maximum\n",
bi->memlimit32 - 1);
dsdt_line(" 0x00000000, // Translation Offset");
dsdt_line(" 0x%08X, // Length\n",
bi->memlimit32 - bi->membase32);
dsdt_line(" ,, , AddressRangeMemory, TypeStatic)");
/* mmio window (64-bit) */
dsdt_line(" QWordMemory (ResourceProducer, PosDecode, "
"MinFixed, MaxFixed, NonCacheable, ReadWrite,");
dsdt_line(" 0x0000000000000000, // Granularity");
dsdt_line(" 0x%016lX, // Range Minimum\n", bi->membase64);
dsdt_line(" 0x%016lX, // Range Maximum\n",
bi->memlimit64 - 1);
dsdt_line(" 0x0000000000000000, // Translation Offset");
dsdt_line(" 0x%016lX, // Length\n",
bi->memlimit64 - bi->membase64);
dsdt_line(" ,, , AddressRangeMemory, TypeStatic)");
dsdt_line(" })");
count = pci_count_lintr(bus);
if (count != 0) {
dsdt_indent(2);
dsdt_line("Name (PPRT, Package ()");
dsdt_line("{");
pci_walk_lintr(bus, pci_pirq_prt_entry, NULL);
dsdt_line("})");
dsdt_line("Name (APRT, Package ()");
dsdt_line("{");
pci_walk_lintr(bus, pci_apic_prt_entry, NULL);
dsdt_line("})");
dsdt_line("Method (_PRT, 0, NotSerialized)");
dsdt_line("{");
dsdt_line(" If (PICM)");
dsdt_line(" {");
dsdt_line(" Return (APRT)");
dsdt_line(" }");
dsdt_line(" Else");
dsdt_line(" {");
dsdt_line(" Return (PPRT)");
dsdt_line(" }");
dsdt_line("}");
dsdt_unindent(2);
}
dsdt_indent(2);
for (slot = 0; slot < MAXSLOTS; slot++) {
si = &bi->slotinfo[slot];
for (func = 0; func < MAXFUNCS; func++) {
pi = si->si_funcs[func].fi_devi;
if (pi != NULL && pi->pi_d->pe_write_dsdt != NULL)
pi->pi_d->pe_write_dsdt(pi);
}
}
dsdt_unindent(2);
done:
dsdt_line(" }");
}
void
pci_write_dsdt(void)
{
int bus;
dsdt_indent(1);
dsdt_line("Name (PICM, 0x00)");
dsdt_line("Method (_PIC, 1, NotSerialized)");
dsdt_line("{");
dsdt_line(" Store (Arg0, PICM)");
dsdt_line("}");
dsdt_line("");
dsdt_line("Scope (_SB)");
dsdt_line("{");
for (bus = 0; bus < MAXBUSES; bus++)
pci_bus_write_dsdt(bus);
dsdt_line("}");
dsdt_unindent(1);
}
int
pci_bus_configured(int bus)
{
assert(bus >= 0 && bus < MAXBUSES);
return (pci_businfo[bus] != NULL);
}
int
pci_msi_enabled(struct pci_devinst *pi)
{
return (pi->pi_msi.enabled);
}
int
pci_msi_maxmsgnum(struct pci_devinst *pi)
{
if (pi->pi_msi.enabled)
return (pi->pi_msi.maxmsgnum);
else
return (0);
}
int
pci_msix_enabled(struct pci_devinst *pi)
{
return (pi->pi_msix.enabled && !pi->pi_msi.enabled);
}
void
pci_generate_msix(struct pci_devinst *pi, int index)
{
struct msix_table_entry *mte;
if (!pci_msix_enabled(pi))
return;
if (pi->pi_msix.function_mask)
return;
if (index >= pi->pi_msix.table_count)
return;
mte = &pi->pi_msix.table[index];
if ((mte->vector_control & PCIM_MSIX_VCTRL_MASK) == 0) {
/* XXX Set PBA bit if interrupt is disabled */
vm_lapic_msi(pi->pi_vmctx, mte->addr, mte->msg_data);
}
}
void
pci_generate_msi(struct pci_devinst *pi, int index)
{
if (pci_msi_enabled(pi) && index < pci_msi_maxmsgnum(pi)) {
vm_lapic_msi(pi->pi_vmctx, pi->pi_msi.addr,
pi->pi_msi.msg_data + index);
}
}
static bool
pci_lintr_permitted(struct pci_devinst *pi)
{
uint16_t cmd;
cmd = pci_get_cfgdata16(pi, PCIR_COMMAND);
return (!(pi->pi_msi.enabled || pi->pi_msix.enabled ||
(cmd & PCIM_CMD_INTxDIS)));
}
void
pci_lintr_request(struct pci_devinst *pi)
{
struct businfo *bi;
struct slotinfo *si;
int bestpin, bestcount, pin;
bi = pci_businfo[pi->pi_bus];
assert(bi != NULL);
/*
* Just allocate a pin from our slot. The pin will be
* assigned IRQs later when interrupts are routed.
*/
si = &bi->slotinfo[pi->pi_slot];
bestpin = 0;
bestcount = si->si_intpins[0].ii_count;
for (pin = 1; pin < 4; pin++) {
if (si->si_intpins[pin].ii_count < bestcount) {
bestpin = pin;
bestcount = si->si_intpins[pin].ii_count;
}
}
si->si_intpins[bestpin].ii_count++;
pi->pi_lintr.pin = bestpin + 1;
pci_set_cfgdata8(pi, PCIR_INTPIN, bestpin + 1);
}
static void
pci_lintr_route(struct pci_devinst *pi)
{
struct businfo *bi;
struct intxinfo *ii;
if (pi->pi_lintr.pin == 0)
return;
bi = pci_businfo[pi->pi_bus];
assert(bi != NULL);
ii = &bi->slotinfo[pi->pi_slot].si_intpins[pi->pi_lintr.pin - 1];
/*
* Attempt to allocate an I/O APIC pin for this intpin if one
* is not yet assigned.
*/
if (ii->ii_ioapic_irq == 0)
ii->ii_ioapic_irq = ioapic_pci_alloc_irq();
assert(ii->ii_ioapic_irq > 0);
/*
* Attempt to allocate a PIRQ pin for this intpin if one is
* not yet assigned.
*/
if (ii->ii_pirq_pin == 0)
ii->ii_pirq_pin = pirq_alloc_pin(pi->pi_vmctx);
assert(ii->ii_pirq_pin > 0);
pi->pi_lintr.ioapic_irq = ii->ii_ioapic_irq;
pi->pi_lintr.pirq_pin = ii->ii_pirq_pin;
pci_set_cfgdata8(pi, PCIR_INTLINE, pirq_irq(ii->ii_pirq_pin));
}
void
pci_lintr_assert(struct pci_devinst *pi)
{
assert(pi->pi_lintr.pin > 0);
pthread_mutex_lock(&pi->pi_lintr.lock);
if (pi->pi_lintr.state == IDLE) {
if (pci_lintr_permitted(pi)) {
pi->pi_lintr.state = ASSERTED;
pci_irq_assert(pi);
} else
pi->pi_lintr.state = PENDING;
}
pthread_mutex_unlock(&pi->pi_lintr.lock);
}
void
pci_lintr_deassert(struct pci_devinst *pi)
{
assert(pi->pi_lintr.pin > 0);
pthread_mutex_lock(&pi->pi_lintr.lock);
if (pi->pi_lintr.state == ASSERTED) {
pi->pi_lintr.state = IDLE;
pci_irq_deassert(pi);
} else if (pi->pi_lintr.state == PENDING)
pi->pi_lintr.state = IDLE;
pthread_mutex_unlock(&pi->pi_lintr.lock);
}
static void
pci_lintr_update(struct pci_devinst *pi)
{
pthread_mutex_lock(&pi->pi_lintr.lock);
if (pi->pi_lintr.state == ASSERTED && !pci_lintr_permitted(pi)) {
pci_irq_deassert(pi);
pi->pi_lintr.state = PENDING;
} else if (pi->pi_lintr.state == PENDING && pci_lintr_permitted(pi)) {
pi->pi_lintr.state = ASSERTED;
pci_irq_assert(pi);
}
pthread_mutex_unlock(&pi->pi_lintr.lock);
}
int
pci_count_lintr(int bus)
{
int count, slot, pin;
struct slotinfo *slotinfo;
count = 0;
if (pci_businfo[bus] != NULL) {
for (slot = 0; slot < MAXSLOTS; slot++) {
slotinfo = &pci_businfo[bus]->slotinfo[slot];
for (pin = 0; pin < 4; pin++) {
if (slotinfo->si_intpins[pin].ii_count != 0)
count++;
}
}
}
return (count);
}
void
pci_walk_lintr(int bus, pci_lintr_cb cb, void *arg)
{
struct businfo *bi;
struct slotinfo *si;
struct intxinfo *ii;
int slot, pin;
if ((bi = pci_businfo[bus]) == NULL)
return;
for (slot = 0; slot < MAXSLOTS; slot++) {
si = &bi->slotinfo[slot];
for (pin = 0; pin < 4; pin++) {
ii = &si->si_intpins[pin];
if (ii->ii_count != 0)
cb(bus, slot, pin + 1, ii->ii_pirq_pin,
ii->ii_ioapic_irq, arg);
}
}
}
/*
* Return 1 if the emulated device in 'slot' is a multi-function device.
* Return 0 otherwise.
*/
static int
pci_emul_is_mfdev(int bus, int slot)
{
struct businfo *bi;
struct slotinfo *si;
int f, numfuncs;
numfuncs = 0;
if ((bi = pci_businfo[bus]) != NULL) {
si = &bi->slotinfo[slot];
for (f = 0; f < MAXFUNCS; f++) {
if (si->si_funcs[f].fi_devi != NULL) {
numfuncs++;
}
}
}
return (numfuncs > 1);
}
/*
* Ensure that the PCIM_MFDEV bit is properly set (or unset) depending on
* whether or not is a multi-function being emulated in the pci 'slot'.
*/
static void
pci_emul_hdrtype_fixup(int bus, int slot, int off, int bytes, uint32_t *rv)
{
int mfdev;
if (off <= PCIR_HDRTYPE && off + bytes > PCIR_HDRTYPE) {
mfdev = pci_emul_is_mfdev(bus, slot);
switch (bytes) {
case 1:
case 2:
*rv &= ~PCIM_MFDEV;
if (mfdev) {
*rv |= PCIM_MFDEV;
}
break;
case 4:
*rv &= ~(PCIM_MFDEV << 16);
if (mfdev) {
*rv |= (PCIM_MFDEV << 16);
}
break;
}
}
}
static void
pci_emul_cmdsts_write(struct pci_devinst *pi, int coff, uint32_t new, int bytes)
{
int i, rshift;
uint32_t cmd, cmd2, changed, old, readonly;
cmd = pci_get_cfgdata16(pi, PCIR_COMMAND); /* stash old value */
/*
* From PCI Local Bus Specification 3.0 sections 6.2.2 and 6.2.3.
*
* XXX Bits 8, 11, 12, 13, 14 and 15 in the status register are
* 'write 1 to clear'. However these bits are not set to '1' by
* any device emulation so it is simpler to treat them as readonly.
*/
rshift = (coff & 0x3) * 8;
readonly = 0xFFFFF880 >> rshift;
old = CFGREAD(pi, coff, bytes);
new &= ~readonly;
new |= (old & readonly);
CFGWRITE(pi, coff, new, bytes); /* update config */
cmd2 = pci_get_cfgdata16(pi, PCIR_COMMAND); /* get updated value */
changed = cmd ^ cmd2;
/*
* If the MMIO or I/O address space decoding has changed then
* register/unregister all BARs that decode that address space.
*/
for (i = 0; i <= PCI_BARMAX; i++) {
switch (pi->pi_bar[i].type) {
case PCIBAR_NONE:
case PCIBAR_MEMHI64:
break;
case PCIBAR_IO:
/* I/O address space decoding changed? */
if (changed & PCIM_CMD_PORTEN) {
if (porten(pi))
register_bar(pi, i);
else
unregister_bar(pi, i);
}
break;
case PCIBAR_MEM32:
case PCIBAR_MEM64:
/* MMIO address space decoding changed? */
if (changed & PCIM_CMD_MEMEN) {
if (memen(pi))
register_bar(pi, i);
else
unregister_bar(pi, i);
}
break;
default:
assert(0);
}
}
/*
* If INTx has been unmasked and is pending, assert the
* interrupt.
*/
pci_lintr_update(pi);
}
static void
pci_cfgrw(struct vmctx *ctx, int vcpu, int in, int bus, int slot, int func,
int coff, int bytes, uint32_t *eax)
{
struct businfo *bi;
struct slotinfo *si;
struct pci_devinst *pi;
struct pci_devemu *pe;
int idx, needcfg;
uint64_t addr, bar, mask;
if ((bi = pci_businfo[bus]) != NULL) {
si = &bi->slotinfo[slot];
pi = si->si_funcs[func].fi_devi;
} else
pi = NULL;
/*
* Just return if there is no device at this slot:func or if the
* the guest is doing an un-aligned access.
*/
if (pi == NULL || (bytes != 1 && bytes != 2 && bytes != 4) ||
(coff & (bytes - 1)) != 0) {
if (in)
*eax = 0xffffffff;
return;
}
/*
* Ignore all writes beyond the standard config space and return all
* ones on reads.
*/
if (coff >= PCI_REGMAX + 1) {
if (in) {
*eax = 0xffffffff;
/*
* Extended capabilities begin at offset 256 in config
* space. Absence of extended capabilities is signaled
* with all 0s in the extended capability header at
* offset 256.
*/
if (coff <= PCI_REGMAX + 4)
*eax = 0x00000000;
}
return;
}
pe = pi->pi_d;
/*
* Config read
*/
if (in) {
/* Let the device emulation override the default handler */
if (pe->pe_cfgread != NULL) {
needcfg = pe->pe_cfgread(ctx, vcpu, pi, coff, bytes,
eax);
} else {
needcfg = 1;
}
if (needcfg)
*eax = CFGREAD(pi, coff, bytes);
pci_emul_hdrtype_fixup(bus, slot, coff, bytes, eax);
} else {
/* Let the device emulation override the default handler */
if (pe->pe_cfgwrite != NULL &&
(*pe->pe_cfgwrite)(ctx, vcpu, pi, coff, bytes, *eax) == 0)
return;
/*
* Special handling for write to BAR registers
*/
if (coff >= PCIR_BAR(0) && coff < PCIR_BAR(PCI_BARMAX + 1)) {
/*
* Ignore writes to BAR registers that are not
* 4-byte aligned.
*/
if (bytes != 4 || (coff & 0x3) != 0)
return;
idx = (coff - PCIR_BAR(0)) / 4;
mask = ~(pi->pi_bar[idx].size - 1);
switch (pi->pi_bar[idx].type) {
case PCIBAR_NONE:
pi->pi_bar[idx].addr = bar = 0;
break;
case PCIBAR_IO:
addr = *eax & mask;
addr &= 0xffff;
bar = addr | PCIM_BAR_IO_SPACE;
/*
* Register the new BAR value for interception
*/
if (addr != pi->pi_bar[idx].addr) {
update_bar_address(pi, addr, idx,
PCIBAR_IO);
}
break;
case PCIBAR_MEM32:
addr = bar = *eax & mask;
bar |= PCIM_BAR_MEM_SPACE | PCIM_BAR_MEM_32;
if (addr != pi->pi_bar[idx].addr) {
update_bar_address(pi, addr, idx,
PCIBAR_MEM32);
}
break;
case PCIBAR_MEM64:
addr = bar = *eax & mask;
bar |= PCIM_BAR_MEM_SPACE | PCIM_BAR_MEM_64 |
PCIM_BAR_MEM_PREFETCH;
if (addr != (uint32_t)pi->pi_bar[idx].addr) {
update_bar_address(pi, addr, idx,
PCIBAR_MEM64);
}
break;
case PCIBAR_MEMHI64:
mask = ~(pi->pi_bar[idx - 1].size - 1);
addr = ((uint64_t)*eax << 32) & mask;
bar = addr >> 32;
if (bar != pi->pi_bar[idx - 1].addr >> 32) {
update_bar_address(pi, addr, idx - 1,
PCIBAR_MEMHI64);
}
break;
default:
assert(0);
}
pci_set_cfgdata32(pi, coff, bar);
} else if (pci_emul_iscap(pi, coff)) {
pci_emul_capwrite(pi, coff, bytes, *eax);
} else if (coff >= PCIR_COMMAND && coff < PCIR_REVID) {
pci_emul_cmdsts_write(pi, coff, *eax, bytes);
} else {
CFGWRITE(pi, coff, *eax, bytes);
}
}
}
static int cfgenable, cfgbus, cfgslot, cfgfunc, cfgoff;
static int
pci_emul_cfgaddr(struct vmctx *ctx, int vcpu, int in, int port, int bytes,
uint32_t *eax, void *arg)
{
uint32_t x;
if (bytes != 4) {
if (in)
*eax = (bytes == 2) ? 0xffff : 0xff;
return (0);
}
if (in) {
x = (cfgbus << 16) | (cfgslot << 11) | (cfgfunc << 8) | cfgoff;
if (cfgenable)
x |= CONF1_ENABLE;
*eax = x;
} else {
x = *eax;
cfgenable = (x & CONF1_ENABLE) == CONF1_ENABLE;
cfgoff = x & PCI_REGMAX;
cfgfunc = (x >> 8) & PCI_FUNCMAX;
cfgslot = (x >> 11) & PCI_SLOTMAX;
cfgbus = (x >> 16) & PCI_BUSMAX;
}
return (0);
}
INOUT_PORT(pci_cfgaddr, CONF1_ADDR_PORT, IOPORT_F_INOUT, pci_emul_cfgaddr);
static int
pci_emul_cfgdata(struct vmctx *ctx, int vcpu, int in, int port, int bytes,
uint32_t *eax, void *arg)
{
int coff;
assert(bytes == 1 || bytes == 2 || bytes == 4);
coff = cfgoff + (port - CONF1_DATA_PORT);
if (cfgenable) {
pci_cfgrw(ctx, vcpu, in, cfgbus, cfgslot, cfgfunc, coff, bytes,
eax);
} else {
/* Ignore accesses to cfgdata if not enabled by cfgaddr */
if (in)
*eax = 0xffffffff;
}
return (0);
}
INOUT_PORT(pci_cfgdata, CONF1_DATA_PORT+0, IOPORT_F_INOUT, pci_emul_cfgdata);
INOUT_PORT(pci_cfgdata, CONF1_DATA_PORT+1, IOPORT_F_INOUT, pci_emul_cfgdata);
INOUT_PORT(pci_cfgdata, CONF1_DATA_PORT+2, IOPORT_F_INOUT, pci_emul_cfgdata);
INOUT_PORT(pci_cfgdata, CONF1_DATA_PORT+3, IOPORT_F_INOUT, pci_emul_cfgdata);
#define PCI_EMUL_TEST
#ifdef PCI_EMUL_TEST
/*
* Define a dummy test device
*/
#define DIOSZ 8
#define DMEMSZ 4096
struct pci_emul_dsoftc {
uint8_t ioregs[DIOSZ];
uint8_t memregs[2][DMEMSZ];
};
#define PCI_EMUL_MSI_MSGS 4
#define PCI_EMUL_MSIX_MSGS 16
static int
pci_emul_dinit(struct vmctx *ctx, struct pci_devinst *pi, char *opts)
{
int error;
struct pci_emul_dsoftc *sc;
sc = calloc(1, sizeof(struct pci_emul_dsoftc));
pi->pi_arg = sc;
pci_set_cfgdata16(pi, PCIR_DEVICE, 0x0001);
pci_set_cfgdata16(pi, PCIR_VENDOR, 0x10DD);
pci_set_cfgdata8(pi, PCIR_CLASS, 0x02);
error = pci_emul_add_msicap(pi, PCI_EMUL_MSI_MSGS);
assert(error == 0);
error = pci_emul_alloc_bar(pi, 0, PCIBAR_IO, DIOSZ);
assert(error == 0);
error = pci_emul_alloc_bar(pi, 1, PCIBAR_MEM32, DMEMSZ);
assert(error == 0);
error = pci_emul_alloc_bar(pi, 2, PCIBAR_MEM32, DMEMSZ);
assert(error == 0);
return (0);
}
static void
pci_emul_diow(struct vmctx *ctx, int vcpu, struct pci_devinst *pi, int baridx,
uint64_t offset, int size, uint64_t value)
{
int i;
struct pci_emul_dsoftc *sc = pi->pi_arg;
if (baridx == 0) {
if (offset + size > DIOSZ) {
printf("diow: iow too large, offset %ld size %d\n",
offset, size);
return;
}
if (size == 1) {
sc->ioregs[offset] = value & 0xff;
} else if (size == 2) {
*(uint16_t *)&sc->ioregs[offset] = value & 0xffff;
} else if (size == 4) {
*(uint32_t *)&sc->ioregs[offset] = value;
} else {
printf("diow: iow unknown size %d\n", size);
}
/*
* Special magic value to generate an interrupt
*/
if (offset == 4 && size == 4 && pci_msi_enabled(pi))
pci_generate_msi(pi, value % pci_msi_maxmsgnum(pi));
if (value == 0xabcdef) {
for (i = 0; i < pci_msi_maxmsgnum(pi); i++)
pci_generate_msi(pi, i);
}
}
if (baridx == 1 || baridx == 2) {
if (offset + size > DMEMSZ) {
printf("diow: memw too large, offset %ld size %d\n",
offset, size);
return;
}
i = baridx - 1; /* 'memregs' index */
if (size == 1) {
sc->memregs[i][offset] = value;
} else if (size == 2) {
*(uint16_t *)&sc->memregs[i][offset] = value;
} else if (size == 4) {
*(uint32_t *)&sc->memregs[i][offset] = value;
} else if (size == 8) {
*(uint64_t *)&sc->memregs[i][offset] = value;
} else {
printf("diow: memw unknown size %d\n", size);
}
/*
* magic interrupt ??
*/
}
- if (baridx > 2) {
+ if (baridx > 2 || baridx < 0) {
printf("diow: unknown bar idx %d\n", baridx);
}
}
static uint64_t
pci_emul_dior(struct vmctx *ctx, int vcpu, struct pci_devinst *pi, int baridx,
uint64_t offset, int size)
{
struct pci_emul_dsoftc *sc = pi->pi_arg;
uint32_t value;
int i;
if (baridx == 0) {
if (offset + size > DIOSZ) {
printf("dior: ior too large, offset %ld size %d\n",
offset, size);
return (0);
}
value = 0;
if (size == 1) {
value = sc->ioregs[offset];
} else if (size == 2) {
value = *(uint16_t *) &sc->ioregs[offset];
} else if (size == 4) {
value = *(uint32_t *) &sc->ioregs[offset];
} else {
printf("dior: ior unknown size %d\n", size);
}
}
if (baridx == 1 || baridx == 2) {
if (offset + size > DMEMSZ) {
printf("dior: memr too large, offset %ld size %d\n",
offset, size);
return (0);
}
i = baridx - 1; /* 'memregs' index */
if (size == 1) {
value = sc->memregs[i][offset];
} else if (size == 2) {
value = *(uint16_t *) &sc->memregs[i][offset];
} else if (size == 4) {
value = *(uint32_t *) &sc->memregs[i][offset];
} else if (size == 8) {
value = *(uint64_t *) &sc->memregs[i][offset];
} else {
printf("dior: ior unknown size %d\n", size);
}
}
- if (baridx > 2) {
+ if (baridx > 2 || baridx < 0) {
printf("dior: unknown bar idx %d\n", baridx);
return (0);
}
return (value);
}
struct pci_devemu pci_dummy = {
.pe_emu = "dummy",
.pe_init = pci_emul_dinit,
.pe_barwrite = pci_emul_diow,
.pe_barread = pci_emul_dior
};
PCI_EMUL_SET(pci_dummy);
#endif /* PCI_EMUL_TEST */
Index: user/ngie/bsnmp_cleanup/usr.sbin/bhyve/pci_virtio_block.c
===================================================================
--- user/ngie/bsnmp_cleanup/usr.sbin/bhyve/pci_virtio_block.c (revision 299696)
+++ user/ngie/bsnmp_cleanup/usr.sbin/bhyve/pci_virtio_block.c (revision 299697)
@@ -1,410 +1,410 @@
/*-
* Copyright (c) 2011 NetApp, Inc.
* 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 NETAPP, INC ``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 NETAPP, INC 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/linker_set.h>
#include <sys/stat.h>
#include <sys/uio.h>
#include <sys/ioctl.h>
#include <sys/disk.h>
#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
#include <strings.h>
#include <unistd.h>
#include <assert.h>
#include <pthread.h>
#include <md5.h>
#include "bhyverun.h"
#include "pci_emul.h"
#include "virtio.h"
#include "block_if.h"
#define VTBLK_RINGSZ 64
#define VTBLK_S_OK 0
#define VTBLK_S_IOERR 1
#define VTBLK_S_UNSUPP 2
#define VTBLK_BLK_ID_BYTES 20
/* Capability bits */
#define VTBLK_F_SEG_MAX (1 << 2) /* Maximum request segments */
#define VTBLK_F_BLK_SIZE (1 << 6) /* cfg block size valid */
#define VTBLK_F_FLUSH (1 << 9) /* Cache flush support */
#define VTBLK_F_TOPOLOGY (1 << 10) /* Optimal I/O alignment */
/*
* Host capabilities
*/
#define VTBLK_S_HOSTCAPS \
( VTBLK_F_SEG_MAX | \
VTBLK_F_BLK_SIZE | \
VTBLK_F_FLUSH | \
VTBLK_F_TOPOLOGY | \
VIRTIO_RING_F_INDIRECT_DESC ) /* indirect descriptors */
/*
* Config space "registers"
*/
struct vtblk_config {
uint64_t vbc_capacity;
uint32_t vbc_size_max;
uint32_t vbc_seg_max;
struct {
uint16_t cylinders;
uint8_t heads;
uint8_t sectors;
} vbc_geometry;
uint32_t vbc_blk_size;
struct {
uint8_t physical_block_exp;
uint8_t alignment_offset;
uint16_t min_io_size;
uint32_t opt_io_size;
} vbc_topology;
uint8_t vbc_writeback;
} __packed;
/*
* Fixed-size block header
*/
struct virtio_blk_hdr {
#define VBH_OP_READ 0
#define VBH_OP_WRITE 1
#define VBH_OP_FLUSH 4
#define VBH_OP_FLUSH_OUT 5
#define VBH_OP_IDENT 8
#define VBH_FLAG_BARRIER 0x80000000 /* OR'ed into vbh_type */
uint32_t vbh_type;
uint32_t vbh_ioprio;
uint64_t vbh_sector;
} __packed;
/*
* Debug printf
*/
static int pci_vtblk_debug;
#define DPRINTF(params) if (pci_vtblk_debug) printf params
#define WPRINTF(params) printf params
struct pci_vtblk_ioreq {
struct blockif_req io_req;
struct pci_vtblk_softc *io_sc;
uint8_t *io_status;
uint16_t io_idx;
};
/*
* Per-device softc
*/
struct pci_vtblk_softc {
struct virtio_softc vbsc_vs;
pthread_mutex_t vsc_mtx;
struct vqueue_info vbsc_vq;
struct vtblk_config vbsc_cfg;
struct blockif_ctxt *bc;
char vbsc_ident[VTBLK_BLK_ID_BYTES];
struct pci_vtblk_ioreq vbsc_ios[VTBLK_RINGSZ];
};
static void pci_vtblk_reset(void *);
static void pci_vtblk_notify(void *, struct vqueue_info *);
static int pci_vtblk_cfgread(void *, int, int, uint32_t *);
static int pci_vtblk_cfgwrite(void *, int, int, uint32_t);
static struct virtio_consts vtblk_vi_consts = {
"vtblk", /* our name */
1, /* we support 1 virtqueue */
sizeof(struct vtblk_config), /* config reg size */
pci_vtblk_reset, /* reset */
pci_vtblk_notify, /* device-wide qnotify */
pci_vtblk_cfgread, /* read PCI config */
pci_vtblk_cfgwrite, /* write PCI config */
NULL, /* apply negotiated features */
VTBLK_S_HOSTCAPS, /* our capabilities */
};
static void
pci_vtblk_reset(void *vsc)
{
struct pci_vtblk_softc *sc = vsc;
DPRINTF(("vtblk: device reset requested !\n"));
vi_reset_dev(&sc->vbsc_vs);
}
static void
pci_vtblk_done(struct blockif_req *br, int err)
{
struct pci_vtblk_ioreq *io = br->br_param;
struct pci_vtblk_softc *sc = io->io_sc;
/* convert errno into a virtio block error return */
if (err == EOPNOTSUPP || err == ENOSYS)
*io->io_status = VTBLK_S_UNSUPP;
else if (err != 0)
*io->io_status = VTBLK_S_IOERR;
else
*io->io_status = VTBLK_S_OK;
/*
* Return the descriptor back to the host.
* We wrote 1 byte (our status) to host.
*/
pthread_mutex_lock(&sc->vsc_mtx);
vq_relchain(&sc->vbsc_vq, io->io_idx, 1);
vq_endchains(&sc->vbsc_vq, 0);
pthread_mutex_unlock(&sc->vsc_mtx);
}
static void
pci_vtblk_proc(struct pci_vtblk_softc *sc, struct vqueue_info *vq)
{
struct virtio_blk_hdr *vbh;
struct pci_vtblk_ioreq *io;
int i, n;
int err;
ssize_t iolen;
int writeop, type;
- off_t offset;
struct iovec iov[BLOCKIF_IOV_MAX + 2];
uint16_t idx, flags[BLOCKIF_IOV_MAX + 2];
n = vq_getchain(vq, &idx, iov, BLOCKIF_IOV_MAX + 2, flags);
/*
* The first descriptor will be the read-only fixed header,
* and the last is for status (hence +2 above and below).
* The remaining iov's are the actual data I/O vectors.
*
* XXX - note - this fails on crash dump, which does a
* VIRTIO_BLK_T_FLUSH with a zero transfer length
*/
assert(n >= 2 && n <= BLOCKIF_IOV_MAX + 2);
io = &sc->vbsc_ios[idx];
assert((flags[0] & VRING_DESC_F_WRITE) == 0);
assert(iov[0].iov_len == sizeof(struct virtio_blk_hdr));
vbh = iov[0].iov_base;
memcpy(&io->io_req.br_iov, &iov[1], sizeof(struct iovec) * (n - 2));
io->io_req.br_iovcnt = n - 2;
io->io_req.br_offset = vbh->vbh_sector * DEV_BSIZE;
io->io_status = iov[--n].iov_base;
assert(iov[n].iov_len == 1);
assert(flags[n] & VRING_DESC_F_WRITE);
/*
* XXX
* The guest should not be setting the BARRIER flag because
* we don't advertise the capability.
*/
type = vbh->vbh_type & ~VBH_FLAG_BARRIER;
writeop = (type == VBH_OP_WRITE);
iolen = 0;
for (i = 1; i < n; i++) {
/*
* - write op implies read-only descriptor,
* - read/ident op implies write-only descriptor,
* therefore test the inverse of the descriptor bit
* to the op.
*/
assert(((flags[i] & VRING_DESC_F_WRITE) == 0) == writeop);
iolen += iov[i].iov_len;
}
io->io_req.br_resid = iolen;
DPRINTF(("virtio-block: %s op, %zd bytes, %d segs, offset %ld\n\r",
- writeop ? "write" : "read/ident", iolen, i - 1, offset));
+ writeop ? "write" : "read/ident", iolen, i - 1,
+ io->io_req.br_offset));
switch (type) {
case VBH_OP_READ:
err = blockif_read(sc->bc, &io->io_req);
break;
case VBH_OP_WRITE:
err = blockif_write(sc->bc, &io->io_req);
break;
case VBH_OP_FLUSH:
case VBH_OP_FLUSH_OUT:
err = blockif_flush(sc->bc, &io->io_req);
break;
case VBH_OP_IDENT:
/* Assume a single buffer */
/* S/n equal to buffer is not zero-terminated. */
memset(iov[1].iov_base, 0, iov[1].iov_len);
strncpy(iov[1].iov_base, sc->vbsc_ident,
MIN(iov[1].iov_len, sizeof(sc->vbsc_ident)));
pci_vtblk_done(&io->io_req, 0);
return;
default:
pci_vtblk_done(&io->io_req, EOPNOTSUPP);
return;
}
assert(err == 0);
}
static void
pci_vtblk_notify(void *vsc, struct vqueue_info *vq)
{
struct pci_vtblk_softc *sc = vsc;
while (vq_has_descs(vq))
pci_vtblk_proc(sc, vq);
}
static int
pci_vtblk_init(struct vmctx *ctx, struct pci_devinst *pi, char *opts)
{
char bident[sizeof("XX:X:X")];
struct blockif_ctxt *bctxt;
MD5_CTX mdctx;
u_char digest[16];
struct pci_vtblk_softc *sc;
off_t size;
int i, sectsz, sts, sto;
if (opts == NULL) {
printf("virtio-block: backing device required\n");
return (1);
}
/*
* The supplied backing file has to exist
*/
snprintf(bident, sizeof(bident), "%d:%d", pi->pi_slot, pi->pi_func);
bctxt = blockif_open(opts, bident);
if (bctxt == NULL) {
perror("Could not open backing file");
return (1);
}
size = blockif_size(bctxt);
sectsz = blockif_sectsz(bctxt);
blockif_psectsz(bctxt, &sts, &sto);
sc = calloc(1, sizeof(struct pci_vtblk_softc));
sc->bc = bctxt;
for (i = 0; i < VTBLK_RINGSZ; i++) {
struct pci_vtblk_ioreq *io = &sc->vbsc_ios[i];
io->io_req.br_callback = pci_vtblk_done;
io->io_req.br_param = io;
io->io_sc = sc;
io->io_idx = i;
}
pthread_mutex_init(&sc->vsc_mtx, NULL);
/* init virtio softc and virtqueues */
vi_softc_linkup(&sc->vbsc_vs, &vtblk_vi_consts, sc, pi, &sc->vbsc_vq);
sc->vbsc_vs.vs_mtx = &sc->vsc_mtx;
sc->vbsc_vq.vq_qsize = VTBLK_RINGSZ;
/* sc->vbsc_vq.vq_notify = we have no per-queue notify */
/*
* Create an identifier for the backing file. Use parts of the
* md5 sum of the filename
*/
MD5Init(&mdctx);
MD5Update(&mdctx, opts, strlen(opts));
MD5Final(digest, &mdctx);
sprintf(sc->vbsc_ident, "BHYVE-%02X%02X-%02X%02X-%02X%02X",
digest[0], digest[1], digest[2], digest[3], digest[4], digest[5]);
/* setup virtio block config space */
sc->vbsc_cfg.vbc_capacity = size / DEV_BSIZE; /* 512-byte units */
sc->vbsc_cfg.vbc_size_max = 0; /* not negotiated */
sc->vbsc_cfg.vbc_seg_max = BLOCKIF_IOV_MAX;
sc->vbsc_cfg.vbc_geometry.cylinders = 0; /* no geometry */
sc->vbsc_cfg.vbc_geometry.heads = 0;
sc->vbsc_cfg.vbc_geometry.sectors = 0;
sc->vbsc_cfg.vbc_blk_size = sectsz;
sc->vbsc_cfg.vbc_topology.physical_block_exp =
(sts > sectsz) ? (ffsll(sts / sectsz) - 1) : 0;
sc->vbsc_cfg.vbc_topology.alignment_offset =
(sto != 0) ? ((sts - sto) / sectsz) : 0;
sc->vbsc_cfg.vbc_topology.min_io_size = 0;
sc->vbsc_cfg.vbc_topology.opt_io_size = 0;
sc->vbsc_cfg.vbc_writeback = 0;
/*
* Should we move some of this into virtio.c? Could
* have the device, class, and subdev_0 as fields in
* the virtio constants structure.
*/
pci_set_cfgdata16(pi, PCIR_DEVICE, VIRTIO_DEV_BLOCK);
pci_set_cfgdata16(pi, PCIR_VENDOR, VIRTIO_VENDOR);
pci_set_cfgdata8(pi, PCIR_CLASS, PCIC_STORAGE);
pci_set_cfgdata16(pi, PCIR_SUBDEV_0, VIRTIO_TYPE_BLOCK);
pci_set_cfgdata16(pi, PCIR_SUBVEND_0, VIRTIO_VENDOR);
if (vi_intr_init(&sc->vbsc_vs, 1, fbsdrun_virtio_msix())) {
blockif_close(sc->bc);
free(sc);
return (1);
}
vi_set_io_bar(&sc->vbsc_vs, 0);
return (0);
}
static int
pci_vtblk_cfgwrite(void *vsc, int offset, int size, uint32_t value)
{
DPRINTF(("vtblk: write to readonly reg %d\n\r", offset));
return (1);
}
static int
pci_vtblk_cfgread(void *vsc, int offset, int size, uint32_t *retval)
{
struct pci_vtblk_softc *sc = vsc;
void *ptr;
/* our caller has already verified offset and size */
ptr = (uint8_t *)&sc->vbsc_cfg + offset;
memcpy(retval, ptr, size);
return (0);
}
struct pci_devemu pci_de_vblk = {
.pe_emu = "virtio-blk",
.pe_init = pci_vtblk_init,
.pe_barwrite = vi_pci_write,
.pe_barread = vi_pci_read
};
PCI_EMUL_SET(pci_de_vblk);
Index: user/ngie/bsnmp_cleanup/usr.sbin/binmiscctl/binmiscctl.c
===================================================================
--- user/ngie/bsnmp_cleanup/usr.sbin/binmiscctl/binmiscctl.c (revision 299696)
+++ user/ngie/bsnmp_cleanup/usr.sbin/binmiscctl/binmiscctl.c (revision 299697)
@@ -1,510 +1,510 @@
/*-
* Copyright (c) 2013 Stacey D. Son
* 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 <ctype.h>
#include <errno.h>
#include <getopt.h>
#include <stdio.h>
#include <stdarg.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/imgact_binmisc.h>
#include <sys/linker.h>
#include <sys/sysctl.h>
enum cmd {
CMD_ADD = 0,
CMD_REMOVE,
CMD_DISABLE,
CMD_ENABLE,
CMD_LOOKUP,
CMD_LIST,
};
extern char *__progname;
typedef int (*cmd_func_t)(int argc, char *argv[], ximgact_binmisc_entry_t *xbe);
int add_cmd(int argc, char *argv[], ximgact_binmisc_entry_t *xbe);
int name_cmd(int argc, char *argv[], ximgact_binmisc_entry_t *xbe);
int noname_cmd(int argc, char *argv[], ximgact_binmisc_entry_t *xbe);
static const struct {
const int token;
const char *name;
cmd_func_t func;
const char *desc;
const char *args;
} cmds[] = {
{
CMD_ADD,
"add",
add_cmd,
"Add a new binary image activator (requires 'root' privilege)",
"<name> --interpreter <path_and_arguments> \\\n"
"\t\t--magic <magic_bytes> [--mask <mask_bytes>] \\\n"
"\t\t--size <magic_size> [--offset <magic_offset>] \\\n"
"\t\t[--set-enabled]"
},
{
CMD_REMOVE,
"remove",
name_cmd,
"Remove a binary image activator (requires 'root' privilege)",
"<name>"
},
{
CMD_DISABLE,
"disable",
name_cmd,
"Disable a binary image activator (requires 'root' privilege)",
"<name>"
},
{
CMD_ENABLE,
"enable",
name_cmd,
"Enable a binary image activator (requires 'root' privilege)",
"<name>"
},
{
CMD_LOOKUP,
"lookup",
name_cmd,
"Lookup a binary image activator",
"<name>"
},
{
CMD_LIST,
"list",
noname_cmd,
"List all the binary image activators",
""
},
};
static const struct option
add_opts[] = {
{ "set-enabled", no_argument, NULL, 'e' },
{ "interpreter", required_argument, NULL, 'i' },
{ "mask", required_argument, NULL, 'M' },
{ "magic", required_argument, NULL, 'm' },
{ "offset", required_argument, NULL, 'o' },
{ "size", required_argument, NULL, 's' },
{ NULL, 0, NULL, 0 }
};
static char const *cmd_sysctl_name[] = {
IBE_SYSCTL_NAME_ADD,
IBE_SYSCTL_NAME_REMOVE,
IBE_SYSCTL_NAME_DISABLE,
IBE_SYSCTL_NAME_ENABLE,
IBE_SYSCTL_NAME_LOOKUP,
IBE_SYSCTL_NAME_LIST
};
static void
usage(const char *format, ...)
{
va_list args;
size_t i;
int error = 0;
va_start(args, format);
if (format) {
vfprintf(stderr, format, args);
error = -1;
}
va_end(args);
fprintf(stderr, "\n");
fprintf(stderr, "usage: %s command [args...]\n\n", __progname);
for(i = 0; i < ( sizeof (cmds) / sizeof (cmds[0])); i++) {
fprintf(stderr, "%s:\n", cmds[i].desc);
fprintf(stderr, "\t%s %s %s\n\n", __progname, cmds[i].name,
cmds[i].args);
}
exit (error);
}
static void
fatal(const char *format, ...)
{
va_list args;
va_start(args, format);
if (format)
vfprintf(stderr, format, args);
fprintf(stderr, "\n");
exit(-1);
}
static void
getoptstr(char *str, size_t size, const char *argname)
{
if (strlen(optarg) > size)
usage("'%s' too large", argname);
strlcpy(str, optarg, size);
}
static void
printxbe(ximgact_binmisc_entry_t *xbe)
{
uint32_t i, flags = xbe->xbe_flags;
if (xbe->xbe_version != IBE_VERSION) {
fprintf(stderr, "Error: XBE version mismatch\n");
return;
}
printf("name: %s\n", xbe->xbe_name);
printf("interpreter: %s\n", xbe->xbe_interpreter);
printf("flags: %s%s\n", (flags & IBF_ENABLED) ? "ENABLED " : "",
(flags & IBF_USE_MASK) ? "USE_MASK " : "");
printf("magic size: %u\n", xbe->xbe_msize);
printf("magic offset: %u\n", xbe->xbe_moffset);
printf("magic: ");
for(i = 0; i < xbe->xbe_msize; i++) {
if (i && !(i % 12))
printf("\n ");
else
if (i && !(i % 4))
printf(" ");
printf("0x%02x ", xbe->xbe_magic[i]);
}
printf("\n");
if (flags & IBF_USE_MASK) {
printf("mask: ");
for(i = 0; i < xbe->xbe_msize; i++) {
if (i && !(i % 12))
printf("\n ");
else
if (i && !(i % 4))
printf(" ");
printf("0x%02x ", xbe->xbe_mask[i]);
}
printf("\n");
}
printf("\n");
}
static int
demux_cmd(__unused int argc, char *const argv[])
{
size_t i;
optind = 1;
optreset = 1;
for(i = 0; i < ( sizeof (cmds) / sizeof (cmds[0])); i++) {
if (!strcasecmp(cmds[i].name, argv[0])) {
return (i);
}
}
/* Unknown command */
return (-1);
}
static int
strlit2bin_cpy(uint8_t *d, char *s, size_t size)
{
int c;
size_t cnt = 0;
while((c = *s++) != '\0') {
if (c == '\\') {
/* Do '\' escapes. */
switch (*s) {
case '\\':
*d++ = '\\';
break;
case 'x':
s++;
c = toupper(*s++);
*d = (c - (isdigit(c) ? '0' : ('A' - 10))) << 4;
c = toupper(*s++);
*d++ |= c - (isdigit(c) ? '0' : ('A' - 10));
break;
default:
return (-1);
}
} else
*d++ = c;
if (++cnt > size)
return (-1);
}
return (cnt);
}
int
add_cmd(__unused int argc, char *argv[], ximgact_binmisc_entry_t *xbe)
{
int ch;
char *magic = NULL, *mask = NULL;
int sz;
if (strlen(argv[0]) > IBE_NAME_MAX)
usage("'%s' string length longer than IBE_NAME_MAX (%d)",
IBE_NAME_MAX);
strlcpy(&xbe->xbe_name[0], argv[0], IBE_NAME_MAX);
while ((ch = getopt_long(argc, argv, "ei:m:M:o:s:", add_opts, NULL))
!= -1) {
switch(ch) {
case 'i':
getoptstr(xbe->xbe_interpreter, IBE_INTERP_LEN_MAX,
"interpreter");
break;
case 'm':
magic = strdup(optarg);
break;
case 'M':
mask = strdup(optarg);
xbe->xbe_flags |= IBF_USE_MASK;
break;
case 'e':
xbe->xbe_flags |= IBF_ENABLED;
break;
case 'o':
xbe->xbe_moffset = atol(optarg);
break;
case 's':
xbe->xbe_msize = atol(optarg);
if (xbe->xbe_msize == 0 ||
xbe->xbe_msize > IBE_MAGIC_MAX)
usage("Error: Not valid '--size' value. "
"(Must be > 0 and < %u.)\n",
xbe->xbe_msize);
break;
default:
usage("Unknown argument: '%c'", ch);
}
}
if (xbe->xbe_msize == 0) {
if (NULL != magic)
free(magic);
if (NULL != mask)
free(mask);
usage("Error: Missing '--size' argument");
}
if (NULL != magic) {
if (xbe->xbe_msize == 0) {
if (magic)
free(magic);
if (mask)
free(mask);
usage("Error: Missing magic size argument");
}
sz = strlit2bin_cpy(xbe->xbe_magic, magic, IBE_MAGIC_MAX);
free(magic);
if (sz == -1 || (uint32_t)sz != xbe->xbe_msize) {
if (mask)
free(mask);
usage("Error: invalid magic argument");
}
if (mask) {
sz = strlit2bin_cpy(xbe->xbe_mask, mask, IBE_MAGIC_MAX);
free(mask);
if (sz == -1 || (uint32_t)sz != xbe->xbe_msize)
usage("Error: invalid mask argument");
}
} else {
if (mask)
free(mask);
usage("Error: Missing magic argument");
}
if (!strnlen(xbe->xbe_interpreter, IBE_INTERP_LEN_MAX)) {
usage("Error: Missing 'interpreter' argument");
}
return (0);
}
int
name_cmd(int argc, char *argv[], ximgact_binmisc_entry_t *xbe)
{
if (argc == 0)
usage("Required argument missing\n");
if (strlen(argv[0]) > IBE_NAME_MAX)
usage("'%s' string length longer than IBE_NAME_MAX (%d)",
IBE_NAME_MAX);
strlcpy(&xbe->xbe_name[0], argv[0], IBE_NAME_MAX);
return (0);
}
int
noname_cmd(__unused int argc, __unused char *argv[],
__unused ximgact_binmisc_entry_t *xbe)
{
return (0);
}
int
main(int argc, char **argv)
{
int error = 0, cmd = -1;
ximgact_binmisc_entry_t xbe_in, *xbe_inp = NULL;
ximgact_binmisc_entry_t xbe_out, *xbe_outp = NULL;
size_t xbe_in_sz = 0;
size_t xbe_out_sz = 0, *xbe_out_szp = NULL;
uint32_t i;
if (kldfind(KMOD_NAME) == -1) {
if (kldload(KMOD_NAME) == -1)
fatal("Can't load %s kernel module: %s",
KMOD_NAME, strerror(errno));
}
bzero(&xbe_in, sizeof(xbe_in));
bzero(&xbe_out, sizeof(xbe_out));
xbe_in.xbe_version = IBE_VERSION;
if (argc < 2)
usage("Error: requires at least one argument");
argc--, argv++;
cmd = demux_cmd(argc, argv);
- if (cmd == -1)
+ if (cmd < 0)
usage("Error: Unknown command \"%s\"", argv[0]);
argc--, argv++;
error = (*cmds[cmd].func)(argc, argv, &xbe_in);
if (error)
usage("Can't parse command-line for '%s' command",
cmds[cmd].name);
if (cmd != CMD_LIST) {
xbe_inp = &xbe_in;
xbe_in_sz = sizeof(xbe_in);
} else
xbe_out_szp = &xbe_out_sz;
if (cmd == CMD_LOOKUP) {
xbe_out_sz = sizeof(xbe_out);
xbe_outp = &xbe_out;
xbe_out_szp = &xbe_out_sz;
}
error = sysctlbyname(cmd_sysctl_name[cmd], xbe_outp, xbe_out_szp,
xbe_inp, xbe_in_sz);
if (error)
switch(errno) {
case EINVAL:
usage("Invalid interpreter name or --interpreter, "
"--magic, --mask, or --size argument value");
break;
case EEXIST:
usage("'%s' is not unique in activator list",
xbe_in.xbe_name);
break;
case ENOENT:
usage("'%s' is not found in activator list",
xbe_in.xbe_name);
break;
case ENOSPC:
fatal("Fatal: no more room in the activator list "
"(limited to %d enties)", IBE_MAX_ENTRIES);
break;
case EPERM:
usage("Insufficient privileges for '%s' command",
cmds[cmd].name);
break;
default:
fatal("Fatal: sysctlbyname() returned: %s",
strerror(errno));
break;
}
if (cmd == CMD_LOOKUP)
printxbe(xbe_outp);
if (cmd == CMD_LIST && xbe_out_sz > 0) {
xbe_outp = malloc(xbe_out_sz);
if (!xbe_outp)
fatal("Fatal: out of memory");
while(1) {
size_t osize = xbe_out_sz;
error = sysctlbyname(cmd_sysctl_name[cmd], xbe_outp,
&xbe_out_sz, NULL, 0);
if (error == -1 && errno == ENOMEM &&
xbe_out_sz == osize) {
/*
* Buffer too small. Increase it by one
* entry.
*/
xbe_out_sz += sizeof(xbe_out);
xbe_outp = realloc(xbe_outp, xbe_out_sz);
if (!xbe_outp)
fatal("Fatal: out of memory");
} else
break;
}
if (error) {
free(xbe_outp);
fatal("Fatal: %s", strerror(errno));
}
for(i = 0; i < (xbe_out_sz / sizeof(xbe_out)); i++)
printxbe(&xbe_outp[i]);
}
return (error);
}
Index: user/ngie/bsnmp_cleanup/usr.sbin/i2c/i2c.c
===================================================================
--- user/ngie/bsnmp_cleanup/usr.sbin/i2c/i2c.c (revision 299696)
+++ user/ngie/bsnmp_cleanup/usr.sbin/i2c/i2c.c (revision 299697)
@@ -1,690 +1,692 @@
/*-
* Copyright (C) 2008-2009 Semihalf, Michal Hajduk and Bartlomiej Sieka
* 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 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 <err.h>
#include <errno.h>
#include <sysexits.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <dev/iicbus/iic.h>
#define I2C_DEV "/dev/iic0"
#define I2C_MODE_NOTSET 0
#define I2C_MODE_NONE 1
#define I2C_MODE_STOP_START 2
#define I2C_MODE_REPEATED_START 3
struct options {
int width;
int count;
int verbose;
int addr_set;
int binary;
int scan;
int skip;
int reset;
int mode;
char dir;
uint32_t addr;
uint32_t off;
};
struct skip_range {
int start;
int end;
};
__dead2 static void
usage(void)
{
fprintf(stderr, "usage: %s -a addr [-f device] [-d [r|w]] [-o offset] "
"[-w [0|8|16]] [-c count] [-m [ss|rs|no]] [-b] [-v]\n",
getprogname());
fprintf(stderr, " %s -s [-f device] [-n skip_addr] -v\n",
getprogname());
fprintf(stderr, " %s -r [-f device] -v\n", getprogname());
exit(EX_USAGE);
}
static struct skip_range
skip_get_range(char *skip_addr)
{
struct skip_range addr_range;
char *token;
addr_range.start = 0;
addr_range.end = 0;
token = strsep(&skip_addr, "..");
if (token) {
addr_range.start = strtoul(token, 0, 16);
token = strsep(&skip_addr, "..");
if ((token != NULL) && !atoi(token)) {
token = strsep(&skip_addr, "..");
if (token)
addr_range.end = strtoul(token, 0, 16);
}
}
return (addr_range);
}
/* Parse the string to get hex 7 bits addresses */
static int
skip_get_tokens(char *skip_addr, int *sk_addr, int max_index)
{
char *token;
int i;
for (i = 0; i < max_index; i++) {
token = strsep(&skip_addr, ":");
if (token == NULL)
break;
sk_addr[i] = strtoul(token, 0, 16);
}
return (i);
}
static int
scan_bus(struct iiccmd cmd, char *dev, int skip, char *skip_addr)
{
struct skip_range addr_range = { 0, 0 };
int *tokens, fd, error, i, index, j;
int len = 0, do_skip = 0, no_range = 1;
fd = open(dev, O_RDWR);
if (fd == -1) {
fprintf(stderr, "Error opening I2C controller (%s) for "
"scanning: %s\n", dev, strerror(errno));
return (EX_NOINPUT);
}
if (skip) {
len = strlen(skip_addr);
if (strstr(skip_addr, "..") != NULL) {
addr_range = skip_get_range(skip_addr);
no_range = 0;
} else {
tokens = (int *)malloc((len / 2 + 1) * sizeof(int));
if (tokens == NULL) {
fprintf(stderr, "Error allocating tokens "
"buffer\n");
error = -1;
goto out;
}
index = skip_get_tokens(skip_addr, tokens,
len / 2 + 1);
}
if (!no_range && (addr_range.start > addr_range.end)) {
fprintf(stderr, "Skip address out of range\n");
error = -1;
goto out;
}
}
printf("Scanning I2C devices on %s: ", dev);
for (i = 1; i < 127; i++) {
if (skip && ( addr_range.start < addr_range.end)) {
if (i >= addr_range.start && i <= addr_range.end)
continue;
} else if (skip && no_range)
for (j = 0; j < index; j++) {
if (tokens[j] == i) {
do_skip = 1;
break;
}
}
if (do_skip) {
do_skip = 0;
continue;
}
cmd.slave = i << 1;
cmd.last = 1;
cmd.count = 0;
error = ioctl(fd, I2CRSTCARD, &cmd);
if (error)
goto out;
cmd.slave = i << 1;
cmd.last = 1;
error = ioctl(fd, I2CSTART, &cmd);
if (!error)
printf("%x ", i);
cmd.slave = i << 1;
cmd.last = 1;
error = ioctl(fd, I2CSTOP, &cmd);
}
printf("\n");
error = ioctl(fd, I2CRSTCARD, &cmd);
out:
close(fd);
if (skip && no_range)
free(tokens);
if (error) {
fprintf(stderr, "Error scanning I2C controller (%s): %s\n",
dev, strerror(errno));
return (EX_NOINPUT);
} else
return (EX_OK);
}
static int
reset_bus(struct iiccmd cmd, char *dev)
{
int fd, error;
fd = open(dev, O_RDWR);
if (fd == -1) {
fprintf(stderr, "Error opening I2C controller (%s) for "
"resetting: %s\n", dev, strerror(errno));
return (EX_NOINPUT);
}
printf("Resetting I2C controller on %s: ", dev);
error = ioctl(fd, I2CRSTCARD, &cmd);
close (fd);
if (error) {
printf("error: %s\n", strerror(errno));
return (EX_IOERR);
} else {
printf("OK\n");
return (EX_OK);
}
}
static char *
prepare_buf(int size, uint32_t off)
{
char *buf;
buf = malloc(size);
if (buf == NULL)
return (buf);
if (size == 1)
buf[0] = off & 0xff;
else if (size == 2) {
buf[0] = (off >> 8) & 0xff;
buf[1] = off & 0xff;
}
return (buf);
}
static int
i2c_write(char *dev, struct options i2c_opt, char *i2c_buf)
{
struct iiccmd cmd;
int ch, i, error, fd, bufsize;
char *err_msg, *buf;
/*
* Read data to be written to the chip from stdin
*/
if (i2c_opt.verbose && !i2c_opt.binary)
fprintf(stderr, "Enter %u bytes of data: ", i2c_opt.count);
for (i = 0; i < i2c_opt.count; i++) {
ch = getchar();
if (ch == EOF) {
free(i2c_buf);
err(1, "not enough data, exiting\n");
}
i2c_buf[i] = ch;
}
fd = open(dev, O_RDWR);
if (fd == -1) {
free(i2c_buf);
err(1, "open failed");
}
cmd.slave = i2c_opt.addr;
error = ioctl(fd, I2CSTART, &cmd);
if (error == -1) {
err_msg = "ioctl: error sending start condition";
goto err1;
}
if (i2c_opt.width) {
bufsize = i2c_opt.width / 8;
buf = prepare_buf(bufsize, i2c_opt.off);
if (buf == NULL) {
err_msg = "error: offset malloc";
goto err1;
}
- } else
+ } else {
bufsize = 0;
+ buf = NULL;
+ }
switch(i2c_opt.mode) {
case I2C_MODE_STOP_START:
/*
* Write offset where the data will go
*/
if (i2c_opt.width) {
cmd.count = bufsize;
cmd.buf = buf;
error = ioctl(fd, I2CWRITE, &cmd);
free(buf);
if (error == -1) {
err_msg = "ioctl: error when write offset";
goto err1;
}
}
error = ioctl(fd, I2CSTOP, &cmd);
if (error == -1) {
err_msg = "ioctl: error sending stop condition";
goto err2;
}
cmd.slave = i2c_opt.addr;
error = ioctl(fd, I2CSTART, &cmd);
if (error == -1) {
err_msg = "ioctl: error sending start condition";
goto err1;
}
/*
* Write the data
*/
cmd.count = i2c_opt.count;
cmd.buf = i2c_buf;
cmd.last = 0;
error = ioctl(fd, I2CWRITE, &cmd);
if (error == -1) {
err_msg = "ioctl: error when write";
goto err1;
}
break;
case I2C_MODE_REPEATED_START:
/*
* Write offset where the data will go
*/
if (i2c_opt.width) {
cmd.count = bufsize;
cmd.buf = buf;
error = ioctl(fd, I2CWRITE, &cmd);
free(buf);
if (error == -1) {
err_msg = "ioctl: error when write offset";
goto err1;
}
}
cmd.slave = i2c_opt.addr;
error = ioctl(fd, I2CRPTSTART, &cmd);
if (error == -1) {
err_msg = "ioctl: error sending repeated start "
"condition";
goto err1;
}
/*
* Write the data
*/
cmd.count = i2c_opt.count;
cmd.buf = i2c_buf;
cmd.last = 0;
error = ioctl(fd, I2CWRITE, &cmd);
if (error == -1) {
err_msg = "ioctl: error when write";
goto err1;
}
break;
case I2C_MODE_NONE: /* fall through */
default:
buf = realloc(buf, bufsize + i2c_opt.count);
if (buf == NULL) {
err_msg = "error: data malloc";
goto err1;
}
memcpy(buf + bufsize, i2c_buf, i2c_opt.count);
/*
* Write offset and data
*/
cmd.count = bufsize + i2c_opt.count;
cmd.buf = buf;
cmd.last = 0;
error = ioctl(fd, I2CWRITE, &cmd);
free(buf);
if (error == -1) {
err_msg = "ioctl: error when write";
goto err1;
}
break;
}
cmd.slave = i2c_opt.addr;
error = ioctl(fd, I2CSTOP, &cmd);
if (error == -1) {
err_msg = "ioctl: error sending stop condition";
goto err2;
}
close(fd);
return (0);
err1:
cmd.slave = i2c_opt.addr;
error = ioctl(fd, I2CSTOP, &cmd);
if (error == -1)
fprintf(stderr, "error sending stop condtion\n");
err2:
if (err_msg)
fprintf(stderr, "%s", err_msg);
close(fd);
return (1);
}
static int
i2c_read(char *dev, struct options i2c_opt, char *i2c_buf)
{
struct iiccmd cmd;
int i, fd, error, bufsize;
char *err_msg, data = 0, *buf;
fd = open(dev, O_RDWR);
if (fd == -1)
err(1, "open failed");
bzero(&cmd, sizeof(cmd));
if (i2c_opt.width) {
cmd.slave = i2c_opt.addr;
cmd.count = 1;
cmd.last = 0;
cmd.buf = &data;
error = ioctl(fd, I2CSTART, &cmd);
if (error == -1) {
err_msg = "ioctl: error sending start condition";
goto err1;
}
bufsize = i2c_opt.width / 8;
buf = prepare_buf(bufsize, i2c_opt.off);
if (buf == NULL) {
err_msg = "error: offset malloc";
goto err1;
}
cmd.count = bufsize;
cmd.buf = buf;
cmd.last = 0;
error = ioctl(fd, I2CWRITE, &cmd);
free(buf);
if (error == -1) {
err_msg = "ioctl: error when write offset";
goto err1;
}
if (i2c_opt.mode == I2C_MODE_STOP_START) {
cmd.slave = i2c_opt.addr;
error = ioctl(fd, I2CSTOP, &cmd);
if (error == -1) {
err_msg = "error sending stop condtion\n";
goto err2;
}
}
}
cmd.slave = i2c_opt.addr;
cmd.count = 1;
cmd.last = 0;
cmd.buf = &data;
if (i2c_opt.mode == I2C_MODE_STOP_START) {
error = ioctl(fd, I2CSTART, &cmd);
if (error == -1) {
err_msg = "ioctl: error sending start condition";
goto err1;
}
} else if (i2c_opt.mode == I2C_MODE_REPEATED_START) {
error = ioctl(fd, I2CRPTSTART, &cmd);
if (error == -1) {
err_msg = "ioctl: error sending repeated start "
"condition";
goto err1;
}
}
error = ioctl(fd, I2CSTOP, &cmd);
if (error == -1) {
err_msg = "error sending stop condtion\n";
goto err2;
}
for (i = 0; i < i2c_opt.count; i++) {
error = read(fd, &i2c_buf[i], 1);
if (error == -1) {
err_msg = "ioctl: error while reading";
goto err1;
}
}
close(fd);
return (0);
err1:
cmd.slave = i2c_opt.addr;
error = ioctl(fd, I2CSTOP, &cmd);
if (error == -1)
fprintf(stderr, "error sending stop condtion\n");
err2:
if (err_msg)
fprintf(stderr, "%s", err_msg);
close(fd);
return (1);
}
int
main(int argc, char** argv)
{
struct iiccmd cmd;
struct options i2c_opt;
char *dev, *skip_addr, *i2c_buf;
int error, chunk_size, i, j, ch;
errno = 0;
error = 0;
/* Line-break the output every chunk_size bytes */
chunk_size = 16;
dev = I2C_DEV;
/* Default values */
i2c_opt.addr_set = 0;
i2c_opt.off = 0;
i2c_opt.verbose = 0;
i2c_opt.dir = 'r'; /* direction = read */
i2c_opt.width = 8;
i2c_opt.count = 1;
i2c_opt.binary = 0; /* ASCII text output */
i2c_opt.scan = 0; /* no bus scan */
i2c_opt.skip = 0; /* scan all addresses */
i2c_opt.reset = 0; /* no bus reset */
i2c_opt.mode = I2C_MODE_NOTSET;
while ((ch = getopt(argc, argv, "a:f:d:o:w:c:m:n:sbvrh")) != -1) {
switch(ch) {
case 'a':
i2c_opt.addr = (strtoul(optarg, 0, 16) << 1);
if (i2c_opt.addr == 0 && errno == EINVAL)
i2c_opt.addr_set = 0;
else
i2c_opt.addr_set = 1;
break;
case 'f':
dev = optarg;
break;
case 'd':
i2c_opt.dir = optarg[0];
break;
case 'o':
i2c_opt.off = strtoul(optarg, 0, 16);
if (i2c_opt.off == 0 && errno == EINVAL)
error = 1;
break;
case 'w':
i2c_opt.width = atoi(optarg);
break;
case 'c':
i2c_opt.count = atoi(optarg);
break;
case 'm':
if (!strcmp(optarg, "no"))
i2c_opt.mode = I2C_MODE_NONE;
else if (!strcmp(optarg, "ss"))
i2c_opt.mode = I2C_MODE_STOP_START;
else if (!strcmp(optarg, "rs"))
i2c_opt.mode = I2C_MODE_REPEATED_START;
else
usage();
break;
case 'n':
i2c_opt.skip = 1;
skip_addr = optarg;
break;
case 's':
i2c_opt.scan = 1;
break;
case 'b':
i2c_opt.binary = 1;
break;
case 'v':
i2c_opt.verbose = 1;
break;
case 'r':
i2c_opt.reset = 1;
break;
case 'h':
default:
usage();
}
}
argc -= optind;
argv += optind;
/* Set default mode if option -m is not specified */
if (i2c_opt.mode == I2C_MODE_NOTSET) {
if (i2c_opt.dir == 'r')
i2c_opt.mode = I2C_MODE_STOP_START;
else if (i2c_opt.dir == 'w')
i2c_opt.mode = I2C_MODE_NONE;
}
/* Basic sanity check of command line arguments */
if (i2c_opt.scan) {
if (i2c_opt.addr_set)
usage();
} else if (i2c_opt.reset) {
if (i2c_opt.addr_set)
usage();
} else if (error) {
usage();
} else if ((i2c_opt.dir == 'r' || i2c_opt.dir == 'w')) {
if ((i2c_opt.addr_set == 0) ||
!(i2c_opt.width == 0 || i2c_opt.width == 8 ||
i2c_opt.width == 16))
usage();
}
if (i2c_opt.verbose)
fprintf(stderr, "dev: %s, addr: 0x%x, r/w: %c, "
"offset: 0x%02x, width: %u, count: %u\n", dev,
i2c_opt.addr >> 1, i2c_opt.dir, i2c_opt.off,
i2c_opt.width, i2c_opt.count);
if (i2c_opt.scan)
exit(scan_bus(cmd, dev, i2c_opt.skip, skip_addr));
if (i2c_opt.reset)
exit(reset_bus(cmd, dev));
i2c_buf = malloc(i2c_opt.count);
if (i2c_buf == NULL)
err(1, "data malloc");
if (i2c_opt.dir == 'w') {
error = i2c_write(dev, i2c_opt, i2c_buf);
if (error) {
free(i2c_buf);
return (1);
}
}
if (i2c_opt.dir == 'r') {
error = i2c_read(dev, i2c_opt, i2c_buf);
if (error) {
free(i2c_buf);
return (1);
}
}
if (i2c_opt.verbose)
fprintf(stderr, "\nData %s (hex):\n", i2c_opt.dir == 'r' ?
"read" : "written");
i = 0;
j = 0;
while (i < i2c_opt.count) {
if (i2c_opt.verbose || (i2c_opt.dir == 'r' &&
!i2c_opt.binary))
fprintf (stderr, "%02hhx ", i2c_buf[i++]);
if (i2c_opt.dir == 'r' && i2c_opt.binary) {
fprintf(stdout, "%c", i2c_buf[j++]);
if(!i2c_opt.verbose)
i++;
}
if (!i2c_opt.verbose && (i2c_opt.dir == 'w'))
break;
if ((i % chunk_size) == 0)
fprintf(stderr, "\n");
}
if ((i % chunk_size) != 0)
fprintf(stderr, "\n");
free(i2c_buf);
return (0);
}
Index: user/ngie/bsnmp_cleanup
===================================================================
--- user/ngie/bsnmp_cleanup (revision 299696)
+++ user/ngie/bsnmp_cleanup (revision 299697)
Property changes on: user/ngie/bsnmp_cleanup
___________________________________________________________________
Modified: svn:mergeinfo
## -0,0 +0,1 ##
Merged /head:r299643-299696

File Metadata

Mime Type
application/octet-stream
Expires
Mon, Aug 5, 10:37 PM (1 d, 23 h)
Storage Engine
chunks
Storage Format
Chunks
Storage Handle
_XX8e4Y6sfaR
Default Alt Text
(4 MB)

Event Timeline