aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRainer Hurling <rhurlin@FreeBSD.org>2022-04-03 08:05:36 +0000
committerRainer Hurling <rhurlin@FreeBSD.org>2022-04-03 08:44:09 +0000
commit27df5bce08f3b1d63d5b4275eaf91bc01d1dfa35 (patch)
treea9a9c1ae8ee62be885b0347c166d4546ddcdd696
parent16f0acba590a9b850c9a23759ed37427507910bd (diff)
downloadports-27df5bce08f3b1d63d5b4275eaf91bc01d1dfa35.tar.gz
ports-27df5bce08f3b1d63d5b4275eaf91bc01d1dfa35.zip
graphics/epsonscan2: Add new port for Epson Scanners
This is a port of the Seiko/Epson Epsonscan2 scanner engine and GUI[1]. It provides a complete alternative to sane/xsane with its own scanner engine and GUI. It also provides a sane back-end library (libsane-epsonscan2.so) so that it works with the sane package. There are two parts to this port: - graphics/epsonscan2 - the main scanner engine and GUI that works with (most) USB scanners - graphics/epsonscan2-non-free-plugin - support for Epson's Linux binary that adds network access to scanners and usb access to some particular scanners Please read the file %%PREFIX%%/lib/epsonscan2/Read_me.FreeBSD for notes on how to set this up and use it. [1] https://download.ebz.epson.net/man/linux/epsonscan2_e.html PR: 261891 Reviewed by: (partly) Tatsuki Makino <tatsuki_makino@hotmail.com>, diizzy@
-rw-r--r--graphics/Makefile2
-rw-r--r--graphics/epsonscan2-non-free-plugin/Makefile102
-rw-r--r--graphics/epsonscan2-non-free-plugin/distinfo9
-rw-r--r--graphics/epsonscan2-non-free-plugin/files/ddeplugin.in11
-rw-r--r--graphics/epsonscan2-non-free-plugin/files/dtrplugin.in11
-rw-r--r--graphics/epsonscan2-non-free-plugin/files/es2intif.in11
-rw-r--r--graphics/epsonscan2-non-free-plugin/files/es2netif.in11
-rw-r--r--graphics/epsonscan2-non-free-plugin/files/fitplugin.in11
-rw-r--r--graphics/epsonscan2-non-free-plugin/files/pkg-message.in16
-rw-r--r--graphics/epsonscan2-non-free-plugin/pkg-descr7
-rw-r--r--graphics/epsonscan2-non-free-plugin/pkg-plist52
-rw-r--r--graphics/epsonscan2/Makefile53
-rw-r--r--graphics/epsonscan2/distinfo3
-rw-r--r--graphics/epsonscan2/files/Read_me.FreeBSD.in633
-rw-r--r--graphics/epsonscan2/files/patch-CMakeLists.txt57
-rw-r--r--graphics/epsonscan2/files/patch-src_CommonUtility_DbgLog.cpp21
-rw-r--r--graphics/epsonscan2/files/patch-src_CommonUtility_utils_ESAnyCastUtils.h28
-rw-r--r--graphics/epsonscan2/files/patch-src_CommonUtility_utils_ESFile.cpp12
-rw-r--r--graphics/epsonscan2/files/patch-src_CommonUtility_utils_PathUtils.cpp10
-rw-r--r--graphics/epsonscan2/files/patch-src_Controller_CMakeLists.txt11
-rw-r--r--graphics/epsonscan2/files/patch-src_Controller_Src_EntryPoints.cpp11
-rw-r--r--graphics/epsonscan2/files/patch-src_Controller_Src_FileFormat_FFManager.cpp12
-rw-r--r--graphics/epsonscan2/files/patch-src_Controller_Src_Filter_DTR.cpp21
-rw-r--r--graphics/epsonscan2/files/patch-src_Controller_Src_Filter_ProcOrientation.hpp10
-rw-r--r--graphics/epsonscan2/files/patch-src_Controller_Src_Filter_Saving.hpp20
-rw-r--r--graphics/epsonscan2/files/patch-src_Controller_Src_Finder_UsbFinder.cpp14
-rw-r--r--graphics/epsonscan2/files/patch-src_Controller_Src_KeysValues_All_Resolution.cpp11
-rw-r--r--graphics/epsonscan2/files/patch-src_Controller_Src_KeysValues_All_ScanHeightMax.cpp11
-rw-r--r--graphics/epsonscan2/files/patch-src_Controller_Src_KeysValues_All_ScanWidthMax.cpp11
-rw-r--r--graphics/epsonscan2/files/patch-src_Controller_Src_Scanner_Engine.hpp26
-rw-r--r--graphics/epsonscan2/files/patch-src_Controller_Src_Scanner_Scanner.cpp27
-rw-r--r--graphics/epsonscan2/files/patch-src_ES2Command_Linux_CMakeLists.txt11
-rw-r--r--graphics/epsonscan2/files/patch-src_ES2Command_Src_Command_ESCI2_ESCI2Accessor.h38
-rw-r--r--graphics/epsonscan2/files/patch-src_ES2Command_Src_Interface_ipc_ipcInterfaceImpl.cpp11
-rw-r--r--graphics/epsonscan2/files/patch-src_ES2Command_Src_Interface_usb_usbInterfaceImpl.cpp12
-rw-r--r--graphics/epsonscan2/files/patch-src_ES2Command_Src_Interface_usb_usbInterfaceImpl.h15
-rw-r--r--graphics/epsonscan2/files/patch-src_ES2Command_Src_Utils_semaphore.hpp71
-rw-r--r--graphics/epsonscan2/files/patch-src_ES2FileFormat_Header_IO_FKDestination.h32
-rw-r--r--graphics/epsonscan2/files/patch-src_ES2FileFormat_Header_IO_FKSource.h11
-rw-r--r--graphics/epsonscan2/files/patch-src_ES2FileFormat_Header_Reader_FKReader.h34
-rw-r--r--graphics/epsonscan2/files/patch-src_ES2FileFormat_Source_PnmUtil_FKPnmUtil.cpp11
-rw-r--r--graphics/epsonscan2/files/patch-src_Platform.cpp69
-rw-r--r--graphics/epsonscan2/files/patch-src_SaneWrapper_backend.cpp37
-rw-r--r--graphics/epsonscan2/files/patch-src_SaneWrapper_defines.h33
-rw-r--r--graphics/epsonscan2/files/patch-src_SaneWrapper_epsonscan.cpp29
-rw-r--r--graphics/epsonscan2/files/patch-src_ScanSDK_Src_SDK_supervisor.cpp29
-rw-r--r--graphics/epsonscan2/files/patch-src_Standalone_CMakeLists.txt9
-rw-r--r--graphics/epsonscan2/files/patch-src_Standalone_addeditpagedialog.cpp8
-rw-r--r--graphics/epsonscan2/files/patch-src_Standalone_commandlinemode.cpp20
-rw-r--r--graphics/epsonscan2/files/patch-src_Standalone_custommessagebox.cpp11
-rw-r--r--graphics/epsonscan2/files/patch-src_Standalone_detectionareamindoublespinbox.cpp11
-rw-r--r--graphics/epsonscan2/files/patch-src_Standalone_deviceconnectiondialog.cpp28
-rw-r--r--graphics/epsonscan2/files/patch-src_Standalone_documentsize.cpp23
-rw-r--r--graphics/epsonscan2/files/patch-src_Standalone_foldercomb.cpp20
-rw-r--r--graphics/epsonscan2/files/patch-src_Standalone_imageformatsettingscombobox.cpp11
-rw-r--r--graphics/epsonscan2/files/patch-src_Standalone_imageformatsettingsdialog.ui38
-rw-r--r--graphics/epsonscan2/files/patch-src_Standalone_initdeviceselectcombobox.cpp11
-rw-r--r--graphics/epsonscan2/files/patch-src_Standalone_lengthdoublespinbox.cpp11
-rw-r--r--graphics/epsonscan2/files/patch-src_Standalone_mainwindow.cpp38
-rw-r--r--graphics/epsonscan2/files/patch-src_Standalone_mainwindow.ui38
-rw-r--r--graphics/epsonscan2/files/patch-src_Standalone_networkdeviceselectdialog.cpp11
-rw-r--r--graphics/epsonscan2/files/patch-src_Standalone_rotateimage.cpp47
-rw-r--r--graphics/epsonscan2/files/patch-src_Standalone_supervisor.cpp29
-rw-r--r--graphics/epsonscan2/files/patch-src_Standalone_widthdoublespinbox.cpp11
-rw-r--r--graphics/epsonscan2/files/patch-thirdparty_zlib_gzread.c10
-rw-r--r--graphics/epsonscan2/files/patch-thirdparty_zlib_gzwrite.c10
-rw-r--r--graphics/epsonscan2/files/pkg-message.in17
-rw-r--r--graphics/epsonscan2/pkg-descr5
-rw-r--r--graphics/epsonscan2/pkg-plist1650
69 files changed, 3755 insertions, 0 deletions
diff --git a/graphics/Makefile b/graphics/Makefile
index 8d0ce3dcf3d8..a9df4c0a0080 100644
--- a/graphics/Makefile
+++ b/graphics/Makefile
@@ -168,6 +168,8 @@
SUBDIR += ephoto
SUBDIR += epix
SUBDIR += eps2png
+ SUBDIR += epsonscan2
+ SUBDIR += epsonscan2-non-free-plugin
SUBDIR += epstool
SUBDIR += eterm-bg
SUBDIR += evince
diff --git a/graphics/epsonscan2-non-free-plugin/Makefile b/graphics/epsonscan2-non-free-plugin/Makefile
new file mode 100644
index 000000000000..a7f0c8a2956e
--- /dev/null
+++ b/graphics/epsonscan2-non-free-plugin/Makefile
@@ -0,0 +1,102 @@
+PORTNAME= epsonscan2-non-free-plugin
+DISTVERSION= 6.6.40.0
+CATEGORIES= graphics
+MASTER_SITES= https://download2.ebz.epson.net/${EPSONSCAN2}/common/rpm/x64/:amd64 \
+ https://download2.ebz.epson.net/${EPSONSCAN2}/common/deb/arm/:armv7 \
+ https://download2.ebz.epson.net/${EPSONSCAN2}/common/deb/arm/:armv7rasb \
+ https://download2.ebz.epson.net/${EPSONSCAN2}/common/rpm/x86/:i386
+DISTNAME= ${EPSONSCAN2}-bundle-${DISTVERSION}
+DISTFILES_amd64= ${DISTNAME}.${DIST_SUFX}${EXTRACT_SUFX}:amd64
+DISTFILES_armv7= ${DISTNAME}.${DIST_SUFX}${EXTRACT_SUFX}:armv7
+DISTFILES_armv7rasb= ${DISTNAME:S,bundle,bundle-raspbian,}.${DIST_SUFX}${EXTRACT_SUFX}:armv7rasb
+DISTFILES_i386= ${DISTNAME}.${DIST_SUFX}${EXTRACT_SUFX}:i386
+
+MAINTAINER= fbsd@opal.com
+COMMENT= Epson Scan 2 network interface non-free-plugin
+
+LICENSE= EPSON
+LICENSE_NAME= EPSON END USER SOFTWARE LICENSE AGREEMENT
+LICENSE_FILE= ${WRKDIR}/usr/share/doc/${PORTNAME}-${EPSON_VERSION}-1/COPYING.EPSON
+LICENSE_PERMS= no-dist-mirror no-dist-sell no-pkg-mirror no-pkg-sell
+
+LEGAL_TEXT= License does not permit public sharing or revenue earning, and restricts exports
+
+ONLY_FOR_ARCHS= amd64 armv7 armv7rasb i386
+
+RUN_DEPENDS= epsonscan2:graphics/epsonscan2 \
+ linux_libusb>=13.1.0:devel/linux_libusb
+
+USES= linux
+USE_LDCONFIG= ${LINUXBASE}/usr/${LINUX_LIB}/epsonscan2/libexec \
+ ${LINUXBASE}/usr/${LINUX_LIB}/epsonscan2/non-free-exec
+
+EPSON_VERSION= 1.0.0.5
+EPSONSCAN2= ${PORTNAME:S,-non-free-plugin,,}
+
+LINUX_WRAPPERS= ddeplugin \
+ dtrplugin \
+ es2intif \
+ es2netif \
+ fitplugin
+
+NO_BUILD= true
+
+SUB_FILES= pkg-message \
+ ${LINUX_WRAPPERS}
+
+SUB_LIST+= LINUXBASE=${LINUXBASE} \
+ LINUX_LIB=${LINUX_LIB}
+
+PLIST_SUB+= LINUX_LIB=${LINUX_LIB} \
+ LINUX_LIB_EXTRA=${LINUX_LIB_EXTRA}
+
+.include <bsd.port.pre.mk>
+
+.if ((${OSVERSION} >= 1400000 && ${OSVERSION} <= 1400053) || \
+ (${OSVERSION} >= 1300000 && ${OSVERSION} <= 1300526) || \
+ ${OSVERSION} < 1300000)
+.warning epsonscan2-non-free-plugin's es2intif requires FreeBSD 13.x or 14.x
+.warning kernel later than 2022/03/05 for operation with scanners shown with
+.warning [*] in ${PREFIX}/lib/epsonscan2/Read_me.FreeBSD.
+.endif
+
+.if ${ARCH} == amd64
+DIST_FMT= rpm
+DIST_SUFX= x86_64.${DIST_FMT}
+LINUX_ARCH= x86_64
+LINUX_FMT= rpm
+LINUX_LIB= lib64
+LINUX_LIB_EXTRA= "@comment "
+.elif ${ARCH} == armv7 || ${ARCH} == armv7rasb
+DIST_FMT= deb
+DIST_SUFX= armv7l.${DIST_FMT}
+LINUX_ARCH= armhf
+LINUX_FMT= deb
+LINUX_LIB= lib/arm-linux-gnueabihf
+LINUX_LIB_EXTRA= ""
+.elif ${ARCH} == i386
+DIST_FMT= rpm
+DIST_SUFX= i686.${DIST_FMT}
+LINUX_ARCH= i686
+LINUX_FMT= rpm
+LINUX_LIB= lib
+LINUX_LIB_EXTRA= "@comment "
+.endif
+
+post-extract:
+. if ${ARCH} == amd64 || ${ARCH} == i386
+ cd ${WRKDIR}; ${TAR} xf ${DISTNAME}.${DIST_SUFX}/plugins/${PORTNAME}-${EPSON_VERSION}-1.${LINUX_ARCH}.${DIST_FMT} && ${RM} -r ${DISTNAME}.${DIST_SUFX}
+. elif ${ARCH} == armv7 || ${ARCH} == armv7rasb
+ cd ${WRKDIR}; ${TAR} xf ${DISTNAME}.${DIST_SUFX}/plugins/${PORTNAME}_${EPSON_VERSION}-1_${LINUX_ARCH}.${DIST_FMT} data.tar.xz && ${RM} -r ${DISTNAME}.${DIST_SUFX}
+ cd ${WRKDIR}; ${TAR} xf data.tar.xz && ${RM} data.tar.xz
+. endif
+
+do-install:
+ ${MKDIR} ${STAGEDIR}${LINUXBASE}
+ cd ${WRKDIR}/usr; ${COPYTREE_SHARE} . ${STAGEDIR}${LINUXBASE}/usr "! -path *-ocr* -a ! -path *.build-id*"
+ cd ${WRKDIR}/usr/${LINUX_LIB}/${EPSONSCAN2}/non-free-exec; ${INSTALL_KLD} ${LINUX_WRAPPERS} ${STAGEDIR}${LINUXBASE}/usr/${LINUX_LIB}/${EPSONSCAN2}/non-free-exec
+ ${MKDIR} ${STAGEDIR}${PREFIX}/lib/${EPSONSCAN2}/non-free-exec
+ cd ${WRKDIR}; ${INSTALL_SCRIPT} ${LINUX_WRAPPERS} ${STAGEDIR}${PREFIX}/lib/${EPSONSCAN2}/non-free-exec
+ cd ${WRKDIR}/usr/share/doc/${PORTNAME}-${EPSON_VERSION}-1; ${CP} -pr . ${STAGEDIR}${DOCSDIR}
+
+.include <bsd.port.post.mk>
diff --git a/graphics/epsonscan2-non-free-plugin/distinfo b/graphics/epsonscan2-non-free-plugin/distinfo
new file mode 100644
index 000000000000..e1cdd7062920
--- /dev/null
+++ b/graphics/epsonscan2-non-free-plugin/distinfo
@@ -0,0 +1,9 @@
+TIMESTAMP = 1644933572
+SHA256 (epsonscan2-bundle-6.6.40.0.armv7l.deb.tar.gz) = efe070472e662feea572899cdad0300b759edcf84b2f57c51c997df8d2c07171
+SIZE (epsonscan2-bundle-6.6.40.0.armv7l.deb.tar.gz) 18239327
+SHA256 (epsonscan2-bundle-6.6.40.0.i686.rpm.tar.gz) = c7b68d8cd0c0d7ae187d3c44b5edcca1ca625bbcab50db31e754e3d2261787f0
+SIZE (epsonscan2-bundle-6.6.40.0.i686.rpm.tar.gz) = 14582599
+SHA256 (epsonscan2-bundle-6.6.40.0.x86_64.rpm.tar.gz) = 2b9453dba611c6fbadb8105817020334b9ce1db205e6a68f3d1de198ca3d9451
+SIZE (epsonscan2-bundle-6.6.40.0.x86_64.rpm.tar.gz) = 14016602
+SHA256 (epsonscan2-bundle-raspbian-6.6.40.0.armv7l.deb.tar.gz) = 3b373288884ae38febb5eb9343e820d083d8690414c273f6cdf9abc77b3a171e
+SIZE (epsonscan2-bundle-raspbian-6.6.40.0.armv7l.deb.tar.gz) = 20669297
diff --git a/graphics/epsonscan2-non-free-plugin/files/ddeplugin.in b/graphics/epsonscan2-non-free-plugin/files/ddeplugin.in
new file mode 100644
index 000000000000..02b2ae040bf0
--- /dev/null
+++ b/graphics/epsonscan2-non-free-plugin/files/ddeplugin.in
@@ -0,0 +1,11 @@
+#!/bin/sh
+# This wrapper script sets environment variable LD_LIBRARY_PATH to the list
+# of needed Linux library directories, then invokes the Linux binary in the
+# Linux directories.
+
+LINUX_EPSONSCAN2=%%LINUXBASE%%/usr/%%LINUX_LIB%%/epsonscan2
+
+PROG=${LINUX_EPSONSCAN2}/non-free-exec/`basename $0`
+export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${LINUX_EPSONSCAN2}/non-free-exec:${LINUX_EPSONSCAN2}/libexec
+
+exec $PROG ${@+"$@"}
diff --git a/graphics/epsonscan2-non-free-plugin/files/dtrplugin.in b/graphics/epsonscan2-non-free-plugin/files/dtrplugin.in
new file mode 100644
index 000000000000..02b2ae040bf0
--- /dev/null
+++ b/graphics/epsonscan2-non-free-plugin/files/dtrplugin.in
@@ -0,0 +1,11 @@
+#!/bin/sh
+# This wrapper script sets environment variable LD_LIBRARY_PATH to the list
+# of needed Linux library directories, then invokes the Linux binary in the
+# Linux directories.
+
+LINUX_EPSONSCAN2=%%LINUXBASE%%/usr/%%LINUX_LIB%%/epsonscan2
+
+PROG=${LINUX_EPSONSCAN2}/non-free-exec/`basename $0`
+export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${LINUX_EPSONSCAN2}/non-free-exec:${LINUX_EPSONSCAN2}/libexec
+
+exec $PROG ${@+"$@"}
diff --git a/graphics/epsonscan2-non-free-plugin/files/es2intif.in b/graphics/epsonscan2-non-free-plugin/files/es2intif.in
new file mode 100644
index 000000000000..02b2ae040bf0
--- /dev/null
+++ b/graphics/epsonscan2-non-free-plugin/files/es2intif.in
@@ -0,0 +1,11 @@
+#!/bin/sh
+# This wrapper script sets environment variable LD_LIBRARY_PATH to the list
+# of needed Linux library directories, then invokes the Linux binary in the
+# Linux directories.
+
+LINUX_EPSONSCAN2=%%LINUXBASE%%/usr/%%LINUX_LIB%%/epsonscan2
+
+PROG=${LINUX_EPSONSCAN2}/non-free-exec/`basename $0`
+export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${LINUX_EPSONSCAN2}/non-free-exec:${LINUX_EPSONSCAN2}/libexec
+
+exec $PROG ${@+"$@"}
diff --git a/graphics/epsonscan2-non-free-plugin/files/es2netif.in b/graphics/epsonscan2-non-free-plugin/files/es2netif.in
new file mode 100644
index 000000000000..02b2ae040bf0
--- /dev/null
+++ b/graphics/epsonscan2-non-free-plugin/files/es2netif.in
@@ -0,0 +1,11 @@
+#!/bin/sh
+# This wrapper script sets environment variable LD_LIBRARY_PATH to the list
+# of needed Linux library directories, then invokes the Linux binary in the
+# Linux directories.
+
+LINUX_EPSONSCAN2=%%LINUXBASE%%/usr/%%LINUX_LIB%%/epsonscan2
+
+PROG=${LINUX_EPSONSCAN2}/non-free-exec/`basename $0`
+export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${LINUX_EPSONSCAN2}/non-free-exec:${LINUX_EPSONSCAN2}/libexec
+
+exec $PROG ${@+"$@"}
diff --git a/graphics/epsonscan2-non-free-plugin/files/fitplugin.in b/graphics/epsonscan2-non-free-plugin/files/fitplugin.in
new file mode 100644
index 000000000000..02b2ae040bf0
--- /dev/null
+++ b/graphics/epsonscan2-non-free-plugin/files/fitplugin.in
@@ -0,0 +1,11 @@
+#!/bin/sh
+# This wrapper script sets environment variable LD_LIBRARY_PATH to the list
+# of needed Linux library directories, then invokes the Linux binary in the
+# Linux directories.
+
+LINUX_EPSONSCAN2=%%LINUXBASE%%/usr/%%LINUX_LIB%%/epsonscan2
+
+PROG=${LINUX_EPSONSCAN2}/non-free-exec/`basename $0`
+export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${LINUX_EPSONSCAN2}/non-free-exec:${LINUX_EPSONSCAN2}/libexec
+
+exec $PROG ${@+"$@"}
diff --git a/graphics/epsonscan2-non-free-plugin/files/pkg-message.in b/graphics/epsonscan2-non-free-plugin/files/pkg-message.in
new file mode 100644
index 000000000000..a2f77a596d3a
--- /dev/null
+++ b/graphics/epsonscan2-non-free-plugin/files/pkg-message.in
@@ -0,0 +1,16 @@
+[
+{ type: install
+ message: <<EOM
+The graphics/epsonscan2 scanner driver is the main Epson scanner port.
+
+This port provides the Linux binaries needed to access the scanner over
+the network and for some older USB models. This port requires the kernel
+Linux emulation and emulators/linux_base-c7 ports. Depending on your scanner
+model, if you do not need network access, you may not need this port or the
+Linux emulator.
+
+Please read %%PREFIX%%/lib/epsonscan2/Read_me.FreeBSD for further details
+of how to configure and use this software.
+EOM
+}
+]
diff --git a/graphics/epsonscan2-non-free-plugin/pkg-descr b/graphics/epsonscan2-non-free-plugin/pkg-descr
new file mode 100644
index 000000000000..bfb8bbd15bd9
--- /dev/null
+++ b/graphics/epsonscan2-non-free-plugin/pkg-descr
@@ -0,0 +1,7 @@
+This port installs the Linux binaries of the Seiko/Epson non-free-plugin
+that is required for the graphics/epsonscan2 scanner driver. The kernel
+Linux emulation is required to run these binaries. This is only required
+to access a scanner over the network or for certain older USB scanner
+models.
+
+WWW: https://support.epson.net/linux/en/epsonscan2.php
diff --git a/graphics/epsonscan2-non-free-plugin/pkg-plist b/graphics/epsonscan2-non-free-plugin/pkg-plist
new file mode 100644
index 000000000000..76523887d8db
--- /dev/null
+++ b/graphics/epsonscan2-non-free-plugin/pkg-plist
@@ -0,0 +1,52 @@
+/compat/linux/usr/%%LINUX_LIB%%/epsonscan2/libexec/libcnx-esci-gt-s650.so
+/compat/linux/usr/%%LINUX_LIB%%/epsonscan2/libexec/libcnx-esci-gt-s650.so.0
+/compat/linux/usr/%%LINUX_LIB%%/epsonscan2/libexec/libcnx-esci-gt-s650.so.0.0.0
+/compat/linux/usr/%%LINUX_LIB%%/epsonscan2/libexec/libesci-interpreter-perfection-v330.so
+/compat/linux/usr/%%LINUX_LIB%%/epsonscan2/libexec/libesci-interpreter-perfection-v330.so.0
+/compat/linux/usr/%%LINUX_LIB%%/epsonscan2/libexec/libesci-interpreter-perfection-v330.so.0.0.0
+/compat/linux/usr/%%LINUX_LIB%%/epsonscan2/libexec/libesintA1.so
+/compat/linux/usr/%%LINUX_LIB%%/epsonscan2/libexec/libesintA1.so.2
+/compat/linux/usr/%%LINUX_LIB%%/epsonscan2/libexec/libesintA1.so.2.0.1
+/compat/linux/usr/%%LINUX_LIB%%/epsonscan2/libexec/libiscan-plugin-perfection-v370.so
+/compat/linux/usr/%%LINUX_LIB%%/epsonscan2/libexec/libiscan-plugin-perfection-v370.so.0
+/compat/linux/usr/%%LINUX_LIB%%/epsonscan2/libexec/libiscan-plugin-perfection-v370.so.0.0.0
+/compat/linux/usr/%%LINUX_LIB%%/epsonscan2/libexec/libiscan-plugin-perfection-v550.so
+/compat/linux/usr/%%LINUX_LIB%%/epsonscan2/libexec/libiscan-plugin-perfection-v550.so.0
+/compat/linux/usr/%%LINUX_LIB%%/epsonscan2/libexec/libiscan-plugin-perfection-v550.so.0.0.0
+/compat/linux/usr/%%LINUX_LIB%%/epsonscan2/non-free-exec/ddeplugin
+/compat/linux/usr/%%LINUX_LIB%%/epsonscan2/non-free-exec/dtrplugin
+/compat/linux/usr/%%LINUX_LIB%%/epsonscan2/non-free-exec/es2intif
+/compat/linux/usr/%%LINUX_LIB%%/epsonscan2/non-free-exec/es2netif
+/compat/linux/usr/%%LINUX_LIB%%/epsonscan2/non-free-exec/fitplugin
+/compat/linux/usr/%%LINUX_LIB%%/epsonscan2/non-free-exec/libdde6.so
+/compat/linux/usr/%%LINUX_LIB%%/epsonscan2/non-free-exec/libesdtr.so
+/compat/linux/usr/%%LINUX_LIB%%/epsonscan2/non-free-exec/libimf6.so
+/compat/linux/usr/%%DOCSDIR%%-1.0.0.5-1/COPYING.EPSON
+/compat/linux/usr/%%DOCSDIR%%-1.0.0.5-1/NEWS
+/compat/linux/usr/%%DOCSDIR%%-1.0.0.5-1/copyright
+/compat/linux/usr/share/epsonscan2/esfw010c.bin
+/compat/linux/usr/share/epsonscan2/esfwA1.bin
+/compat/linux/usr/share/epsonscan2/esfwad.bin
+/compat/linux/usr/share/epsonscan2/esfwdd.bin
+/compat/linux/usr/share/epsonscan2/esfweb.bin
+lib/epsonscan2/non-free-exec/ddeplugin
+lib/epsonscan2/non-free-exec/dtrplugin
+lib/epsonscan2/non-free-exec/es2intif
+lib/epsonscan2/non-free-exec/es2netif
+lib/epsonscan2/non-free-exec/fitplugin
+%%DOCSDIR%%/COPYING.EPSON
+%%DOCSDIR%%/NEWS
+%%DOCSDIR%%/copyright
+@dir /compat/linux/usr/%%LINUX_LIB%%/epsonscan2/libexec
+@dir /compat/linux/usr/%%LINUX_LIB%%/epsonscan2/non-free-exec
+@dir /compat/linux/usr/%%LINUX_LIB%%/epsonscan2
+@dir /compat/linux/usr/%%LINUX_LIB%%
+%%LINUX_LIB_EXTRA%%@dir /compat/linux/usr/lib
+@dir /compat/linux/usr/libexec
+@dir /compat/linux/usr/%%DOCSDIR%%-1.0.0.5-1
+@dir /compat/linux/usr/share/doc
+@dir /compat/linux/usr/share/epsonscan2
+@dir /compat/linux/usr/share
+@dir /compat/linux/usr
+@dir /compat/linux
+@dir /compat
diff --git a/graphics/epsonscan2/Makefile b/graphics/epsonscan2/Makefile
new file mode 100644
index 000000000000..0ecc95a66348
--- /dev/null
+++ b/graphics/epsonscan2/Makefile
@@ -0,0 +1,53 @@
+PORTNAME= epsonscan2
+DISTVERSION= 6.6.40.0
+CATEGORIES= graphics
+MASTER_SITES= https://support.epson.net/linux/src/scanner/epsonscan2/
+DISTNAME= ${PORTNAME}-${PORTVERSION}-1.src
+
+MAINTAINER= fbsd@opal.com
+COMMENT= Epson Scan 2 scanner driver
+
+LICENSE= GPLv3
+LICENSE_FILE= ${WRKSRC}/COPYING
+
+BUILD_DEPENDS= sane-config:graphics/sane-backends
+LIB_DEPENDS= libboost_serialization.so:devel/boost-libs \
+ libdouble-conversion.so:devel/double-conversion \
+ libfreetype.so:print/freetype2 \
+ libglib-2.0.so:devel/glib20 \
+ libGL.so:graphics/libglvnd \
+ libgraphite2.so:graphics/graphite2 \
+ libicuuc.so:devel/icu \
+ libiconv.so:converters/libiconv \
+ libintl.so:devel/gettext-runtime \
+ libharfbuzz.so:print/harfbuzz \
+ libpcre.so:devel/pcre \
+ libpcre2-16.so:devel/pcre2 \
+ libpng.so:graphics/png \
+ libtiff.so:graphics/tiff \
+ libzstd.so:archivers/zstd
+RUN_DEPENDS= avahi-browse:net/avahi-app
+
+USES= cmake gettext-runtime gnome jpeg localbase qt:5 xorg
+USE_GNOME= glib20
+USE_LDCONFIG= ${PREFIX}/lib/epsonscan2
+USE_QT= buildtools_build core gui qmake_build widgets
+USE_XORG= x11 xau xcb xdmcp
+
+EPSON_VERSION= 1.0.0.0
+
+CONFIGURE_ENV+= STAGEDIR=${STAGEDIR}
+
+CFLAGS+= -I${PREFIX}/include
+
+SUB_FILES= pkg-message \
+ Read_me.FreeBSD
+
+WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION}-1
+
+post-install:
+ ${RM} -rf ${STAGEDIR}${DOCSDIR}
+ ${MV} ${STAGEDIR}${DOCSDIR}-${EPSON_VERSION}-1 ${STAGEDIR}${DOCSDIR}
+ ${INSTALL_DATA} ${WRKDIR}/Read_me.FreeBSD ${STAGEDIR}${PREFIX}/lib/epsonscan2
+
+.include <bsd.port.mk>
diff --git a/graphics/epsonscan2/distinfo b/graphics/epsonscan2/distinfo
new file mode 100644
index 000000000000..29a2e52cc255
--- /dev/null
+++ b/graphics/epsonscan2/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1642131410
+SHA256 (epsonscan2-6.6.40.0-1.src.tar.gz) = 07aa21eab09e945cadddcbef102caa1e42390ab52cc49a2c00e911e3a3340923
+SIZE (epsonscan2-6.6.40.0-1.src.tar.gz) = 2289979
diff --git a/graphics/epsonscan2/files/Read_me.FreeBSD.in b/graphics/epsonscan2/files/Read_me.FreeBSD.in
new file mode 100644
index 000000000000..a12d2ba98a87
--- /dev/null
+++ b/graphics/epsonscan2/files/Read_me.FreeBSD.in
@@ -0,0 +1,633 @@
+The FreeBSD port of the Seiko/Epson epsonscan2 driver is mostly working.
+Some bugs present in the Linux version have been found and fixed here in
+this version.
+
+There are two ports:
+ graphics/epsonscan2 Native FreeBSD port of the Epson
+ scanner engine and the GUI front-end.
+ This supports scanners connected via
+ USB cable.
+
+ graphics/epsonscan2-non-free-plugin
+ Port of the Linux binary that supports
+ scanner access over networks as well as
+ USB access to some older scanner models.
+ This port requires the kernel Linux
+ emulator modules as well as the userland
+ Linux libraries.
+
+The epsonscan2 package provides support for a variety of Seiko/Epson
+scanners. The specific model names are stored as hashed strings in the
+driver and there does not appear to be a text file listing the supported
+models, so it is not possible to know what they all are! However, the
+driver does include the USB product ID codes that it supports. A full
+list of these USB product ID codes is included at the end of this file.
+
+The epsonscan2 package provides a complete alternative to the usual
+sane/xsane way of doing things. The epsonscan2 command provides both a
+full GUI interface as well as a command line interface to the scanner.
+
+There is also a libsane-epsonscan2.so back-end for sane, and it does
+work, but requires some manual configuration first.
+
+The epsonscan2 package only works with scanners connected via USB cable,
+but not even all USB scanners. Some older models also require the
+non-free-plugin port for USB access. See the list of USB product IDs
+at the end of this file for which models also require the non-free-plugin
+for USB access.
+
+To access a network-connected scanner, the es2netif binary in the
+epsonscan2-non-free-plugin port is also required. As mentioned, some
+older models require the es2intif binary from this port for USB access.
+es2netif and es2intif are Linux binaries that interface between the
+epsonscan2 driver and the scanner. es2netif is a program that talks
+to a scanner over network sockets and works well. es2intif appears
+to provide support for firmware downloads to the scanner device over
+USB and may not be fully working at this time. These binaries require
+the kernel Linux emulator modules and the Linux userland support in
+emulators/linux_base-c7. The kernel Linux modules include:
+ linux.ko
+ linux64.ko
+ linux_common.ko
+ linprocfs.ko
+ linsysfs.ko
+ fdescfs.ko
+ pty.ko
+
+Epson provides additional web documentation for epsonscan2 at this URL:
+ https://download.ebz.epson.net/man/linux/epsonscan2_e.html
+
+
+SYSTEM CONFIGURATION
+
+To access a USB scanner as a non-root user, you will need to ensure
+that the USB devices are readable. Configure as follows:
+In /etc/rc.conf:
+ devfs_system_ruleset="system"
+ devfs_set_rulesets="%%LINUXBASE%%/dev=system"
+In /etc/devfs.rules:
+ [system=5]
+ add path 'usb' mode 0755
+ add path 'usb/*' mode 0666
+ add path 'ugen*' mode 0666
+ add path 'usbctl' mode 0666
+
+
+DETECTING SCANNERS
+
+You can run:
+ epsonscan2 -l
+to list discovered scanners.
+
+If your USB scanner is not found, make sure that it is displayed when
+you run:
+ usbconfig dump_device_desc
+and that its vendorID and productID are on the list at the bottom of
+this file.
+
+If your network scanner is not found, make sure that it is configured
+with an IPv4 address (the epsonscan2 driver ignores IPv6 scanners).
+Also make sure that the scanner has mDNS/Bonjour enabled and that when
+you run:
+ avahi-browse -at
+you can see the scanner with IPv4 in the domain _scanner._tcp. If your
+scanner does not support the mDNS/Bonjour protocol, you can manually
+configure the scanner's IP address like this:
+ epsonscan2 -i ipv4.address
+
+
+SCANNING WITH THE EPSON GUI
+
+To use with the GUI front-end, just run:
+ epsonscan2
+It will look for USB and network scanners and list them. Choose the
+scanner you want and click Next. The scanning menu will show, allowing
+you to set scanning parameters and acquire a preview or scan the image.
+
+NOTE again, that it might well detect network scanners without the
+non-free-module installed, but it will not talk to a network scanner
+without that module.
+
+
+SCANNING FROM THE COMMAND-LINE
+
+The command-line syntax is:
+ epsonscan2 -s ConfigFile.SF2
+
+This will initiate a scan based on the parameters in the configuration
+file and save the output where the config directs it. A config file is
+created when you use the GUI; look for the file:
+ ~/.epsonscan2/Settings/MODEL/UserSettings.SF2
+
+Alternatively, you can create a config file using:
+ epsonscan2 -c
+
+You must then edit the file and set at least the following parameters:
+ The JpegQuality values are in the range [0..100]. If set to 0,
+ no image will be produced:
+ JpegQuality: 30
+ JpegQualityForJpeg: 85
+ JpegQualityForPdf: 50
+ The Resolution is likely to include 75, 150, 200, 300, 600, 1200,
+ 2400, 9600 but the values are device dependent:
+ Resolution: 200
+ The ScanArea defines where is scanned. It is the page size in
+ inches multiplied by the Resolution value:
+ ScanAreaHeight: 2200
+ ScanAreaWidth: 1700
+ Threshold must also be set:
+ Threshold: 110
+
+NOTE: If Resolution is left at 0, epsonscan2 -s will likely core dump
+ with a floating point exception!
+
+
+SCANNING WITH SANE
+
+The epsonscan2 package includes a libsane-epsonscan2.so backend.
+
+The port creates a sane config file in:
+ %%PREFIX/etc/sane.d/dll.d/epsonscan2
+but this does not seem to do anything on FreeBSD. You must also edit
+the file:
+ %%PREFIX/etc/sane.d/dll.conf
+and add:
+ epsonscan2
+to that file. To speed device searches up, you can also comment out all
+the ones you are not using.
+
+For a USB scanner, you do not need this next part. For a network scanner,
+you do. The libsane-epsonscan2.so module does not use the main epsonscan2
+code that finds network scanners using the mDNS/Bonjour protocol. Instead,
+it uses a static hint file telling it where to find network scanners. It
+will not find network scanners without this file. Create the hint file
+using:
+ epsonscan2 -i ipv4.address
+or edit:
+ ~/.epsonscan2/Network/epsonscan2.conf
+and put in it:
+ [Network]
+ ipv4.address
+There can be multiple scanner ipv4.address entries, one per line.
+E.g.:
+ [Network]
+ 192.168.3.30
+ 192.168.4.17
+
+The libsane-epsonscan2.so backend uses a scanner configuration file in:
+ ~/.epsonscan2/DefaultSettings.SF2
+
+If you have already scanned using epsonscan2, there will be a config
+file in:
+ ~/.epsonscan2/Settings/MODEL/UserSettings.SF2
+Copy or link this file to the DefaultSettings.SF2 path above. Or,
+create a new file using "epsonscan2 -c", adjust its parameter values as
+described above, and put the file in the DefaultSettings.SF2 path.
+
+Then, scanimage should work:
+ Try:
+ scanimage -o foo.pnm
+ scanimage --mode Color -o foo.pnm
+ For A4 paper size:
+ scanimage --mode Color --scan-area A4 -o foo.pnm
+ scanimage --mode Color -x 210 -y 297 -o foo.pnm
+ For US Letter paper size:
+ scanimage --mode Color --scan-area Letter -o foo.pnm
+ scanimage --mode Color -x 215.9 -y 279.4 -o foo.pnm
+
+
+SCANNING WITH XSANE
+
+This doesn't work. See KNOWN PROBLEMS, below.
+
+
+COMMON PROBLEMS
+
+Read the sections above for fuller details on each of these.
+
+0. The scanner is not found.
+ If the scanner is connected bu USB cable, run:
+ usbconfig dump_device_desc
+ The following values are supported by this driver:
+ idVendor = 0x04b8
+ idProduct = (see list at end of this file)
+
+ If the scanner is connected by Ethernet or WiFi, and for some
+ older USB models, the graphics/epsonscan2-non-free-plugin
+ port must also be installed and the kernel Linux support must
+ be enabled (see above).
+
+1. epsonscan2 -s scans but the "img.pdf" file contains a blank image.
+ Make sure that the config file contains valid settings e.g.:
+ JpegQuality: 30
+ JpegQualityForJpeg: 85
+ JpegQualityForPdf: 50
+ Resolution: 200
+ ScanAreaHeight: 2200
+ ScanAreaWidth: 1700
+ Threshold: 110
+
+2. epsonscan2 -s scans but does not save the file.
+ Make sure that the config file contains valid settings for:
+ FileNameOverwrite: "0" to use sequential file
+ names, "1" to use the same
+ filename each time
+ FileNamePrefix: any file name; a number will
+ be appended if FileNameOverwrite
+ is set to "0"
+ UserDefinePath: "./" for the current directory
+
+3. epsonscan2 -s scans then says "Not enough memory".
+ Various things can cause this. Usually the problem is an
+ excessively large scan area or too large values for the image
+ enhancer. Check the following in your config file:
+ Resolution: 200
+ ScanAreaHeight: 2200
+ ScanAreaWidth: 1700
+ Threshold: 110
+ textEnhance 0
+ textEnhanceNoiseReductionLevel 0
+ textEnhancePaperCreaseReduction 0
+ textEnhanceSensitivity 0
+ thresholdAdjustment 0
+
+4. epsonscan2 works with USB scanners but not with network scanners.
+ Make sure that:
+ a. You have the non-free-plugin port installed and the kernel
+ Linux emulator enabled.
+
+5. epsonscan2 scans but then prints:
+ ERROR : Unable to save scanned files.
+ /tmp/epsonWork/_12345/: No such file or directory
+ Make sure that:
+ a. The working dir, /tmp/epsonWork is writable by the user
+ running the scan.
+
+6. scanimage works with USB scanners but not with network scanners.
+ Make sure that:
+ a. You have the non-free-plugin port installed and the kernel
+ Linux emulator enabled.
+ b. You added the network scanner's IPv4 address to the file:
+ ~/.epsonscan2/Networks/epsonscan2.conf
+
+7. scanimage scans but the image is in reverse video.
+ Specifiy the scan mode using any of:
+ scanimage --mode Monochrome ...
+ scanimage --mode Grayscale ...
+ scanimage --mode Color ...
+
+KNOWN PROBLEMS
+
+There are two known problems on FreeBSD at the moment:
+
+0. es2intif core dumps.
+ The older scanners that require the es2intif program require a
+ small patch to the linux_libusb code. Make sure that you have
+ port devel/linux_libusb-13.1.0 or later and a 13.x or 14.x kernel
+ newer than 2022/03/05.
+
+1. xsane scans but then core dumps.
+ This isn't working. This appears to be a bug in xsane. After
+ receiving the image data, xsane processes the image in
+ xsane_read_image_data() which calls xsane_progress_update() to
+ update a progress bar widget. It core dumps when calling
+ gtk_main_iteration() from that! Since the xsane port on FreeBSD
+ is unmaintained, this won't get fixed until someone decides to
+ take a look at it.
+
+Good luck!
+
+
+DEBUGGING
+
+The epsonscan2 driver provides a debugging trace if the directory:
+ /tmp/epson
+exists. It also saves various files in that directory too.
+
+The sane backend component provides a debugging trace by setting the
+following environment variable:
+ export SANE_DEBUG_EPSONSCAN=IMG
+ scanimage -L
+
+The xsane program can be debugged by setting the environment variable:
+ export XSANE_DEBUG=99
+ xsane
+
+
+LIST OF SUPPORTED USB PRODUCT IDs
+
+The following USB product IDs are supported by the epsonscan2 driver.
+Descriptons have been added where they can be determined.
+
+[*] Models with the [*] require the non-free-plugin port even for USB
+ access.
+
+USB
+Vendor ID Description
+0x04B8 Seiko/Epson Corporation
+
+Product ID Description
+0x0023
+0x0024
+0x0129 ES-10000G [Expression 10000XL]
+0x012B ES-H300 [GT-2500]
+0x012C GT-X900 [Perfection V700/V750 Photo]
+0x0130 GT-X770 [Perfection V500]
+0x0133 GT-1500 [GT-D1000]
+0x0135 GT-X970
+0x0136 ES-D400 [GT-S80]
+0x0137 ES-D200 [GT-S50]
+0x0138 ES-H7200 [GT-20000]
+0x013A [*] GT-X820 [Perfection V600 Photo]
+0x013B [*]
+0x013C [*]
+0x013D [*]
+0x0142 [*] GT-F730 [GT-S630/Perfection V33/V330 Photo]
+0x0143 GT-S55
+0x0144 GT-S85
+0x0145
+0x0146
+0x0147
+0x014A [*]
+0x014B
+0x014C
+0x014D
+0x0150
+0x0151 Perfection V800 Photo
+0x0152
+0x0153
+0x0154
+0x0155
+0x0156
+0x0157
+0x0159
+0x015A
+0x015B
+0x015C
+0x015D
+0x015E
+0x015F
+0x0160
+0x0162
+0x0163
+0x0164
+0x0165
+0x0166
+0x0167
+0x0168
+0x0169
+0x016B
+0x016C
+0x016D
+0x016E
+0x016F
+0x0170
+0x0171
+0x0172
+0x0173
+0x0176
+0x0177
+0x0178
+0x0179
+0x017A
+0x017B
+0x017C
+0x017D
+0x017E
+0x017F
+0x0180
+0x0181
+0x0182
+0x0183
+0x0184
+0x0185
+0x0186
+0x0187
+0x0188
+0x0189
+0x018A
+0x018B
+0x018C
+0x018D
+0x018E
+0x018F
+0x0190
+0x0191
+0x0192
+0x0869 PX-1600F
+0x0879 EP-904A/EP-904F [Artisan 837/Stylus Photo PX830FWD Series]
+0x087B EP-804A/EP-804AR/EP-804AW [Stylus Photo PX730WD/Artisan 730 Series]
+0x087C PX-1700F
+0x087D PX-B750F/WP-4525 Series
+0x0899
+0x08A5
+0x08A9
+0x08AA
+0x08AC
+0x08AD
+0x08AE
+0x08AF
+0x08B0
+0x08B3
+0x08B4
+0x08B5
+0x08B6
+0x08B7
+0x08B8
+0x08B9
+0x08BC
+0x08BD
+0x08BE
+0x08BF
+0x08C0
+0x08C1
+0x08C2
+0x08C3
+0x08C4
+0x08C5
+0x08C6
+0x08C7
+0x08C8
+0x08C9
+0x08CA
+0x08CC
+0x08CD
+0x08CE
+0x08CF
+0x08D0
+0x08D1
+0x08D2
+0x08D3
+0x1101
+0x1102
+0x1103
+0x1104
+0x1105
+0x1106
+0x1107
+0x1108
+0x1109
+0x110A
+0x110B
+0x110C
+0x110D
+0x110F
+0x1111
+0x1112
+0x1113
+0x1114 XP-440 [Expression Home Small-in-One Printer]
+0x1115
+0x1116
+0x1117
+0x1118
+0x1119
+0x111A
+0x111B
+0x111C
+0x111D
+0x111E
+0x111F
+0x1120
+0x1121
+0x1122
+0x1123
+0x1125
+0x1126
+0x1127
+0x1128
+0x1129 ET-4750 [WorkForce ET-4750 EcoTank All-in-One]
+0x112A
+0x112B
+0x112C
+0x112D
+0x112E
+0x112F
+0x1130
+0x1131
+0x1132
+0x1133
+0x1134
+0x1135
+0x1136
+0x1137
+0x1138
+0x1139
+0x113A
+0x113B
+0x113C
+0x113D
+0x113E
+0x113F
+0x1140
+0x1141
+0x1142
+0x1143
+0x1145
+0x1146
+0x1147
+0x1148
+0x1149
+0x114A
+0x114B
+0x114C
+0x114D
+0x114E
+0x114F
+0x1150
+0x1151
+0x1152
+0x1153
+0x1154
+0x1155 WorkForce ST-3000 Series
+0x1156
+0x1157
+0x1158
+0x1159
+0x115A
+0x115B
+0x115C
+0x115D
+0x115E
+0x115F
+0x1160
+0x1161
+0x1162
+0x1163
+0x1164
+0x1165
+0x1166
+0x1167
+0x1168 Workforce WF-7820/7840 Series
+0x1169
+0x116A
+0x116B
+0x116C
+0x116D
+0x116E
+0x116F
+0x1170
+0x1171
+0x1172
+0x1173
+0x1174
+0x1175
+0x1176
+0x1177
+0x117A
+0x117B
+0x117C
+0x117D
+0x117E
+0x117F
+0x1180
+0x1181
+0x1182
+0x1183
+0x1184
+0x1185
+0x1186
+0x1187
+0x1188
+0x1189
+0x118A
+0x118B
+0x118C
+0x118D
+0x118E
+0x118F
+0x1190
+0x1191
+0x1192
+0x1193
+0x1194
+0x1195
+0x1196
+0x1197
+0x1198
+0x1199
+0x119A
+0x119B
+0x119C
+0x119D
+0x119E
+0x119F
+0x11A0
+0x11A1
+0x11A2
+0x11A3
+0x11A4
+0x11A5
+0x11A6
+0x11A7
+0x11A8
+0x11A9
+0x11AA
+0x11AB
+0x11AE
+0x11AF
+0x11B0
+0x11B1
+0x11B2
+0x11B3
+
+End
diff --git a/graphics/epsonscan2/files/patch-CMakeLists.txt b/graphics/epsonscan2/files/patch-CMakeLists.txt
new file mode 100644
index 000000000000..90c8cdb4fce5
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-CMakeLists.txt
@@ -0,0 +1,57 @@
+--- CMakeLists.txt.orig 2021-11-25 00:57:03 UTC
++++ CMakeLists.txt
+@@ -18,7 +18,6 @@
+ # along with this package. If not, see <http://www.gnu.org/licenses/>.
+
+ project (epsonscan2)
+-set (CMAKE_INSTALL_PREFIX "/usr")
+ cmake_minimum_required (VERSION 2.8.12.2)
+
+ include(GNUInstallDirs)
+@@ -55,6 +54,14 @@ message(" Boost_INCLUDE_DIRS: ${Boost_INCLUDE_DIRS}")
+ message(" Boost_LIBRARIES: ${Boost_LIBRARIES}")
+ message(" Boost_LIBRARY_DIRS: ${Boost_LIBRARY_DIRS}")
+
++### USB library ##############
++
++if (CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
++set(usb_LIBRARY "usb")
++else()
++set(usb_LIBRARY "usb-1.0")
++endif()
++
+ ##############################
+
+ #### Dependents package ######
+@@ -87,7 +94,11 @@ set(COMMON_ETC_PATH ${CMAKE_INSTALL_FULL_SYSCONFDIR})
+ set(EPSON_WORK_PATH /tmp/epsonWork/)
+ set(EPSON_SETTINGS_PATH $ENV{HOME}/.epsonscan2/)
+
++if (CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
++set (CMAKE_INSTALL_PREFIX /usr/local)
++else()
+ SET (CMAKE_INSTALL_PREFIX /usr)
++endif()
+ set(EPSON_INSTALL_PATH ${CMAKE_INSTALL_FULL_LIBDIR}/epsonscan2/)
+ set(COMMON_SHARE_PATH ${CMAKE_INSTALL_FULL_DATAROOTDIR})
+
+@@ -114,11 +125,19 @@ add_subdirectory(src)
+
+ install(DIRECTORY Resources DESTINATION ${EPSON_INSTALL_ROOT}${EPSON_INSTALL_PATH})
+
++if (CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
++install(FILES epsonscan2.rules DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/udev/rules.d/ RENAME 60-epsonscan2.rules)
++install(FILES epsonscan2 DESTINATION ${CMAKE_INSTALL_PREFIX}/etc/sane.d/dll.d)
++install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory $ENV{STAGEDIR}${EPSON_INSTALL_ROOT}${CMAKE_INSTALL_FULL_LIBDIR}/sane/)")
++install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ../epsonscan2/libsane-epsonscan2.so $ENV{STAGEDIR}${EPSON_INSTALL_ROOT}${CMAKE_INSTALL_FULL_LIBDIR}/sane/libsane-epsonscan2.so.1)")
++install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ../epsonscan2/libsane-epsonscan2.so $ENV{STAGEDIR}${EPSON_INSTALL_ROOT}${CMAKE_INSTALL_FULL_LIBDIR}/sane/libsane-epsonscan2.so.1.0.0)")
++else()
+ install(FILES epsonscan2.rules DESTINATION ${EPSON_INSTALL_ROOT}/lib/udev/rules.d/ RENAME 60-epsonscan2.rules)
+ install(FILES epsonscan2 DESTINATION ${EPSON_INSTALL_ROOT}/etc/sane.d/dll.d)
+ install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${EPSON_INSTALL_ROOT}${CMAKE_INSTALL_FULL_LIBDIR}/sane/)")
+ install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ../epsonscan2/libsane-epsonscan2.so ${EPSON_INSTALL_ROOT}${CMAKE_INSTALL_FULL_LIBDIR}/sane/libsane-epsonscan2.so.1)")
+ install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ../epsonscan2/libsane-epsonscan2.so ${EPSON_INSTALL_ROOT}${CMAKE_INSTALL_FULL_LIBDIR}/sane/libsane-epsonscan2.so.1.0.0)")
++endif()
+
+ install(FILES changelog.Debian DESTINATION ${EPSON_INSTALL_ROOT}${CMAKE_INSTALL_PREFIX}/share/doc/epsonscan2${EPSON_VERSION})
+
diff --git a/graphics/epsonscan2/files/patch-src_CommonUtility_DbgLog.cpp b/graphics/epsonscan2/files/patch-src_CommonUtility_DbgLog.cpp
new file mode 100644
index 000000000000..b4e8e0bfd21d
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_CommonUtility_DbgLog.cpp
@@ -0,0 +1,21 @@
+--- src/CommonUtility/DbgLog.cpp.orig 2021-11-25 00:56:55 UTC
++++ src/CommonUtility/DbgLog.cpp
+@@ -34,6 +34,9 @@
+ #ifdef __ANDROID__
+ #include <android/log.h>
+ #endif
++#if __FreeBSD__
++#include <pthread_np.h>
++#endif
+ #if TARGET_OS_IPHONE
+ #include <CoreFoundation/CoreFoundation.h>
+ #endif
+@@ -87,6 +90,8 @@ GetCurrentThreadId(void)
+ {
+ #if TARGET_OS_IPHONE
+ return (DWORD)pthread_mach_thread_np(pthread_self());
++#elif __FreeBSD__
++ return pthread_getthreadid_np();
+ #else
+ return syscall(SYS_gettid);
+ #endif
diff --git a/graphics/epsonscan2/files/patch-src_CommonUtility_utils_ESAnyCastUtils.h b/graphics/epsonscan2/files/patch-src_CommonUtility_utils_ESAnyCastUtils.h
new file mode 100644
index 000000000000..805a5c42bbb2
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_CommonUtility_utils_ESAnyCastUtils.h
@@ -0,0 +1,28 @@
+--- src/CommonUtility/utils/ESAnyCastUtils.h.orig 2021-11-25 00:56:55 UTC
++++ src/CommonUtility/utils/ESAnyCastUtils.h
+@@ -141,7 +141,11 @@ const T* SafeAnyDataCPtr( const ESAny& anyIn )
+ template< typename T >
+ T* SafeAnyDataPtr_WithLog( ESAny& anyIn, ES_CHAR_CPTR lpszFile = __ES_FILE__, const int nLine = __LINE__ )
+ {
+- if( anyIn.empty() || (anyIn.type() != typeid(T)) ){
++ // XXX changed to a string comparison of the type name here because, on FreeBSD, the hash_code()s for anyIn.type() and typeid(T) are differing for T = ESDictionary
++ // even though the names of the types are the same!
++ // It should work as it was. It is not efficient now. Why are the type hash_code()s different on FreeBSD??
++ // was: if( anyIn.empty() || (anyIn.type() != typeid(T)) ){
++ if( anyIn.empty() || ES_CMN_FUNCS::STRING::ToESString(anyIn.type().name()).compare(ES_CMN_FUNCS::STRING::ToESString(typeid(T).name())) != 0 ){
+ if(anyIn.empty()){
+ ES_Warning_Log3( __ES_FUNCTION__, lpszFile, nLine, ES_STRING("Boost Any Cast Warning Empty!!"));
+ } else {
+@@ -167,7 +171,11 @@ T* SafeAnyDataPtr_WithLog( ESAny& anyIn, ES_CHAR_CPTR
+ template< typename T >
+ const T* SafeAnyDataCPtr_WithLog( const ESAny& anyIn, ES_CHAR_CPTR lpszFile = __ES_FILE__, const int nLine = __LINE__ )
+ {
+- if( anyIn.empty() || (anyIn.type() != typeid(T)) ){
++ // XXX changed to a string comparison of the type name here because, on FreeBSD, the hash_code()s for anyIn.type() and typeid(T) are differing for T = ESDictionary
++ // even though the names of the types are the same!
++ // It should work as it was. It is not efficient now. Why are the type hash_code()s different on FreeBSD??
++ // was: if( anyIn.empty() || (anyIn.type() != typeid(T)) ){
++ if( anyIn.empty() || ES_CMN_FUNCS::STRING::ToESString(anyIn.type().name()).compare(ES_CMN_FUNCS::STRING::ToESString(typeid(T).name())) != 0 ){
+ if(anyIn.empty()){
+ ES_Warning_Log3( __ES_FUNCTION__, lpszFile, nLine, ES_STRING("Boost Any Cast Warning Empty!!"));
+ } else {
diff --git a/graphics/epsonscan2/files/patch-src_CommonUtility_utils_ESFile.cpp b/graphics/epsonscan2/files/patch-src_CommonUtility_utils_ESFile.cpp
new file mode 100644
index 000000000000..316223a0ea16
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_CommonUtility_utils_ESFile.cpp
@@ -0,0 +1,12 @@
+--- src/CommonUtility/utils/ESFile.cpp.orig 2021-11-25 00:56:55 UTC
++++ src/CommonUtility/utils/ESFile.cpp
+@@ -48,6 +48,9 @@ CESFile* CESFile::CreateFileInstanceWithPath(ESString
+ }
+ }
+ CESFile* CESFile::CreateTempFileInstanceWithPrefix( ESString strFolder, ESString strPrefix, ES_OPEN_MODE eOpenMode ){
++ if (!ES_CMN_FUNCS::PATH::ES_IsWritableFolder(strFolder)) {
++ return FALSE;
++ }
+ try {
+ CESFile* pcFile = new CESFile();
+ if( !pcFile->CreateTempFile(strFolder, strPrefix, eOpenMode) ){
diff --git a/graphics/epsonscan2/files/patch-src_CommonUtility_utils_PathUtils.cpp b/graphics/epsonscan2/files/patch-src_CommonUtility_utils_PathUtils.cpp
new file mode 100644
index 000000000000..5ed82c1f98b9
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_CommonUtility_utils_PathUtils.cpp
@@ -0,0 +1,10 @@
+--- src/CommonUtility/utils/PathUtils.cpp.orig 2021-11-25 00:56:55 UTC
++++ src/CommonUtility/utils/PathUtils.cpp
+@@ -609,7 +609,6 @@ namespace ES_CMN_FUNCS
+ else
+ {
+ bResult = TRUE;
+- break;
+ }
+ }
+ #endif
diff --git a/graphics/epsonscan2/files/patch-src_Controller_CMakeLists.txt b/graphics/epsonscan2/files/patch-src_Controller_CMakeLists.txt
new file mode 100644
index 000000000000..3f32ef5a613b
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_Controller_CMakeLists.txt
@@ -0,0 +1,11 @@
+--- src/Controller/CMakeLists.txt.orig 2021-11-25 00:56:54 UTC
++++ src/Controller/CMakeLists.txt
+@@ -171,7 +171,7 @@ target_link_libraries( epsonscan2
+ dl
+ commonutility
+ ${Boost_LIBRARIES}
+- usb-1.0
++ ${usb_LIBRARY}
+ )
+
+ install(TARGETS epsonscan2 DESTINATION ${EPSON_INSTALL_ROOT}${EPSON_INSTALL_PATH})
diff --git a/graphics/epsonscan2/files/patch-src_Controller_Src_EntryPoints.cpp b/graphics/epsonscan2/files/patch-src_Controller_Src_EntryPoints.cpp
new file mode 100644
index 000000000000..921c107f4320
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_Controller_Src_EntryPoints.cpp
@@ -0,0 +1,11 @@
+--- src/Controller/Src/EntryPoints.cpp.orig 2021-11-25 00:56:59 UTC
++++ src/Controller/Src/EntryPoints.cpp
+@@ -346,6 +346,8 @@ SDIError SDIScannerDriver_GetNextTransferEvent(SDIScan
+ }
+ }
+ break;
++ case kEventTypePaperJam:
++ break;
+ }
+ if (outError)
+ {
diff --git a/graphics/epsonscan2/files/patch-src_Controller_Src_FileFormat_FFManager.cpp b/graphics/epsonscan2/files/patch-src_Controller_Src_FileFormat_FFManager.cpp
new file mode 100644
index 000000000000..e6403f5cc97d
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_Controller_Src_FileFormat_FFManager.cpp
@@ -0,0 +1,12 @@
+--- src/Controller/Src/FileFormat/FFManager.cpp.orig 2021-11-25 00:56:58 UTC
++++ src/Controller/Src/FileFormat/FFManager.cpp
+@@ -176,6 +176,9 @@ namespace epsonscan
+ return kFKWriterTypePnm;
+ case kSDIImageFormatBMP:
+ return kFKWriterTypeBmp;
++ case kSDIImageFormatRaw:
++ case kSDIImageFormatColorJpegMonoPNM:
++ break;
+ }
+ return kFKWriterTypeBmp;
+ }
diff --git a/graphics/epsonscan2/files/patch-src_Controller_Src_Filter_DTR.cpp b/graphics/epsonscan2/files/patch-src_Controller_Src_Filter_DTR.cpp
new file mode 100644
index 000000000000..68f1592dd27f
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_Controller_Src_Filter_DTR.cpp
@@ -0,0 +1,21 @@
+--- src/Controller/Src/Filter/DTR.cpp.orig 2021-11-25 00:56:57 UTC
++++ src/Controller/Src/Filter/DTR.cpp
+@@ -26,6 +26,9 @@
+ #include <utils/ESFile.h>
+ #include <ES2Command/ES2CommandAPI.h>
+ #include <math.h>
++#if __FreeBSD__
++#include <sys/wait.h>
++#endif
+ namespace epsonscan
+ {
+ static const int kMaxBuf = 256;
+@@ -409,7 +412,7 @@ ESNumber CustomSkipLevelAsPercent(ESNumber inLevel)
+ dtrExecCommand << " ";
+ dtrExecCommand << "0";
+ dtrExecCommand << " ";
+- dtrExecCommand << (keyMgr->GetValueInt(kSDIAutoColorPixelTypeKey) == kSDIAutoColorPixelTypeAuto) ? 1 : 0;
++ dtrExecCommand << ((keyMgr->GetValueInt(kSDIAutoColorPixelTypeKey) == kSDIAutoColorPixelTypeAuto) ? 1 : 0);
+ dtrExecCommand << " ";
+ dtrExecCommand << keyMgr->GetValueInt(kSDIAutoColorPixelLevelKey);
+ SDI_TRACE_LOG("dtrExecCommand = %s", dtrExecCommand.str().c_str());
diff --git a/graphics/epsonscan2/files/patch-src_Controller_Src_Filter_ProcOrientation.hpp b/graphics/epsonscan2/files/patch-src_Controller_Src_Filter_ProcOrientation.hpp
new file mode 100644
index 000000000000..fff9dd20bb0b
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_Controller_Src_Filter_ProcOrientation.hpp
@@ -0,0 +1,10 @@
+--- src/Controller/Src/Filter/ProcOrientation.hpp.orig 2021-11-25 00:56:58 UTC
++++ src/Controller/Src/Filter/ProcOrientation.hpp
+@@ -89,6 +89,7 @@ class ProcOrientation : public Filter (private)
+ }
+ break;
+ case kSDIOrientationNone:
++ case kSDIOrientationAuto:
+ break;
+ }
+ inDataBuf.FreeBuffer();
diff --git a/graphics/epsonscan2/files/patch-src_Controller_Src_Filter_Saving.hpp b/graphics/epsonscan2/files/patch-src_Controller_Src_Filter_Saving.hpp
new file mode 100644
index 000000000000..03610918c7f1
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_Controller_Src_Filter_Saving.hpp
@@ -0,0 +1,20 @@
+--- src/Controller/Src/Filter/Saving.hpp.orig 2022-03-20 15:38:28 UTC
++++ src/Controller/Src/Filter/Saving.hpp
+@@ -76,8 +76,7 @@ namespace epsonscan
+ imgFormat = kSDIImageFormatPNM;
+ }
+ file = CESFile::CreateTempFileInstanceWithPrefix(ES_CMN_FUNCS::PATH::ES_GetWorkTempPath(), prefixStream.str());
+- file->CloseFile();
+- if(ffMgr.Write(inDataBuf,
++ if(!file || ffMgr.Write(inDataBuf,
+ file->GetFileName(),
+ imgFormat,
+ imageInfo,
+@@ -91,6 +90,7 @@ namespace epsonscan
+ }
+ }
+ filePath_ = file->GetFileName();
++ file->CloseFile();
+ delete file;
+ file = nullptr;
+ }
diff --git a/graphics/epsonscan2/files/patch-src_Controller_Src_Finder_UsbFinder.cpp b/graphics/epsonscan2/files/patch-src_Controller_Src_Finder_UsbFinder.cpp
new file mode 100644
index 000000000000..5fd43e5515ca
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_Controller_Src_Finder_UsbFinder.cpp
@@ -0,0 +1,14 @@
+--- src/Controller/Src/Finder/UsbFinder.cpp.orig 2021-11-25 00:56:57 UTC
++++ src/Controller/Src/Finder/UsbFinder.cpp
+@@ -25,7 +25,11 @@
+ #include "ModelInfo.hpp"
+ #include "Utility.hpp"
+ extern "C" {
++#if __FreeBSD__
++#include <libusb.h>
++#else
+ #include <libusb-1.0/libusb.h>
++#endif
+ }
+ #include <list>
+ #include <iostream>
diff --git a/graphics/epsonscan2/files/patch-src_Controller_Src_KeysValues_All_Resolution.cpp b/graphics/epsonscan2/files/patch-src_Controller_Src_KeysValues_All_Resolution.cpp
new file mode 100644
index 000000000000..b524fde21606
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_Controller_Src_KeysValues_All_Resolution.cpp
@@ -0,0 +1,11 @@
+--- src/Controller/Src/KeysValues/All/Resolution.cpp.orig 2021-11-25 00:56:58 UTC
++++ src/Controller/Src/KeysValues/All/Resolution.cpp
+@@ -142,7 +142,7 @@ ESDictionary Resolution::GetSeolutionTable(bool isXRes
+ ES_CMN_FUNCS::JSON::JSONFiletoDictionary(resTablePath, resTable);
+ }else
+ {
+- SDI_TRACE_LOG("resolution faile does not found");
++ SDI_TRACE_LOG("resolution file not found");
+ }
+ }
+ catch (boost::bad_any_cast) {
diff --git a/graphics/epsonscan2/files/patch-src_Controller_Src_KeysValues_All_ScanHeightMax.cpp b/graphics/epsonscan2/files/patch-src_Controller_Src_KeysValues_All_ScanHeightMax.cpp
new file mode 100644
index 000000000000..c80cfd057a42
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_Controller_Src_KeysValues_All_ScanHeightMax.cpp
@@ -0,0 +1,11 @@
+--- src/Controller/Src/KeysValues/All/ScanHeightMax.cpp.orig 2021-11-25 00:56:58 UTC
++++ src/Controller/Src/KeysValues/All/ScanHeightMax.cpp
+@@ -59,6 +59,8 @@ void ScanHeightMax::GetValue(SDIInt& intVal)
+ case kSDIFunctionalUnitDocumentFeeder:
+ intVal = ADFValue();
+ return;
++ case kSDIFunctionalUnitCarrierSheet:
++ break;
+ }
+ }
+ void ScanHeightMax::GetCapability(SDICapability &capability)
diff --git a/graphics/epsonscan2/files/patch-src_Controller_Src_KeysValues_All_ScanWidthMax.cpp b/graphics/epsonscan2/files/patch-src_Controller_Src_KeysValues_All_ScanWidthMax.cpp
new file mode 100644
index 000000000000..e04ba20df560
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_Controller_Src_KeysValues_All_ScanWidthMax.cpp
@@ -0,0 +1,11 @@
+--- src/Controller/Src/KeysValues/All/ScanWidthMax.cpp.orig 2021-11-25 00:56:58 UTC
++++ src/Controller/Src/KeysValues/All/ScanWidthMax.cpp
+@@ -58,6 +58,8 @@ void ScanWidthMax::GetValue(SDIInt& intVal)
+ case kSDIFunctionalUnitDocumentFeeder:
+ intVal = ADFValue();
+ return;
++ case kSDIFunctionalUnitCarrierSheet:
++ break;
+ }
+ }
+ void ScanWidthMax::GetCapability(SDICapability &capability)
diff --git a/graphics/epsonscan2/files/patch-src_Controller_Src_Scanner_Engine.hpp b/graphics/epsonscan2/files/patch-src_Controller_Src_Scanner_Engine.hpp
new file mode 100644
index 000000000000..38ece0009a89
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_Controller_Src_Scanner_Engine.hpp
@@ -0,0 +1,26 @@
+--- src/Controller/Src/Scanner/Engine.hpp.orig 2021-11-25 00:56:59 UTC
++++ src/Controller/Src/Scanner/Engine.hpp
+@@ -357,14 +357,14 @@ namespace epsonscan {
+ void CALLBACK ScannerDidWarmUp( IESScanner* pScanner ) override;
+ void CALLBACK NetworkScannerDidRequestStartScanning( IESScanner* pScanner ) override;
+ void CALLBACK NetworkScannerDidRequestStopScanning( IESScanner* pScanner ) override;
+- void CALLBACK ScannerDidDisconnect( IESScanner* pScanner ) ;
+- void CALLBACK NetworkScannerDidReceiveServerError(IESScanner* pScanner) ;
+- BOOL CALLBACK NetworkScannerShouldPreventTimeout( IESScanner* pScanner ) ;
+- void CALLBACK NetworkScannerDidTimeout( IESScanner* pScanner ) ;
+- void CALLBACK ScannerIsReservedByHost( IESScanner* pScanner, const ES_CHAR* pszAddress ) ;
+- void CALLBACK ScannerDidPressButton( UInt8 un8ButtonNumber ) ;
+- void CALLBACK ScannerDidRequestStop(IESScanner *pScanner);
+- void CALLBACK ScannerDidRequestPushScanConnection(IESScanner *pScanner);
+- void CALLBACK ScannerDidNotifyStatusChange(IESScanner *pScanner) ;
++ void CALLBACK ScannerDidDisconnect( IESScanner* pScanner ) override;
++ void CALLBACK NetworkScannerDidReceiveServerError(IESScanner* pScanner) override;
++ BOOL CALLBACK NetworkScannerShouldPreventTimeout( IESScanner* pScanner ) override;
++ void CALLBACK NetworkScannerDidTimeout( IESScanner* pScanner ) override;
++ void CALLBACK ScannerIsReservedByHost( IESScanner* pScanner, const ES_CHAR* pszAddress ) override;
++ void CALLBACK ScannerDidPressButton( UInt8 un8ButtonNumber ) override;
++ void CALLBACK ScannerDidRequestStop(IESScanner *pScanner) override;
++ void CALLBACK ScannerDidRequestPushScanConnection(IESScanner *pScanner) override;
++ void CALLBACK ScannerDidNotifyStatusChange(IESScanner *pScanner) override;
+ };
+ }
diff --git a/graphics/epsonscan2/files/patch-src_Controller_Src_Scanner_Scanner.cpp b/graphics/epsonscan2/files/patch-src_Controller_Src_Scanner_Scanner.cpp
new file mode 100644
index 000000000000..4d5aefd35aff
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_Controller_Src_Scanner_Scanner.cpp
@@ -0,0 +1,27 @@
+--- src/Controller/Src/Scanner/Scanner.cpp.orig 2021-11-25 00:56:59 UTC
++++ src/Controller/Src/Scanner/Scanner.cpp
+@@ -188,7 +188,7 @@ void Scanner::EngineCallBackReceiver(EngineEventType e
+ error == kSDIErrorDataSend ||
+ error == kSDIErrorInvalidResponse ||
+ error == kSDIErrorDeviceFatalError ||
+- error == kESErrorDeviceOpenError )
++ error == (SDIError) kESErrorDeviceOpenError )
+ {
+ SDI_TRACE_LOG("communication error occurs");
+ isOpened_ = false;
+@@ -202,13 +202,13 @@ SDIError Scanner::Open()
+ SDIError err;
+ if (engine_) {
+ err = engine_->Open();
+- if(err != kSDIErrorNone){
++ if(err != kSDIErrorNone && err != kSDIErrorDeviceOpen){
+ return err;
+ }
+ }
+ if (engineSecond_) {
+ err = engineSecond_->Open();
+- if(err != kSDIErrorNone){
++ if(err != kSDIErrorNone && err != kSDIErrorDeviceOpen){
+ return err;
+ }
+ }
diff --git a/graphics/epsonscan2/files/patch-src_ES2Command_Linux_CMakeLists.txt b/graphics/epsonscan2/files/patch-src_ES2Command_Linux_CMakeLists.txt
new file mode 100644
index 000000000000..f30d1dd28c88
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_ES2Command_Linux_CMakeLists.txt
@@ -0,0 +1,11 @@
+--- src/ES2Command/Linux/CMakeLists.txt.orig 2021-11-25 00:56:54 UTC
++++ src/ES2Command/Linux/CMakeLists.txt
+@@ -60,7 +60,7 @@ target_link_libraries( es2command
+ dl
+ commonutility
+ ${Boost_LIBRARIES}
+- usb-1.0
++ ${usb_LIBRARY}
+ )
+
+ install(TARGETS es2command DESTINATION ${EPSON_INSTALL_ROOT}${EPSON_INSTALL_PATH})
diff --git a/graphics/epsonscan2/files/patch-src_ES2Command_Src_Command_ESCI2_ESCI2Accessor.h b/graphics/epsonscan2/files/patch-src_ES2Command_Src_Command_ESCI2_ESCI2Accessor.h
new file mode 100644
index 000000000000..5ecc95e2bb57
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_ES2Command_Src_Command_ESCI2_ESCI2Accessor.h
@@ -0,0 +1,38 @@
+--- src/ES2Command/Src/Command/ESCI2/ESCI2Accessor.h.orig 2021-11-25 00:56:55 UTC
++++ src/ES2Command/Src/Command/ESCI2/ESCI2Accessor.h
+@@ -37,7 +37,7 @@ class CESCI2Accessor : public CESCI2Command (protected
+ ESErrorCode SetPanelToPushScanReady( BOOL bPushScanReady );
+ ESErrorCode UnlockAdministratorLock();
+ ESErrorCode LockAdministratorLock();
+- bool RequestingUnlockAdminLock();
++ virtual bool RequestingUnlockAdminLock() override;
+ BOOL IsScannableDeviceConfig();
+ ESErrorCode CaptureScanner();
+ ESErrorCode ReleaseScanner();
+@@ -208,7 +208,7 @@ class CESCI2Accessor : public CESCI2Command (protected
+ ESErrorCode _SetColorMatrix( ES_COLOR_MATRIX& matrix );
+ ESErrorCode SetColorMatrix( ESFloatArray arColorMatrix );
+ bool IsSkewCorrectionSupported();
+- bool IsSkewCorrectionEnabled();
++ bool IsSkewCorrectionEnabled() override;
+ ESErrorCode SetSkewCorrectionEnabled( bool bSkewCorrectionEnabled );
+ ESAny GetSupportedThreshold();
+ ESNumber GetThreshold();
+@@ -226,7 +226,7 @@ class CESCI2Accessor : public CESCI2Command (protected
+ ESNumber GetGammaScale();
+ ESErrorCode SetGammaScale( ESNumber nGammaScale );
+ ESAny GetSupportedBackGroundRemoval();
+- ESNumber GetBackGroundRemoval();
++ virtual ESNumber GetBackGroundRemoval() override;
+ ESErrorCode SetBackGroundRemoval( ESNumber nBackGroundRemoval );
+ ESAny GetSupportedJPEGQuality();
+ ESNumber GetJPEGQuality();
+@@ -235,7 +235,7 @@ class CESCI2Accessor : public CESCI2Command (protected
+ ESQuietMode GetQuietMode();
+ ESErrorCode SetQuietMode( ESNumber nQuietMode);
+ bool IsAutoCroppingSupported();
+- bool IsAutoCroppingEnabled();
++ virtual bool IsAutoCroppingEnabled() override;
+ ESErrorCode SetAutoCroppingEnabled( bool bAutoCroppingEnabled );
+ ESAny GetCroppableResolutions();
+ ESAny GetSupportedCroppingSizes();
diff --git a/graphics/epsonscan2/files/patch-src_ES2Command_Src_Interface_ipc_ipcInterfaceImpl.cpp b/graphics/epsonscan2/files/patch-src_ES2Command_Src_Interface_ipc_ipcInterfaceImpl.cpp
new file mode 100644
index 000000000000..d930216e6727
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_ES2Command_Src_Interface_ipc_ipcInterfaceImpl.cpp
@@ -0,0 +1,11 @@
+--- src/ES2Command/Src/Interface/ipc/ipcInterfaceImpl.cpp.orig 2021-11-25 00:56:54 UTC
++++ src/ES2Command/Src/Interface/ipc/ipcInterfaceImpl.cpp
+@@ -307,7 +307,7 @@ bool IPCInterfaceImpl::recv_reply(uint32_t* token)
+ if (placeholder) delete [] placeholder;
+ if (token) *token = hdr_token(hdr);
+ if (hdr_error(hdr) || n < 0) {
+- ES_ERROR_LOG(ES_STRING("recv_reply err.(%d, %d, n)"), hdr_error(hdr), hdr_token(hdr), n);
++ ES_ERROR_LOG(ES_STRING("recv_reply err.(%d, %d, %ld)"), hdr_error(hdr), hdr_token(hdr), n);
+ return false;
+ }
+ return true;
diff --git a/graphics/epsonscan2/files/patch-src_ES2Command_Src_Interface_usb_usbInterfaceImpl.cpp b/graphics/epsonscan2/files/patch-src_ES2Command_Src_Interface_usb_usbInterfaceImpl.cpp
new file mode 100644
index 000000000000..b7225c97f1b8
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_ES2Command_Src_Interface_usb_usbInterfaceImpl.cpp
@@ -0,0 +1,12 @@
+--- src/ES2Command/Src/Interface/usb/usbInterfaceImpl.cpp.orig 2021-11-25 00:56:54 UTC
++++ src/ES2Command/Src/Interface/usb/usbInterfaceImpl.cpp
+@@ -46,7 +46,8 @@ USBInterfaceImpl::USBInterfaceImpl()
+ sm_ctx = nullptr;
+ throw std::runtime_error("unable to initialise USB support");
+ }
+- libusb_set_debug(sm_ctx, 3);
++ // XXX this cannot be left enabled as the debug messages go to stdout which is where the scan image data goes
++ //libusb_set_debug(sm_ctx, 3);
+ }
+ ++sm_nConnectionCount;
+ }
diff --git a/graphics/epsonscan2/files/patch-src_ES2Command_Src_Interface_usb_usbInterfaceImpl.h b/graphics/epsonscan2/files/patch-src_ES2Command_Src_Interface_usb_usbInterfaceImpl.h
new file mode 100644
index 000000000000..247cabd4050e
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_ES2Command_Src_Interface_usb_usbInterfaceImpl.h
@@ -0,0 +1,15 @@
+--- src/ES2Command/Src/Interface/usb/usbInterfaceImpl.h.orig 2021-11-25 00:56:54 UTC
++++ src/ES2Command/Src/Interface/usb/usbInterfaceImpl.h
+@@ -20,8 +20,11 @@
+ // usbInterfaceImpl.h -- template and derived ESC/I ESC/I-2 protocol commands
+ #pragma once
+
+-
++#if __FreeBSD__
++#include <libusb.h>
++#else
+ #include <libusb-1.0/libusb.h>
++#endif
+ #include "../interfaceImpl.h"
+ #include "../interface.h"
+ class USBInterfaceImpl : public IInterfaceImpl
diff --git a/graphics/epsonscan2/files/patch-src_ES2Command_Src_Utils_semaphore.hpp b/graphics/epsonscan2/files/patch-src_ES2Command_Src_Utils_semaphore.hpp
new file mode 100644
index 000000000000..680ae4f57ab8
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_ES2Command_Src_Utils_semaphore.hpp
@@ -0,0 +1,71 @@
+--- src/ES2Command/Src/Utils/semaphore.hpp.orig 2021-11-25 00:56:55 UTC
++++ src/ES2Command/Src/Utils/semaphore.hpp
+@@ -23,6 +23,10 @@
+
+ #include<sys/sem.h>
+ #include <stdexcept>
++#ifdef __FreeBSD__
++#include <chrono>
++#include <thread>
++#endif
+ #if defined(__GNU_LIBRARY__) && !defined(_SEM_SEMUN_UNDEFINED)
+ #else
+ union semun {
+@@ -88,9 +92,26 @@ class semaphore (public)
+ }
+ int wait(int timeout_s)
+ {
++#ifdef __FreeBSD__
++ int err;
+ sembuf operations[1];
+ operations[0].sem_num = 0;
+ operations[0].sem_op = WAIT;
++ operations[0].sem_flg = SEM_UNDO | IPC_NOWAIT;
++ for (int i = 0; i < timeout_s * 100; i++) {
++ err = semop(sem_id_, operations, 1);
++ if (err == EAGAIN) {
++ std::this_thread::sleep_for(std::chrono::milliseconds(10));
++ }
++ else {
++ return err;
++ }
++ }
++ return ETIMEDOUT;
++#else
++ sembuf operations[1];
++ operations[0].sem_num = 0;
++ operations[0].sem_op = WAIT;
+ operations[0].sem_flg = SEM_UNDO;
+ struct timespec time{};
+ time.tv_sec = timeout_s;
+@@ -98,6 +119,7 @@ class semaphore (public)
+ return errno;
+ }
+ return 0;
++#endif
+ }
+ void lock()
+ {
+@@ -128,6 +150,14 @@ class semaphore (public)
+ }
+ int wait_and_lock(int timeout_s)
+ {
++#ifdef __FreeBSD__
++ int err;
++ if ((err = wait(timeout_s)) == 0) {
++ lock();
++ return 0;
++ }
++ return err;
++#else
+ sembuf operations[2];
+ operations[0].sem_num = 0;
+ operations[0].sem_op = WAIT;
+@@ -141,6 +171,7 @@ class semaphore (public)
+ return errno;
+ }
+ return 0;
++#endif
+ }
+ private:
+ key_t key_;
diff --git a/graphics/epsonscan2/files/patch-src_ES2FileFormat_Header_IO_FKDestination.h b/graphics/epsonscan2/files/patch-src_ES2FileFormat_Header_IO_FKDestination.h
new file mode 100644
index 000000000000..49ec9593d64d
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_ES2FileFormat_Header_IO_FKDestination.h
@@ -0,0 +1,32 @@
+--- src/ES2FileFormat/Header/IO/FKDestination.h.orig 2021-11-25 00:56:57 UTC
++++ src/ES2FileFormat/Header/IO/FKDestination.h
+@@ -33,12 +33,12 @@ class CFKDestination : public IFKDestination (private)
+ public:
+ CFKDestination();
+ ~CFKDestination();
+- FKDestinationType GetFKDestinationType()
++ FKDestinationType GetFKDestinationType() override
+ {
+ return m_eFKDestinationType;
+ }
+- ES_CMN_FUNCS::BUFFER::IESBuffer& GetSource();
+- void SetDelegate(IFKDestinationDelegate* piDelegate){
++ ES_CMN_FUNCS::BUFFER::IESBuffer& GetSource() override;
++ void SetDelegate(IFKDestinationDelegate* piDelegate) override {
+ m_pcDelegate = piDelegate ;
+ }
+ void SetUserData(const ESImageInfo& dictImageInfo){
+@@ -50,10 +50,10 @@ class CFKDestination : public IFKDestination (private)
+ virtual void SetUserDataAsJson(ES_CHAR_CPTR pszUserDataAsJson) override;
+ virtual void GetUserDataAsJson(IESResultString& pszUserDataAsJson) override;
+ static IFKDestination* CreateAndInitInstanceWithType( FKDestinationType eType, ES_CMN_FUNCS::BUFFER::IESBuffer& cSource );
+- void NotifyDidBeginReceivingForImageInfo( ES_CHAR_CPTR pszImageInfoAsJson );
+- void NotifyDidEndReceivingForImageInfo( ES_CHAR_CPTR pszImageInfoAsJson );
++ void NotifyDidBeginReceivingForImageInfo( ES_CHAR_CPTR pszImageInfoAsJson ) override;
++ void NotifyDidEndReceivingForImageInfo( ES_CHAR_CPTR pszImageInfoAsJson ) override;
+ void NotifyReceiveImageData( ES_CMN_FUNCS::BUFFER::IESBuffer& cData, ES_CHAR_CPTR pszImageInfoAsJson ) override;
+- void Destroy(){
++ void Destroy() override {
+ delete this;
+ }
+ };
diff --git a/graphics/epsonscan2/files/patch-src_ES2FileFormat_Header_IO_FKSource.h b/graphics/epsonscan2/files/patch-src_ES2FileFormat_Header_IO_FKSource.h
new file mode 100644
index 000000000000..c6dddcda8f9f
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_ES2FileFormat_Header_IO_FKSource.h
@@ -0,0 +1,11 @@
+--- src/ES2FileFormat/Header/IO/FKSource.h.orig 2021-11-25 00:56:57 UTC
++++ src/ES2FileFormat/Header/IO/FKSource.h
+@@ -40,7 +40,7 @@ class CFKSource : public IFKSource (public)
+ {
+ return m_bFull;
+ }
+- ES_CMN_FUNCS::BUFFER::IESBuffer& GetSource( );
++ ES_CMN_FUNCS::BUFFER::IESBuffer& GetSource( ) override;
+ static IFKSource* CreateAndInitInstanceWithType(FKSourceType eSourceType, ES_CMN_FUNCS::BUFFER::IESBuffer& vpSource, BOOL bIsFull);
+ void Destroy() override{
+ delete this;
diff --git a/graphics/epsonscan2/files/patch-src_ES2FileFormat_Header_Reader_FKReader.h b/graphics/epsonscan2/files/patch-src_ES2FileFormat_Header_Reader_FKReader.h
new file mode 100644
index 000000000000..13ac013b39c3
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_ES2FileFormat_Header_Reader_FKReader.h
@@ -0,0 +1,34 @@
+--- src/ES2FileFormat/Header/Reader/FKReader.h.orig 2021-11-25 00:56:57 UTC
++++ src/ES2FileFormat/Header/Reader/FKReader.h
+@@ -42,21 +42,21 @@ class CFKReader : public IFKReader (public)
+ m_nValidImageHeight = nHeight;
+ m_bReadOnlyValidData = bReadOnlyValidData;
+ }
+- IFKDestination* GetCFkDestionation()
++ IFKDestination* GetCFkDestionation() override
+ {
+ return m_piFkDestination;
+ }
+ ESImageInfo& GetImageInfo(void);
+ virtual void GetImageInfoAsJson(IESResultString& strJson) override;
+- BOOL OpenWithDestination( IFKDestination* pcDestination, ENUM_FK_ERROR_CODE& eError );
+- BOOL OpenWithDestinationAsJson( IFKDestination* pcDestination, ES_CHAR_CPTR pszOptionAsJson, ENUM_FK_ERROR_CODE& eError );
+- virtual BOOL AppendSource(IFKSource* source, ENUM_FK_ERROR_CODE& eError);
+- BOOL CloseAndReturnError( ENUM_FK_ERROR_CODE& eError );
+- BOOL CloseWithOptionAsJson( ES_CHAR_CPTR pszOptionAsJson, ENUM_FK_ERROR_CODE& eError );
+- virtual BOOL OpenReaderWithOptionAsJson( ES_CHAR_CPTR pszOptionAsJson, ENUM_FK_ERROR_CODE& eError ) = 0;
+- virtual BOOL AppendSourceToReader( IFKSource* pcSource, ENUM_FK_ERROR_CODE& eError ) = 0;
+- virtual BOOL CloseReaderWithOptionAsJson( ES_CHAR_CPTR pszOptionAsJson, ENUM_FK_ERROR_CODE& eError ) = 0;
+- void Destroy(){
++ BOOL OpenWithDestination( IFKDestination* pcDestination, ENUM_FK_ERROR_CODE& eError ) override;
++ BOOL OpenWithDestinationAsJson( IFKDestination* pcDestination, ES_CHAR_CPTR pszOptionAsJson, ENUM_FK_ERROR_CODE& eError ) override;
++ virtual BOOL AppendSource(IFKSource* source, ENUM_FK_ERROR_CODE& eError) override;
++ BOOL CloseAndReturnError( ENUM_FK_ERROR_CODE& eError ) override;
++ BOOL CloseWithOptionAsJson( ES_CHAR_CPTR pszOptionAsJson, ENUM_FK_ERROR_CODE& eError ) override;
++ virtual BOOL OpenReaderWithOptionAsJson( ES_CHAR_CPTR pszOptionAsJson, ENUM_FK_ERROR_CODE& eError ) override = 0;
++ virtual BOOL AppendSourceToReader( IFKSource* pcSource, ENUM_FK_ERROR_CODE& eError ) override = 0;
++ virtual BOOL CloseReaderWithOptionAsJson( ES_CHAR_CPTR pszOptionAsJson, ENUM_FK_ERROR_CODE& eError ) override = 0;
++ void Destroy() override {
+ delete this;
+ }
+ };
diff --git a/graphics/epsonscan2/files/patch-src_ES2FileFormat_Source_PnmUtil_FKPnmUtil.cpp b/graphics/epsonscan2/files/patch-src_ES2FileFormat_Source_PnmUtil_FKPnmUtil.cpp
new file mode 100644
index 000000000000..f0df1a08cec3
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_ES2FileFormat_Source_PnmUtil_FKPnmUtil.cpp
@@ -0,0 +1,11 @@
+--- src/ES2FileFormat/Source/PnmUtil/FKPnmUtil.cpp.orig 2022-02-17 18:20:53 UTC
++++ src/ES2FileFormat/Source/PnmUtil/FKPnmUtil.cpp
+@@ -137,7 +137,7 @@ BOOL CFKPnmEncodeUtil::StartEncodingWithData(IFKDestin
+ ES_ErrorBailWithAction(m_cData.AllocBuffer(nHeaderSize + 4), BAIL,
+ this, eError = kFKMemError, ES_STRING("memory alloc error"));
+ }
+- memcpy(m_cData.GetBufferPtr(), m_pnmHeader.c_str(), sizeof(m_pnmHeader.c_str()));
++ memcpy(m_cData.GetBufferPtr(), m_pnmHeader.c_str(), strlen(m_pnmHeader.c_str())+1);
+ m_rowBytes = ES_IMAGE_INFO::GetESImageBytesPerRow(imageInfo);
+ pDest->NotifyDidBeginReceivingForImageInfo(m_strImageJson.c_str());
+ if (pDest->GetFKDestinationType() == kFKDestinationTypeEmpty){
diff --git a/graphics/epsonscan2/files/patch-src_Platform.cpp b/graphics/epsonscan2/files/patch-src_Platform.cpp
new file mode 100644
index 000000000000..0e2bdc96e935
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_Platform.cpp
@@ -0,0 +1,69 @@
+--- src/Platform.cpp.orig 2021-11-25 00:56:59 UTC
++++ src/Platform.cpp
+@@ -22,6 +22,10 @@
+ #include "Platform.h"
+ #include "CommonUtility/utils/PathUtils.h"
+ #include <fstream>
++#ifdef __FreeBSD__
++#include <pthread_np.h>
++#define pthread_tryjoin_np(tid,st) pthread_peekjoin_np(tid,st)
++#endif
+ #ifndef WIN32
+ errno_t fopen_s(
+ FILE** pFile,
+@@ -105,7 +109,7 @@ DWORD WaitForSingleObject(
+ case THREAD_HANDLE_ID:
+ {
+ LPTHREAD_HANDLE hThreadHandle = (LPTHREAD_HANDLE) hHandle;
+- if( (int)NULL == hThreadHandle->threadID ) {
++ if( 0 == hThreadHandle->threadID ) {
+ return WAIT_OBJECT_0;
+ }
+ int thread_status = 0;
+@@ -121,7 +125,7 @@ DWORD WaitForSingleObject(
+ {
+ intptr_t lRet = (intptr_t)pStatus;
+ hThreadHandle->dwThreadStatus = (DWORD)lRet;
+- hThreadHandle->threadID = (int)NULL;
++ hThreadHandle->threadID = 0;
+ }
+ }
+ while (EBUSY == thread_status);
+@@ -180,7 +184,7 @@ BOOL CloseHandle(HANDLE hObject)
+ WaitForSingleObject(hObject, INFINITE);
+ LPTHREAD_HANDLE pThreadHandle = (LPTHREAD_HANDLE)hObject;
+ pThreadHandle->dwThreadStatus = 0;
+- pThreadHandle->threadID = (int)NULL;
++ pThreadHandle->threadID = 0;
+ #endif
+ }
+ break;
+@@ -347,7 +351,11 @@ DWORD GetModuleFileName(LPTSTR lpFilename, DWORD buf_s
+ {
+ DWORD dwRet = 0;
+ memset(lpFilename, 0, buf_size);
++#ifdef __FreeBSD__
++ readlink( "/proc/curproc/file", lpFilename, buf_size - 1 );
++#else
+ readlink( "/proc/self/exe", lpFilename, buf_size - 1 );
++#endif
+ dwRet = (DWORD)strlen(lpFilename);
+ return dwRet;
+ }
+@@ -397,14 +405,14 @@ errno_t strcat_s(
+ }
+ if (NULL == strSource)
+ {
+- strDestination[0] = (char)NULL;
++ strDestination[0] = '\0';
+ return EINVAL;
+ }
+ if ( (0 == numberOfElements)
+ || (numberOfElements <= (strlen(strDestination) + strlen(strSource)))
+ )
+ {
+- strDestination[0] = (char)NULL;
++ strDestination[0] = '\0';
+ return ERANGE;
+ }
+ strcat(strDestination, strSource);
diff --git a/graphics/epsonscan2/files/patch-src_SaneWrapper_backend.cpp b/graphics/epsonscan2/files/patch-src_SaneWrapper_backend.cpp
new file mode 100644
index 000000000000..fdcae3361eca
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_SaneWrapper_backend.cpp
@@ -0,0 +1,37 @@
+--- src/SaneWrapper/backend.cpp.orig 2021-11-25 00:56:59 UTC
++++ src/SaneWrapper/backend.cpp
+@@ -220,7 +220,8 @@ sane_open (SANE_String_Const device_name, SANE_Handle
+ {
+ return SANE_STATUS_INVAL;
+ }
+- ((Epson_Scanner*)handle)->out_buffer = NULL;
++ // XXX next causes a SEGV on FreeBSD because out_buffer is not yet allocated
++ //((Epson_Scanner*)handle)->out_buffer = NULL;
+ if (!epson_backend->sane_dev)
+ {
+ const SANE_Device **dev = NULL;
+@@ -355,6 +356,7 @@ sane_get_parameters (SANE_Handle handle, SANE_Paramete
+ unsigned int nSize = 100;
+ unsigned char* tmp_buf = (unsigned char*)::malloc(nSize);
+ SDIChar* output_path;
++ SDIError outError = kSDIErrorNone;
+ if(tmp_buf){
+ memset(tmp_buf, 0, nSize);
+ }else {
+@@ -363,7 +365,6 @@ sane_get_parameters (SANE_Handle handle, SANE_Paramete
+ goto ERROR_2;
+ }
+ output_path = (SDIChar*)tmp_buf;
+- SDIError outError;
+ s->hw->sv->SDIImage_CreatePtr_(&s->outImageData);
+ s->hw->sv->SDIScannerDriver_GetNextTransferEventPtr_(s->hw->sv->driver,
+ &outType,
+@@ -442,7 +443,7 @@ sane_get_parameters (SANE_Handle handle, SANE_Paramete
+ }
+ }else {
+ status = SANE_STATUS_INVAL;
+- fclose(fp);
++ //fclose(fp); // shouldn't try to close file that isn't open!
+ goto ERROR;
+ }
+ if(s->hw->sv->device_data.ColorType.select == kSDIColorTypeMono1){
diff --git a/graphics/epsonscan2/files/patch-src_SaneWrapper_defines.h b/graphics/epsonscan2/files/patch-src_SaneWrapper_defines.h
new file mode 100644
index 000000000000..cedff91f63d6
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_SaneWrapper_defines.h
@@ -0,0 +1,33 @@
+--- src/SaneWrapper/defines.h.orig 2021-11-25 00:56:59 UTC
++++ src/SaneWrapper/defines.h
+@@ -36,14 +36,30 @@ typedef enum {
+ } bool;
+ #endif
+ #include <stdlib.h>
++#undef _assert
+ #define _assert(type,condition) \
+ if (!(condition)) \
+ { \
+ exit (EXIT_FAILURE); \
+ }
++#ifndef __FreeBSD__
+ #define require(condition) _assert ("require", condition)
+ #define promise(condition) _assert ("promise", condition)
++#else
++#define require(condition) \
++ if (!(condition)) \
++ { \
++ exit (EXIT_FAILURE); \
++ }
++#define promise(condition) \
++ if (!(condition)) \
++ { \
++ exit (EXIT_FAILURE); \
++ }
++#endif
++#ifndef __FreeBSD__
+ #include <alloca.h>
++#endif
+ #include <stdlib.h>
+ #define t_alloca(sz,t) ((t *) alloca ((sz) * sizeof (t)))
+ #define t_calloc(sz,t) ((t *) calloc ((sz) , sizeof (t)))
diff --git a/graphics/epsonscan2/files/patch-src_SaneWrapper_epsonscan.cpp b/graphics/epsonscan2/files/patch-src_SaneWrapper_epsonscan.cpp
new file mode 100644
index 000000000000..9b1aa22fa616
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_SaneWrapper_epsonscan.cpp
@@ -0,0 +1,29 @@
+--- src/SaneWrapper/epsonscan.cpp.orig 2021-11-25 00:56:59 UTC
++++ src/SaneWrapper/epsonscan.cpp
+@@ -859,7 +859,7 @@ sane_start (SANE_Handle handle)
+ select_current_doc_size(s, s->hw->sv->device_data);
+ handle_scan_area (s, (char *) s->hw->cur_doc_size);
+ }
+- if(sane_app_compatible("simple-scan")){
++ if(sane_app_compatible((SANE_String)"simple-scan")){
+ double max_x = s->hw->sv->device_data.ScanArea.MaxScanAreaWidth.select / 100.0 * s->hw->sv->device_data.Resolution.select;
+ double max_y = s->hw->sv->device_data.ScanArea.MaxScanAreaHeight.select / 100.0 * s->hw->sv->device_data.Resolution.select;
+ if(max_x <= s->hw->sv->device_data.ScanArea.ScanAreaWidth.select &&
+@@ -1265,7 +1265,7 @@ set_epson_value (Epson_Scanner *s, SANE_Int option, vo
+ gamma_range.min) != SANE_STATUS_GOOD){
+ return SANE_STATUS_INVAL;
+ }
+- log_call("gamma = %d", value);
++ log_call("gamma = %d", *((SANE_Word *)value));
+ handle_gamma (s, (SANE_UNFIX(*((SANE_Int *) value))*10));
+ break;
+ case OPT_MODE:
+@@ -1285,7 +1285,7 @@ set_epson_value (Epson_Scanner *s, SANE_Int option, vo
+ brightness_range.min) != SANE_STATUS_GOOD){
+ return SANE_STATUS_INVAL;
+ }
+- log_call("brightne = %d", value);
++ log_call("brightne = %d", *((SANE_Word *)value));
+ handle_brightness (s, *((SANE_Word *) value));
+ break;
+ case OPT_CONTRAST:
diff --git a/graphics/epsonscan2/files/patch-src_ScanSDK_Src_SDK_supervisor.cpp b/graphics/epsonscan2/files/patch-src_ScanSDK_Src_SDK_supervisor.cpp
new file mode 100644
index 000000000000..0140eaa7e40f
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_ScanSDK_Src_SDK_supervisor.cpp
@@ -0,0 +1,29 @@
+--- src/ScanSDK/Src/SDK/supervisor.cpp.orig 2021-11-25 00:56:59 UTC
++++ src/ScanSDK/Src/SDK/supervisor.cpp
+@@ -282,7 +282,7 @@ bool Supervisor::DeviceInfoResolve(SDIDeviceInfo* devI
+ }
+ bool Supervisor::CheckScanningError(SDIError outError)
+ {
+- if(outEventType == 10 ){
++ if(outEventType == (SDITransferEventType)10 ){
+ if(outError != kSDIErrorNone){
+ m_LastError = outError;
+ return false;
+@@ -2541,7 +2541,7 @@ bool Supervisor::Set_All_Value(void)
+ }
+ {
+ SDIInt current;
+- if(device_data.ScanArea.FixedSize == USER_DEFINE){
++ if(device_data.ScanArea.FixedSize == (DocumentSize)USER_DEFINE){
+ current = device_data.ScanArea.PaperEndDetection.select;
+ }else {
+ current = false;
+@@ -3487,7 +3487,7 @@ bool Supervisor::Set_Exclusion_Value(void)
+ }
+ {
+ SDIInt current;
+- if(device_data.ScanArea.FixedSize == USER_DEFINE){
++ if(device_data.ScanArea.FixedSize == (DocumentSize)USER_DEFINE){
+ current = device_data.ScanArea.PaperEndDetection.select;
+ }else {
+ current = false;
diff --git a/graphics/epsonscan2/files/patch-src_Standalone_CMakeLists.txt b/graphics/epsonscan2/files/patch-src_Standalone_CMakeLists.txt
new file mode 100644
index 000000000000..f8c0fea55f1f
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_Standalone_CMakeLists.txt
@@ -0,0 +1,9 @@
+--- src/Standalone/CMakeLists.txt.orig 2021-11-25 00:56:54 UTC
++++ src/Standalone/CMakeLists.txt
+@@ -142,5 +142,5 @@ target_link_libraries(es2standalone ${QT_LIBRARIES}
+ )
+
+ QT5_USE_MODULES(es2standalone Widgets)
+-install(TARGETS es2standalone DESTINATION "${EPSON_INSTALL_ROOT}/usr/bin")
++install(TARGETS es2standalone DESTINATION "${EPSON_INSTALL_ROOT}${CMAKE_INSTALL_PREFIX}/bin")
+
diff --git a/graphics/epsonscan2/files/patch-src_Standalone_addeditpagedialog.cpp b/graphics/epsonscan2/files/patch-src_Standalone_addeditpagedialog.cpp
new file mode 100644
index 000000000000..4aebb2aed4d4
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_Standalone_addeditpagedialog.cpp
@@ -0,0 +1,8 @@
+--- src/Standalone/addeditpagedialog.cpp.orig 2021-11-25 00:56:56 UTC
++++ src/Standalone/addeditpagedialog.cpp
+@@ -89,4 +89,5 @@ bool addeditpageDialog::EditDialog(std::list<imageEdit
+ std::list<imageEditInfo> temp_list = {};
+ m_jumpImageEditDialog->getInfoList(&temp_list);
+ *result_list = temp_list;
++ return true;
+ }
diff --git a/graphics/epsonscan2/files/patch-src_Standalone_commandlinemode.cpp b/graphics/epsonscan2/files/patch-src_Standalone_commandlinemode.cpp
new file mode 100644
index 000000000000..5d325fb07e7b
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_Standalone_commandlinemode.cpp
@@ -0,0 +1,20 @@
+--- src/Standalone/commandlinemode.cpp.orig 2021-11-25 00:56:56 UTC
++++ src/Standalone/commandlinemode.cpp
+@@ -538,7 +538,7 @@ void CommandLineMode::ErrorMessage(SDIError outError)
+ }else if(outError == kSDIErrorPaperProtect){
+ error_message = "ERROR : A paper jam has occurred. See the documentation for instructions on removing your originals.";
+ }else if(outError == kSDIErrorDeviceInBusy){
+- error_message = "kSDIErrorDeviceInBusy";
++ error_message = "ERROR : kSDIErrorDeviceInBusy";
+ }else if(outError == kSDIErrorCoverOpen){
+ error_message = "ERROR : ADF or ADF cover is open. Close it and reload the originals.";
+ }else if(outError == kSDIErrorTrayClose){
+@@ -559,6 +559,8 @@ void CommandLineMode::ErrorMessage(SDIError outError)
+ error_message = "ERROR : Device is not found...";
+ }else if(outError == kSDIErrorUserAuthEnabled){
+ error_message = "ERROR : Scanning from Epson Scan 2 is not allowed because the authentication function for the scanner is enabled.";
++ }else if(outError == kSDIErrorInvalidResponse){
++ error_message = "ERROR : kSDIErrorInvalidResponse";
+ }else {
+ error_message = "ERROR : An unexpected error occurred. Epson Scan 2 will close.";
+ }
diff --git a/graphics/epsonscan2/files/patch-src_Standalone_custommessagebox.cpp b/graphics/epsonscan2/files/patch-src_Standalone_custommessagebox.cpp
new file mode 100644
index 000000000000..f16ca1c876b6
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_Standalone_custommessagebox.cpp
@@ -0,0 +1,11 @@
+--- src/Standalone/custommessagebox.cpp.orig 2021-11-25 00:56:56 UTC
++++ src/Standalone/custommessagebox.cpp
+@@ -153,7 +153,7 @@ void CustomMessageBox::ErrorMessageBox(Supervisor* sv,
+ type = Critical;
+ error_message = TranslationString::GetString().translation_str.E_ENV_001;
+ sv->scanning_status = ERROR;
+- }else if(sv->m_LastError == kSDITransferEventTypeCancel){
++ }else if(sv->m_LastError == (SDIError)kSDITransferEventTypeCancel){
+ return;
+ }else if(sv->m_LastError == kSDIErrorDataSend){
+ type = Critical;
diff --git a/graphics/epsonscan2/files/patch-src_Standalone_detectionareamindoublespinbox.cpp b/graphics/epsonscan2/files/patch-src_Standalone_detectionareamindoublespinbox.cpp
new file mode 100644
index 000000000000..278454fffec4
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_Standalone_detectionareamindoublespinbox.cpp
@@ -0,0 +1,11 @@
+--- src/Standalone/detectionareamindoublespinbox.cpp.orig 2021-11-25 00:56:56 UTC
++++ src/Standalone/detectionareamindoublespinbox.cpp
+@@ -100,7 +100,7 @@ bool DetectionAreaMinDoubleSpinBox::isUnit_inchi(void)
+ Units units = config.config_para.units;
+ if(units == unit_inchi){
+ return true;
+- }else if(units == unit_mm){
++ }else{
+ return false;
+ }
+ }
diff --git a/graphics/epsonscan2/files/patch-src_Standalone_deviceconnectiondialog.cpp b/graphics/epsonscan2/files/patch-src_Standalone_deviceconnectiondialog.cpp
new file mode 100644
index 000000000000..0f474b0b3ea5
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_Standalone_deviceconnectiondialog.cpp
@@ -0,0 +1,28 @@
+--- src/Standalone/deviceconnectiondialog.cpp.orig 2022-02-17 18:43:44 UTC
++++ src/Standalone/deviceconnectiondialog.cpp
+@@ -110,11 +110,10 @@ void DetectAlertGlassDirty(SDIScannerDriver* driver, S
+ #endif
+ QString arg2(TranslationString::GetString().translation_str.A_UI_006);
+ QString arg3(TranslationString::GetString().translation_str.VERSION_003);
+- QString executable = exeapp + " " + arg1 + " " + "\"" + arg2 + "\"" + " " + arg3 + " " + "A_UI_006" + " " + std::to_string( 1).c_str();
+ dir_name = dir_name + "A_UI_006";
+ if(!tmpdir.exists(dir_name.c_str())){
+ if(!tmpdir.exists(dir_name.c_str())) tmpdir.mkdir(dir_name.c_str());
+- if(!QProcess::startDetached(executable)){
++ if(!QProcess::startDetached(exeapp, {arg1, arg2, arg3, "A_UI_006", std::to_string( 1).c_str()})){
+ qCritical() << "Cannot start program";
+ }
+ }
+@@ -129,11 +128,10 @@ void DetectAlertGlassDirty(SDIScannerDriver* driver, S
+ #endif
+ QString arg2(TranslationString::GetString().translation_str.A_UNIT_008);
+ QString arg3(TranslationString::GetString().translation_str.VERSION_003);
+- QString executable = exeapp + " " + arg1 + " " + "\"" + arg2 + "\"" + " " + arg3 + " " + "A_UNIT_008" + " " + std::to_string( 2).c_str();
+ dir_name = dir_name + "A_UNIT_008";
+ if(!tmpdir.exists(dir_name.c_str())){
+ if(!tmpdir.exists(dir_name.c_str())) tmpdir.mkdir(dir_name.c_str());
+- if(!QProcess::startDetached(executable)){
++ if(!QProcess::startDetached(exeapp, {arg1, arg2, arg3, "A_UNIT_008", std::to_string( 2).c_str()})){
+ qCritical() << "Cannot start program";
+ }
+ }
diff --git a/graphics/epsonscan2/files/patch-src_Standalone_documentsize.cpp b/graphics/epsonscan2/files/patch-src_Standalone_documentsize.cpp
new file mode 100644
index 000000000000..e52b6bf88930
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_Standalone_documentsize.cpp
@@ -0,0 +1,23 @@
+--- src/Standalone/documentsize.cpp.orig 2021-11-25 00:56:55 UTC
++++ src/Standalone/documentsize.cpp
+@@ -333,9 +333,9 @@ void Document_Size::CreateComboBoxToolTip(DocumentSize
+ message = "";
+ }else if(current_item == Auto_Detect_long){
+ message = "";
+- }else if(current_item == OPTIONS){
++ }else if(current_item == (DocumentSize)OPTIONS){
+ message = "";
+- }else if(current_item == USER_DEFINE){
++ }else if(current_item == (DocumentSize)USER_DEFINE){
+ create_custom_size(&message);
+ }else if(current_item == Maximum_Size){
+ create_maximum_size(&message, scan_area_para);
+@@ -774,7 +774,7 @@ void Document_Size::StandardSizeToPixel()
+ }else if(current_item == Maximum_Size){
+ current_pixel_x = max_pixel_x / 100 * this->base_resolution;
+ current_pixel_y = max_pixel_y / 100 * this->base_resolution;
+- }else if(current_item == USER_DEFINE){
++ }else if(current_item == (DocumentSize)USER_DEFINE){
+ Configuration& config = Configuration::GetConfiguration();
+ Units units = config.config_para.units;
+ if(units == unit_inchi){
diff --git a/graphics/epsonscan2/files/patch-src_Standalone_foldercomb.cpp b/graphics/epsonscan2/files/patch-src_Standalone_foldercomb.cpp
new file mode 100644
index 000000000000..9ee9f57add99
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_Standalone_foldercomb.cpp
@@ -0,0 +1,20 @@
+--- src/Standalone/foldercomb.cpp.orig 2021-11-25 00:56:57 UTC
++++ src/Standalone/foldercomb.cpp
+@@ -31,7 +31,7 @@ void FolderComb::initialize(SCANPARA dev_data, CustomM
+ changed = true;
+ current_item = (Folder)dev_data.Folder;
+ user_define_path = dev_data.UserDefinePath.c_str();
+- if(current_item == USER_DEFINE){
++ if(current_item == (Folder)USER_DEFINE){
+ QString qStr = user_define_path;
+ this->setToolTip(qStr);
+ }
+@@ -117,7 +117,7 @@ void FolderComb::item_event(int value, SCANPARA* path_
+ this->setToolTip(qStr);
+ }else if(select_item == OPTIONS){
+ this->item_event_options();
+- if(current_item == USER_DEFINE){
++ if(current_item == (Folder)USER_DEFINE){
+ qStr = user_define_path;
+ path_data->UserDefinePath = (user_define_path.toLocal8Bit()).constData();
+ select_item = old_select;
diff --git a/graphics/epsonscan2/files/patch-src_Standalone_imageformatsettingscombobox.cpp b/graphics/epsonscan2/files/patch-src_Standalone_imageformatsettingscombobox.cpp
new file mode 100644
index 000000000000..59a9bc0b4514
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_Standalone_imageformatsettingscombobox.cpp
@@ -0,0 +1,11 @@
+--- src/Standalone/imageformatsettingscombobox.cpp.orig 2021-11-25 00:56:56 UTC
++++ src/Standalone/imageformatsettingscombobox.cpp
+@@ -68,7 +68,7 @@ void ImageFormatSettingsCombobox::add_item(ImageFormat
+ }else if(img_format_list[i] == ImageFormatColorJpegMonoRaw){
+ this->insertItem(i, TranslationString::GetString().translation_str.FILESAVESETTING_007, ImageFormatColorJpegMonoRaw);
+ i++;
+- }else if(img_format_list[i] == OPTIONS){
++ }else if(img_format_list[i] == (ImageFormat)OPTIONS){
+ break;
+ }
+ }
diff --git a/graphics/epsonscan2/files/patch-src_Standalone_imageformatsettingsdialog.ui b/graphics/epsonscan2/files/patch-src_Standalone_imageformatsettingsdialog.ui
new file mode 100644
index 000000000000..e236f749d7c3
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_Standalone_imageformatsettingsdialog.ui
@@ -0,0 +1,38 @@
+--- src/Standalone/imageformatsettingsdialog.ui.orig 2022-02-17 18:27:50 UTC
++++ src/Standalone/imageformatsettingsdialog.ui
+@@ -112,7 +112,7 @@
+ <string>IMAGEFORMATOPTION_JPG_006</string>
+ </property>
+ </widget>
+- <widget class="QWidget" name="layoutWidget">
++ <widget class="QWidget" name="vert_layoutWidget">
+ <property name="geometry">
+ <rect>
+ <x>220</x>
+@@ -160,7 +160,7 @@
+ <string notr="true">:</string>
+ </property>
+ </widget>
+- <widget class="QWidget" name="layoutWidget">
++ <widget class="QWidget" name="horiz_layoutWidget">
+ <property name="geometry">
+ <rect>
+ <x>11</x>
+@@ -345,7 +345,7 @@
+ <number>999</number>
+ </property>
+ </widget>
+- <widget class="QWidget" name="layoutWidget">
++ <widget class="QWidget" name="vert_layoutWidget_2">
+ <property name="geometry">
+ <rect>
+ <x>150</x>
+@@ -422,7 +422,7 @@
+ <string>IMAGEFORMATOPTION_JPG_006</string>
+ </property>
+ </widget>
+- <widget class="QWidget" name="layoutWidget_2">
++ <widget class="QWidget" name="horiz_layoutWidget_2">
+ <property name="geometry">
+ <rect>
+ <x>20</x>
diff --git a/graphics/epsonscan2/files/patch-src_Standalone_initdeviceselectcombobox.cpp b/graphics/epsonscan2/files/patch-src_Standalone_initdeviceselectcombobox.cpp
new file mode 100644
index 000000000000..11d277951e30
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_Standalone_initdeviceselectcombobox.cpp
@@ -0,0 +1,11 @@
+--- src/Standalone/initdeviceselectcombobox.cpp.orig 2022-01-21 22:27:00 UTC
++++ src/Standalone/initdeviceselectcombobox.cpp
+@@ -80,7 +80,7 @@ void InitDeviceSelectCombobox::add_manu_ip()
+ int i = this->count();
+ int dev_index = DeviceList::device_list.size();
+ while(i <= list_size){
+- this->CreateDisplayName("Network Scanner", device->ipAddress, i, dev_index);
++ this->CreateDisplayName((char *)"Network Scanner", device->ipAddress, i, dev_index);
+ ++device;
+ i++;
+ dev_index++;
diff --git a/graphics/epsonscan2/files/patch-src_Standalone_lengthdoublespinbox.cpp b/graphics/epsonscan2/files/patch-src_Standalone_lengthdoublespinbox.cpp
new file mode 100644
index 000000000000..47345249feef
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_Standalone_lengthdoublespinbox.cpp
@@ -0,0 +1,11 @@
+--- src/Standalone/lengthdoublespinbox.cpp.orig 2021-11-25 00:56:57 UTC
++++ src/Standalone/lengthdoublespinbox.cpp
+@@ -127,7 +127,7 @@ bool LengthDoubleSpinBox::isUnit_inchi(void)
+ Units units = config.config_para.units;
+ if(units == unit_inchi){
+ return true;
+- }else if(units == unit_mm){
++ }else{
+ return false;
+ }
+ }
diff --git a/graphics/epsonscan2/files/patch-src_Standalone_mainwindow.cpp b/graphics/epsonscan2/files/patch-src_Standalone_mainwindow.cpp
new file mode 100644
index 000000000000..0c7439e62e31
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_Standalone_mainwindow.cpp
@@ -0,0 +1,38 @@
+--- src/Standalone/mainwindow.cpp.orig 2021-11-25 00:56:57 UTC
++++ src/Standalone/mainwindow.cpp
+@@ -682,7 +682,7 @@ bool MainWindow::SelectionRestrictions(int value){
+ limit_resolution = 300;
+ }
+ if(obj == ui->Resolution_comb){
+- if(ui->Document_size_comb->current_item == USER_DEFINE){
++ if(ui->Document_size_comb->current_item == (DocumentSize)USER_DEFINE){
+ return UserDefineSizeRestrictions();
+ }else if(ui->Document_size_comb->current_item == Auto_Detect_long){
+ if(ui->Resolution_comb->currentText().toInt() > limit_resolution){
+@@ -1234,7 +1234,7 @@ bool MainWindow::CheckAutoFunctionalUnit(bool isPrevie
+ if(this->m_viewPreviewWindow){
+ if(isPreview && sv->device_data.FunctionalUnit_Auto){
+ if(sv->GetPaperLoadedStatus()){
+- if(sv->m_Preview_FunctionalUnit == kSDIFunctionalUnitDocumentFeeder){
++ if(sv->m_Preview_FunctionalUnit == (FunctionalUnit)kSDIFunctionalUnitDocumentFeeder){
+ sv->device_data.FunctionalUnit.select = kSDIFunctionalUnitDocumentFeeder;
+ }else {
+ if(m_messageBox->CreateSelectableMessageBox(TranslationString::GetString().translation_str.C_UI_005, Warning)){
+@@ -1247,7 +1247,7 @@ bool MainWindow::CheckAutoFunctionalUnit(bool isPrevie
+ }
+ }
+ }else {
+- if(sv->m_Preview_FunctionalUnit == kSDIFunctionalUnitFlatbed){
++ if(sv->m_Preview_FunctionalUnit == (FunctionalUnit)kSDIFunctionalUnitFlatbed){
+ sv->device_data.FunctionalUnit.select = kSDIFunctionalUnitFlatbed;
+ }else {
+ if(m_messageBox->CreateSelectableMessageBox(TranslationString::GetString().translation_str.C_UI_005, Warning)){
+@@ -1332,7 +1332,7 @@ bool MainWindow::CheckBeforeScan()
+ }
+ }
+ if(!sv->device_data.DNShow_LongPaperWarning_dialog){
+- if(ui->Document_size_comb->current_item == USER_DEFINE){
++ if(ui->Document_size_comb->current_item == (DocumentSize)USER_DEFINE){
+ if(this->CheckLongPaperMode()){
+ sv->device_data.DNShow_LongPaperWarning_dialog = m_messageBox->CreateMessageBox(TranslationString::GetString().translation_str.A_UI_005, TranslationString::GetString().translation_str.VERSION_003, Information, true);
+ }
diff --git a/graphics/epsonscan2/files/patch-src_Standalone_mainwindow.ui b/graphics/epsonscan2/files/patch-src_Standalone_mainwindow.ui
new file mode 100644
index 000000000000..099d85cee591
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_Standalone_mainwindow.ui
@@ -0,0 +1,38 @@
+--- src/Standalone/mainwindow.ui.orig 2022-02-17 18:30:36 UTC
++++ src/Standalone/mainwindow.ui
+@@ -1653,7 +1653,7 @@
+ <number>0</number>
+ </property>
+ <widget class="QWidget" name="page">
+- <widget class="QWidget" name="layoutWidget">
++ <widget class="QWidget" name="horiz_layoutWidget_3">
+ <property name="geometry">
+ <rect>
+ <x>13</x>
+@@ -1719,7 +1719,7 @@
+ </widget>
+ </widget>
+ <widget class="QWidget" name="page_2">
+- <widget class="QWidget" name="layoutWidget">
++ <widget class="QWidget" name="horiz_layoutWidget_1">
+ <property name="geometry">
+ <rect>
+ <x>11</x>
+@@ -1786,7 +1786,7 @@
+ </item>
+ </layout>
+ </widget>
+- <widget class="QWidget" name="layoutWidget">
++ <widget class="QWidget" name="horiz_layoutWidget_2">
+ <property name="geometry">
+ <rect>
+ <x>10</x>
+@@ -1856,7 +1856,7 @@
+ </item>
+ </layout>
+ </widget>
+- <widget class="QWidget" name="layoutWidget">
++ <widget class="QWidget" name="horiz_layoutWidget_4">
+ <property name="geometry">
+ <rect>
+ <x>10</x>
diff --git a/graphics/epsonscan2/files/patch-src_Standalone_networkdeviceselectdialog.cpp b/graphics/epsonscan2/files/patch-src_Standalone_networkdeviceselectdialog.cpp
new file mode 100644
index 000000000000..4c116c4c2c24
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_Standalone_networkdeviceselectdialog.cpp
@@ -0,0 +1,11 @@
+--- src/Standalone/networkdeviceselectdialog.cpp.orig 2021-11-25 00:56:56 UTC
++++ src/Standalone/networkdeviceselectdialog.cpp
+@@ -183,7 +183,7 @@ bool NetworkDeviceSelectDialog::UpdateNetworkSettingFi
+ ES_Trace_Log(this, "Exist network setting file");
+ #else
+ ES_Trace_Log(this, "Exist file : .epsonscan2/Network/epsonscan2.conf");
+-#endif*/
++#endif
+ std::string work_path = ES_CMN_FUNCS::PATH::ES_GetWorkTempPath();
+ QDir tmpdir("/tmp");
+ if (!tmpdir.exists(work_path.c_str())) tmpdir.mkdir(work_path.c_str());
diff --git a/graphics/epsonscan2/files/patch-src_Standalone_rotateimage.cpp b/graphics/epsonscan2/files/patch-src_Standalone_rotateimage.cpp
new file mode 100644
index 000000000000..b5d946dea87f
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_Standalone_rotateimage.cpp
@@ -0,0 +1,47 @@
+--- src/Standalone/rotateimage.cpp.orig 2021-11-25 00:56:56 UTC
++++ src/Standalone/rotateimage.cpp
+@@ -28,34 +28,34 @@ RotateImage::RotateImage(ColorType type)
+ void RotateImage::Rotate(std::string image_path, int angle, ImageFormat format, bool multiTiffEnabled)
+ {
+ std::string file_format;
+- if (format == kSDIImageFormatJPEG)
++ if (format == (ImageFormat)kSDIImageFormatJPEG)
+ {
+ file_format = "JPG";
+- }else if (format == ImageFormatColorJpegMonoRaw)
++ }else if (format == (ImageFormat)ImageFormatColorJpegMonoRaw)
+ {
+ if(m_type == ColorTypeMono1){
+ file_format = "PBM";
+ }else {
+ file_format = "JPG";
+ }
+- }else if (format == kSDIImageFormatPNM && !multiTiffEnabled)
++ }else if (format == (ImageFormat)kSDIImageFormatPNM && !multiTiffEnabled)
+ {
+ file_format = "PPM";
+- }else if (format == kSDIImageFormatTIFF)
++ }else if (format == (ImageFormat)kSDIImageFormatTIFF)
+ {
+ file_format = "TIFF";
+- }else if (format == kSDIImageFormatPNG)
++ }else if (format == (ImageFormat)kSDIImageFormatPNG)
+ {
+ file_format = "PNG";
+- }else if (format == kSDIImageFormatPNM && multiTiffEnabled)
++ }else if (format == (ImageFormat)kSDIImageFormatPNM && multiTiffEnabled)
+ {
+ file_format = "PPM";
+ }
+ QImage srcImg(image_path.c_str());
+ QPoint center = srcImg.rect().center();
+- QMatrix matrix;
+- matrix.translate(center.x(), center.y());
+- matrix.rotate(angle);
+- QImage dstImg = srcImg.transformed(matrix);
++ QTransform transform;
++ transform.translate(center.x(), center.y());
++ transform.rotate(angle);
++ QImage dstImg = srcImg.transformed(transform);
+ dstImg.save(QString::fromStdString(image_path), file_format.c_str(), -1);
+ }
diff --git a/graphics/epsonscan2/files/patch-src_Standalone_supervisor.cpp b/graphics/epsonscan2/files/patch-src_Standalone_supervisor.cpp
new file mode 100644
index 000000000000..9e5450e47478
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_Standalone_supervisor.cpp
@@ -0,0 +1,29 @@
+--- src/Standalone/supervisor.cpp.orig 2021-11-25 00:56:57 UTC
++++ src/Standalone/supervisor.cpp
+@@ -270,7 +270,7 @@ bool Supervisor::DeviceInfoResolve(SDIDeviceInfo* devI
+ }
+ bool Supervisor::CheckScanningError(SDIError outError)
+ {
+- if(outEventType == 10 ){
++ if(outEventType == (SDITransferEventType)10 ){
+ if(outError != kSDIErrorNone){
+ m_LastError = outError;
+ return false;
+@@ -2632,7 +2632,7 @@ bool Supervisor::Set_All_Value(void)
+ }
+ {
+ SDIInt current;
+- if(device_data.ScanArea.FixedSize == USER_DEFINE){
++ if(device_data.ScanArea.FixedSize == (DocumentSize)USER_DEFINE){
+ current = device_data.ScanArea.PaperEndDetection.select;
+ }else {
+ current = false;
+@@ -3712,7 +3712,7 @@ bool Supervisor::Set_Exclusion_Value(void)
+ }
+ {
+ SDIInt current;
+- if(device_data.ScanArea.FixedSize == USER_DEFINE){
++ if(device_data.ScanArea.FixedSize == (DocumentSize)USER_DEFINE){
+ current = device_data.ScanArea.PaperEndDetection.select;
+ }else {
+ current = false;
diff --git a/graphics/epsonscan2/files/patch-src_Standalone_widthdoublespinbox.cpp b/graphics/epsonscan2/files/patch-src_Standalone_widthdoublespinbox.cpp
new file mode 100644
index 000000000000..b161bf14beee
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-src_Standalone_widthdoublespinbox.cpp
@@ -0,0 +1,11 @@
+--- src/Standalone/widthdoublespinbox.cpp.orig 2021-11-25 00:56:56 UTC
++++ src/Standalone/widthdoublespinbox.cpp
+@@ -116,7 +116,7 @@ bool WidthDoubleSpinBox::isUnit_inchi(void)
+ Units units = config.config_para.units;
+ if(units == unit_inchi){
+ return true;
+- }else if(units == unit_mm){
++ }else{
+ return false;
+ }
+ }
diff --git a/graphics/epsonscan2/files/patch-thirdparty_zlib_gzread.c b/graphics/epsonscan2/files/patch-thirdparty_zlib_gzread.c
new file mode 100644
index 000000000000..850344020819
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-thirdparty_zlib_gzread.c
@@ -0,0 +1,10 @@
+--- thirdparty/zlib/gzread.c.orig 2021-11-25 00:56:54 UTC
++++ thirdparty/zlib/gzread.c
+@@ -4,6 +4,7 @@
+ */
+
+ #include "gzguts.h"
++#include <unistd.h>
+
+ /* Local functions */
+ local int gz_load OF((gz_statep, unsigned char *, unsigned, unsigned *));
diff --git a/graphics/epsonscan2/files/patch-thirdparty_zlib_gzwrite.c b/graphics/epsonscan2/files/patch-thirdparty_zlib_gzwrite.c
new file mode 100644
index 000000000000..66ce0365b2e1
--- /dev/null
+++ b/graphics/epsonscan2/files/patch-thirdparty_zlib_gzwrite.c
@@ -0,0 +1,10 @@
+--- thirdparty/zlib/gzwrite.c.orig 2021-11-25 00:56:54 UTC
++++ thirdparty/zlib/gzwrite.c
+@@ -4,6 +4,7 @@
+ */
+
+ #include "gzguts.h"
++#include <unistd.h>
+
+ /* Local functions */
+ local int gz_init OF((gz_statep));
diff --git a/graphics/epsonscan2/files/pkg-message.in b/graphics/epsonscan2/files/pkg-message.in
new file mode 100644
index 000000000000..033d2a8f2f4a
--- /dev/null
+++ b/graphics/epsonscan2/files/pkg-message.in
@@ -0,0 +1,17 @@
+[
+{ type: install
+ message: <<EOM
+This port supports scanners connected using a USB cable.
+
+To access a network scanner and also to access some older USB scanner
+models, you must also install the port:
+ graphics/epsonscan2-non-free-plugin
+which provides the Linux binaries needed to access the scanner. The kernel
+Linux emulation modules and emulators/linux_base-c7 ports are also needed
+for the non-free-plugin.
+
+Please read %%PREFIX%%/lib/epsonscan2/Read_me.FreeBSD for further details
+of how to configure and use this software.
+EOM
+}
+]
diff --git a/graphics/epsonscan2/pkg-descr b/graphics/epsonscan2/pkg-descr
new file mode 100644
index 000000000000..ebfe390ce7e2
--- /dev/null
+++ b/graphics/epsonscan2/pkg-descr
@@ -0,0 +1,5 @@
+This is the Seiko/Epson epsonscan2 scanner driver for many modern Epson
+scanners.
+
+WWW: https://support.epson.net/linux/src/scanner/epsonscan2/
+WWW: https://download.ebz.epson.net/man/linux/epsonscan2_e.html
diff --git a/graphics/epsonscan2/pkg-plist b/graphics/epsonscan2/pkg-plist
new file mode 100644
index 000000000000..2705f461d793
--- /dev/null
+++ b/graphics/epsonscan2/pkg-plist
@@ -0,0 +1,1650 @@
+bin/epsonscan2
+etc/sane.d/dll.d/epsonscan2
+lib/epsonscan2/Read_me.FreeBSD
+lib/epsonscan2/Resources/Icons/bmp_mss_image@2x.png
+lib/epsonscan2/Resources/Icons/btn_config@2x.png
+lib/epsonscan2/Resources/Icons/btn_help.png
+lib/epsonscan2/Resources/Icons/btn_marquee_delete@2x.png
+lib/epsonscan2/Resources/Icons/btn_marquee_delete_disabled@2x.png
+lib/epsonscan2/Resources/Icons/btn_multipage_delete@2x.png
+lib/epsonscan2/Resources/Icons/btn_multipage_rotate_left90@2x.png
+lib/epsonscan2/Resources/Icons/btn_multipage_rotate_right90@2x.png
+lib/epsonscan2/Resources/Icons/btn_preview_close.png
+lib/epsonscan2/Resources/Icons/btn_preview_mark_height.png
+lib/epsonscan2/Resources/Icons/btn_preview_mark_width.png
+lib/epsonscan2/Resources/Icons/escan2_app.ico
+lib/epsonscan2/Resources/Icons/update4.png
+lib/epsonscan2/Resources/Models/ES003F/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES003F/JP/ES003F.json
+lib/epsonscan2/Resources/Models/ES003F/WW/ES003F.json
+lib/epsonscan2/Resources/Models/ES0063/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0063/JP/ES0063.json
+lib/epsonscan2/Resources/Models/ES0063/WW/ES0063.json
+lib/epsonscan2/Resources/Models/ES0065/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0065/JP/ES0065.json
+lib/epsonscan2/Resources/Models/ES0065/WW/ES0065.json
+lib/epsonscan2/Resources/Models/ES007C/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES007C/ES007C.dti
+lib/epsonscan2/Resources/Models/ES007C/JP/ES007C.json
+lib/epsonscan2/Resources/Models/ES007C/WW/ES007C.json
+lib/epsonscan2/Resources/Models/ES0086/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0086/ES0086.dti
+lib/epsonscan2/Resources/Models/ES0086/JP/ES0086.json
+lib/epsonscan2/Resources/Models/ES0086/WW/ES0086.json
+lib/epsonscan2/Resources/Models/ES0087/ALL/ES0087.json
+lib/epsonscan2/Resources/Models/ES0087/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0087/ES0087.dti
+lib/epsonscan2/Resources/Models/ES008A/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES008A/ES008A.dti
+lib/epsonscan2/Resources/Models/ES008A/JP/ES008A.json
+lib/epsonscan2/Resources/Models/ES008A/WW/ES008A.json
+lib/epsonscan2/Resources/Models/ES0094/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0094/ES0094.dti
+lib/epsonscan2/Resources/Models/ES0094/JP/ES0094.json
+lib/epsonscan2/Resources/Models/ES0094/WW/ES0094.json
+lib/epsonscan2/Resources/Models/ES0095/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0095/ES0095.dti
+lib/epsonscan2/Resources/Models/ES0095/JP/ES0095.json
+lib/epsonscan2/Resources/Models/ES0095/WW/ES0095.json
+lib/epsonscan2/Resources/Models/ES00A1/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES00A1/ES00A1.dti
+lib/epsonscan2/Resources/Models/ES00A1/JP/ES00A1.json
+lib/epsonscan2/Resources/Models/ES00A1/WW/ES00A1.json
+lib/epsonscan2/Resources/Models/ES00AD/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES00AD/ES00AD.dti
+lib/epsonscan2/Resources/Models/ES00AD/JP/ES00AD.json
+lib/epsonscan2/Resources/Models/ES00AD/WW/ES00AD.json
+lib/epsonscan2/Resources/Models/ES00B5/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES00B5/ES00B5.dti
+lib/epsonscan2/Resources/Models/ES00B5/JP/ES00B5.json
+lib/epsonscan2/Resources/Models/ES00B5/WW/ES00B5.json
+lib/epsonscan2/Resources/Models/ES00B7/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES00B7/ES00B7.dti
+lib/epsonscan2/Resources/Models/ES00B7/JP/ES00B7.json
+lib/epsonscan2/Resources/Models/ES00B7/WW/ES00B7.json
+lib/epsonscan2/Resources/Models/ES00B8/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES00B8/ES00B8.dti
+lib/epsonscan2/Resources/Models/ES00B8/JP/ES00B8.json
+lib/epsonscan2/Resources/Models/ES00B8/WW/ES00B8.json
+lib/epsonscan2/Resources/Models/ES00BC/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES00BC/ES00BC.dti
+lib/epsonscan2/Resources/Models/ES00BC/JP/ES00BC.json
+lib/epsonscan2/Resources/Models/ES00BC/WW/ES00BC.json
+lib/epsonscan2/Resources/Models/ES00BD/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES00BD/ES00BD.dti
+lib/epsonscan2/Resources/Models/ES00BD/JP/ES00BD.json
+lib/epsonscan2/Resources/Models/ES00BD/WW/ES00BD.json
+lib/epsonscan2/Resources/Models/ES00C2/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES00C2/ES00C2.dti
+lib/epsonscan2/Resources/Models/ES00C2/JP/ES00C2.json
+lib/epsonscan2/Resources/Models/ES00C2/WW/ES00C2.json
+lib/epsonscan2/Resources/Models/ES00C3/ALL/ES00C3.json
+lib/epsonscan2/Resources/Models/ES00C3/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES00C3/ES00C3.dti
+lib/epsonscan2/Resources/Models/ES00CA/ALL/ES00CA.json
+lib/epsonscan2/Resources/Models/ES00CA/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES00CA/ES00CA.dti
+lib/epsonscan2/Resources/Models/ES00CB/ALL/ES00CB.json
+lib/epsonscan2/Resources/Models/ES00CB/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES00CB/ES00CB.dti
+lib/epsonscan2/Resources/Models/ES00CC/ALL/ES00CC.json
+lib/epsonscan2/Resources/Models/ES00CC/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES00CC/ES00CC.dti
+lib/epsonscan2/Resources/Models/ES00D7/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES00D7/ES00D7.dti
+lib/epsonscan2/Resources/Models/ES00D7/JP/ES00D7.json
+lib/epsonscan2/Resources/Models/ES00D7/WW/ES00D7.json
+lib/epsonscan2/Resources/Models/ES00DB/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES00DB/ES00DB.dti
+lib/epsonscan2/Resources/Models/ES00DB/JP/ES00DB.json
+lib/epsonscan2/Resources/Models/ES00DB/WW/ES00DB.json
+lib/epsonscan2/Resources/Models/ES00DD/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES00DD/ES00DD.dti
+lib/epsonscan2/Resources/Models/ES00DD/JP/ES00DD.json
+lib/epsonscan2/Resources/Models/ES00DD/WW/ES00DD.json
+lib/epsonscan2/Resources/Models/ES00DF/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES00DF/JP/ES00DF.json
+lib/epsonscan2/Resources/Models/ES00DF/WW/ES00DF.json
+lib/epsonscan2/Resources/Models/ES00E3/ALL/ES00E3.json
+lib/epsonscan2/Resources/Models/ES00E3/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES00E3/ES00E3.dti
+lib/epsonscan2/Resources/Models/ES00E4/ALL/ES00E4.json
+lib/epsonscan2/Resources/Models/ES00E4/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES00E4/ES00E4.dti
+lib/epsonscan2/Resources/Models/ES00E6/ALL/ES00E6.json
+lib/epsonscan2/Resources/Models/ES00E6/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES00E6/ES00E6.dti
+lib/epsonscan2/Resources/Models/ES00E8/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES00E8/ES00E8.dti
+lib/epsonscan2/Resources/Models/ES00E8/JP/ES00E8.json
+lib/epsonscan2/Resources/Models/ES00E8/WW/ES00E8.json
+lib/epsonscan2/Resources/Models/ES00E9/ALL/ES00E9.json
+lib/epsonscan2/Resources/Models/ES00E9/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES00E9/ES00E9.dti
+lib/epsonscan2/Resources/Models/ES00EA/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES00EA/ES00EA.dti
+lib/epsonscan2/Resources/Models/ES00EA/JP/ES00EA.json
+lib/epsonscan2/Resources/Models/ES00EA/WW/ES00EA.json
+lib/epsonscan2/Resources/Models/ES00EB/ALL/ES00EB.json
+lib/epsonscan2/Resources/Models/ES00EB/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES00ED/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES00ED/ES00ED.dti
+lib/epsonscan2/Resources/Models/ES00ED/JP/ES00ED.json
+lib/epsonscan2/Resources/Models/ES00ED/WW/ES00ED.json
+lib/epsonscan2/Resources/Models/ES00EE/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES00EE/ES00EE.dti
+lib/epsonscan2/Resources/Models/ES00EE/JP/ES00EE.json
+lib/epsonscan2/Resources/Models/ES00EE/WW/ES00EE.json
+lib/epsonscan2/Resources/Models/ES00EF/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES00EF/ES00EF.dti
+lib/epsonscan2/Resources/Models/ES00EF/JP/ES00EF.json
+lib/epsonscan2/Resources/Models/ES00EF/WW/ES00EF.json
+lib/epsonscan2/Resources/Models/ES00F0/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES00F0/ES00F0.dti
+lib/epsonscan2/Resources/Models/ES00F0/JP/ES00F0.json
+lib/epsonscan2/Resources/Models/ES00F0/WW/ES00F0.json
+lib/epsonscan2/Resources/Models/ES00F1/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES00F1/ES00F1.dti
+lib/epsonscan2/Resources/Models/ES00F1/JP/ES00F1.json
+lib/epsonscan2/Resources/Models/ES00F1/WW/ES00F1.json
+lib/epsonscan2/Resources/Models/ES00F2/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES00F2/ES00F2.dti
+lib/epsonscan2/Resources/Models/ES00F2/JP/ES00F2.json
+lib/epsonscan2/Resources/Models/ES00F2/WW/ES00F2.json
+lib/epsonscan2/Resources/Models/ES00F3/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES00F3/ES00F3.dti
+lib/epsonscan2/Resources/Models/ES00F3/JP/ES00F3.json
+lib/epsonscan2/Resources/Models/ES00F3/WW/ES00F3.json
+lib/epsonscan2/Resources/Models/ES00F4/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES00F4/ES00F4.dti
+lib/epsonscan2/Resources/Models/ES00F4/JP/ES00F4.json
+lib/epsonscan2/Resources/Models/ES00F4/WW/ES00F4.json
+lib/epsonscan2/Resources/Models/ES00F5/ALL/ES00F5.json
+lib/epsonscan2/Resources/Models/ES00F5/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES00F5/ES00F5.dti
+lib/epsonscan2/Resources/Models/ES00F7/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES00F7/ES00F7.dti
+lib/epsonscan2/Resources/Models/ES00F7/JP/ES00F7.json
+lib/epsonscan2/Resources/Models/ES00F7/WW/ES00F7.json
+lib/epsonscan2/Resources/Models/ES00F8/ALL/ES00F8.json
+lib/epsonscan2/Resources/Models/ES00F8/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES00F8/ES00F8.dti
+lib/epsonscan2/Resources/Models/ES00FA/ALL/ES00FA.json
+lib/epsonscan2/Resources/Models/ES00FA/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES00FA/ES00FA.dti
+lib/epsonscan2/Resources/Models/ES00FB/ALL/ES00FB.json
+lib/epsonscan2/Resources/Models/ES00FB/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES00FB/ES00FB.dti
+lib/epsonscan2/Resources/Models/ES00FC/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES00FC/ES00FC.dti
+lib/epsonscan2/Resources/Models/ES00FC/JP/ES00FC.json
+lib/epsonscan2/Resources/Models/ES00FC/WW/ES00FC.json
+lib/epsonscan2/Resources/Models/ES00FD/ALL/ES00FD.json
+lib/epsonscan2/Resources/Models/ES00FD/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES00FD/ES00FD.dti
+lib/epsonscan2/Resources/Models/ES00FE/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES00FE/ES00FE.dti
+lib/epsonscan2/Resources/Models/ES00FE/JP/ES00FE.json
+lib/epsonscan2/Resources/Models/ES00FE/WW/ES00FE.json
+lib/epsonscan2/Resources/Models/ES0100/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0100/ES0100.dti
+lib/epsonscan2/Resources/Models/ES0100/US/ES0100.json
+lib/epsonscan2/Resources/Models/ES0100/WW/ES0100.json
+lib/epsonscan2/Resources/Models/ES0101/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0101/ES0101.dti
+lib/epsonscan2/Resources/Models/ES0101/JP/ES0101.json
+lib/epsonscan2/Resources/Models/ES0101/WW/ES0101.json
+lib/epsonscan2/Resources/Models/ES0102/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0102/ES0102.dti
+lib/epsonscan2/Resources/Models/ES0102/JP/ES0102.json
+lib/epsonscan2/Resources/Models/ES0102/WW/ES0102.json
+lib/epsonscan2/Resources/Models/ES0103/ALL/ES0103.json
+lib/epsonscan2/Resources/Models/ES0103/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0103/ES0103.dti
+lib/epsonscan2/Resources/Models/ES0104/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0104/ES0104.dti
+lib/epsonscan2/Resources/Models/ES0104/JP/ES0104.json
+lib/epsonscan2/Resources/Models/ES0104/WW/ES0104.json
+lib/epsonscan2/Resources/Models/ES0105/ALL/ES0105.json
+lib/epsonscan2/Resources/Models/ES0105/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0105/ES0105.dti
+lib/epsonscan2/Resources/Models/ES0106/ALL/ES0106.json
+lib/epsonscan2/Resources/Models/ES0106/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0106/ES0106.dti
+lib/epsonscan2/Resources/Models/ES0107/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0107/ES0107.dti
+lib/epsonscan2/Resources/Models/ES0107/JP/ES0107.json
+lib/epsonscan2/Resources/Models/ES0107/WW/ES0107.json
+lib/epsonscan2/Resources/Models/ES0108/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0108/ES0108.dti
+lib/epsonscan2/Resources/Models/ES0108/JP/ES0108.json
+lib/epsonscan2/Resources/Models/ES0108/WW/ES0108.json
+lib/epsonscan2/Resources/Models/ES0109/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0109/ES0109.dti
+lib/epsonscan2/Resources/Models/ES0109/JP/ES0109.json
+lib/epsonscan2/Resources/Models/ES0109/WW/ES0109.json
+lib/epsonscan2/Resources/Models/ES010A/ALL/ES010A.json
+lib/epsonscan2/Resources/Models/ES010A/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES010A/ES010A.dti
+lib/epsonscan2/Resources/Models/ES010B/ALL/ES010B.json
+lib/epsonscan2/Resources/Models/ES010B/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES010B/ES010B.dti
+lib/epsonscan2/Resources/Models/ES010C/ALL/ES010C.json
+lib/epsonscan2/Resources/Models/ES010C/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES010C/ES010C.dti
+lib/epsonscan2/Resources/Models/ES010D/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES010D/ES010D.dti
+lib/epsonscan2/Resources/Models/ES010D/JP/ES010D.json
+lib/epsonscan2/Resources/Models/ES010D/WW/ES010D.json
+lib/epsonscan2/Resources/Models/ES010E/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES010E/ES010E.dti
+lib/epsonscan2/Resources/Models/ES010E/JP/ES010E.json
+lib/epsonscan2/Resources/Models/ES010E/WW/ES010E.json
+lib/epsonscan2/Resources/Models/ES010F/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES010F/ES010F.dti
+lib/epsonscan2/Resources/Models/ES010F/JP/ES010F.json
+lib/epsonscan2/Resources/Models/ES010F/US/ES010F.json
+lib/epsonscan2/Resources/Models/ES0110/ALL/ES0110.json
+lib/epsonscan2/Resources/Models/ES0110/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0110/ES0110.dti
+lib/epsonscan2/Resources/Models/ES0111/ALL/ES0111.json
+lib/epsonscan2/Resources/Models/ES0111/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0111/ES0111.dti
+lib/epsonscan2/Resources/Models/ES0112/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0112/ES0112.dti
+lib/epsonscan2/Resources/Models/ES0112/JP/ES0112.json
+lib/epsonscan2/Resources/Models/ES0112/WW/ES0112.json
+lib/epsonscan2/Resources/Models/ES0113/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0113/ES0113.dti
+lib/epsonscan2/Resources/Models/ES0113/JP/ES0113.json
+lib/epsonscan2/Resources/Models/ES0113/WW/ES0113.json
+lib/epsonscan2/Resources/Models/ES0114/ALL/ES0114.json
+lib/epsonscan2/Resources/Models/ES0114/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0114/ES0114.dti
+lib/epsonscan2/Resources/Models/ES0116/ALL/ES0116.json
+lib/epsonscan2/Resources/Models/ES0116/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0116/ES0116.dti
+lib/epsonscan2/Resources/Models/ES0117/ALL/ES0117.json
+lib/epsonscan2/Resources/Models/ES0117/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0117/ES0117.dti
+lib/epsonscan2/Resources/Models/ES0118/ALL/ES0118.json
+lib/epsonscan2/Resources/Models/ES0118/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0118/ES0118.dti
+lib/epsonscan2/Resources/Models/ES0119/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0119/ES0119.dti
+lib/epsonscan2/Resources/Models/ES0119/JP/ES0119.json
+lib/epsonscan2/Resources/Models/ES0119/US/ES0119.json
+lib/epsonscan2/Resources/Models/ES0119/WW/ES0119.json
+lib/epsonscan2/Resources/Models/ES011A/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES011A/ES011A.dti
+lib/epsonscan2/Resources/Models/ES011A/JP/ES011A.json
+lib/epsonscan2/Resources/Models/ES011A/WW/ES011A.json
+lib/epsonscan2/Resources/Models/ES011B/ALL/ES011B.json
+lib/epsonscan2/Resources/Models/ES011B/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES011B/ES011B.dti
+lib/epsonscan2/Resources/Models/ES011C/ALL/ES011C.json
+lib/epsonscan2/Resources/Models/ES011C/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES011C/ES011C.dti
+lib/epsonscan2/Resources/Models/ES011D/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES011D/ES011D.dti
+lib/epsonscan2/Resources/Models/ES011D/US/ES011D.json
+lib/epsonscan2/Resources/Models/ES011D/WW/ES011D.json
+lib/epsonscan2/Resources/Models/ES011E/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES011E/ES011E.dti
+lib/epsonscan2/Resources/Models/ES011E/US/ES011E.json
+lib/epsonscan2/Resources/Models/ES011E/WW/ES011E.json
+lib/epsonscan2/Resources/Models/ES011F/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES011F/ES011F.dti
+lib/epsonscan2/Resources/Models/ES011F/US/ES011F.json
+lib/epsonscan2/Resources/Models/ES011F/WW/ES011F.json
+lib/epsonscan2/Resources/Models/ES0120/ALL/ES0120.json
+lib/epsonscan2/Resources/Models/ES0120/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0120/ES0120.dti
+lib/epsonscan2/Resources/Models/ES0121/ALL/ES0121.json
+lib/epsonscan2/Resources/Models/ES0121/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0121/ES0121.dti
+lib/epsonscan2/Resources/Models/ES0122/ALL/ES0122.json
+lib/epsonscan2/Resources/Models/ES0122/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0122/ES0122.dti
+lib/epsonscan2/Resources/Models/ES0123/ALL/ES0123.json
+lib/epsonscan2/Resources/Models/ES0123/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0123/ES0123.dti
+lib/epsonscan2/Resources/Models/ES0124/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0124/ES0124.dti
+lib/epsonscan2/Resources/Models/ES0124/JP/ES0124.json
+lib/epsonscan2/Resources/Models/ES0124/WW/ES0124.json
+lib/epsonscan2/Resources/Models/ES0125/ALL/ES0125.json
+lib/epsonscan2/Resources/Models/ES0125/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0125/ES0125.dti
+lib/epsonscan2/Resources/Models/ES0126/ALL/ES0126.json
+lib/epsonscan2/Resources/Models/ES0126/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0126/ES0126.dti
+lib/epsonscan2/Resources/Models/ES0127/ALL/ES0127.json
+lib/epsonscan2/Resources/Models/ES0127/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0127/ES0127.dti
+lib/epsonscan2/Resources/Models/ES0128/ALL/ES0128.json
+lib/epsonscan2/Resources/Models/ES0128/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0128/ES0128.dti
+lib/epsonscan2/Resources/Models/ES0129/ALL/ES0129.json
+lib/epsonscan2/Resources/Models/ES0129/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0129/ES0129.dti
+lib/epsonscan2/Resources/Models/ES0129/US/ES0129.json
+lib/epsonscan2/Resources/Models/ES0129/WW/ES0129.json
+lib/epsonscan2/Resources/Models/ES012B/ALL/ES012B.json
+lib/epsonscan2/Resources/Models/ES012B/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES012B/ES012B.dti
+lib/epsonscan2/Resources/Models/ES012C/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES012C/JP/ES012C.json
+lib/epsonscan2/Resources/Models/ES012C/WW/ES012C.json
+lib/epsonscan2/Resources/Models/ES012E/ALL/ES012E.json
+lib/epsonscan2/Resources/Models/ES012E/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES012E/ES012E.dti
+lib/epsonscan2/Resources/Models/ES012F/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES012F/ES012F.dti
+lib/epsonscan2/Resources/Models/ES012F/JP/ES012F.json
+lib/epsonscan2/Resources/Models/ES012F/US/ES012F.json
+lib/epsonscan2/Resources/Models/ES012F/WW/ES012F.json
+lib/epsonscan2/Resources/Models/ES0130/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0130/ES0130.dti
+lib/epsonscan2/Resources/Models/ES0130/JP/ES0130.json
+lib/epsonscan2/Resources/Models/ES0130/WW/ES0130.json
+lib/epsonscan2/Resources/Models/ES0131/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0131/ES0131.dti
+lib/epsonscan2/Resources/Models/ES0131/US/ES0131.json
+lib/epsonscan2/Resources/Models/ES0131/WW/ES0131.json
+lib/epsonscan2/Resources/Models/ES0132/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0132/ES0132.dti
+lib/epsonscan2/Resources/Models/ES0132/JP/ES0132.json
+lib/epsonscan2/Resources/Models/ES0132/WW/ES0132.json
+lib/epsonscan2/Resources/Models/ES0133/ALL/ES0133.json
+lib/epsonscan2/Resources/Models/ES0133/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0133/ES0133.dti
+lib/epsonscan2/Resources/Models/ES0134/ALL/ES0134.json
+lib/epsonscan2/Resources/Models/ES0134/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0134/ES0134.dti
+lib/epsonscan2/Resources/Models/ES0135/ALL/ES0135.json
+lib/epsonscan2/Resources/Models/ES0135/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0135/ES0135.dti
+lib/epsonscan2/Resources/Models/ES0136/ALL/ES0136.json
+lib/epsonscan2/Resources/Models/ES0136/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0136/ES0136.dti
+lib/epsonscan2/Resources/Models/ES0137/ALL/ES0137.json
+lib/epsonscan2/Resources/Models/ES0137/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0137/ES0137.dti
+lib/epsonscan2/Resources/Models/ES0138/ALL/ES0138.json
+lib/epsonscan2/Resources/Models/ES0138/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0138/ES0138.dti
+lib/epsonscan2/Resources/Models/ES0139/ALL/ES0139.json
+lib/epsonscan2/Resources/Models/ES0139/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0139/ES0139.dti
+lib/epsonscan2/Resources/Models/ES013A/ALL/ES013A.json
+lib/epsonscan2/Resources/Models/ES013A/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES013A/ES013A.dti
+lib/epsonscan2/Resources/Models/ES013B/ALL/ES013B.json
+lib/epsonscan2/Resources/Models/ES013B/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES013B/ES013B.dti
+lib/epsonscan2/Resources/Models/ES013C/ALL/ES013C.json
+lib/epsonscan2/Resources/Models/ES013C/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES013C/ES013C.dti
+lib/epsonscan2/Resources/Models/ES013D/ALL/ES013D.json
+lib/epsonscan2/Resources/Models/ES013D/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES013D/ES013D.dti
+lib/epsonscan2/Resources/Models/ES013E/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES013E/ES013E.dti
+lib/epsonscan2/Resources/Models/ES013E/US/ES013E.json
+lib/epsonscan2/Resources/Models/ES013E/WW/ES013E.json
+lib/epsonscan2/Resources/Models/ES013F/ALL/ES013F.json
+lib/epsonscan2/Resources/Models/ES013F/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES013F/ES013F.dti
+lib/epsonscan2/Resources/Models/ES0140/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0140/ES0140.dti
+lib/epsonscan2/Resources/Models/ES0140/US/ES0140.json
+lib/epsonscan2/Resources/Models/ES0140/WW/ES0140.json
+lib/epsonscan2/Resources/Models/ES0141/ALL/ES0141.json
+lib/epsonscan2/Resources/Models/ES0141/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0141/ES0141.dti
+lib/epsonscan2/Resources/Models/ES0142/ALL/ES0142.json
+lib/epsonscan2/Resources/Models/ES0142/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0142/ES0142.dti
+lib/epsonscan2/Resources/Models/ES0143/ALL/ES0143.json
+lib/epsonscan2/Resources/Models/ES0143/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0143/ES0143.dti
+lib/epsonscan2/Resources/Models/ES0144/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0144/ES0144.dti
+lib/epsonscan2/Resources/Models/ES0144/JP/ES0144.json
+lib/epsonscan2/Resources/Models/ES0144/US/ES0144.json
+lib/epsonscan2/Resources/Models/ES0144/WW/ES0144.json
+lib/epsonscan2/Resources/Models/ES0145/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0145/ES0145.dti
+lib/epsonscan2/Resources/Models/ES0145/US/ES0145.json
+lib/epsonscan2/Resources/Models/ES0145/WW/ES0145.json
+lib/epsonscan2/Resources/Models/ES0146/ALL/ES0146.json
+lib/epsonscan2/Resources/Models/ES0146/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0146/ES0146.dti
+lib/epsonscan2/Resources/Models/ES0147/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0147/ES0147.dti
+lib/epsonscan2/Resources/Models/ES0147/JP/ES0147.json
+lib/epsonscan2/Resources/Models/ES0147/WW/ES0147.json
+lib/epsonscan2/Resources/Models/ES0148/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0148/ES0148.dti
+lib/epsonscan2/Resources/Models/ES0148/JP/ES0148.json
+lib/epsonscan2/Resources/Models/ES0148/WW/ES0148.json
+lib/epsonscan2/Resources/Models/ES0149/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0149/ES0149.dti
+lib/epsonscan2/Resources/Models/ES0149/JP/ES0149.json
+lib/epsonscan2/Resources/Models/ES0149/WW/ES0149.json
+lib/epsonscan2/Resources/Models/ES014A/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES014A/ES014A.dti
+lib/epsonscan2/Resources/Models/ES014A/JP/ES014A.json
+lib/epsonscan2/Resources/Models/ES014A/WW/ES014A.json
+lib/epsonscan2/Resources/Models/ES014B/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES014B/ES014B.dti
+lib/epsonscan2/Resources/Models/ES014B/JP/ES014B.json
+lib/epsonscan2/Resources/Models/ES014B/US/ES014B.json
+lib/epsonscan2/Resources/Models/ES014B/WW/ES014B.json
+lib/epsonscan2/Resources/Models/ES014C/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES014C/ES014C.dti
+lib/epsonscan2/Resources/Models/ES014C/JP/ES014C.json
+lib/epsonscan2/Resources/Models/ES014C/US/ES014C.json
+lib/epsonscan2/Resources/Models/ES014C/WW/ES014C.json
+lib/epsonscan2/Resources/Models/ES014D/ALL/ES014D.json
+lib/epsonscan2/Resources/Models/ES014D/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES014D/ES014D.dti
+lib/epsonscan2/Resources/Models/ES014E/ALL/ES014E.json
+lib/epsonscan2/Resources/Models/ES014E/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES014E/ES014E.dti
+lib/epsonscan2/Resources/Models/ES014F/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES014F/ES014F.dti
+lib/epsonscan2/Resources/Models/ES014F/JP/ES014F.json
+lib/epsonscan2/Resources/Models/ES014F/US/ES014F.json
+lib/epsonscan2/Resources/Models/ES014F/WW/ES014F.json
+lib/epsonscan2/Resources/Models/ES0150/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0150/ES0150.dti
+lib/epsonscan2/Resources/Models/ES0150/JP/ES0150.json
+lib/epsonscan2/Resources/Models/ES0150/US/ES0150.json
+lib/epsonscan2/Resources/Models/ES0150/WW/ES0150.json
+lib/epsonscan2/Resources/Models/ES0151/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0151/ES0151.dti
+lib/epsonscan2/Resources/Models/ES0151/JP/ES0151.json
+lib/epsonscan2/Resources/Models/ES0151/WW/ES0151.json
+lib/epsonscan2/Resources/Models/ES0152/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0152/ES0152.dti
+lib/epsonscan2/Resources/Models/ES0152/JP/ES0152.json
+lib/epsonscan2/Resources/Models/ES0152/WW/ES0152.json
+lib/epsonscan2/Resources/Models/ES0153/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0153/ES0153.dti
+lib/epsonscan2/Resources/Models/ES0153/JP/ES0153.json
+lib/epsonscan2/Resources/Models/ES0153/US/ES0153.json
+lib/epsonscan2/Resources/Models/ES0154/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0154/ES0154.dti
+lib/epsonscan2/Resources/Models/ES0154/JP/ES0154.json
+lib/epsonscan2/Resources/Models/ES0154/US/ES0154.json
+lib/epsonscan2/Resources/Models/ES0154/WW/ES0154.json
+lib/epsonscan2/Resources/Models/ES0155/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0155/ES0155.dti
+lib/epsonscan2/Resources/Models/ES0155/JP/ES0155.json
+lib/epsonscan2/Resources/Models/ES0155/WW/ES0155.json
+lib/epsonscan2/Resources/Models/ES0156/ALL/ES0156.json
+lib/epsonscan2/Resources/Models/ES0156/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0156/ES0156.dti
+lib/epsonscan2/Resources/Models/ES0157/ALL/ES0157.json
+lib/epsonscan2/Resources/Models/ES0157/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0157/ES0157.dti
+lib/epsonscan2/Resources/Models/ES0158/ALL/ES0158.json
+lib/epsonscan2/Resources/Models/ES0158/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0158/ES0158.dti
+lib/epsonscan2/Resources/Models/ES0159/ALL/ES0159.json
+lib/epsonscan2/Resources/Models/ES0159/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0159/ES0159.dti
+lib/epsonscan2/Resources/Models/ES015B/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES015B/ES015B.dti
+lib/epsonscan2/Resources/Models/ES015B/US/ES015B.json
+lib/epsonscan2/Resources/Models/ES015B/WW/ES015B.json
+lib/epsonscan2/Resources/Models/ES015C/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES015C/ES015C.dti
+lib/epsonscan2/Resources/Models/ES015C/JP/ES015C.json
+lib/epsonscan2/Resources/Models/ES015C/WW/ES015C.json
+lib/epsonscan2/Resources/Models/ES015D/ALL/ES015D.json
+lib/epsonscan2/Resources/Models/ES015D/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES015D/ES015D.dti
+lib/epsonscan2/Resources/Models/ES015E/ALL/ES015E.json
+lib/epsonscan2/Resources/Models/ES015E/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES015E/ES015E.dti
+lib/epsonscan2/Resources/Models/ES015F/ALL/ES015F.json
+lib/epsonscan2/Resources/Models/ES015F/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES015F/ES015F.dti
+lib/epsonscan2/Resources/Models/ES0161/ALL/ES0161.json
+lib/epsonscan2/Resources/Models/ES0161/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0161/ES0161.dti
+lib/epsonscan2/Resources/Models/ES0162/ALL/ES0162.json
+lib/epsonscan2/Resources/Models/ES0162/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0162/ES0162.dti
+lib/epsonscan2/Resources/Models/ES0163/ALL/ES0163.json
+lib/epsonscan2/Resources/Models/ES0163/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0163/ES0163.dti
+lib/epsonscan2/Resources/Models/ES0165/ALL/ES0165.json
+lib/epsonscan2/Resources/Models/ES0165/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0165/ES0165.dti
+lib/epsonscan2/Resources/Models/ES0165/JP/ES0165.json
+lib/epsonscan2/Resources/Models/ES0165/WW/ES0165.json
+lib/epsonscan2/Resources/Models/ES0166/ALL/ES0166.json
+lib/epsonscan2/Resources/Models/ES0166/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0166/ES0166.dti
+lib/epsonscan2/Resources/Models/ES0167/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0167/ES0167.dti
+lib/epsonscan2/Resources/Models/ES0167/JP/ES0167.json
+lib/epsonscan2/Resources/Models/ES0167/WW/ES0167.json
+lib/epsonscan2/Resources/Models/ES0168/ALL/ES0168.json
+lib/epsonscan2/Resources/Models/ES0168/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0168/ES0168.dti
+lib/epsonscan2/Resources/Models/ES0169/ALL/ES0169.json
+lib/epsonscan2/Resources/Models/ES0169/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0169/ES0169.dti
+lib/epsonscan2/Resources/Models/ES016A/ALL/ES016A.json
+lib/epsonscan2/Resources/Models/ES016A/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES016A/ES016A.dti
+lib/epsonscan2/Resources/Models/ES016B/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES016B/ES016B.dti
+lib/epsonscan2/Resources/Models/ES016B/JP/ES016B.json
+lib/epsonscan2/Resources/Models/ES016B/WW/ES016B.json
+lib/epsonscan2/Resources/Models/ES016C/ALL/ES016C.json
+lib/epsonscan2/Resources/Models/ES016C/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES016C/ES016C.dti
+lib/epsonscan2/Resources/Models/ES016D/ALL/ES016D.json
+lib/epsonscan2/Resources/Models/ES016D/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES016D/ES016D.dti
+lib/epsonscan2/Resources/Models/ES016E/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES016E/ES016E.dti
+lib/epsonscan2/Resources/Models/ES016E/US/ES016E.json
+lib/epsonscan2/Resources/Models/ES016E/WW/ES016E.json
+lib/epsonscan2/Resources/Models/ES0170/ALL/ES0170.json
+lib/epsonscan2/Resources/Models/ES0170/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0170/ES0170.dti
+lib/epsonscan2/Resources/Models/ES0171/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0171/ES0171.dti
+lib/epsonscan2/Resources/Models/ES0171/US/ES0171.json
+lib/epsonscan2/Resources/Models/ES0171/WW/ES0171.json
+lib/epsonscan2/Resources/Models/ES0172/ALL/ES0172.json
+lib/epsonscan2/Resources/Models/ES0172/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0172/ES0172.dti
+lib/epsonscan2/Resources/Models/ES0173/ALL/ES0173.json
+lib/epsonscan2/Resources/Models/ES0173/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0173/ES0173.dti
+lib/epsonscan2/Resources/Models/ES0174/ALL/ES0174.json
+lib/epsonscan2/Resources/Models/ES0174/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0174/ES0174.dti
+lib/epsonscan2/Resources/Models/ES0175/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0175/ES0175.dti
+lib/epsonscan2/Resources/Models/ES0175/JP/ES0175.json
+lib/epsonscan2/Resources/Models/ES0175/WW/ES0175.json
+lib/epsonscan2/Resources/Models/ES0176/ALL/ES0176.json
+lib/epsonscan2/Resources/Models/ES0176/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0176/ES0176.dti
+lib/epsonscan2/Resources/Models/ES0177/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0177/ES0177.dti
+lib/epsonscan2/Resources/Models/ES0177/US/ES0177.json
+lib/epsonscan2/Resources/Models/ES0177/WW/ES0177.json
+lib/epsonscan2/Resources/Models/ES0178/ALL/ES0178.json
+lib/epsonscan2/Resources/Models/ES0178/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0178/ES0178.dti
+lib/epsonscan2/Resources/Models/ES0179/ALL/ES0179.json
+lib/epsonscan2/Resources/Models/ES0179/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0179/ES0179.dti
+lib/epsonscan2/Resources/Models/ES017A/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES017A/ES017A.dti
+lib/epsonscan2/Resources/Models/ES017A/US/ES017A.json
+lib/epsonscan2/Resources/Models/ES017A/WW/ES017A.json
+lib/epsonscan2/Resources/Models/ES017B/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES017B/ES017B.dti
+lib/epsonscan2/Resources/Models/ES017B/JP/ES017B.json
+lib/epsonscan2/Resources/Models/ES017B/US/ES017B.json
+lib/epsonscan2/Resources/Models/ES017B/WW/ES017B.json
+lib/epsonscan2/Resources/Models/ES017C/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES017C/ES017C.dti
+lib/epsonscan2/Resources/Models/ES017C/US/ES017C.json
+lib/epsonscan2/Resources/Models/ES017C/WW/ES017C.json
+lib/epsonscan2/Resources/Models/ES017D/ALL/ES017D.json
+lib/epsonscan2/Resources/Models/ES017D/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES017D/ES017D.dti
+lib/epsonscan2/Resources/Models/ES017E/ALL/ES017E.json
+lib/epsonscan2/Resources/Models/ES017E/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES017E/ES017E.dti
+lib/epsonscan2/Resources/Models/ES017F/ALL/ES017F.json
+lib/epsonscan2/Resources/Models/ES017F/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES017F/ES017F.dti
+lib/epsonscan2/Resources/Models/ES0180/ALL/ES0180.json
+lib/epsonscan2/Resources/Models/ES0180/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0180/ES0180.dti
+lib/epsonscan2/Resources/Models/ES0181/ALL/ES0181.json
+lib/epsonscan2/Resources/Models/ES0181/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0181/ES0181.dti
+lib/epsonscan2/Resources/Models/ES0182/ALL/ES0182.json
+lib/epsonscan2/Resources/Models/ES0182/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0182/ES0182.dti
+lib/epsonscan2/Resources/Models/ES0183/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0183/ES0183.dti
+lib/epsonscan2/Resources/Models/ES0183/JP/ES0183.json
+lib/epsonscan2/Resources/Models/ES0183/WW/ES0183.json
+lib/epsonscan2/Resources/Models/ES0184/ALL/ES0184.json
+lib/epsonscan2/Resources/Models/ES0184/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0184/ES0184.dti
+lib/epsonscan2/Resources/Models/ES0185/ALL/ES0185.json
+lib/epsonscan2/Resources/Models/ES0185/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0185/ES0185.dti
+lib/epsonscan2/Resources/Models/ES0186/ALL/ES0186.json
+lib/epsonscan2/Resources/Models/ES0186/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0186/ES0186.dti
+lib/epsonscan2/Resources/Models/ES0187/ALL/ES0187.json
+lib/epsonscan2/Resources/Models/ES0187/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0187/ES0187.dti
+lib/epsonscan2/Resources/Models/ES0188/ALL/ES0188.json
+lib/epsonscan2/Resources/Models/ES0188/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0188/ES0188.dti
+lib/epsonscan2/Resources/Models/ES0189/ALL/ES0189.json
+lib/epsonscan2/Resources/Models/ES0189/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0189/ES0189.dti
+lib/epsonscan2/Resources/Models/ES018A/ALL/ES018A.json
+lib/epsonscan2/Resources/Models/ES018A/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES018A/ES018A.dti
+lib/epsonscan2/Resources/Models/ES018B/ALL/ES018B.json
+lib/epsonscan2/Resources/Models/ES018B/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES018B/ES018B.dti
+lib/epsonscan2/Resources/Models/ES018C/ALL/ES018C.json
+lib/epsonscan2/Resources/Models/ES018C/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES018C/ES018C.dti
+lib/epsonscan2/Resources/Models/ES018D/ALL/ES018D.json
+lib/epsonscan2/Resources/Models/ES018D/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES018D/ES018D.dti
+lib/epsonscan2/Resources/Models/ES018E/ALL/ES018E.json
+lib/epsonscan2/Resources/Models/ES018E/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES018E/ES018E.dti
+lib/epsonscan2/Resources/Models/ES018F/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES018F/ES018F.dti
+lib/epsonscan2/Resources/Models/ES018F/US/ES018F.json
+lib/epsonscan2/Resources/Models/ES018F/WW/ES018F.json
+lib/epsonscan2/Resources/Models/ES0190/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0190/ES0190.dti
+lib/epsonscan2/Resources/Models/ES0190/JP/ES0190.json
+lib/epsonscan2/Resources/Models/ES0190/US/ES0190.json
+lib/epsonscan2/Resources/Models/ES0190/WW/ES0190.json
+lib/epsonscan2/Resources/Models/ES0191/ALL/ES0191.json
+lib/epsonscan2/Resources/Models/ES0191/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0191/ES0191.dti
+lib/epsonscan2/Resources/Models/ES0192/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0192/ES0192.dti
+lib/epsonscan2/Resources/Models/ES0192/JP/ES0192.json
+lib/epsonscan2/Resources/Models/ES0192/WW/ES0192.json
+lib/epsonscan2/Resources/Models/ES0194/ALL/ES0194.json
+lib/epsonscan2/Resources/Models/ES0194/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0194/ES0194.dti
+lib/epsonscan2/Resources/Models/ES0195/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0195/ES0195.dti
+lib/epsonscan2/Resources/Models/ES0195/JP/ES0195.json
+lib/epsonscan2/Resources/Models/ES0195/WW/ES0195.json
+lib/epsonscan2/Resources/Models/ES0196/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0196/ES0196.dti
+lib/epsonscan2/Resources/Models/ES0196/JP/ES0196.json
+lib/epsonscan2/Resources/Models/ES0196/US/ES0196.json
+lib/epsonscan2/Resources/Models/ES0196/WW/ES0196.json
+lib/epsonscan2/Resources/Models/ES0197/ALL/ES0197.json
+lib/epsonscan2/Resources/Models/ES0197/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0197/ES0197.dti
+lib/epsonscan2/Resources/Models/ES0198/ALL/ES0198.json
+lib/epsonscan2/Resources/Models/ES0198/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0198/ES0198.dti
+lib/epsonscan2/Resources/Models/ES0199/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0199/ES0199.dti
+lib/epsonscan2/Resources/Models/ES0199/JP/ES0199.json
+lib/epsonscan2/Resources/Models/ES0199/WW/ES0199.json
+lib/epsonscan2/Resources/Models/ES019A/ALL/ES019A.json
+lib/epsonscan2/Resources/Models/ES019A/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES019A/ES019A.dti
+lib/epsonscan2/Resources/Models/ES019B/ALL/ES019B.json
+lib/epsonscan2/Resources/Models/ES019B/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES019B/ES019B.dti
+lib/epsonscan2/Resources/Models/ES019C/ALL/ES019C.json
+lib/epsonscan2/Resources/Models/ES019C/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES019C/ES019C.dti
+lib/epsonscan2/Resources/Models/ES019D/ALL/ES019D.json
+lib/epsonscan2/Resources/Models/ES019D/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES019D/ES019D.dti
+lib/epsonscan2/Resources/Models/ES019E/ALL/ES019E.json
+lib/epsonscan2/Resources/Models/ES019E/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES019E/ES019E.dti
+lib/epsonscan2/Resources/Models/ES019F/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES019F/ES019F.dti
+lib/epsonscan2/Resources/Models/ES019F/JP/ES019F.json
+lib/epsonscan2/Resources/Models/ES019F/WW/ES019F.json
+lib/epsonscan2/Resources/Models/ES0200/ALL/ES0200.json
+lib/epsonscan2/Resources/Models/ES0200/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0200/ES0200.dti
+lib/epsonscan2/Resources/Models/ES0201/ALL/ES0201.json
+lib/epsonscan2/Resources/Models/ES0201/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0201/ES0201.dti
+lib/epsonscan2/Resources/Models/ES0202/ALL/ES0202.json
+lib/epsonscan2/Resources/Models/ES0202/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0202/ES0202.dti
+lib/epsonscan2/Resources/Models/ES0203/ALL/ES0203.json
+lib/epsonscan2/Resources/Models/ES0203/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0203/ES0203.dti
+lib/epsonscan2/Resources/Models/ES0204/ALL/ES0204.json
+lib/epsonscan2/Resources/Models/ES0204/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0204/ES0204.dti
+lib/epsonscan2/Resources/Models/ES0205/ALL/ES0205.json
+lib/epsonscan2/Resources/Models/ES0205/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0205/ES0205.dti
+lib/epsonscan2/Resources/Models/ES0206/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0206/ES0206.dti
+lib/epsonscan2/Resources/Models/ES0206/US/ES0206.json
+lib/epsonscan2/Resources/Models/ES0206/WW/ES0206.json
+lib/epsonscan2/Resources/Models/ES0207/ALL/ES0207.json
+lib/epsonscan2/Resources/Models/ES0207/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0207/ES0207.dti
+lib/epsonscan2/Resources/Models/ES0208/ALL/ES0208.json
+lib/epsonscan2/Resources/Models/ES0208/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0208/ES0208.dti
+lib/epsonscan2/Resources/Models/ES0209/ALL/ES0209.json
+lib/epsonscan2/Resources/Models/ES0209/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0209/ES0209.dti
+lib/epsonscan2/Resources/Models/ES020A/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES020A/ES020A.dti
+lib/epsonscan2/Resources/Models/ES020A/JP/ES020A.json
+lib/epsonscan2/Resources/Models/ES020A/WW/ES020A.json
+lib/epsonscan2/Resources/Models/ES020B/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES020B/ES020B.dti
+lib/epsonscan2/Resources/Models/ES020B/JP/ES020B.json
+lib/epsonscan2/Resources/Models/ES020B/WW/ES020B.json
+lib/epsonscan2/Resources/Models/ES020C/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES020C/ES020C.dti
+lib/epsonscan2/Resources/Models/ES020C/JP/ES020C.json
+lib/epsonscan2/Resources/Models/ES020C/US/ES020C.json
+lib/epsonscan2/Resources/Models/ES020C/WW/ES020C.json
+lib/epsonscan2/Resources/Models/ES020D/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES020D/ES020D.dti
+lib/epsonscan2/Resources/Models/ES020D/JP/ES020D.json
+lib/epsonscan2/Resources/Models/ES020D/US/ES020D.json
+lib/epsonscan2/Resources/Models/ES020D/WW/ES020D.json
+lib/epsonscan2/Resources/Models/ES020E/ALL/ES020E.json
+lib/epsonscan2/Resources/Models/ES020E/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES020E/ES020E.dti
+lib/epsonscan2/Resources/Models/ES020F/ALL/ES020F.json
+lib/epsonscan2/Resources/Models/ES020F/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES020F/ES020F.dti
+lib/epsonscan2/Resources/Models/ES0210/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0210/ES0210.dti
+lib/epsonscan2/Resources/Models/ES0210/JP/ES0210.json
+lib/epsonscan2/Resources/Models/ES0210/WW/ES0210.json
+lib/epsonscan2/Resources/Models/ES0211/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0211/ES0211.dti
+lib/epsonscan2/Resources/Models/ES0211/US/ES0211.json
+lib/epsonscan2/Resources/Models/ES0211/WW/ES0211.json
+lib/epsonscan2/Resources/Models/ES0212/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0212/ES0212.dti
+lib/epsonscan2/Resources/Models/ES0212/JP/ES0212.json
+lib/epsonscan2/Resources/Models/ES0212/US/ES0212.json
+lib/epsonscan2/Resources/Models/ES0212/WW/ES0212.json
+lib/epsonscan2/Resources/Models/ES0213/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0213/ES0213.dti
+lib/epsonscan2/Resources/Models/ES0213/US/ES0213.json
+lib/epsonscan2/Resources/Models/ES0213/WW/ES0213.json
+lib/epsonscan2/Resources/Models/ES0214/ALL/ES0214.json
+lib/epsonscan2/Resources/Models/ES0214/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0214/ES0214.dti
+lib/epsonscan2/Resources/Models/ES0215/ALL/ES0215.json
+lib/epsonscan2/Resources/Models/ES0215/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0215/ES0215.dti
+lib/epsonscan2/Resources/Models/ES0216/ALL/ES0216.json
+lib/epsonscan2/Resources/Models/ES0216/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0216/ES0216.dti
+lib/epsonscan2/Resources/Models/ES0217/ALL/ES0217.json
+lib/epsonscan2/Resources/Models/ES0217/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0217/ES0217.dti
+lib/epsonscan2/Resources/Models/ES0218/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0218/ES0218.dti
+lib/epsonscan2/Resources/Models/ES0218/JP/ES0218.json
+lib/epsonscan2/Resources/Models/ES0218/US/ES0218.json
+lib/epsonscan2/Resources/Models/ES0218/WW/ES0218.json
+lib/epsonscan2/Resources/Models/ES0219/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0219/ES0219.dti
+lib/epsonscan2/Resources/Models/ES0219/JP/ES0219.json
+lib/epsonscan2/Resources/Models/ES0219/US/ES0219.json
+lib/epsonscan2/Resources/Models/ES0219/WW/ES0219.json
+lib/epsonscan2/Resources/Models/ES021A/ALL/ES021A.json
+lib/epsonscan2/Resources/Models/ES021A/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES021A/ES021A.dti
+lib/epsonscan2/Resources/Models/ES021B/ALL/ES021B.json
+lib/epsonscan2/Resources/Models/ES021B/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES021B/ES021B.dti
+lib/epsonscan2/Resources/Models/ES021C/ALL/ES021C.json
+lib/epsonscan2/Resources/Models/ES021C/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES021C/ES021C.dti
+lib/epsonscan2/Resources/Models/ES021D/ALL/ES021D.json
+lib/epsonscan2/Resources/Models/ES021D/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES021D/ES021D.dti
+lib/epsonscan2/Resources/Models/ES021E/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES021E/ES021E.dti
+lib/epsonscan2/Resources/Models/ES021E/US/ES021E.json
+lib/epsonscan2/Resources/Models/ES021E/WW/ES021E.json
+lib/epsonscan2/Resources/Models/ES021F/ALL/ES021F.json
+lib/epsonscan2/Resources/Models/ES021F/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES021F/ES021F.dti
+lib/epsonscan2/Resources/Models/ES0220/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0220/ES0220.dti
+lib/epsonscan2/Resources/Models/ES0220/JP/ES0220.json
+lib/epsonscan2/Resources/Models/ES0220/WW/ES0220.json
+lib/epsonscan2/Resources/Models/ES0221/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0221/ES0221.dti
+lib/epsonscan2/Resources/Models/ES0221/JP/ES0221.json
+lib/epsonscan2/Resources/Models/ES0221/US/ES0221.json
+lib/epsonscan2/Resources/Models/ES0221/WW/ES0221.json
+lib/epsonscan2/Resources/Models/ES0222/ALL/ES0222.json
+lib/epsonscan2/Resources/Models/ES0222/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0222/ES0222.dti
+lib/epsonscan2/Resources/Models/ES0223/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0223/ES0223.dti
+lib/epsonscan2/Resources/Models/ES0223/US/ES0223.json
+lib/epsonscan2/Resources/Models/ES0223/WW/ES0223.json
+lib/epsonscan2/Resources/Models/ES0224/ALL/ES0224.json
+lib/epsonscan2/Resources/Models/ES0224/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0224/ES0224.dti
+lib/epsonscan2/Resources/Models/ES0225/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0225/ES0225.dti
+lib/epsonscan2/Resources/Models/ES0225/JP/ES0225.json
+lib/epsonscan2/Resources/Models/ES0225/US/ES0225.json
+lib/epsonscan2/Resources/Models/ES0225/WW/ES0225.json
+lib/epsonscan2/Resources/Models/ES0226/ALL/ES0226.json
+lib/epsonscan2/Resources/Models/ES0226/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0226/ES0226.dti
+lib/epsonscan2/Resources/Models/ES0227/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0227/ES0227.dti
+lib/epsonscan2/Resources/Models/ES0227/US/ES0227.json
+lib/epsonscan2/Resources/Models/ES0227/WW/ES0227.json
+lib/epsonscan2/Resources/Models/ES0228/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0228/ES0228.dti
+lib/epsonscan2/Resources/Models/ES0228/US/ES0228.json
+lib/epsonscan2/Resources/Models/ES0228/WW/ES0228.json
+lib/epsonscan2/Resources/Models/ES0229/ALL/ES0229.json
+lib/epsonscan2/Resources/Models/ES0229/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0229/ES0229.dti
+lib/epsonscan2/Resources/Models/ES022A/ALL/ES022A.json
+lib/epsonscan2/Resources/Models/ES022A/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES022A/ES022A.dti
+lib/epsonscan2/Resources/Models/ES022B/ALL/ES022B.json
+lib/epsonscan2/Resources/Models/ES022B/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES022B/ES022B.dti
+lib/epsonscan2/Resources/Models/ES022C/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES022C/ES022C.dti
+lib/epsonscan2/Resources/Models/ES022C/US/ES022C.json
+lib/epsonscan2/Resources/Models/ES022C/WW/ES022C.json
+lib/epsonscan2/Resources/Models/ES022D/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES022D/ES022D.dti
+lib/epsonscan2/Resources/Models/ES022D/US/ES022D.json
+lib/epsonscan2/Resources/Models/ES022D/WW/ES022D.json
+lib/epsonscan2/Resources/Models/ES022E/ALL/ES022E.json
+lib/epsonscan2/Resources/Models/ES022E/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES022E/ES022E.dti
+lib/epsonscan2/Resources/Models/ES022F/ALL/ES022F.json
+lib/epsonscan2/Resources/Models/ES022F/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES022F/ES022F.dti
+lib/epsonscan2/Resources/Models/ES0230/ALL/ES0230.json
+lib/epsonscan2/Resources/Models/ES0230/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0230/ES0230.dti
+lib/epsonscan2/Resources/Models/ES0231/ALL/ES0231.json
+lib/epsonscan2/Resources/Models/ES0231/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0231/ES0231.dti
+lib/epsonscan2/Resources/Models/ES0232/ALL/ES0232.json
+lib/epsonscan2/Resources/Models/ES0232/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0232/ES0232.dti
+lib/epsonscan2/Resources/Models/ES0233/ALL/ES0233.json
+lib/epsonscan2/Resources/Models/ES0233/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0233/ES0233.dti
+lib/epsonscan2/Resources/Models/ES0234/ALL/ES0234.json
+lib/epsonscan2/Resources/Models/ES0234/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0234/ES0234.dti
+lib/epsonscan2/Resources/Models/ES0235/ALL/ES0235.json
+lib/epsonscan2/Resources/Models/ES0235/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0235/ES0235.dti
+lib/epsonscan2/Resources/Models/ES0236/ALL/ES0236.json
+lib/epsonscan2/Resources/Models/ES0236/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0236/ES0236.dti
+lib/epsonscan2/Resources/Models/ES0237/ALL/ES0237.json
+lib/epsonscan2/Resources/Models/ES0237/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0237/ES0237.dti
+lib/epsonscan2/Resources/Models/ES0238/ALL/ES0238.json
+lib/epsonscan2/Resources/Models/ES0238/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0238/ES0238.dti
+lib/epsonscan2/Resources/Models/ES0239/ALL/ES0239.json
+lib/epsonscan2/Resources/Models/ES0239/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0239/ES0239.dti
+lib/epsonscan2/Resources/Models/ES023A/ALL/ES023A.json
+lib/epsonscan2/Resources/Models/ES023A/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES023A/ES023A.dti
+lib/epsonscan2/Resources/Models/ES023B/ALL/ES023B.json
+lib/epsonscan2/Resources/Models/ES023B/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES023B/ES023B.dti
+lib/epsonscan2/Resources/Models/ES023C/ALL/ES023C.json
+lib/epsonscan2/Resources/Models/ES023C/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES023C/ES023C.dti
+lib/epsonscan2/Resources/Models/ES023D/ALL/ES023D.json
+lib/epsonscan2/Resources/Models/ES023D/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES023D/ES023D.dti
+lib/epsonscan2/Resources/Models/ES023F/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES023F/ES023F.dti
+lib/epsonscan2/Resources/Models/ES023F/US/ES023F.json
+lib/epsonscan2/Resources/Models/ES023F/WW/ES023F.json
+lib/epsonscan2/Resources/Models/ES0240/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0240/ES0240.dti
+lib/epsonscan2/Resources/Models/ES0240/US/ES0240.json
+lib/epsonscan2/Resources/Models/ES0240/WW/ES0240.json
+lib/epsonscan2/Resources/Models/ES0241/ALL/ES0241.json
+lib/epsonscan2/Resources/Models/ES0241/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0241/ES0241.dti
+lib/epsonscan2/Resources/Models/ES0242/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0242/ES0242.dti
+lib/epsonscan2/Resources/Models/ES0242/JP/ES0242.json
+lib/epsonscan2/Resources/Models/ES0242/WW/ES0242.json
+lib/epsonscan2/Resources/Models/ES0243/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0243/ES0243.dti
+lib/epsonscan2/Resources/Models/ES0243/US/ES0243.json
+lib/epsonscan2/Resources/Models/ES0243/WW/ES0243.json
+lib/epsonscan2/Resources/Models/ES0244/ALL/ES0244.json
+lib/epsonscan2/Resources/Models/ES0244/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0244/ES0244.dti
+lib/epsonscan2/Resources/Models/ES0245/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0245/ES0245.dti
+lib/epsonscan2/Resources/Models/ES0245/US/ES0245.json
+lib/epsonscan2/Resources/Models/ES0245/WW/ES0245.json
+lib/epsonscan2/Resources/Models/ES0246/ALL/ES0246.json
+lib/epsonscan2/Resources/Models/ES0246/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0246/ES0246.dti
+lib/epsonscan2/Resources/Models/ES0247/ALL/ES0247.json
+lib/epsonscan2/Resources/Models/ES0247/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0247/ES0247.dti
+lib/epsonscan2/Resources/Models/ES0248/ALL/ES0248.json
+lib/epsonscan2/Resources/Models/ES0248/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0248/ES0248.dti
+lib/epsonscan2/Resources/Models/ES0249/ALL/ES0249.json
+lib/epsonscan2/Resources/Models/ES0249/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0249/ES0249.dti
+lib/epsonscan2/Resources/Models/ES024A/ALL/ES024A.json
+lib/epsonscan2/Resources/Models/ES024A/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES024A/ES024A.dti
+lib/epsonscan2/Resources/Models/ES024B/ALL/ES024B.json
+lib/epsonscan2/Resources/Models/ES024B/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES024B/ES024B.dti
+lib/epsonscan2/Resources/Models/ES024C/ALL/ES024C.json
+lib/epsonscan2/Resources/Models/ES024C/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES024C/ES024C.dti
+lib/epsonscan2/Resources/Models/ES024D/ALL/ES024D.json
+lib/epsonscan2/Resources/Models/ES024D/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES024D/ES024D.dti
+lib/epsonscan2/Resources/Models/ES024E/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES024E/ES024E.dti
+lib/epsonscan2/Resources/Models/ES024E/JP/ES024E.json
+lib/epsonscan2/Resources/Models/ES024E/WW/ES024E.json
+lib/epsonscan2/Resources/Models/ES024F/ALL/ES024F.json
+lib/epsonscan2/Resources/Models/ES024F/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES024F/ES024F.dti
+lib/epsonscan2/Resources/Models/ES0250/ALL/ES0250.json
+lib/epsonscan2/Resources/Models/ES0250/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0250/ES0250.dti
+lib/epsonscan2/Resources/Models/ES0251/ALL/ES0251.json
+lib/epsonscan2/Resources/Models/ES0251/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0251/ES0251.dti
+lib/epsonscan2/Resources/Models/ES0252/ALL/ES0252.json
+lib/epsonscan2/Resources/Models/ES0252/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0252/ES0252.dti
+lib/epsonscan2/Resources/Models/ES0253/ALL/ES0253.json
+lib/epsonscan2/Resources/Models/ES0253/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0254/ALL/ES0254.json
+lib/epsonscan2/Resources/Models/ES0254/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0255/ALL/ES0255.json
+lib/epsonscan2/Resources/Models/ES0255/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0256/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0256/JP/ES0256.json
+lib/epsonscan2/Resources/Models/ES0256/WW/ES0256.json
+lib/epsonscan2/Resources/Models/ES0257/ALL/ES0257.json
+lib/epsonscan2/Resources/Models/ES0257/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0257/ES0257.dti
+lib/epsonscan2/Resources/Models/ES0258/ALL/ES0258.json
+lib/epsonscan2/Resources/Models/ES0258/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0258/ES0258.dti
+lib/epsonscan2/Resources/Models/ES0259/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0259/ES0259.dti
+lib/epsonscan2/Resources/Models/ES0259/JP/ES0259.json
+lib/epsonscan2/Resources/Models/ES0259/WW/ES0259.json
+lib/epsonscan2/Resources/Models/ES025A/ALL/ES025A.json
+lib/epsonscan2/Resources/Models/ES025A/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES025A/ES025A.dti
+lib/epsonscan2/Resources/Models/ES025B/ALL/ES025B.json
+lib/epsonscan2/Resources/Models/ES025B/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES025B/ES025B.dti
+lib/epsonscan2/Resources/Models/ES025C/ALL/ES025C.json
+lib/epsonscan2/Resources/Models/ES025C/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES025C/ES025C.dti
+lib/epsonscan2/Resources/Models/ES025D/ALL/ES025D.json
+lib/epsonscan2/Resources/Models/ES025D/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES025D/ES025D.dti
+lib/epsonscan2/Resources/Models/ES025E/ALL/ES025E.json
+lib/epsonscan2/Resources/Models/ES025E/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES025E/ES025E.dti
+lib/epsonscan2/Resources/Models/ES025F/ALL/ES025F.json
+lib/epsonscan2/Resources/Models/ES025F/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES025F/ES025F.dti
+lib/epsonscan2/Resources/Models/ES0260/ALL/ES0260.json
+lib/epsonscan2/Resources/Models/ES0260/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0261/ALL/ES0261.json
+lib/epsonscan2/Resources/Models/ES0261/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0261/ES0261.dti
+lib/epsonscan2/Resources/Models/ES0262/ALL/ES0262.json
+lib/epsonscan2/Resources/Models/ES0262/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0262/ES0262.dti
+lib/epsonscan2/Resources/Models/ES0263/ALL/ES0263.json
+lib/epsonscan2/Resources/Models/ES0263/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0263/ES0263.dti
+lib/epsonscan2/Resources/Models/ES0264/ALL/ES0264.json
+lib/epsonscan2/Resources/Models/ES0264/ConvertTable.json
+lib/epsonscan2/Resources/Models/ES0264/ES0264.dti
+lib/epsonscan2/Resources/Models/ESA001/ALL/ESA001.json
+lib/epsonscan2/Resources/Models/ESA001/ConvertTable.json
+lib/epsonscan2/Resources/Models/ESA001/ESA001.dti
+lib/epsonscan2/Resources/Models/ESA002/ALL/ESA002.json
+lib/epsonscan2/Resources/Models/ESA002/ConvertTable.json
+lib/epsonscan2/Resources/Models/ESA002/ESA002.dti
+lib/epsonscan2/Resources/Models/ModelInfo.json
+lib/epsonscan2/Resources/Tables/ClipConst/ESClipConst0000.json
+lib/epsonscan2/Resources/Tables/ClipConst/ESClipConst0001.json
+lib/epsonscan2/Resources/Tables/ClipConst/ESClipConst0002.json
+lib/epsonscan2/Resources/Tables/ClipConst/ESClipConst0003.json
+lib/epsonscan2/Resources/Tables/ClipConst/ESClipConst0004.json
+lib/epsonscan2/Resources/Tables/ClipCorrect/ESClipCorrect0000.json
+lib/epsonscan2/Resources/Tables/ClipRevise/ESClipRevise0000.json
+lib/epsonscan2/Resources/Tables/ClipRevise/ESClipRevise0001.json
+lib/epsonscan2/Resources/Tables/ClipRevise/ESClipRevise0002.json
+lib/epsonscan2/Resources/Tables/ClipRevise/ESClipRevise0003.json
+lib/epsonscan2/Resources/Tables/ClipRevise/ESClipRevise0004.json
+lib/epsonscan2/Resources/Tables/ClipRevise/ESClipRevise0005.json
+lib/epsonscan2/Resources/Tables/DustRemoval/ESDustRemoval0000.json
+lib/epsonscan2/Resources/Tables/DustRemoval/ESDustRemoval0001.json
+lib/epsonscan2/Resources/Tables/DustRemoval/ESDustRemoval0002.json
+lib/epsonscan2/Resources/Tables/FilterSequence/ESFilterSequence0000.json
+lib/epsonscan2/Resources/Tables/FilterSequence/ESFilterSequence0001.json
+lib/epsonscan2/Resources/Tables/FilterSequence/ESFilterSequence0002.json
+lib/epsonscan2/Resources/Tables/FilterSequence/ESFilterSequence0004.json
+lib/epsonscan2/Resources/Tables/FilterSequence/ESFilterSequence0006.json
+lib/epsonscan2/Resources/Tables/FilterSequence/ESFilterSequence0010.json
+lib/epsonscan2/Resources/Tables/FilterSequence/ESFilterSequence0011.json
+lib/epsonscan2/Resources/Tables/FilterSequence/ESFilterSequence0101.json
+lib/epsonscan2/Resources/Tables/FilterSequence/ESFilterSequence0201.json
+lib/epsonscan2/Resources/Tables/FilterSequence/ESFilterSequence0202.json
+lib/epsonscan2/Resources/Tables/FilterSequence/ESFilterSequence0206.json
+lib/epsonscan2/Resources/Tables/FilterSequence/ESFilterSequence0207.json
+lib/epsonscan2/Resources/Tables/FilterSequence/ESFilterSequence0301.json
+lib/epsonscan2/Resources/Tables/Focus/ESFocus0000.json
+lib/epsonscan2/Resources/Tables/Focus/ESFocus0001.json
+lib/epsonscan2/Resources/Tables/JpegQuality/ESJpegQuality0000.json
+lib/epsonscan2/Resources/Tables/JpegQuality/ESJpegQuality0001.json
+lib/epsonscan2/Resources/Tables/JpegQuality/ESJpegQuality0002.json
+lib/epsonscan2/Resources/Tables/LUT/ESLUT0000.json
+lib/epsonscan2/Resources/Tables/LUT/ESLUT0001.json
+lib/epsonscan2/Resources/Tables/LUT/ESLUT0002.json
+lib/epsonscan2/Resources/Tables/LUT/ESLUT0003.json
+lib/epsonscan2/Resources/Tables/LUT/ESLUT0004.json
+lib/epsonscan2/Resources/Tables/LUT/ESLUT0010.json
+lib/epsonscan2/Resources/Tables/LUT/ESLUT0011.json
+lib/epsonscan2/Resources/Tables/LUT/ESLUT0012.json
+lib/epsonscan2/Resources/Tables/LUT/ESLUT0013.json
+lib/epsonscan2/Resources/Tables/LUT/ESLUT0014.json
+lib/epsonscan2/Resources/Tables/LUT/ESLUT0015.json
+lib/epsonscan2/Resources/Tables/LUT/ESLUT0016.json
+lib/epsonscan2/Resources/Tables/LUT/ESLUT0017.json
+lib/epsonscan2/Resources/Tables/LUT/ESLUT0018.json
+lib/epsonscan2/Resources/Tables/LUT/ESLUT0019.json
+lib/epsonscan2/Resources/Tables/LUT/ESLUT0020.json
+lib/epsonscan2/Resources/Tables/LUT/ESLUT0021.json
+lib/epsonscan2/Resources/Tables/LUT/ESLUT0022.json
+lib/epsonscan2/Resources/Tables/LUT/ESLUT0023.json
+lib/epsonscan2/Resources/Tables/LUT/ESLUT0024.json
+lib/epsonscan2/Resources/Tables/LUT/ESLUT0025.json
+lib/epsonscan2/Resources/Tables/LUT/ESLUT0026.json
+lib/epsonscan2/Resources/Tables/LUT/ESLUT0027.json
+lib/epsonscan2/Resources/Tables/LUT/ESLUT0028.json
+lib/epsonscan2/Resources/Tables/MaxResolution/ESMaxResolution0000.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire0000.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire0001.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire0002.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire0003.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire0004.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire0005.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire0006.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire0007.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire0008.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire0009.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire0010.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire0011.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire0012.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire0013.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire0014.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire0015.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire0016.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire0017.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire0018.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire0019.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire0020.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire0021.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire0022.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire0023.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire0024.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire0025.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire0026.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire0027.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire0028.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire0029.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire0030.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire0031.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire0032.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire0033.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire0034.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire0035.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire0036.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire0037.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire0038.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire0039.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire0040.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire0041.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire0042.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire0043.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire1000.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire1001.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire1002.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire1003.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire1004.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire1005.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire1006.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire1007.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire1008.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire1009.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire1010.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire1011.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire1012.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire1013.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire1014.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire1015.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire1016.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire1017.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire1018.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire1019.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire1020.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire1021.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire1022.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire1023.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire1024.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire1025.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire1026.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire1027.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire1028.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire2001.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire2002.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire2003.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire2004.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire2005.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire2006.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire2008.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire2009.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire2010.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire2011.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire2012.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire2013.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire2014.json
+lib/epsonscan2/Resources/Tables/Moire/ESMoire2015.json
+lib/epsonscan2/Resources/Tables/PreviewBW/ESPreviewBW0000.json
+lib/epsonscan2/Resources/Tables/PreviewBW/ESPreviewBW0001.json
+lib/epsonscan2/Resources/Tables/PreviewBW/ESPreviewBW0002.json
+lib/epsonscan2/Resources/Tables/PreviewBW/ESPreviewBW0003.json
+lib/epsonscan2/Resources/Tables/PreviewBW/ESPreviewBW0004.json
+lib/epsonscan2/Resources/Tables/PreviewBW/ESPreviewBW0005.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0000.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0001.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0002.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0003.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0004.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0005.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0006.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0007.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0008.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0009.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0010.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0011.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0012.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0013.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0014.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0015.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0016.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0017.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0018.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0019.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0020.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0021.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0022.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0023.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0024.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0025.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0026.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0027.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0028.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0029.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0030.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0031.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0032.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0033.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0034.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0035.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0036.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0037.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0038.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0039.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0040.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0041.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0042.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0043.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0044.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0045.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0046.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0047.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0048.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0049.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0050.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0051.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0052.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0053.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0054.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0055.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0056.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0057.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0058.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0059.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0060.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0061.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0062.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0063.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0064.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0065.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0066.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0067.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0068.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0069.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0070.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0071.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0072.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0073.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0074.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0075.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0076.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0077.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0078.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0079.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0080.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0081.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0082.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0083.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0084.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0085.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0086.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0087.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0088.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0089.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0090.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0091.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0092.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0093.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0094.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0095.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0096.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0097.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0098.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0099.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0100.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile0101.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1000.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1001.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1002.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1003.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1004.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1005.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1006.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1007.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1008.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1009.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1010.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1011.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1012.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1013.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1014.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1015.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1016.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1017.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1018.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1019.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1020.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1021.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1022.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1023.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1024.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1025.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1026.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1027.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1028.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1029.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1030.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1031.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1032.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1033.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1034.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1035.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1036.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1037.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1038.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1039.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1040.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1041.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1042.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1043.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1044.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1045.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1046.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1047.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1048.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1049.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1050.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1051.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1052.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1053.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1054.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1055.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1056.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1057.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1058.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1059.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1060.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1061.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1062.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1063.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1064.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1065.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1066.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1067.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1068.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1069.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1070.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1071.json
+lib/epsonscan2/Resources/Tables/Profile/ESProfile1072.json
+lib/epsonscan2/Resources/Tables/Reduction/ESReduction0000.json
+lib/epsonscan2/Resources/Tables/Reduction/ESReduction0001.json
+lib/epsonscan2/Resources/Tables/Reduction/ESReduction0002.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0000.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0001.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0002.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0003.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0004.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0005.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0006.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0007.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0008.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0009.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0010.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0011.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0012.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0013.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0014.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0015.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0016.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0017.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0018.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0019.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0020.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0021.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0022.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0023.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0024.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0025.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0026.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0027.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0028.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0029.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0030.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0031.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0032.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0033.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0034.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0035.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0036.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0037.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0038.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0039.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0040.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0041.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0042.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0043.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0044.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0045.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0046.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0047.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0048.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0049.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0050.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0051.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0052.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0053.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0054.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0055.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0056.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0057.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0058.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0059.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0060.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0061.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0062.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0063.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0064.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0065.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0066.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0067.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0068.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0069.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0070.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0071.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0072.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0073.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0074.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0075.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0076.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0077.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0078.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0079.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0080.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0081.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0082.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0083.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0084.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0085.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0086.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0087.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0088.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0089.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0090.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0091.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0092.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0093.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0094.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0095.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0096.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0097.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0098.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0099.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0100.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0101.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0102.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0103.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0104.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0105.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0106.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0107.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0108.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0109.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0110.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0111.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0112.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0113.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0114.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0115.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0116.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0117.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0118.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0119.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0120.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0121.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0122.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0123.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0124.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0125.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0126.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0127.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0128.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0129.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0130.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0131.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0132.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0133.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0134.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0135.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0136.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0137.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0138.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0139.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0140.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0141.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0142.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0143.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0144.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0145.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0146.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0147.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0148.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0149.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0150.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0151.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0152.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0153.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0154.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0155.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0156.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0157.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0158.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0159.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0160.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0161.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0162.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0163.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0164.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0165.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0166.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0167.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0168.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0169.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0170.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0171.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0172.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0173.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0174.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0175.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0176.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0177.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution0178.json
+lib/epsonscan2/Resources/Tables/Resolution/ESResolution9999.json
+lib/epsonscan2/Resources/Tables/Sharpness/ESSharpness0000.json
+lib/epsonscan2/Resources/Tables/USM/ESUSM0000.json
+lib/epsonscan2/Resources/Tables/USM/ESUSM0001.json
+lib/epsonscan2/Resources/Tables/USM/ESUSM0002.json
+lib/epsonscan2/Resources/Tables/USM/ESUSM0003.json
+lib/epsonscan2/Resources/Tables/USM/ESUSM0004.json
+lib/epsonscan2/Resources/Tables/USM/ESUSM0005.json
+lib/epsonscan2/Resources/Tables/USM/ESUSM0006.json
+lib/epsonscan2/Resources/Tables/USM/ESUSM0007.json
+lib/epsonscan2/Resources/Tables/USM/ESUSM0008.json
+lib/epsonscan2/Resources/Tables/USM/ESUSM0009.json
+lib/epsonscan2/Resources/Tables/USM/ESUSM0010.json
+lib/epsonscan2/Resources/Tables/USM/ESUSM0011.json
+lib/epsonscan2/Resources/Tables/USM/ESUSM0012.json
+lib/epsonscan2/Resources/Tables/USM/ESUSM0013.json
+lib/epsonscan2/Resources/Tables/USM/ESUSM0014.json
+lib/epsonscan2/Resources/Tables/USM/ESUSM0015.json
+lib/epsonscan2/Resources/Tables/USM/ESUSM0016.json
+lib/epsonscan2/Resources/Tables/USM/ESUSM0017.json
+lib/epsonscan2/Resources/Tables/USM/ESUSM0018.json
+lib/epsonscan2/Resources/Tables/USM/ESUSM0019.json
+lib/epsonscan2/Resources/Tables/USM/ESUSM0020.json
+lib/epsonscan2/Resources/Tables/USM/ESUSM0021.json
+lib/epsonscan2/Resources/Tables/USM/ESUSM0022.json
+lib/epsonscan2/Resources/Tables/USM/ESUSM0023.json
+lib/epsonscan2/Resources/Tables/USM/ESUSM0024.json
+lib/epsonscan2/Resources/Tables/USM/ESUSM0025.json
+lib/epsonscan2/Resources/Tables/USM/ESUSM0026.json
+lib/epsonscan2/Resources/Tables/USM/ESUSM0027.json
+lib/epsonscan2/Resources/Tables/USM/ESUSM0028.json
+lib/epsonscan2/Resources/Tables/USM/ESUSM0029.json
+lib/epsonscan2/Resources/Tables/USM/ESUSM0030.json
+lib/epsonscan2/Resources/Tables/USMBlur/ESUSMBlur0000.json
+lib/epsonscan2/Resources/Tables/USMNoise/ESUSMNoise0000.json
+lib/epsonscan2/Resources/Tables/USMNoise/ESUSMNoise0001.json
+lib/epsonscan2/Resources/Tables/USMNoise/ESUSMNoise0002.json
+lib/epsonscan2/Resources/Tables/USMNoise/ESUSMNoise0003.json
+lib/epsonscan2/Resources/Tables/USMNoise/ESUSMNoise0004.json
+lib/epsonscan2/Resources/Tables/USMNoise/ESUSMNoise0005.json
+lib/epsonscan2/Resources/locale/epsonscan2_ar.qm
+lib/epsonscan2/Resources/locale/epsonscan2_cs.qm
+lib/epsonscan2/Resources/locale/epsonscan2_da.qm
+lib/epsonscan2/Resources/locale/epsonscan2_de.qm
+lib/epsonscan2/Resources/locale/epsonscan2_el.qm
+lib/epsonscan2/Resources/locale/epsonscan2_en.qm
+lib/epsonscan2/Resources/locale/epsonscan2_es.qm
+lib/epsonscan2/Resources/locale/epsonscan2_es_MX.qm
+lib/epsonscan2/Resources/locale/epsonscan2_fi.qm
+lib/epsonscan2/Resources/locale/epsonscan2_fr.qm
+lib/epsonscan2/Resources/locale/epsonscan2_fr_CA.qm
+lib/epsonscan2/Resources/locale/epsonscan2_he.qm
+lib/epsonscan2/Resources/locale/epsonscan2_hi.qm
+lib/epsonscan2/Resources/locale/epsonscan2_hu.qm
+lib/epsonscan2/Resources/locale/epsonscan2_id.qm
+lib/epsonscan2/Resources/locale/epsonscan2_it.qm
+lib/epsonscan2/Resources/locale/epsonscan2_ja.qm
+lib/epsonscan2/Resources/locale/epsonscan2_ko.qm
+lib/epsonscan2/Resources/locale/epsonscan2_ms.qm
+lib/epsonscan2/Resources/locale/epsonscan2_nl.qm
+lib/epsonscan2/Resources/locale/epsonscan2_nn.qm
+lib/epsonscan2/Resources/locale/epsonscan2_pl.qm
+lib/epsonscan2/Resources/locale/epsonscan2_pt.qm
+lib/epsonscan2/Resources/locale/epsonscan2_pt_BR.qm
+lib/epsonscan2/Resources/locale/epsonscan2_ro.qm
+lib/epsonscan2/Resources/locale/epsonscan2_ru.qm
+lib/epsonscan2/Resources/locale/epsonscan2_sv.qm
+lib/epsonscan2/Resources/locale/epsonscan2_th.qm
+lib/epsonscan2/Resources/locale/epsonscan2_tr.qm
+lib/epsonscan2/Resources/locale/epsonscan2_uk.qm
+lib/epsonscan2/Resources/locale/epsonscan2_zh_CN.qm
+lib/epsonscan2/Resources/locale/epsonscan2_zh_TW.qm
+lib/epsonscan2/detectalert
+lib/epsonscan2/libcommonutility.so
+lib/epsonscan2/libepsonscan2.so
+lib/epsonscan2/libepsonscansdk.so
+lib/epsonscan2/libes2command.so
+lib/epsonscan2/libes2fileformat.so
+lib/epsonscan2/libsane-epsonscan2.so
+lib/sane/libsane-epsonscan2.so.1
+lib/sane/libsane-epsonscan2.so.1.0.0
+lib/udev/rules.d/60-epsonscan2.rules
+%%DOCSDIR%%/AUTHORS
+%%DOCSDIR%%/COPYING
+%%DOCSDIR%%/LICENSE
+%%DOCSDIR%%/NEWS
+%%DOCSDIR%%/README
+%%DOCSDIR%%/changelog.Debian